{
  "contractName": "PredictionMarketSystem",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "name": "owner",
          "type": "address"
        },
        {
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        },
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "payoutNumerators",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "from",
          "type": "address"
        },
        {
          "name": "to",
          "type": "address"
        },
        {
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "name": "values",
          "type": "uint256[]"
        },
        {
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeBatchTransferFrom",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "owners",
          "type": "address[]"
        },
        {
          "name": "ids",
          "type": "uint256[]"
        }
      ],
      "name": "balanceOfBatch",
      "outputs": [
        {
          "name": "",
          "type": "uint256[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "operator",
          "type": "address"
        },
        {
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "payoutDenominator",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "owner",
          "type": "address"
        },
        {
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "from",
          "type": "address"
        },
        {
          "name": "to",
          "type": "address"
        },
        {
          "name": "id",
          "type": "uint256"
        },
        {
          "name": "value",
          "type": "uint256"
        },
        {
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "conditionId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "oracle",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "questionId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "outcomeSlotCount",
          "type": "uint256"
        }
      ],
      "name": "ConditionPreparation",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "conditionId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "oracle",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "questionId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "outcomeSlotCount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "payoutNumerators",
          "type": "uint256[]"
        }
      ],
      "name": "ConditionResolution",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "stakeholder",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "collateralToken",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "parentCollectionId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "conditionId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "partition",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "PositionSplit",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "stakeholder",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "collateralToken",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "parentCollectionId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "conditionId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "partition",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "PositionsMerge",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "redeemer",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "collateralToken",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "parentCollectionId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "conditionId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "indexSets",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "name": "payout",
          "type": "uint256"
        }
      ],
      "name": "PayoutRedemption",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "TransferSingle",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "name": "values",
          "type": "uint256[]"
        }
      ],
      "name": "TransferBatch",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "value",
          "type": "string"
        },
        {
          "indexed": true,
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "URI",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "oracle",
          "type": "address"
        },
        {
          "name": "questionId",
          "type": "bytes32"
        },
        {
          "name": "outcomeSlotCount",
          "type": "uint256"
        }
      ],
      "name": "prepareCondition",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "questionId",
          "type": "bytes32"
        },
        {
          "name": "result",
          "type": "bytes"
        }
      ],
      "name": "receiveResult",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "collateralToken",
          "type": "address"
        },
        {
          "name": "parentCollectionId",
          "type": "bytes32"
        },
        {
          "name": "conditionId",
          "type": "bytes32"
        },
        {
          "name": "partition",
          "type": "uint256[]"
        },
        {
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "splitPosition",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "collateralToken",
          "type": "address"
        },
        {
          "name": "parentCollectionId",
          "type": "bytes32"
        },
        {
          "name": "conditionId",
          "type": "bytes32"
        },
        {
          "name": "partition",
          "type": "uint256[]"
        },
        {
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "mergePositions",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "collateralToken",
          "type": "address"
        },
        {
          "name": "parentCollectionId",
          "type": "bytes32"
        },
        {
          "name": "conditionId",
          "type": "bytes32"
        },
        {
          "name": "indexSets",
          "type": "uint256[]"
        }
      ],
      "name": "redeemPositions",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "conditionId",
          "type": "bytes32"
        }
      ],
      "name": "getOutcomeSlotCount",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x6080604052620000416301ffc9a77c010000000000000000000000000000000000000000000000000000000002620001d8640100000000026401000000009004565b620001d2600073ffffffffffffffffffffffffffffffffffffffff1663e985e9c590507c010000000000000000000000000000000000000000000000000000000002600073ffffffffffffffffffffffffffffffffffffffff1663a22cb46590507c010000000000000000000000000000000000000000000000000000000002600073ffffffffffffffffffffffffffffffffffffffff16634e1273f490507c010000000000000000000000000000000000000000000000000000000002600073ffffffffffffffffffffffffffffffffffffffff1662fdd58e90507c010000000000000000000000000000000000000000000000000000000002600073ffffffffffffffffffffffffffffffffffffffff16632eb2c2d690507c010000000000000000000000000000000000000000000000000000000002600073ffffffffffffffffffffffffffffffffffffffff1663f242432a90507c0100000000000000000000000000000000000000000000000000000000021818181818620001d8640100000000026401000000009004565b620002ff565b63ffffffff7c010000000000000000000000000000000000000000000000000000000002817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415151562000293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b615258806200030f6000396000f3fe6080604052600436106100d4576000357c010000000000000000000000000000000000000000000000000000000090048062fdd58e146100d957806301b7037c1461014857806301ffc9a7146102025780630504c814146102745780632eb2c2d6146102cd5780634e1273f41461043d5780635dd80855146105eb57806372ce42751461067b5780639e7212ad1461073f578063a22cb46514610803578063d42dc0c214610860578063d96ee754146108af578063dd34de6714610914578063e985e9c514610963578063f242432a146109ec575b600080fd5b3480156100e557600080fd5b50610132600480360360408110156100fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ac6565b6040518082815260200191505060405180910390f35b34801561015457600080fd5b506102006004803603608081101561016b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001906401000000008111156101bc57600080fd5b8201836020820111156101ce57600080fd5b803590602001918460208302840111640100000000831117156101f057600080fd5b9091929391929390505050610beb565b005b34801561020e57600080fd5b5061025a6004803603602081101561022557600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050611233565b604051808215151515815260200191505060405180910390f35b34801561028057600080fd5b506102b76004803603604081101561029757600080fd5b81019080803590602001909291908035906020019092919050505061129a565b6040518082815260200191505060405180910390f35b3480156102d957600080fd5b5061043b600480360360a08110156102f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561034d57600080fd5b82018360208201111561035f57600080fd5b8035906020019184602083028401116401000000008311171561038157600080fd5b9091929391929390803590602001906401000000008111156103a257600080fd5b8201836020820111156103b457600080fd5b803590602001918460208302840111640100000000831117156103d657600080fd5b9091929391929390803590602001906401000000008111156103f757600080fd5b82018360208201111561040957600080fd5b8035906020019184600183028401116401000000008311171561042b57600080fd5b90919293919293905050506112ca565b005b34801561044957600080fd5b506105946004803603604081101561046057600080fd5b810190808035906020019064010000000081111561047d57600080fd5b82018360208201111561048f57600080fd5b803590602001918460208302840111640100000000831117156104b157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561051157600080fd5b82018360208201111561052357600080fd5b8035906020019184602083028401116401000000008311171561054557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611918565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105d75780820151818401526020810190506105bc565b505050509050019250505060405180910390f35b3480156105f757600080fd5b506106796004803603604081101561060e57600080fd5b81019080803590602001909291908035906020019064010000000081111561063557600080fd5b82018360208201111561064757600080fd5b8035906020019184600183028401116401000000008311171561066957600080fd5b9091929391929390505050611b90565b005b34801561068757600080fd5b5061073d600480360360a081101561069e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001906401000000008111156106ef57600080fd5b82018360208201111561070157600080fd5b8035906020019184602083028401116401000000008311171561072357600080fd5b90919293919293908035906020019092919050505061211f565b005b34801561074b57600080fd5b50610801600480360360a081101561076257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001906401000000008111156107b357600080fd5b8201836020820111156107c557600080fd5b803590602001918460208302840111640100000000831117156107e757600080fd5b90919293919293908035906020019092919050505061272d565b005b34801561080f57600080fd5b5061085e6004803603604081101561082657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612cf2565b005b34801561086c57600080fd5b506108996004803603602081101561088357600080fd5b8101908080359060200190929190505050612df3565b6040518082815260200191505060405180910390f35b3480156108bb57600080fd5b50610912600480360360608110156108d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050612e13565b005b34801561092057600080fd5b5061094d6004803603602081101561093757600080fd5b81019080803590602001909291905050506130b6565b6040518082815260200191505060405180910390f35b34801561096f57600080fd5b506109d26004803603604081101561098657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506130ce565b604051808215151515815260200191505060405180910390f35b3480156109f857600080fd5b50610ac4600480360360a0811015610a0f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190640100000000811115610a8057600080fd5b820183602082011115610a9257600080fd5b80359060200191846001830284011164010000000083111715610ab457600080fd5b9091929391929390505050613162565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610b92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f455243313135353a2062616c616e636520717565727920666f7220746865207a81526020017f65726f206164647265737300000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60006004600085815260200190815260200160002054111515610c9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f726573756c7420666f7220636f6e646974696f6e206e6f74207265636569766581526020017f642079657400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600060036000858152602001908152602001600020805490509050600081111515610d2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f636f6e646974696f6e206e6f742070726570617265642079657400000000000081525060200191505060405180910390fd5b600080905060008060018460019060020a0203905060008090505b86869050811015610f625760008787838181101515610d6557fe5b905060200201359050600081118015610d7d57508281105b1515610df1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f676f7420696e76616c696420696e64657820736574000000000000000000000081525060200191505060405180910390fd5b8a610dfd8b8b846135da565b604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140182815260200192505050604051602081830303815290604052805190602001209350600080905060008090505b87811015610eda5760008160019060020a028416141515610ecd57610eca600360008d815260200190815260200160002082815481101515610eb057fe5b90600052602060002001548361362190919063ffffffff16565b91505b8080600101915050610e72565b506000610eeb338760019004610ac6565b90506000811115610f5257610f40610f31600460008e815260200190815260200160002054610f2385856136ab90919063ffffffff16565b61377890919063ffffffff16565b8861362190919063ffffffff16565b9650610f513387600190048361380b565b5b5050508080600101915050610d4a565b5060008311156111835760006001028814156110f5578873ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561101b57600080fd5b505af115801561102f573d6000803e3d6000fd5b505050506040513d602081101561104557600080fd5b810190808051906020019092919050505015156110f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f636f756c64206e6f74207472616e73666572207061796f757420746f206d657381526020017f736167652073656e64657200000000000000000000000000000000000000000081525060400191505060405180910390fd5b611182565b8888604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018281526020019250505060405160208183030381529060405280519060200120915061118133836001900485602060405190810160405280600081525061394c565b5b5b878973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2682012a4a4f1973119f1c9b90745d1bd91fa2bab387344f044cb3586864d18d8a8a8a8960405180858152602001806020018381526020018281038252858582818152602001925060200280828437600081840152601f19601f8201169050808301925050509550505050505060405180910390a4505050505050505050565b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b6003602052816000526040600020818154811015156112b557fe5b90600052602060002001600091509150505481565b838390508686905014151561136d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f455243313135353a2049447320616e642076616c756573206d7573742068617681526020017f652073616d65206c656e6774687300000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614151515611438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f455243313135353a207461726765742061646472657373206d7573742062652081526020017f6e6f6e2d7a65726f00000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614806114ff575060011515600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b1515611599576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001807f455243313135353a206e656564206f70657261746f7220617070726f76616c2081526020017f666f7220337264207061727479207472616e73666572732e000000000000000081525060400191505060405180910390fd5b60008090505b8686905081101561175757600087878381811015156115ba57fe5b905060200201359050600086868481811015156115d357fe5b90506020020135905061163f816001600085815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6890919063ffffffff16565b6001600084815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116f66001600084815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261362190919063ffffffff16565b6001600084815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505080600101905061159f565b508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb898989896040518080602001806020018381038352878782818152602001925060200280828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925060200280828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a461190e338989898980806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050888880806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613bf3565b5050505050505050565b6060815183511415156119b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f455243313135353a206f776e65727320616e6420494473206d7573742068617681526020017f652073616d65206c656e6774687300000000000000000000000000000000000081525060400191505060405180910390fd5b606083516040519080825280602002602001820160405280156119eb5781602001602082028038833980820191505090505b50905060008090505b8451811015611b8557600073ffffffffffffffffffffffffffffffffffffffff168582815181101515611a2357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614151515611adf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001807f455243313135353a20736f6d65206164647265737320696e206261746368206281526020017f616c616e6365207175657279206973207a65726f00000000000000000000000081525060400191505060405180910390fd5b600160008583815181101515611af157fe5b90602001906020020151815260200190815260200160002060008683815181101515611b1957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548282815181101515611b6c57fe5b90602001906020020181815250508060010190506119f4565b508091505092915050565b600082829050111515611c0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f726573756c747320656d7074790000000000000000000000000000000000000081525060200191505060405180910390fd5b6000602083839050811515611c1c57fe5b06141515611c92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f726573756c7473206e6f742033322d6279746520616c69676e6564000000000081525060200191505060405180910390fd5b6000602083839050811515611ca357fe5b0490506101008111151515611d20576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f746f6f206d616e79206f7574636f6d6520736c6f74730000000000000000000081525060200191505060405180910390fd5b6000338583604051602001808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018381526020018281526020019350505050604051602081830303815290604052805190602001209050816003600083815260200190815260200160002080549050141515611e23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f6e756d626572206f66206f7574636f6d6573206d69736d61746368000000000081525060200191505060405180910390fd5b60006004600083815260200190815260200160002054141515611eae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f7061796f75742064656e6f6d696e61746f7220616c726561647920736574000081525060200191505060405180910390fd5b60008090505b82811015611fe457600081602002606401359050611eee81600460008681526020019081526020016000205461362190919063ffffffff16565b600460008581526020019081526020016000208190555060006003600085815260200190815260200160002083815481101515611f2757fe5b9060005260206000200154141515611fa7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f7061796f7574206e756d657261746f7220616c7265616479207365740000000081525060200191505060405180910390fd5b806003600085815260200190815260200160002083815481101515611fc857fe5b9060005260206000200181905550508080600101915050611eb4565b5060006004600083815260200190815260200160002054111515612070576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f7061796f757420697320616c6c207a65726f657300000000000000000000000081525060200191505060405180910390fd5b843373ffffffffffffffffffffffffffffffffffffffff16827fb44d84d3289691f71497564b85d4233648d9dbae8cbdbb4329f301c3a018589485600360008781526020019081526020016000206040518083815260200180602001828103825283818154815260200191508054801561210957602002820191906000526020600020905b8154815260200190600101908083116120f5575b5050935050505060405180910390a45050505050565b6000600360008681526020019081526020016000208054905090506000811115156121b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f636f6e646974696f6e206e6f742070726570617265642079657400000000000081525060200191505060405180910390fd5b60008060018360019060020a02039050600081905060008090505b8787905081101561239657600088888381811015156121e857fe5b90506020020135905060008111801561220057508381105b1515612274576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f676f7420696e76616c696420696e64657820736574000000000000000000000081525060200191505060405180910390fd5b808382161415156122ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f706172746974696f6e206e6f74206469736a6f696e740000000000000000000081525060200191505060405180910390fd5b80831892508b6122fe8c8c846135da565b604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018281526020019250505060405160208183030381529060405280519060200120945061238833866001900489602060405190810160405280600081525061394c565b5080806001019150506121cd565b5060008114156125de57600060010289141561255d578973ffffffffffffffffffffffffffffffffffffffff166323b872dd3330886040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561248357600080fd5b505af1158015612497573d6000803e3d6000fd5b505050506040513d60208110156124ad57600080fd5b81019080805190602001909291905050501515612558576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f636f756c64206e6f74207265636569766520636f6c6c61746572616c20746f6b81526020017f656e73000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6125d9565b8989604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001925050506040516020818303038152906040528051906020012092506125d83384600190048761380b565b5b612666565b896125ec8a8a8486186135da565b604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001925050506040516020818303038152906040528051906020012092506126653384600190048761380b565b5b87893373ffffffffffffffffffffffffffffffffffffffff167f2e6bb91f8cbcda0c93623c54d0403a43514fabc40084ec96b6d5379a747862988d8b8b8b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018381526020018281038252858582818152602001925060200280828437600081840152601f19601f8201169050808301925050509550505050505060405180910390a450505050505050505050565b6000600360008681526020019081526020016000208054905090506000811115156127c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f636f6e646974696f6e206e6f742070726570617265642079657400000000000081525060200191505060405180910390fd5b60008060018360019060020a02039050600081905060008090505b8787905081101561299357600088888381811015156127f657fe5b90506020020135905060008111801561280e57508381105b1515612882576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f676f7420696e76616c696420696e64657820736574000000000000000000000081525060200191505060405180910390fd5b808382161415156128fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f706172746974696f6e206e6f74206469736a6f696e740000000000000000000081525060200191505060405180910390fd5b80831892508b61290c8c8c846135da565b604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001925050506040516020818303038152906040528051906020012094506129853386600190048961380b565b5080806001019150506127db565b506000811415612b92576000600102891415612b00578973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612a4c57600080fd5b505af1158015612a60573d6000803e3d6000fd5b505050506040513d6020811015612a7657600080fd5b81019080805190602001909291905050501515612afb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f636f756c64206e6f742073656e6420636f6c6c61746572616c20746f6b656e7381525060200191505060405180910390fd5b612b8d565b8989604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140182815260200192505050604051602081830303815290604052805190602001209250612b8c33846001900487602060405190810160405280600081525061394c565b5b612c2b565b89612ba08a8a8486186135da565b604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140182815260200192505050604051602081830303815290604052805190602001209250612c2a33846001900487602060405190810160405280600081525061394c565b5b87893373ffffffffffffffffffffffffffffffffffffffff167f6f13ca62553fcc2bcd2372180a43949c1e4cebba603901ede2f4e14f36b282ca8d8b8b8b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018381526020018281038252858582818152602001925060200280828437600081840152601f19601f8201169050808301925050509550505050505060405180910390a450505050505050505050565b80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b600060036000838152602001908152602001600020805490509050919050565b6101008111151515612e8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f746f6f206d616e79206f7574636f6d6520736c6f74730000000000000000000081525060200191505060405180910390fd5b600081111515612f05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f6e6f206f7574636f6d6520736c6f74732070726f76696465640000000000000081525060200191505060405180910390fd5b6000838383604051602001808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401838152602001828152602001935050505060405160208183030381529060405280519060200120905060006003600083815260200190815260200160002080549050141515613009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f636f6e646974696f6e20616c726561647920707265706172656400000000000081525060200191505060405180910390fd5b816040519080825280602002602001820160405280156130385781602001602082028038833980820191505090505b5060036000838152602001908152602001600020908051906020019061305f9291906151ba565b50828473ffffffffffffffffffffffffffffffffffffffff16827fab3760c3bd2bb38b5bcf54dc79802ed67338b4cf29f3054ded67ed24661e4177856040518082815260200191505060405180910390a450505050565b60046020528060005260406000206000915090505481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415151561322d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f455243313135353a207461726765742061646472657373206d7573742062652081526020017f6e6f6e2d7a65726f00000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614806132f4575060011515600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b151561338e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001807f455243313135353a206e656564206f70657261746f7220617070726f76616c2081526020017f666f7220337264207061727479207472616e73666572732e000000000000000081525060400191505060405180910390fd5b6133f1836001600087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6890919063ffffffff16565b6001600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134a86001600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461362190919063ffffffff16565b6001600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051808381526020018281526020019250505060405180910390a46135d2338787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050614761565b505050505050565b600082826040516020018083815260200182815260200192505050604051602081830303815290604052805190602001206001900484600190040160010290509392505050565b60008082840190508381101515156136a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000808314156136be5760009050613772565b600082840290508284828115156136d157fe5b0414151561376d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81526020017f770000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b809150505b92915050565b600080821115156137f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b600082848115156137fe57fe5b0490508091505092915050565b61386e816001600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6890919063ffffffff16565b6001600084815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051808381526020018281526020019250505060405180910390a4505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515613a17576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f455243313135353a206d696e7420746f20746865207a65726f2061646472657381526020017f730000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b613a7a6001600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361362190919063ffffffff16565b6001600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051808381526020018281526020019250505060405180910390a4613b6233600086868686614761565b50505050565b6000828211151515613be2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b613c128473ffffffffffffffffffffffffffffffffffffffff166151a7565b156147595760646102346102bc6001603f604061271002811515613c3257fe5b04010101015a10151515613cd4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001807f455243313135353a206e6f7420656e6f7567682067617320726573657276656481526020017f20666f7220746f6b656e20726563656976657220636865636b0000000000000081525060400191505060405180910390fd5b600060608573ffffffffffffffffffffffffffffffffffffffff1661271060405180807f6f6e455243313135354261746368526563656976656428616464726573732c6181526020017f6464726573732c75696e743235365b5d2c75696e743235365b5d2c627974657381526020017f29000000000000000000000000000000000000000000000000000000000000008152506041019050604051809103902060405180807f6f6e45524331313535526563656976656428616464726573732c61646472657381526020017f732c75696e743235362c75696e743235362c6279746573290000000000000000815250603801905060405180910390201860405160240180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019150506040516020818303038152906040527f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083101515613ed15780518252602082019150602081019050602083039250613eac565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303818686fa925050503d8060008114613f32576040519150601f19603f3d011682016040523d82523d6000602084013e613f37565b606091505b5091509150818015613f4a575060008151115b8015613f7f575060011515818060200190516020811015613f6a57600080fd5b81019080805190602001909291905050501515145b156142a8578573ffffffffffffffffffffffffffffffffffffffff1663bc197c8190507c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168673ffffffffffffffffffffffffffffffffffffffff1663bc197c818a8a8989896040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b838110156140db5780820151818401526020810190506140c0565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561411d578082015181840152602081019050614102565b50505050905001848103825285818151815260200191508051906020019080838360005b8381101561415c578082015181840152602081019050614141565b50505050905090810190601f1680156141895780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b1580156141ae57600080fd5b505af11580156141c2573d6000803e3d6000fd5b505050506040513d60208110156141d857600080fd5b81019080805190602001909291905050507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415156142a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001807f455243313135353a20676f7420756e6b6e6f776e2076616c75652066726f6d2081526020017f6f6e45524331313535426174636852656365697665640000000000000000000081525060400191505060405180910390fd5b614756565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca886040805190810160405280601481526020017f45524331313535546f6b656e5265636569766572000000000000000000000000815250805190602001206040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561439b57600080fd5b505afa1580156143af573d6000803e3d6000fd5b505050506040513d60208110156143c557600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515614754578073ffffffffffffffffffffffffffffffffffffffff1663bc197c8190507c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168173ffffffffffffffffffffffffffffffffffffffff1663bc197c818b8b8a8a8a6040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561456557808201518184015260208101905061454a565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156145a757808201518184015260208101905061458c565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156145e65780820151818401526020810190506145cb565b50505050905090810190601f1680156146135780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561463857600080fd5b505af115801561464c573d6000803e3d6000fd5b505050506040513d602081101561466257600080fd5b81019080805190602001909291905050507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515614753576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260428152602001807f455243313135353a20676f7420756e6b6e6f776e2076616c75652066726f6d2081526020017f696d706c656d656e746564206f6e45524331313535426174636852656365697681526020017f656400000000000000000000000000000000000000000000000000000000000081525060600191505060405180910390fd5b5b505b50505b505050505050565b6147808473ffffffffffffffffffffffffffffffffffffffff166151a7565b1561519f5760646102346102bc6001603f6040612710028115156147a057fe5b04010101015a10151515614842576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001807f455243313135353a206e6f7420656e6f7567682067617320726573657276656481526020017f20666f7220746f6b656e20726563656976657220636865636b0000000000000081525060400191505060405180910390fd5b600060608573ffffffffffffffffffffffffffffffffffffffff1661271060405180807f6f6e455243313135354261746368526563656976656428616464726573732c6181526020017f6464726573732c75696e743235365b5d2c75696e743235365b5d2c627974657381526020017f29000000000000000000000000000000000000000000000000000000000000008152506041019050604051809103902060405180807f6f6e45524331313535526563656976656428616464726573732c61646472657381526020017f732c75696e743235362c75696e743235362c6279746573290000000000000000815250603801905060405180910390201860405160240180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019150506040516020818303038152906040527f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083101515614a3f5780518252602082019150602081019050602083039250614a1a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038160008787f1925050503d8060008114614aa2576040519150601f19603f3d011682016040523d82523d6000602084013e614aa7565b606091505b5091509150818015614aba575060008151115b8015614aef575060011515818060200190516020811015614ada57600080fd5b81019080805190602001909291905050501515145b15614d96578573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6190507c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168673ffffffffffffffffffffffffffffffffffffffff1663f23a6e618a8a8989896040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614c4c578082015181840152602081019050614c31565b50505050905090810190601f168015614c795780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b158015614c9c57600080fd5b505af1158015614cb0573d6000803e3d6000fd5b505050506040513d6020811015614cc657600080fd5b81019080805190602001909291905050507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515614d91576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001807f455243313135353a20676f7420756e6b6e6f776e2076616c75652066726f6d2081526020017f6f6e45524331313535526563656976656400000000000000000000000000000081525060400191505060405180910390fd5b61519c565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca886040805190810160405280601481526020017f45524331313535546f6b656e5265636569766572000000000000000000000000815250805190602001206040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b158015614e8957600080fd5b505afa158015614e9d573d6000803e3d6000fd5b505050506040513d6020811015614eb357600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561519a578073ffffffffffffffffffffffffffffffffffffffff1663f23a6e6190507c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168173ffffffffffffffffffffffffffffffffffffffff1663f23a6e618b8b8a8a8a6040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015615054578082015181840152602081019050615039565b50505050905090810190601f1680156150815780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1580156150a457600080fd5b505af11580156150b8573d6000803e3d6000fd5b505050506040513d60208110156150ce57600080fd5b81019080805190602001909291905050507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515615199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001807f455243313135353a20676f7420756e6b6e6f776e2076616c75652066726f6d2081526020017f696d706c656d656e746564206f6e45524331313535526563656976656400000081525060400191505060405180910390fd5b5b505b50505b505050505050565b600080823b905060008111915050919050565b8280548282559060005260206000209081019282156151f6579160200282015b828111156151f55782518255916020019190600101906151da565b5b5090506152039190615207565b5090565b61522991905b8082111561522557600081600090555060010161520d565b5090565b9056fea165627a7a72305820458dcbe02ede5dda282846492e740bdd2dffa11e596c589d6e09bc1d3e54ec080029",
  "deployedBytecode": "0x6080604052600436106100d4576000357c010000000000000000000000000000000000000000000000000000000090048062fdd58e146100d957806301b7037c1461014857806301ffc9a7146102025780630504c814146102745780632eb2c2d6146102cd5780634e1273f41461043d5780635dd80855146105eb57806372ce42751461067b5780639e7212ad1461073f578063a22cb46514610803578063d42dc0c214610860578063d96ee754146108af578063dd34de6714610914578063e985e9c514610963578063f242432a146109ec575b600080fd5b3480156100e557600080fd5b50610132600480360360408110156100fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ac6565b6040518082815260200191505060405180910390f35b34801561015457600080fd5b506102006004803603608081101561016b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001906401000000008111156101bc57600080fd5b8201836020820111156101ce57600080fd5b803590602001918460208302840111640100000000831117156101f057600080fd5b9091929391929390505050610beb565b005b34801561020e57600080fd5b5061025a6004803603602081101561022557600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050611233565b604051808215151515815260200191505060405180910390f35b34801561028057600080fd5b506102b76004803603604081101561029757600080fd5b81019080803590602001909291908035906020019092919050505061129a565b6040518082815260200191505060405180910390f35b3480156102d957600080fd5b5061043b600480360360a08110156102f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561034d57600080fd5b82018360208201111561035f57600080fd5b8035906020019184602083028401116401000000008311171561038157600080fd5b9091929391929390803590602001906401000000008111156103a257600080fd5b8201836020820111156103b457600080fd5b803590602001918460208302840111640100000000831117156103d657600080fd5b9091929391929390803590602001906401000000008111156103f757600080fd5b82018360208201111561040957600080fd5b8035906020019184600183028401116401000000008311171561042b57600080fd5b90919293919293905050506112ca565b005b34801561044957600080fd5b506105946004803603604081101561046057600080fd5b810190808035906020019064010000000081111561047d57600080fd5b82018360208201111561048f57600080fd5b803590602001918460208302840111640100000000831117156104b157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561051157600080fd5b82018360208201111561052357600080fd5b8035906020019184602083028401116401000000008311171561054557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611918565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105d75780820151818401526020810190506105bc565b505050509050019250505060405180910390f35b3480156105f757600080fd5b506106796004803603604081101561060e57600080fd5b81019080803590602001909291908035906020019064010000000081111561063557600080fd5b82018360208201111561064757600080fd5b8035906020019184600183028401116401000000008311171561066957600080fd5b9091929391929390505050611b90565b005b34801561068757600080fd5b5061073d600480360360a081101561069e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001906401000000008111156106ef57600080fd5b82018360208201111561070157600080fd5b8035906020019184602083028401116401000000008311171561072357600080fd5b90919293919293908035906020019092919050505061211f565b005b34801561074b57600080fd5b50610801600480360360a081101561076257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001906401000000008111156107b357600080fd5b8201836020820111156107c557600080fd5b803590602001918460208302840111640100000000831117156107e757600080fd5b90919293919293908035906020019092919050505061272d565b005b34801561080f57600080fd5b5061085e6004803603604081101561082657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612cf2565b005b34801561086c57600080fd5b506108996004803603602081101561088357600080fd5b8101908080359060200190929190505050612df3565b6040518082815260200191505060405180910390f35b3480156108bb57600080fd5b50610912600480360360608110156108d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050612e13565b005b34801561092057600080fd5b5061094d6004803603602081101561093757600080fd5b81019080803590602001909291905050506130b6565b6040518082815260200191505060405180910390f35b34801561096f57600080fd5b506109d26004803603604081101561098657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506130ce565b604051808215151515815260200191505060405180910390f35b3480156109f857600080fd5b50610ac4600480360360a0811015610a0f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190640100000000811115610a8057600080fd5b820183602082011115610a9257600080fd5b80359060200191846001830284011164010000000083111715610ab457600080fd5b9091929391929390505050613162565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610b92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f455243313135353a2062616c616e636520717565727920666f7220746865207a81526020017f65726f206164647265737300000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60006004600085815260200190815260200160002054111515610c9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f726573756c7420666f7220636f6e646974696f6e206e6f74207265636569766581526020017f642079657400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600060036000858152602001908152602001600020805490509050600081111515610d2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f636f6e646974696f6e206e6f742070726570617265642079657400000000000081525060200191505060405180910390fd5b600080905060008060018460019060020a0203905060008090505b86869050811015610f625760008787838181101515610d6557fe5b905060200201359050600081118015610d7d57508281105b1515610df1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f676f7420696e76616c696420696e64657820736574000000000000000000000081525060200191505060405180910390fd5b8a610dfd8b8b846135da565b604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140182815260200192505050604051602081830303815290604052805190602001209350600080905060008090505b87811015610eda5760008160019060020a028416141515610ecd57610eca600360008d815260200190815260200160002082815481101515610eb057fe5b90600052602060002001548361362190919063ffffffff16565b91505b8080600101915050610e72565b506000610eeb338760019004610ac6565b90506000811115610f5257610f40610f31600460008e815260200190815260200160002054610f2385856136ab90919063ffffffff16565b61377890919063ffffffff16565b8861362190919063ffffffff16565b9650610f513387600190048361380b565b5b5050508080600101915050610d4a565b5060008311156111835760006001028814156110f5578873ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561101b57600080fd5b505af115801561102f573d6000803e3d6000fd5b505050506040513d602081101561104557600080fd5b810190808051906020019092919050505015156110f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f636f756c64206e6f74207472616e73666572207061796f757420746f206d657381526020017f736167652073656e64657200000000000000000000000000000000000000000081525060400191505060405180910390fd5b611182565b8888604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018281526020019250505060405160208183030381529060405280519060200120915061118133836001900485602060405190810160405280600081525061394c565b5b5b878973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f2682012a4a4f1973119f1c9b90745d1bd91fa2bab387344f044cb3586864d18d8a8a8a8960405180858152602001806020018381526020018281038252858582818152602001925060200280828437600081840152601f19601f8201169050808301925050509550505050505060405180910390a4505050505050505050565b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b6003602052816000526040600020818154811015156112b557fe5b90600052602060002001600091509150505481565b838390508686905014151561136d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f455243313135353a2049447320616e642076616c756573206d7573742068617681526020017f652073616d65206c656e6774687300000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614151515611438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f455243313135353a207461726765742061646472657373206d7573742062652081526020017f6e6f6e2d7a65726f00000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614806114ff575060011515600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b1515611599576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001807f455243313135353a206e656564206f70657261746f7220617070726f76616c2081526020017f666f7220337264207061727479207472616e73666572732e000000000000000081525060400191505060405180910390fd5b60008090505b8686905081101561175757600087878381811015156115ba57fe5b905060200201359050600086868481811015156115d357fe5b90506020020135905061163f816001600085815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6890919063ffffffff16565b6001600084815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116f66001600084815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261362190919063ffffffff16565b6001600084815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505080600101905061159f565b508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb898989896040518080602001806020018381038352878782818152602001925060200280828437600081840152601f19601f8201169050808301925050508381038252858582818152602001925060200280828437600081840152601f19601f820116905080830192505050965050505050505060405180910390a461190e338989898980806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050888880806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613bf3565b5050505050505050565b6060815183511415156119b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f455243313135353a206f776e65727320616e6420494473206d7573742068617681526020017f652073616d65206c656e6774687300000000000000000000000000000000000081525060400191505060405180910390fd5b606083516040519080825280602002602001820160405280156119eb5781602001602082028038833980820191505090505b50905060008090505b8451811015611b8557600073ffffffffffffffffffffffffffffffffffffffff168582815181101515611a2357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614151515611adf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001807f455243313135353a20736f6d65206164647265737320696e206261746368206281526020017f616c616e6365207175657279206973207a65726f00000000000000000000000081525060400191505060405180910390fd5b600160008583815181101515611af157fe5b90602001906020020151815260200190815260200160002060008683815181101515611b1957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548282815181101515611b6c57fe5b90602001906020020181815250508060010190506119f4565b508091505092915050565b600082829050111515611c0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f726573756c747320656d7074790000000000000000000000000000000000000081525060200191505060405180910390fd5b6000602083839050811515611c1c57fe5b06141515611c92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f726573756c7473206e6f742033322d6279746520616c69676e6564000000000081525060200191505060405180910390fd5b6000602083839050811515611ca357fe5b0490506101008111151515611d20576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f746f6f206d616e79206f7574636f6d6520736c6f74730000000000000000000081525060200191505060405180910390fd5b6000338583604051602001808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018381526020018281526020019350505050604051602081830303815290604052805190602001209050816003600083815260200190815260200160002080549050141515611e23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f6e756d626572206f66206f7574636f6d6573206d69736d61746368000000000081525060200191505060405180910390fd5b60006004600083815260200190815260200160002054141515611eae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f7061796f75742064656e6f6d696e61746f7220616c726561647920736574000081525060200191505060405180910390fd5b60008090505b82811015611fe457600081602002606401359050611eee81600460008681526020019081526020016000205461362190919063ffffffff16565b600460008581526020019081526020016000208190555060006003600085815260200190815260200160002083815481101515611f2757fe5b9060005260206000200154141515611fa7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f7061796f7574206e756d657261746f7220616c7265616479207365740000000081525060200191505060405180910390fd5b806003600085815260200190815260200160002083815481101515611fc857fe5b9060005260206000200181905550508080600101915050611eb4565b5060006004600083815260200190815260200160002054111515612070576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f7061796f757420697320616c6c207a65726f657300000000000000000000000081525060200191505060405180910390fd5b843373ffffffffffffffffffffffffffffffffffffffff16827fb44d84d3289691f71497564b85d4233648d9dbae8cbdbb4329f301c3a018589485600360008781526020019081526020016000206040518083815260200180602001828103825283818154815260200191508054801561210957602002820191906000526020600020905b8154815260200190600101908083116120f5575b5050935050505060405180910390a45050505050565b6000600360008681526020019081526020016000208054905090506000811115156121b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f636f6e646974696f6e206e6f742070726570617265642079657400000000000081525060200191505060405180910390fd5b60008060018360019060020a02039050600081905060008090505b8787905081101561239657600088888381811015156121e857fe5b90506020020135905060008111801561220057508381105b1515612274576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f676f7420696e76616c696420696e64657820736574000000000000000000000081525060200191505060405180910390fd5b808382161415156122ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f706172746974696f6e206e6f74206469736a6f696e740000000000000000000081525060200191505060405180910390fd5b80831892508b6122fe8c8c846135da565b604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018281526020019250505060405160208183030381529060405280519060200120945061238833866001900489602060405190810160405280600081525061394c565b5080806001019150506121cd565b5060008114156125de57600060010289141561255d578973ffffffffffffffffffffffffffffffffffffffff166323b872dd3330886040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561248357600080fd5b505af1158015612497573d6000803e3d6000fd5b505050506040513d60208110156124ad57600080fd5b81019080805190602001909291905050501515612558576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f636f756c64206e6f74207265636569766520636f6c6c61746572616c20746f6b81526020017f656e73000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6125d9565b8989604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001925050506040516020818303038152906040528051906020012092506125d83384600190048761380b565b5b612666565b896125ec8a8a8486186135da565b604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001925050506040516020818303038152906040528051906020012092506126653384600190048761380b565b5b87893373ffffffffffffffffffffffffffffffffffffffff167f2e6bb91f8cbcda0c93623c54d0403a43514fabc40084ec96b6d5379a747862988d8b8b8b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018381526020018281038252858582818152602001925060200280828437600081840152601f19601f8201169050808301925050509550505050505060405180910390a450505050505050505050565b6000600360008681526020019081526020016000208054905090506000811115156127c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f636f6e646974696f6e206e6f742070726570617265642079657400000000000081525060200191505060405180910390fd5b60008060018360019060020a02039050600081905060008090505b8787905081101561299357600088888381811015156127f657fe5b90506020020135905060008111801561280e57508381105b1515612882576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f676f7420696e76616c696420696e64657820736574000000000000000000000081525060200191505060405180910390fd5b808382161415156128fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f706172746974696f6e206e6f74206469736a6f696e740000000000000000000081525060200191505060405180910390fd5b80831892508b61290c8c8c846135da565b604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001925050506040516020818303038152906040528051906020012094506129853386600190048961380b565b5080806001019150506127db565b506000811415612b92576000600102891415612b00578973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612a4c57600080fd5b505af1158015612a60573d6000803e3d6000fd5b505050506040513d6020811015612a7657600080fd5b81019080805190602001909291905050501515612afb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f636f756c64206e6f742073656e6420636f6c6c61746572616c20746f6b656e7381525060200191505060405180910390fd5b612b8d565b8989604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140182815260200192505050604051602081830303815290604052805190602001209250612b8c33846001900487602060405190810160405280600081525061394c565b5b612c2b565b89612ba08a8a8486186135da565b604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140182815260200192505050604051602081830303815290604052805190602001209250612c2a33846001900487602060405190810160405280600081525061394c565b5b87893373ffffffffffffffffffffffffffffffffffffffff167f6f13ca62553fcc2bcd2372180a43949c1e4cebba603901ede2f4e14f36b282ca8d8b8b8b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018381526020018281038252858582818152602001925060200280828437600081840152601f19601f8201169050808301925050509550505050505060405180910390a450505050505050505050565b80600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b600060036000838152602001908152602001600020805490509050919050565b6101008111151515612e8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f746f6f206d616e79206f7574636f6d6520736c6f74730000000000000000000081525060200191505060405180910390fd5b600081111515612f05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f6e6f206f7574636f6d6520736c6f74732070726f76696465640000000000000081525060200191505060405180910390fd5b6000838383604051602001808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401838152602001828152602001935050505060405160208183030381529060405280519060200120905060006003600083815260200190815260200160002080549050141515613009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f636f6e646974696f6e20616c726561647920707265706172656400000000000081525060200191505060405180910390fd5b816040519080825280602002602001820160405280156130385781602001602082028038833980820191505090505b5060036000838152602001908152602001600020908051906020019061305f9291906151ba565b50828473ffffffffffffffffffffffffffffffffffffffff16827fab3760c3bd2bb38b5bcf54dc79802ed67338b4cf29f3054ded67ed24661e4177856040518082815260200191505060405180910390a450505050565b60046020528060005260406000206000915090505481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415151561322d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f455243313135353a207461726765742061646472657373206d7573742062652081526020017f6e6f6e2d7a65726f00000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614806132f4575060011515600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b151561338e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001807f455243313135353a206e656564206f70657261746f7220617070726f76616c2081526020017f666f7220337264207061727479207472616e73666572732e000000000000000081525060400191505060405180910390fd5b6133f1836001600087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6890919063ffffffff16565b6001600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134a86001600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461362190919063ffffffff16565b6001600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051808381526020018281526020019250505060405180910390a46135d2338787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050614761565b505050505050565b600082826040516020018083815260200182815260200192505050604051602081830303815290604052805190602001206001900484600190040160010290509392505050565b60008082840190508381101515156136a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000808314156136be5760009050613772565b600082840290508284828115156136d157fe5b0414151561376d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81526020017f770000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b809150505b92915050565b600080821115156137f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b600082848115156137fe57fe5b0490508091505092915050565b61386e816001600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6890919063ffffffff16565b6001600084815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051808381526020018281526020019250505060405180910390a4505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515613a17576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f455243313135353a206d696e7420746f20746865207a65726f2061646472657381526020017f730000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b613a7a6001600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361362190919063ffffffff16565b6001600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051808381526020018281526020019250505060405180910390a4613b6233600086868686614761565b50505050565b6000828211151515613be2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b613c128473ffffffffffffffffffffffffffffffffffffffff166151a7565b156147595760646102346102bc6001603f604061271002811515613c3257fe5b04010101015a10151515613cd4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001807f455243313135353a206e6f7420656e6f7567682067617320726573657276656481526020017f20666f7220746f6b656e20726563656976657220636865636b0000000000000081525060400191505060405180910390fd5b600060608573ffffffffffffffffffffffffffffffffffffffff1661271060405180807f6f6e455243313135354261746368526563656976656428616464726573732c6181526020017f6464726573732c75696e743235365b5d2c75696e743235365b5d2c627974657381526020017f29000000000000000000000000000000000000000000000000000000000000008152506041019050604051809103902060405180807f6f6e45524331313535526563656976656428616464726573732c61646472657381526020017f732c75696e743235362c75696e743235362c6279746573290000000000000000815250603801905060405180910390201860405160240180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019150506040516020818303038152906040527f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083101515613ed15780518252602082019150602081019050602083039250613eac565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303818686fa925050503d8060008114613f32576040519150601f19603f3d011682016040523d82523d6000602084013e613f37565b606091505b5091509150818015613f4a575060008151115b8015613f7f575060011515818060200190516020811015613f6a57600080fd5b81019080805190602001909291905050501515145b156142a8578573ffffffffffffffffffffffffffffffffffffffff1663bc197c8190507c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168673ffffffffffffffffffffffffffffffffffffffff1663bc197c818a8a8989896040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b838110156140db5780820151818401526020810190506140c0565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561411d578082015181840152602081019050614102565b50505050905001848103825285818151815260200191508051906020019080838360005b8381101561415c578082015181840152602081019050614141565b50505050905090810190601f1680156141895780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b1580156141ae57600080fd5b505af11580156141c2573d6000803e3d6000fd5b505050506040513d60208110156141d857600080fd5b81019080805190602001909291905050507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415156142a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001807f455243313135353a20676f7420756e6b6e6f776e2076616c75652066726f6d2081526020017f6f6e45524331313535426174636852656365697665640000000000000000000081525060400191505060405180910390fd5b614756565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca886040805190810160405280601481526020017f45524331313535546f6b656e5265636569766572000000000000000000000000815250805190602001206040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b15801561439b57600080fd5b505afa1580156143af573d6000803e3d6000fd5b505050506040513d60208110156143c557600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515614754578073ffffffffffffffffffffffffffffffffffffffff1663bc197c8190507c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168173ffffffffffffffffffffffffffffffffffffffff1663bc197c818b8b8a8a8a6040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561456557808201518184015260208101905061454a565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156145a757808201518184015260208101905061458c565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156145e65780820151818401526020810190506145cb565b50505050905090810190601f1680156146135780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561463857600080fd5b505af115801561464c573d6000803e3d6000fd5b505050506040513d602081101561466257600080fd5b81019080805190602001909291905050507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515614753576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260428152602001807f455243313135353a20676f7420756e6b6e6f776e2076616c75652066726f6d2081526020017f696d706c656d656e746564206f6e45524331313535426174636852656365697681526020017f656400000000000000000000000000000000000000000000000000000000000081525060600191505060405180910390fd5b5b505b50505b505050505050565b6147808473ffffffffffffffffffffffffffffffffffffffff166151a7565b1561519f5760646102346102bc6001603f6040612710028115156147a057fe5b04010101015a10151515614842576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001807f455243313135353a206e6f7420656e6f7567682067617320726573657276656481526020017f20666f7220746f6b656e20726563656976657220636865636b0000000000000081525060400191505060405180910390fd5b600060608573ffffffffffffffffffffffffffffffffffffffff1661271060405180807f6f6e455243313135354261746368526563656976656428616464726573732c6181526020017f6464726573732c75696e743235365b5d2c75696e743235365b5d2c627974657381526020017f29000000000000000000000000000000000000000000000000000000000000008152506041019050604051809103902060405180807f6f6e45524331313535526563656976656428616464726573732c61646472657381526020017f732c75696e743235362c75696e743235362c6279746573290000000000000000815250603801905060405180910390201860405160240180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019150506040516020818303038152906040527f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083101515614a3f5780518252602082019150602081019050602083039250614a1a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038160008787f1925050503d8060008114614aa2576040519150601f19603f3d011682016040523d82523d6000602084013e614aa7565b606091505b5091509150818015614aba575060008151115b8015614aef575060011515818060200190516020811015614ada57600080fd5b81019080805190602001909291905050501515145b15614d96578573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6190507c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168673ffffffffffffffffffffffffffffffffffffffff1663f23a6e618a8a8989896040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614c4c578082015181840152602081019050614c31565b50505050905090810190601f168015614c795780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b158015614c9c57600080fd5b505af1158015614cb0573d6000803e3d6000fd5b505050506040513d6020811015614cc657600080fd5b81019080805190602001909291905050507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515614d91576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001807f455243313135353a20676f7420756e6b6e6f776e2076616c75652066726f6d2081526020017f6f6e45524331313535526563656976656400000000000000000000000000000081525060400191505060405180910390fd5b61519c565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca886040805190810160405280601481526020017f45524331313535546f6b656e5265636569766572000000000000000000000000815250805190602001206040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060206040518083038186803b158015614e8957600080fd5b505afa158015614e9d573d6000803e3d6000fd5b505050506040513d6020811015614eb357600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561519a578073ffffffffffffffffffffffffffffffffffffffff1663f23a6e6190507c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168173ffffffffffffffffffffffffffffffffffffffff1663f23a6e618b8b8a8a8a6040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015615054578082015181840152602081019050615039565b50505050905090810190601f1680156150815780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1580156150a457600080fd5b505af11580156150b8573d6000803e3d6000fd5b505050506040513d60208110156150ce57600080fd5b81019080805190602001909291905050507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515615199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001807f455243313135353a20676f7420756e6b6e6f776e2076616c75652066726f6d2081526020017f696d706c656d656e746564206f6e45524331313535526563656976656400000081525060400191505060405180910390fd5b5b505b50505b505050505050565b600080823b905060008111915050919050565b8280548282559060005260206000209081019282156151f6579160200282015b828111156151f55782518255916020019190600101906151da565b5b5090506152039190615207565b5090565b61522991905b8082111561522557600081600090555060010161520d565b5090565b9056fea165627a7a72305820458dcbe02ede5dda282846492e740bdd2dffa11e596c589d6e09bc1d3e54ec080029",
  "sourceMap": "321:16190:7:-;;;718:40:8;385:10;737:20;;718:18;;;:40;;;:::i;:::-;894:330:0;1186:1;1178:27;;;:36;;;;1134:1;1126:28;;;:37;;;;1085:1;1077:25;;;:34;;;;1041:1;1033:20;;;:29;;;;985:1;977:32;;;:41;;;;934:1;926:27;;;:36;;;;:92;:136;:185;:237;:288;894:18;;;:330;;;:::i;:::-;321:16190:7;;1442:190:8;1532:10;1517:25;;:11;:25;;;;;1509:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1621:4;1585:20;:33;1606:11;1585:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1442:190;:::o;321:16190:7:-;;;;;;;",
  "deployedSourceMap": "321:16190:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1481:205:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1481:205:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1481:205:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9801:1882:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9801:1882:7;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;9801:1882:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;9801:1882:7;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9801:1882:7;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;9801:1882:7;;;;;;;;;;;;:::i;:::-;;915:133:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;915:133:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;915:133:8;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2316:50:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2316:50:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2316:50:7;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5265:971:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5265:971:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;5265:971:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;5265:971:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5265:971:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;5265:971:0;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;5265:971:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5265:971:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;5265:971:0;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;5265:971:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5265:971:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5265:971:0;;;;;;;;;;;;:::i;:::-;;1921:594;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1921:594:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1921:594:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1921:594:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1921:594:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;1921:594:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1921:594:0;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1921:594:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1921:594:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;1921:594:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1921:594:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1921:594:0;;;;;;;;;;;;;;;;;3995:1327:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3995:1327:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3995:1327:7;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;3995:1327:7;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3995:1327:7;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3995:1327:7;;;;;;;;;;;;:::i;:::-;;6453:1676;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6453:1676:7;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6453:1676:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6453:1676:7;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6453:1676:7;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6453:1676:7;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8135:1660;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8135:1660:7;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;8135:1660:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;8135:1660:7;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8135:1660:7;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;8135:1660:7;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2804:198:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2804:198:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2804:198:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11911:139:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11911:139:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11911:139:7;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2840:580;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2840:580:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2840:580:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2372:49;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2372:49:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2372:49:7;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3279:147:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3279:147:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3279:147:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3980:696;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3980:696:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;3980:696:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;3980:696:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3980:696:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3980:696:0;;;;;;;;;;;;:::i;:::-;;1481:205;1548:7;1592:1;1575:19;;:5;:19;;;;1567:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1659:9;:13;1669:2;1659:13;;;;;;;;;;;:20;1673:5;1659:20;;;;;;;;;;;;;;;;1652:27;;1481:205;;;;:::o;9801:1882:7:-;9986:1;9953:17;:30;9971:11;9953:30;;;;;;;;;;;;:34;9945:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10039:21;10063:16;:29;10080:11;10063:29;;;;;;;;;;;:36;;;;10039:60;;10136:1;10117:16;:20;10109:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10179:16;10198:1;10179:20;;10209:11;10231:17;10277:1;10257:16;10252:1;:21;;;;10251:27;10231:47;;10293:6;10302:1;10293:10;;10288:869;10309:9;;:16;;10305:1;:20;10288:869;;;10346:13;10362:9;;10372:1;10362:12;;;;;;;;;;;;;;;10346:28;;10407:1;10396:8;:12;:39;;;;;10423:12;10412:8;:23;10396:39;10388:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10508:15;10525:58;10541:18;10561:11;10574:8;10525:15;:58::i;:::-;10491:93;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;10491:93:7;;;10481:104;;;;;;10475:110;;10600:20;10623:1;10600:24;;10643:6;10652:1;10643:10;;10638:218;10659:16;10655:1;:20;10638:218;;;10727:1;10721;10716;:6;;;;10704:8;:19;:24;;10700:142;;;10770:53;10790:16;:29;10807:11;10790:29;;;;;;;;;;;10820:1;10790:32;;;;;;;;;;;;;;;;;;10770:15;:19;;:53;;;;:::i;:::-;10752:71;;10700:142;10677:3;;;;;;;10638:218;;;;10870:16;10889:32;10899:10;10916:3;10911:9;;;10889;:32::i;:::-;10870:51;;10953:1;10939:11;:15;10935:212;;;10988:85;11004:68;11041:17;:30;11059:11;11041:30;;;;;;;;;;;;11004:32;11020:15;11004:11;:15;;:32;;;;:::i;:::-;:36;;:68;;;;:::i;:::-;10988:11;:15;;:85;;;;:::i;:::-;10974:99;;11091:41;11097:10;11114:3;11109:9;;;11120:11;11091:5;:41::i;:::-;10935:212;10288:869;;;10327:3;;;;;;;10288:869;;;;11185:1;11171:11;:15;11167:393;;;11236:1;11228:10;;11206:18;:32;11202:348;;;11266:15;:24;;;11291:10;11303:11;11266:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11266:49:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11266:49:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11266:49:7;;;;;;;;;;;;;;;;11258:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11202:348;;;11435:15;11452:18;11418:53;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11418:53:7;;;11408:64;;;;;;11402:70;;11490:45;11496:10;11513:3;11508:9;;;11519:11;11490:45;;;;;;;;;;;;;:5;:45::i;:::-;11202:348;11167:393;11620:18;11603:15;11574:102;;11591:10;11574:102;;;11640:11;11653:9;;11664:11;11574:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;11574:102:7;;;;;;;;;;;;;;;;9801:1882;;;;;;;;;:::o;915:133:8:-;985:4;1008:20;:33;1029:11;1008:33;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:40;;915:133;;;:::o;2316:50:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5265:971:0:-;5493:6;;:13;;5479:3;;:10;;:27;5471:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5589:1;5575:16;;:2;:16;;;;5567:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5675:10;5667:18;;:4;:18;;;:66;;;;5729:4;5689:44;;:18;:24;5708:4;5689:24;;;;;;;;;;;;;;;:36;5714:10;5689:36;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;5667:66;5646:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5831:9;5843:1;5831:13;;5826:253;5850:3;;:10;;5846:1;:14;5826:253;;;5881:10;5894:3;;5898:1;5894:6;;;;;;;;;;;;;;;5881:19;;5914:13;5930:6;;5937:1;5930:9;;;;;;;;;;;;;;;5914:25;;5976:30;6000:5;5976:9;:13;5986:2;5976:13;;;;;;;;;;;:19;5990:4;5976:19;;;;;;;;;;;;;;;;:23;;:30;;;;:::i;:::-;5954:9;:13;5964:2;5954:13;;;;;;;;;;;:19;5968:4;5954:19;;;;;;;;;;;;;;;:52;;;;6040:28;6050:9;:13;6060:2;6050:13;;;;;;;;;;;:17;6064:2;6050:17;;;;;;;;;;;;;;;;6040:5;:9;;:28;;;;:::i;:::-;6020:9;:13;6030:2;6020:13;;;;;;;;;;;:17;6034:2;6020:17;;;;;;;;;;;;;;;:48;;;;5826:253;;5862:3;;;;;5826:253;;;;6126:2;6094:48;;6120:4;6094:48;;6108:10;6094:48;;;6130:3;;6135:6;;6094:48;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6094:48:0;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6094:48:0;;;;;;;;;;;;;;;;;6153:76;6189:10;6201:4;6207:2;6211:3;;6153:76;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6153:76:0;;;;;;6216:6;;6153:76;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6153:76:0;;;;;;6224:4;;6153:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6153:76:0;;;;;;:35;:76::i;:::-;5265:971;;;;;;;;:::o;1921:594::-;2059:16;2116:3;:10;2099:6;:13;:27;2091:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2188:30;2235:6;:13;2221:28;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;2221:28:0;;;;2188:61;;2265:9;2277:1;2265:13;;2260:218;2284:6;:13;2280:1;:17;2260:218;;;2347:1;2326:23;;:6;2333:1;2326:9;;;;;;;;;;;;;;;;;;:23;;;;2318:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2439:9;:17;2449:3;2453:1;2449:6;;;;;;;;;;;;;;;;;;2439:17;;;;;;;;;;;:28;2457:6;2464:1;2457:9;;;;;;;;;;;;;;;;;;2439:28;;;;;;;;;;;;;;;;2420:13;2434:1;2420:16;;;;;;;;;;;;;;;;;:47;;;;;2299:3;;;;;2260:218;;;;2495:13;2488:20;;;1921:594;;;;:::o;3995:1327:7:-;4104:1;4088:6;;:13;;:17;4080:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4163:1;4157:2;4141:6;;:13;;:18;;;;;;;;:23;4133:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4206:21;4246:2;4230:6;;:13;;:18;;;;;;;;4206:42;;4286:3;4266:16;:23;;4258:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4326:19;4375:10;4387;4399:16;4358:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4358:58:7;;;4348:69;;;;;;4326:91;;4475:16;4435;:29;4452:11;4435:29;;;;;;;;;;;:36;;;;:56;4427:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4575:1;4541:17;:30;4559:11;4541:30;;;;;;;;;;;;:35;4533:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4626:6;4635:1;4626:10;;4621:498;4642:16;4638:1;:20;4621:498;;;4679:14;4848:1;4842:4;4838:12;4832:4;4828:23;4815:37;4802:50;;4912:45;4947:9;4912:17;:30;4930:11;4912:30;;;;;;;;;;;;:34;;:45;;;;:::i;:::-;4879:17;:30;4897:11;4879:30;;;;;;;;;;;:78;;;;5016:1;4980:16;:29;4997:11;4980:29;;;;;;;;;;;5010:1;4980:32;;;;;;;;;;;;;;;;;;:37;4972:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5099:9;5064:16;:29;5081:11;5064:29;;;;;;;;;;;5094:1;5064:32;;;;;;;;;;;;;;;;;:44;;;;4621:498;4660:3;;;;;;;4621:498;;;;5169:1;5136:17;:30;5154:11;5136:30;;;;;;;;;;;;:34;5128:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5255:10;5243;5210:105;;5230:11;5210:105;5267:16;5285;:29;5302:11;5285:29;;;;;;;;;;;5210:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3995:1327;;;;;:::o;6453:1676::-;6654:21;6678:16;:29;6695:11;6678:29;;;;;;;;;;;:36;;;;6654:60;;6751:1;6732:16;:20;6724:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6794:11;6816:17;6862:1;6842:16;6837:1;:21;;;;6836:27;6816:47;;6873:17;6893:12;6873:32;;6920:6;6929:1;6920:10;;6915:486;6936:9;;:16;;6932:1;:20;6915:486;;;6973:13;6989:9;;6999:1;6989:12;;;;;;;;;;;;;;;6973:28;;7034:1;7023:8;:12;:39;;;;;7050:12;7039:8;:23;7023:39;7015:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7139:8;7122:12;7111:8;:23;7110:37;7102:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7204:8;7188:24;;;;7259:15;7276:58;7292:18;7312:11;7325:8;7276:15;:58::i;:::-;7242:93;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7242:93:7;;;7232:104;;;;;;7226:110;;7350:40;7356:10;7373:3;7368:9;;;7379:6;7350:40;;;;;;;;;;;;;:5;:40::i;:::-;6915:486;6954:3;;;;;;;6915:486;;;;7431:1;7415:12;:17;7411:602;;;7482:1;7474:10;;7452:18;:32;7448:345;;;7512:15;:28;;;7541:10;7561:4;7568:6;7512:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7512:63:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7512:63:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7512:63:7;;;;;;;;;;;;;;;;7504:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7448:345;;;7687:15;7704:18;7670:53;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7670:53:7;;;7660:64;;;;;;7654:70;;7742:36;7748:10;7765:3;7760:9;;;7771:6;7742:5;:36::i;:::-;7448:345;7411:602;;;7856:15;7873:77;7889:18;7909:11;7937:12;7922;:27;7873:15;:77::i;:::-;7839:112;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7839:112:7;;;7829:123;;;;;;7823:129;;7966:36;7972:10;7989:3;7984:9;;;7995:6;7966:5;:36::i;:::-;7411:602;8091:11;8071:18;8042:10;8028:94;;;8054:15;8104:9;;8115:6;8028:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;8028:94:7;;;;;;;;;;;;;;;;6453:1676;;;;;;;;;;:::o;8135:1660::-;8337:21;8361:16;:29;8378:11;8361:29;;;;;;;;;;;:36;;;;8337:60;;8434:1;8415:16;:20;8407:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8477:11;8499:17;8545:1;8525:16;8520:1;:21;;;;8519:27;8499:47;;8556:17;8576:12;8556:32;;8603:6;8612:1;8603:10;;8598:482;8619:9;;:16;;8615:1;:20;8598:482;;;8656:13;8672:9;;8682:1;8672:12;;;;;;;;;;;;;;;8656:28;;8717:1;8706:8;:12;:39;;;;;8733:12;8722:8;:23;8706:39;8698:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8822:8;8805:12;8794:8;:23;8793:37;8785:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8887:8;8871:24;;;;8942:15;8959:58;8975:18;8995:11;9008:8;8959:15;:58::i;:::-;8925:93;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8925:93:7;;;8915:104;;;;;;8909:110;;9033:36;9039:10;9056:3;9051:9;;;9062:6;9033:5;:36::i;:::-;8598:482;8637:3;;;;;;;8598:482;;;;9110:1;9094:12;:17;9090:588;;;9161:1;9153:10;;9131:18;:32;9127:327;;;9191:15;:24;;;9216:10;9228:6;9191:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9191:44:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9191:44:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9191:44:7;;;;;;;;;;;;;;;;9183:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9127:327;;;9344:15;9361:18;9327:53;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9327:53:7;;;9317:64;;;;;;9311:70;;9399:40;9405:10;9422:3;9417:9;;;9428:6;9399:40;;;;;;;;;;;;;:5;:40::i;:::-;9127:327;9090:588;;;9517:15;9534:77;9550:18;9570:11;9598:12;9583;:27;9534:15;:77::i;:::-;9500:112;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9500:112:7;;;9490:123;;;;;;9484:129;;9627:40;9633:10;9650:3;9645:9;;;9656:6;9627:40;;;;;;;;;;;;;:5;:40::i;:::-;9090:588;9757:11;9737:18;9708:10;9693:95;;;9720:15;9770:9;;9781:6;9693:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;9693:95:7;;;;;;;;;;;;;;;;8135:1660;;;;;;;;;;:::o;2804:198:0:-;2926:8;2883:18;:30;2902:10;2883:30;;;;;;;;;;;;;;;:40;2914:8;2883:40;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;2976:8;2949:46;;2964:10;2949:46;;;2986:8;2949:46;;;;;;;;;;;;;;;;;;;;;;2804:198;;:::o;11911:139:7:-;11984:4;12007:16;:29;12024:11;12007:29;;;;;;;;;;;:36;;;;12000:43;;11911:139;;;:::o;2840:580::-;2972:3;2952:16;:23;;2944:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3039:1;3020:16;:20;3012:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3080:19;3129:6;3137:10;3149:16;3112:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3112:54:7;;;3102:65;;;;;;3080:87;;3225:1;3185:16;:29;3202:11;3185:29;;;;;;;;;;;:36;;;;:41;3177:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3310:16;3299:28;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;3299:28:7;;;;3267:16;:29;3284:11;3267:29;;;;;;;;;;;:60;;;;;;;;;;;;:::i;:::-;;3384:10;3376:6;3342:71;;3363:11;3342:71;3396:16;3342:71;;;;;;;;;;;;;;;;;;2840:580;;;;:::o;2372:49::-;;;;;;;;;;;;;;;;;:::o;3279:147:0:-;3361:4;3384:18;:25;3403:5;3384:25;;;;;;;;;;;;;;;:35;3410:8;3384:35;;;;;;;;;;;;;;;;;;;;;;;;;3377:42;;3279:147;;;;:::o;3980:696::-;4179:1;4165:16;;:2;:16;;;;4157:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4265:10;4257:18;;:4;:18;;;:66;;;;4319:4;4279:44;;:18;:24;4298:4;4279:24;;;;;;;;;;;;;;;:36;4304:10;4279:36;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;4257:66;4236:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4438:30;4462:5;4438:9;:13;4448:2;4438:13;;;;;;;;;;;:19;4452:4;4438:19;;;;;;;;;;;;;;;;:23;;:30;;;;:::i;:::-;4416:9;:13;4426:2;4416:13;;;;;;;;;;;:19;4430:4;4416:19;;;;;;;;;;;;;;;:52;;;;4498:28;4508:9;:13;4518:2;4508:13;;;;;;;;;;;:17;4522:2;4508:17;;;;;;;;;;;;;;;;4498:5;:9;;:28;;;;:::i;:::-;4478:9;:13;4488:2;4478:13;;;;;;;;;;;:17;4492:2;4478:17;;;;;;;;;;;;;;;:48;;;;4575:2;4542:47;;4569:4;4542:47;;4557:10;4542:47;;;4579:2;4583:5;4542:47;;;;;;;;;;;;;;;;;;;;;;;;4600:69;4631:10;4643:4;4649:2;4653;4657:5;4664:4;;4600:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;4600:69:0;;;;;;:30;:69::i;:::-;3980:696;;;;;;:::o;12056:270:7:-;12167:7;12285:11;12298:8;12268:39;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12268:39:7;;;12258:50;;;;;;12253:56;;;12219:18;12214:24;;;:95;12193:126;;12186:133;;12056:270;;;;;:::o;834:176:10:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;1693:458::-;1751:7;1996:1;1991;:6;1987:45;;;2020:1;2013:8;;;;1987:45;2042:9;2058:1;2054;:5;2042:17;;2086:1;2081;2077;:5;;;;;;;;:10;2069:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2143:1;2136:8;;;1693:458;;;;;:::o;2606:326::-;2664:7;2761:1;2757;:5;2749:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:9;2819:1;2815;:5;;;;;;;;2803:17;;2924:1;2917:8;;;2606:326;;;;:::o;7213:208:0:-;7312:31;7337:5;7312:9;:13;7322:2;7312:13;;;;;;;;;;;:20;7326:5;7312:20;;;;;;;;;;;;;;;;:24;;:31;;;;:::i;:::-;7289:9;:13;7299:2;7289:13;;;;;;;;;;;:20;7303:5;7289:20;;;;;;;;;;;;;;;:54;;;;7400:1;7358:56;;7385:5;7358:56;;7373:10;7358:56;;;7404:2;7408:5;7358:56;;;;;;;;;;;;;;;;;;;;;;;;7213:208;;;:::o;6582:374::-;6696:1;6682:16;;:2;:16;;;;6674:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6767:28;6777:9;:13;6787:2;6777:13;;;;;;;;;;;:17;6791:2;6777:17;;;;;;;;;;;;;;;;6767:5;:9;;:28;;;;:::i;:::-;6747:9;:13;6757:2;6747:13;;;;;;;;;;;:17;6761:2;6747:17;;;;;;;;;;;;;;;:48;;;;6849:2;6810:53;;6845:1;6810:53;;6825:10;6810:53;;;6853:2;6857:5;6810:53;;;;;;;;;;;;;;;;;;;;;;;;6874:75;6905:10;6925:1;6929:2;6933;6937:5;6944:4;6874:30;:75::i;:::-;6582:374;;;;:::o;1274:179:10:-;1332:7;1364:1;1359;:6;;1351:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1410:9;1426:1;1422;:5;1410:17;;1445:1;1438:8;;;1274:179;;;;:::o;14853:1656:7:-;15096:15;:2;:13;;;:15::i;:::-;15093:1410;;;12874:3;12795;12746;12682:1;12677:2;12672;12663:5;12658:16;:21;;;;;;;;:25;:91;:140;:219;15135:9;:43;;15127:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15255:18;15275:27;15306:2;:13;;15324:5;13163:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13075:69;;;;;;;;;;;;;;;;;;;;;;;;13068:174;12998:250;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12998:250:7;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;12998:250:7;15306:52;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;15306:52:7;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;15254:104:7;;;;15393:13;:58;;;;;15450:1;15426:14;:21;:25;15393:58;:120;;;;;15509:4;15471:42;;15482:14;15471:34;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15471:34:7;;;;;;;;;;;;;;;;:42;;;15393:120;15373:1120;;;15708:2;15686:48;;;:57;;;;15575:168;;;15597:2;15575:48;;;15624:8;15634:4;15640:3;15645:6;15653:4;15575:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;15575:83:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;15575:83:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;15575:83:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15575:83:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15575:83:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15575:83:7;;;;;;;;;;;;;;;;:168;;;;15546:293;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15373:1120;;;15878:19;15916:42;15900:104;;;16005:2;16019:29;;;;;;;;;;;;;;;;;;16009:40;;;;;;15900:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15900:150:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15900:150:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15900:150:7;;;;;;;;;;;;;;;;15878:172;;16095:1;16072:25;;:11;:25;;;;16069:410;;;16300:11;16278:57;;;:66;;;;16154:190;;;16176:11;16154:57;;;16212:8;16222:4;16228:3;16233:6;16241:4;16154:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;16154:92:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;16154:92:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;16154:92:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16154:92:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16154:92:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16154:92:7;;;;;;;;;;;;;;;;:190;;;;16121:339;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16069:410;15373:1120;;15093:1410;;;14853:1656;;;;;;:::o;13256:1591::-;13474:15;:2;:13;;;:15::i;:::-;13471:1370;;;12874:3;12795;12746;12682:1;12677:2;12672;12663:5;12658:16;:21;;;;;;;;:25;:91;:140;:219;13513:9;:43;;13505:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13633:18;13653:27;13684:2;:7;;13696:5;13163:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13075:69;;;;;;;;;;;;;;;;;;;;;;;;13068:174;12998:250;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;12998:250:7;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;12998:250:7;13684:46;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;13684:46:7;;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;13632:98:7;;;;13765:13;:58;;;;;13822:1;13798:14;:21;:25;13765:58;:120;;;;;13881:4;13843:42;;13854:14;13843:34;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13843:34:7;;;;;;;;;;;;;;;;:42;;;13765:120;13745:1086;;;14073:2;14051:43;;;:52;;;;13947:156;;;13969:2;13947:43;;;13991:8;14001:4;14007:2;14011:5;14018:4;13947:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;13947:76:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13947:76:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13947:76:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13947:76:7;;;;;;;;;;;;;;;;:156;;;;13918:276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13745:1086;;;14233:19;14271:42;14255:104;;;14360:2;14374:29;;;;;;;;;;;;;;;;;;14364:40;;;;;;14255:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14255:150:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14255:150:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14255:150:7;;;;;;;;;;;;;;;;14233:172;;14450:1;14427:25;;:11;:25;;;;14424:393;;;14648:11;14626:52;;;:61;;;;14509:178;;;14531:11;14509:52;;;14562:8;14572:4;14578:2;14582:5;14589:4;14509:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14509:85:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14509:85:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14509:85:7;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14509:85:7;;;;;;;;;;;;;;;;:178;;;;14476:322;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14424:393;13745:1086;;13471:1370;;;13256:1591;;;;;;:::o;542:413:12:-;602:4;805:12;914:7;902:20;894:28;;947:1;940:4;:8;933:15;;;542:413;;;:::o;321:16190:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
  "source": "pragma solidity ^0.5.1;\nimport { IERC20 } from \"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\";\nimport { IERC1155TokenReceiver } from \"./ERC1155/IERC1155TokenReceiver.sol\";\nimport { ERC1155 } from \"./ERC1155/ERC1155.sol\";\nimport { ERC1820Registry } from \"./ERC1820Registry.sol\";\nimport \"./OracleConsumer.sol\";\n\n\ncontract PredictionMarketSystem is OracleConsumer, ERC1155 {\n\n    /// @dev Emitted upon the successful preparation of a condition.\n    /// @param conditionId The condition's ID. This ID may be derived from the other three parameters via ``keccak256(abi.encodePacked(oracle, questionId, outcomeSlotCount))``.\n    /// @param oracle The account assigned to report the result for the prepared condition.\n    /// @param questionId An identifier for the question to be answered by the oracle.\n    /// @param outcomeSlotCount The number of outcome slots which should be used for this condition. Must not exceed 256.\n    event ConditionPreparation(\n        bytes32 indexed conditionId,\n        address indexed oracle,\n        bytes32 indexed questionId,\n        uint outcomeSlotCount\n    );\n\n    event ConditionResolution(\n        bytes32 indexed conditionId,\n        address indexed oracle,\n        bytes32 indexed questionId,\n        uint outcomeSlotCount,\n        uint[] payoutNumerators\n    );\n\n    /// @dev Emitted when a position is successfully split.\n    event PositionSplit(\n        address indexed stakeholder,\n        IERC20 collateralToken,\n        bytes32 indexed parentCollectionId,\n        bytes32 indexed conditionId,\n        uint[] partition,\n        uint amount\n    );\n    /// @dev Emitted when positions are successfully merged.\n    event PositionsMerge(\n        address indexed stakeholder,\n        IERC20 collateralToken,\n        bytes32 indexed parentCollectionId,\n        bytes32 indexed conditionId,\n        uint[] partition,\n        uint amount\n    );\n    event PayoutRedemption(\n        address indexed redeemer,\n        IERC20 indexed collateralToken,\n        bytes32 indexed parentCollectionId,\n        bytes32 conditionId,\n        uint[] indexSets,\n        uint payout\n    );\n\n    /// Mapping key is an condition ID. Value represents numerators of the payout vector associated with the condition. This array is initialized with a length equal to the outcome slot count.\n    mapping(bytes32 => uint[]) public payoutNumerators;\n    mapping(bytes32 => uint) public payoutDenominator;\n\n    /// @dev This function prepares a condition by initializing a payout vector associated with the condition.\n    /// @param oracle The account assigned to report the result for the prepared condition.\n    /// @param questionId An identifier for the question to be answered by the oracle.\n    /// @param outcomeSlotCount The number of outcome slots which should be used for this condition. Must not exceed 256.\n    function prepareCondition(address oracle, bytes32 questionId, uint outcomeSlotCount) external {\n        require(outcomeSlotCount <= 256, \"too many outcome slots\");\n        require(outcomeSlotCount > 0, \"no outcome slots provided\");\n        bytes32 conditionId = keccak256(abi.encodePacked(oracle, questionId, outcomeSlotCount));\n        require(payoutNumerators[conditionId].length == 0, \"condition already prepared\");\n        payoutNumerators[conditionId] = new uint[](outcomeSlotCount);\n        emit ConditionPreparation(conditionId, oracle, questionId, outcomeSlotCount);\n    }\n\n    /// @dev Called by the oracle for reporting results of conditions. Will set the payout vector for the condition with the ID ``keccak256(abi.encodePacked(oracle, questionId, outcomeSlotCount))``, where oracle is the message sender, questionId is one of the parameters of this function, and outcomeSlotCount is derived from result, which is the result of serializing 32-byte EVM words representing payoutNumerators for each outcome slot of the condition.\n    /// @param questionId The question ID the oracle is answering for\n    /// @param result The oracle's answer\n    function receiveResult(bytes32 questionId, bytes calldata result) external {\n        require(result.length > 0, \"results empty\");\n        require(result.length % 32 == 0, \"results not 32-byte aligned\");\n        uint outcomeSlotCount = result.length / 32;\n        require(outcomeSlotCount <= 256, \"too many outcome slots\");\n        bytes32 conditionId = keccak256(abi.encodePacked(msg.sender, questionId, outcomeSlotCount));\n        require(payoutNumerators[conditionId].length == outcomeSlotCount, \"number of outcomes mismatch\");\n        require(payoutDenominator[conditionId] == 0, \"payout denominator already set\");\n        for (uint i = 0; i < outcomeSlotCount; i++) {\n            uint payoutNum;\n            // solium-disable-next-line security/no-inline-assembly\n            assembly {\n                payoutNum := calldataload(add(0x64, mul(0x20, i)))\n            }\n            payoutDenominator[conditionId] = payoutDenominator[conditionId].add(payoutNum);\n\n            require(payoutNumerators[conditionId][i] == 0, \"payout numerator already set\");\n            payoutNumerators[conditionId][i] = payoutNum;\n        }\n        require(payoutDenominator[conditionId] > 0, \"payout is all zeroes\");\n        emit ConditionResolution(conditionId, msg.sender, questionId, outcomeSlotCount, payoutNumerators[conditionId]);\n    }\n\n    /// @dev This function splits a position. If splitting from the collateral, this contract will attempt to transfer `amount` collateral from the message sender to itself. Otherwise, this contract will burn `amount` stake held by the message sender in the position being split. Regardless, if successful, `amount` stake will be minted in the split target positions. If any of the transfers, mints, or burns fail, the transaction will revert. The transaction will also revert if the given partition is trivial, invalid, or refers to more slots than the condition is prepared with.\n    /// @param collateralToken The address of the positions' backing collateral token.\n    /// @param parentCollectionId The ID of the outcome collections common to the position being split and the split target positions. May be null, in which only the collateral is shared.\n    /// @param conditionId The ID of the condition to split on.\n    /// @param partition An array of disjoint index sets representing a nontrivial partition of the outcome slots of the given condition.\n    /// @param amount The amount of collateral or stake to split.\n    function splitPosition(\n        IERC20 collateralToken,\n        bytes32 parentCollectionId,\n        bytes32 conditionId,\n        uint[] calldata partition,\n        uint amount\n    ) external {\n        uint outcomeSlotCount = payoutNumerators[conditionId].length;\n        require(outcomeSlotCount > 0, \"condition not prepared yet\");\n\n        bytes32 key;\n\n        uint fullIndexSet = (1 << outcomeSlotCount) - 1;\n        uint freeIndexSet = fullIndexSet;\n        for (uint i = 0; i < partition.length; i++) {\n            uint indexSet = partition[i];\n            require(indexSet > 0 && indexSet < fullIndexSet, \"got invalid index set\");\n            require((indexSet & freeIndexSet) == indexSet, \"partition not disjoint\");\n            freeIndexSet ^= indexSet;\n            key = keccak256(abi.encodePacked(collateralToken, getCollectionId(parentCollectionId, conditionId, indexSet)));\n            _mint(msg.sender, uint(key), amount, \"\");\n        }\n\n        if (freeIndexSet == 0) {\n            if (parentCollectionId == bytes32(0)) {\n                require(collateralToken.transferFrom(msg.sender, address(this), amount), \"could not receive collateral tokens\");\n            } else {\n                key = keccak256(abi.encodePacked(collateralToken, parentCollectionId));\n                _burn(msg.sender, uint(key), amount);\n            }\n        } else {\n            key = keccak256(abi.encodePacked(collateralToken, getCollectionId(parentCollectionId, conditionId, fullIndexSet ^ freeIndexSet)));\n            _burn(msg.sender, uint(key), amount);\n        }\n\n        emit PositionSplit(msg.sender, collateralToken, parentCollectionId, conditionId, partition, amount);\n    }\n\n    function mergePositions(\n        IERC20 collateralToken,\n        bytes32 parentCollectionId,\n        bytes32 conditionId,\n        uint[] calldata partition,\n        uint amount\n    ) external {\n        uint outcomeSlotCount = payoutNumerators[conditionId].length;\n        require(outcomeSlotCount > 0, \"condition not prepared yet\");\n\n        bytes32 key;\n\n        uint fullIndexSet = (1 << outcomeSlotCount) - 1;\n        uint freeIndexSet = fullIndexSet;\n        for (uint i = 0; i < partition.length; i++) {\n            uint indexSet = partition[i];\n            require(indexSet > 0 && indexSet < fullIndexSet, \"got invalid index set\");\n            require((indexSet & freeIndexSet) == indexSet, \"partition not disjoint\");\n            freeIndexSet ^= indexSet;\n            key = keccak256(abi.encodePacked(collateralToken, getCollectionId(parentCollectionId, conditionId, indexSet)));\n            _burn(msg.sender, uint(key), amount);\n        }\n\n        if (freeIndexSet == 0) {\n            if (parentCollectionId == bytes32(0)) {\n                require(collateralToken.transfer(msg.sender, amount), \"could not send collateral tokens\");\n            } else {\n                key = keccak256(abi.encodePacked(collateralToken, parentCollectionId));\n                _mint(msg.sender, uint(key), amount, \"\");\n            }\n        } else {\n            key = keccak256(abi.encodePacked(collateralToken, getCollectionId(parentCollectionId, conditionId, fullIndexSet ^ freeIndexSet)));\n            _mint(msg.sender, uint(key), amount, \"\");\n        }\n\n        emit PositionsMerge(msg.sender, collateralToken, parentCollectionId, conditionId, partition, amount);\n    }\n\n    function redeemPositions(IERC20 collateralToken, bytes32 parentCollectionId, bytes32 conditionId, uint[] calldata indexSets) external {\n        require(payoutDenominator[conditionId] > 0, \"result for condition not received yet\");\n        uint outcomeSlotCount = payoutNumerators[conditionId].length;\n        require(outcomeSlotCount > 0, \"condition not prepared yet\");\n\n        uint totalPayout = 0;\n        bytes32 key;\n\n        uint fullIndexSet = (1 << outcomeSlotCount) - 1;\n        for (uint i = 0; i < indexSets.length; i++) {\n            uint indexSet = indexSets[i];\n            require(indexSet > 0 && indexSet < fullIndexSet, \"got invalid index set\");\n            key = keccak256(abi.encodePacked(collateralToken, getCollectionId(parentCollectionId, conditionId, indexSet)));\n\n            uint payoutNumerator = 0;\n            for (uint j = 0; j < outcomeSlotCount; j++) {\n                if (indexSet & (1 << j) != 0) {\n                    payoutNumerator = payoutNumerator.add(payoutNumerators[conditionId][j]);\n                }\n            }\n\n            uint payoutStake = balanceOf(msg.sender, uint(key));\n            if (payoutStake > 0) {\n                totalPayout = totalPayout.add(payoutStake.mul(payoutNumerator).div(payoutDenominator[conditionId]));\n                _burn(msg.sender, uint(key), payoutStake);\n            }\n        }\n\n        if (totalPayout > 0) {\n            if (parentCollectionId == bytes32(0)) {\n                require(collateralToken.transfer(msg.sender, totalPayout), \"could not transfer payout to message sender\");\n            } else {\n                key = keccak256(abi.encodePacked(collateralToken, parentCollectionId));\n                _mint(msg.sender, uint(key), totalPayout, \"\");\n            }\n        }\n        emit PayoutRedemption(msg.sender, collateralToken, parentCollectionId, conditionId, indexSets, totalPayout);\n    }\n\n    /// @dev Gets the outcome slot count of a condition.\n    /// @param conditionId ID of the condition.\n    /// @return Number of outcome slots associated with a condition, or zero if condition has not been prepared yet.\n    function getOutcomeSlotCount(bytes32 conditionId) external view returns (uint) {\n        return payoutNumerators[conditionId].length;\n    }\n\n    function getCollectionId(bytes32 parentCollectionId, bytes32 conditionId, uint indexSet) private pure returns (bytes32) {\n        return bytes32(\n            uint(parentCollectionId) +\n            uint(keccak256(abi.encodePacked(conditionId, indexSet)))\n        );\n    }\n\n    // this value is meant to be used in a require(gasleft() >= CHECK_IS_RECEIVER_REQUIRED_GAS)\n    // statement preceding an ERC165 introspection staticcall to verify that a contract is\n    // an ERC1155TokenReceiver. Gas values gotten through experimenting with Remix.\n    uint constant CHECK_IS_RECEIVER_REQUIRED_GAS =\n        uint(10000) * 64 / 63 + 1 + // minimum gas required to exist before call opcode\n        700 +                       // call cost\n        564 +                       // cost for getting the stuff on the stack\n        100;                        // cost for executing require statement itself\n\n    bytes constant CHECK_IS_RECEIVER_CALLDATA = abi.encodeWithSignature(\n        \"supportsInterface(bytes4)\",\n        bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\")) ^\n        bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))\n    );\n\n\n    function _doSafeTransferAcceptanceCheck(\n        address operator,\n        address from,\n        address to,\n        uint256 id,\n        uint256 value,\n        bytes memory data\n    )\n        internal\n    {\n        if(to.isContract()) {\n            require(gasleft() >= CHECK_IS_RECEIVER_REQUIRED_GAS, \"ERC1155: not enough gas reserved for token receiver check\");\n            (bool callSucceeded, bytes memory callReturnData) = to.call.gas(10000)(CHECK_IS_RECEIVER_CALLDATA);\n\n            if(\n                callSucceeded &&\n                callReturnData.length > 0 &&\n                abi.decode(callReturnData, (bool)) == true\n            ) {\n                require(\n                    IERC1155TokenReceiver(to).onERC1155Received(operator, from, id, value, data) ==\n                        IERC1155TokenReceiver(to).onERC1155Received.selector,\n                    \"ERC1155: got unknown value from onERC1155Received\"\n                );\n            } else {\n                address implementer = ERC1820Registry(0x1820a4B7618BdE71Dce8cdc73aAB6C95905faD24)\n                    .getInterfaceImplementer(to, keccak256(bytes(\"ERC1155TokenReceiver\")));\n\n                if(implementer != address(0)) {\n                    require(\n                        IERC1155TokenReceiver(implementer).onERC1155Received(operator, from, id, value, data) ==\n                            IERC1155TokenReceiver(implementer).onERC1155Received.selector,\n                        \"ERC1155: got unknown value from implemented onERC1155Received\"\n                    );\n                }\n            }\n        }\n    }\n\n    function _doSafeBatchTransferAcceptanceCheck(\n        address operator,\n        address from,\n        address to,\n        uint256[] memory ids,\n        uint256[] memory values,\n        bytes memory data\n    )\n        internal\n    {\n        if(to.isContract()) {\n            require(gasleft() >= CHECK_IS_RECEIVER_REQUIRED_GAS, \"ERC1155: not enough gas reserved for token receiver check\");\n            (bool callSucceeded, bytes memory callReturnData) = to.staticcall.gas(10000)(CHECK_IS_RECEIVER_CALLDATA);\n\n            if(\n                callSucceeded &&\n                callReturnData.length > 0 &&\n                abi.decode(callReturnData, (bool)) == true\n            ) {\n                require(\n                    IERC1155TokenReceiver(to).onERC1155BatchReceived(operator, from, ids, values, data) ==\n                        IERC1155TokenReceiver(to).onERC1155BatchReceived.selector,\n                    \"ERC1155: got unknown value from onERC1155BatchReceived\"\n                );\n            } else {\n                address implementer = ERC1820Registry(0x1820a4B7618BdE71Dce8cdc73aAB6C95905faD24)\n                    .getInterfaceImplementer(to, keccak256(bytes(\"ERC1155TokenReceiver\")));\n\n                if(implementer != address(0)) {\n                    require(\n                        IERC1155TokenReceiver(implementer).onERC1155BatchReceived(operator, from, ids, values, data) ==\n                            IERC1155TokenReceiver(implementer).onERC1155BatchReceived.selector,\n                        \"ERC1155: got unknown value from implemented onERC1155BatchReceived\"\n                    );\n                }\n            }\n        }\n    }\n}\n",
  "sourcePath": "/home/alan/src/github.com/gnosis/hg-contracts/contracts/PredictionMarketSystem.sol",
  "ast": {
    "absolutePath": "/home/alan/src/github.com/gnosis/hg-contracts/contracts/PredictionMarketSystem.sol",
    "exportedSymbols": {
      "PredictionMarketSystem": [
        2497
      ]
    },
    "id": 2498,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1279,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".1"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:7"
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
        "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
        "id": 1281,
        "nodeType": "ImportDirective",
        "scope": 2498,
        "sourceUnit": 2762,
        "src": "24:80:7",
        "symbolAliases": [
          {
            "foreign": 1280,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/alan/src/github.com/gnosis/hg-contracts/contracts/ERC1155/IERC1155TokenReceiver.sol",
        "file": "./ERC1155/IERC1155TokenReceiver.sol",
        "id": 1283,
        "nodeType": "ImportDirective",
        "scope": 2498,
        "sourceUnit": 779,
        "src": "105:76:7",
        "symbolAliases": [
          {
            "foreign": 1282,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/alan/src/github.com/gnosis/hg-contracts/contracts/ERC1155/ERC1155.sol",
        "file": "./ERC1155/ERC1155.sol",
        "id": 1285,
        "nodeType": "ImportDirective",
        "scope": 2498,
        "sourceUnit": 603,
        "src": "182:48:7",
        "symbolAliases": [
          {
            "foreign": 1284,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/alan/src/github.com/gnosis/hg-contracts/contracts/ERC1820Registry.sol",
        "file": "./ERC1820Registry.sol",
        "id": 1287,
        "nodeType": "ImportDirective",
        "scope": 2498,
        "sourceUnit": 1211,
        "src": "231:56:7",
        "symbolAliases": [
          {
            "foreign": 1286,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/alan/src/github.com/gnosis/hg-contracts/contracts/OracleConsumer.sol",
        "file": "./OracleConsumer.sol",
        "id": 1288,
        "nodeType": "ImportDirective",
        "scope": 2498,
        "sourceUnit": 1278,
        "src": "288:30:7",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1289,
              "name": "OracleConsumer",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1277,
              "src": "356:14:7",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_OracleConsumer_$1277",
                "typeString": "contract OracleConsumer"
              }
            },
            "id": 1290,
            "nodeType": "InheritanceSpecifier",
            "src": "356:14:7"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1291,
              "name": "ERC1155",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 602,
              "src": "372:7:7",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC1155_$602",
                "typeString": "contract ERC1155"
              }
            },
            "id": 1292,
            "nodeType": "InheritanceSpecifier",
            "src": "372:7:7"
          }
        ],
        "contractDependencies": [
          602,
          740,
          1277,
          2549,
          2559
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2497,
        "linearizedBaseContracts": [
          2497,
          602,
          740,
          2549,
          2559,
          1277
        ],
        "name": "PredictionMarketSystem",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": "@dev Emitted upon the successful preparation of a condition.\n @param conditionId The condition's ID. This ID may be derived from the other three parameters via ``keccak256(abi.encodePacked(oracle, questionId, outcomeSlotCount))``.\n @param oracle The account assigned to report the result for the prepared condition.\n @param questionId An identifier for the question to be answered by the oracle.\n @param outcomeSlotCount The number of outcome slots which should be used for this condition. Must not exceed 256.",
            "id": 1302,
            "name": "ConditionPreparation",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1301,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1294,
                  "indexed": true,
                  "name": "conditionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1302,
                  "src": "970:27:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1293,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "970:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1296,
                  "indexed": true,
                  "name": "oracle",
                  "nodeType": "VariableDeclaration",
                  "scope": 1302,
                  "src": "1007:22:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1295,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1007:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1298,
                  "indexed": true,
                  "name": "questionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1302,
                  "src": "1039:26:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1297,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1039:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1300,
                  "indexed": false,
                  "name": "outcomeSlotCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1302,
                  "src": "1075:21:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1299,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1075:4:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "960:142:7"
            },
            "src": "934:169:7"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 1315,
            "name": "ConditionResolution",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1314,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1304,
                  "indexed": true,
                  "name": "conditionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1315,
                  "src": "1144:27:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1303,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1144:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1306,
                  "indexed": true,
                  "name": "oracle",
                  "nodeType": "VariableDeclaration",
                  "scope": 1315,
                  "src": "1181:22:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1305,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1181:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1308,
                  "indexed": true,
                  "name": "questionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1315,
                  "src": "1213:26:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1307,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1213:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1310,
                  "indexed": false,
                  "name": "outcomeSlotCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1315,
                  "src": "1249:21:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1309,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1249:4:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1313,
                  "indexed": false,
                  "name": "payoutNumerators",
                  "nodeType": "VariableDeclaration",
                  "scope": 1315,
                  "src": "1280:23:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1311,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "1280:4:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1312,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1280:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1134:175:7"
            },
            "src": "1109:201:7"
          },
          {
            "anonymous": false,
            "documentation": "@dev Emitted when a position is successfully split.",
            "id": 1330,
            "name": "PositionSplit",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1329,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1317,
                  "indexed": true,
                  "name": "stakeholder",
                  "nodeType": "VariableDeclaration",
                  "scope": 1330,
                  "src": "1405:27:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1316,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1405:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1319,
                  "indexed": false,
                  "name": "collateralToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 1330,
                  "src": "1442:22:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$2761",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1318,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2761,
                    "src": "1442:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$2761",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1321,
                  "indexed": true,
                  "name": "parentCollectionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1330,
                  "src": "1474:34:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1320,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1474:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1323,
                  "indexed": true,
                  "name": "conditionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1330,
                  "src": "1518:27:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1322,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1518:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1326,
                  "indexed": false,
                  "name": "partition",
                  "nodeType": "VariableDeclaration",
                  "scope": 1330,
                  "src": "1555:16:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1324,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "1555:4:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1325,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1555:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1328,
                  "indexed": false,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1330,
                  "src": "1581:11:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1327,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1581:4:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1395:203:7"
            },
            "src": "1376:223:7"
          },
          {
            "anonymous": false,
            "documentation": "@dev Emitted when positions are successfully merged.",
            "id": 1345,
            "name": "PositionsMerge",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1344,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1332,
                  "indexed": true,
                  "name": "stakeholder",
                  "nodeType": "VariableDeclaration",
                  "scope": 1345,
                  "src": "1695:27:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1331,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1695:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1334,
                  "indexed": false,
                  "name": "collateralToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 1345,
                  "src": "1732:22:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$2761",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1333,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2761,
                    "src": "1732:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$2761",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1336,
                  "indexed": true,
                  "name": "parentCollectionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1345,
                  "src": "1764:34:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1335,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1764:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1338,
                  "indexed": true,
                  "name": "conditionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1345,
                  "src": "1808:27:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1337,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1808:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1341,
                  "indexed": false,
                  "name": "partition",
                  "nodeType": "VariableDeclaration",
                  "scope": 1345,
                  "src": "1845:16:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1339,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "1845:4:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1340,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1845:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1343,
                  "indexed": false,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1345,
                  "src": "1871:11:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1342,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1871:4:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1685:203:7"
            },
            "src": "1665:224:7"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 1360,
            "name": "PayoutRedemption",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1359,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1347,
                  "indexed": true,
                  "name": "redeemer",
                  "nodeType": "VariableDeclaration",
                  "scope": 1360,
                  "src": "1926:24:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1346,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1926:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1349,
                  "indexed": true,
                  "name": "collateralToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 1360,
                  "src": "1960:30:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$2761",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1348,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2761,
                    "src": "1960:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$2761",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1351,
                  "indexed": true,
                  "name": "parentCollectionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1360,
                  "src": "2000:34:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1350,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2000:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1353,
                  "indexed": false,
                  "name": "conditionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1360,
                  "src": "2044:19:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1352,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2044:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1356,
                  "indexed": false,
                  "name": "indexSets",
                  "nodeType": "VariableDeclaration",
                  "scope": 1360,
                  "src": "2073:16:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1354,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "2073:4:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1355,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2073:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1358,
                  "indexed": false,
                  "name": "payout",
                  "nodeType": "VariableDeclaration",
                  "scope": 1360,
                  "src": "2099:11:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1357,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2099:4:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1916:200:7"
            },
            "src": "1894:223:7"
          },
          {
            "constant": false,
            "id": 1365,
            "name": "payoutNumerators",
            "nodeType": "VariableDeclaration",
            "scope": 2497,
            "src": "2316:50:7",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$",
              "typeString": "mapping(bytes32 => uint256[])"
            },
            "typeName": {
              "id": 1364,
              "keyType": {
                "id": 1361,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "2324:7:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "2316:26:7",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$",
                "typeString": "mapping(bytes32 => uint256[])"
              },
              "valueType": {
                "baseType": {
                  "id": 1362,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "2335:4:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "id": 1363,
                "length": null,
                "nodeType": "ArrayTypeName",
                "src": "2335:6:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                  "typeString": "uint256[]"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1369,
            "name": "payoutDenominator",
            "nodeType": "VariableDeclaration",
            "scope": 2497,
            "src": "2372:49:7",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
              "typeString": "mapping(bytes32 => uint256)"
            },
            "typeName": {
              "id": 1368,
              "keyType": {
                "id": 1366,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "2380:7:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "2372:24:7",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                "typeString": "mapping(bytes32 => uint256)"
              },
              "valueType": {
                "id": 1367,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "2391:4:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1430,
              "nodeType": "Block",
              "src": "2934:486:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1381,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1379,
                          "name": "outcomeSlotCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1375,
                          "src": "2952:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "323536",
                          "id": 1380,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2972:3:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_256_by_1",
                            "typeString": "int_const 256"
                          },
                          "value": "256"
                        },
                        "src": "2952:23:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "746f6f206d616e79206f7574636f6d6520736c6f7473",
                        "id": 1382,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2977:24:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5706584e314540f601d1501360936f8fc9e30a7d2e74e7748785732369bd0cdd",
                          "typeString": "literal_string \"too many outcome slots\""
                        },
                        "value": "too many outcome slots"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5706584e314540f601d1501360936f8fc9e30a7d2e74e7748785732369bd0cdd",
                          "typeString": "literal_string \"too many outcome slots\""
                        }
                      ],
                      "id": 1378,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2798,
                        2799
                      ],
                      "referencedDeclaration": 2799,
                      "src": "2944:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1383,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2944:58:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1384,
                  "nodeType": "ExpressionStatement",
                  "src": "2944:58:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1388,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1386,
                          "name": "outcomeSlotCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1375,
                          "src": "3020:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3039:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3020:20:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6e6f206f7574636f6d6520736c6f74732070726f7669646564",
                        "id": 1389,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3042:27:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_0f8d4cdd6800a772f716b37541d254a85fe03589c493b5a7965d27046c5199b9",
                          "typeString": "literal_string \"no outcome slots provided\""
                        },
                        "value": "no outcome slots provided"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_0f8d4cdd6800a772f716b37541d254a85fe03589c493b5a7965d27046c5199b9",
                          "typeString": "literal_string \"no outcome slots provided\""
                        }
                      ],
                      "id": 1385,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2798,
                        2799
                      ],
                      "referencedDeclaration": 2799,
                      "src": "3012:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1390,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3012:58:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1391,
                  "nodeType": "ExpressionStatement",
                  "src": "3012:58:7"
                },
                {
                  "assignments": [
                    1393
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1393,
                      "name": "conditionId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1430,
                      "src": "3080:19:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1392,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3080:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1402,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1397,
                            "name": "oracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1371,
                            "src": "3129:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1398,
                            "name": "questionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1373,
                            "src": "3137:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1399,
                            "name": "outcomeSlotCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1375,
                            "src": "3149:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1395,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2782,
                            "src": "3112:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1396,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3112:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1400,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3112:54:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1394,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2789,
                      "src": "3102:9:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1401,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3102:65:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3080:87:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1409,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1404,
                              "name": "payoutNumerators",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1365,
                              "src": "3185:16:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$",
                                "typeString": "mapping(bytes32 => uint256[] storage ref)"
                              }
                            },
                            "id": 1406,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1405,
                              "name": "conditionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1393,
                              "src": "3202:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3185:29:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                              "typeString": "uint256[] storage ref"
                            }
                          },
                          "id": 1407,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3185:36:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1408,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3225:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3185:41:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "636f6e646974696f6e20616c7265616479207072657061726564",
                        "id": 1410,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3228:28:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_085f2ba305b65e1749ffb9aa5f5036488c96fa506e8794890472c8b77d753ee9",
                          "typeString": "literal_string \"condition already prepared\""
                        },
                        "value": "condition already prepared"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_085f2ba305b65e1749ffb9aa5f5036488c96fa506e8794890472c8b77d753ee9",
                          "typeString": "literal_string \"condition already prepared\""
                        }
                      ],
                      "id": 1403,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2798,
                        2799
                      ],
                      "referencedDeclaration": 2799,
                      "src": "3177:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1411,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3177:80:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1412,
                  "nodeType": "ExpressionStatement",
                  "src": "3177:80:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1421,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1413,
                        "name": "payoutNumerators",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1365,
                        "src": "3267:16:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$",
                          "typeString": "mapping(bytes32 => uint256[] storage ref)"
                        }
                      },
                      "id": 1415,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1414,
                        "name": "conditionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1393,
                        "src": "3284:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3267:29:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                        "typeString": "uint256[] storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1419,
                          "name": "outcomeSlotCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1375,
                          "src": "3310:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1418,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "3299:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$",
                          "typeString": "function (uint256) pure returns (uint256[] memory)"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1416,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "3303:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1417,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3303:6:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        }
                      },
                      "id": 1420,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3299:28:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
                        "typeString": "uint256[] memory"
                      }
                    },
                    "src": "3267:60:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                      "typeString": "uint256[] storage ref"
                    }
                  },
                  "id": 1422,
                  "nodeType": "ExpressionStatement",
                  "src": "3267:60:7"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1424,
                        "name": "conditionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1393,
                        "src": "3363:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1425,
                        "name": "oracle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1371,
                        "src": "3376:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1426,
                        "name": "questionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1373,
                        "src": "3384:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1427,
                        "name": "outcomeSlotCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1375,
                        "src": "3396:16:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1423,
                      "name": "ConditionPreparation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1302,
                      "src": "3342:20:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,address,bytes32,uint256)"
                      }
                    },
                    "id": 1428,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3342:71:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1429,
                  "nodeType": "EmitStatement",
                  "src": "3337:76:7"
                }
              ]
            },
            "documentation": "@dev This function prepares a condition by initializing a payout vector associated with the condition.\n @param oracle The account assigned to report the result for the prepared condition.\n @param questionId An identifier for the question to be answered by the oracle.\n @param outcomeSlotCount The number of outcome slots which should be used for this condition. Must not exceed 256.",
            "id": 1431,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "prepareCondition",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1376,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1371,
                  "name": "oracle",
                  "nodeType": "VariableDeclaration",
                  "scope": 1431,
                  "src": "2866:14:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1370,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2866:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1373,
                  "name": "questionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1431,
                  "src": "2882:18:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1372,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2882:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1375,
                  "name": "outcomeSlotCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1431,
                  "src": "2902:21:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1374,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2902:4:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2865:59:7"
            },
            "returnParameters": {
              "id": 1377,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2934:0:7"
            },
            "scope": 2497,
            "src": "2840:580:7",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1567,
              "nodeType": "Block",
              "src": "4070:1252:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1442,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1439,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1435,
                            "src": "4088:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          },
                          "id": 1440,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4088:13:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1441,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4104:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4088:17:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "726573756c747320656d707479",
                        "id": 1443,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4107:15:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_67ca5b66623ba79d71f57a7c233f78928bb6fc917ef9d081bd4b07d6f541640d",
                          "typeString": "literal_string \"results empty\""
                        },
                        "value": "results empty"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_67ca5b66623ba79d71f57a7c233f78928bb6fc917ef9d081bd4b07d6f541640d",
                          "typeString": "literal_string \"results empty\""
                        }
                      ],
                      "id": 1438,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2798,
                        2799
                      ],
                      "referencedDeclaration": 2799,
                      "src": "4080:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1444,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4080:43:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1445,
                  "nodeType": "ExpressionStatement",
                  "src": "4080:43:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1452,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1447,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1435,
                              "src": "4141:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            "id": 1448,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4141:13:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "%",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "3332",
                            "id": 1449,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4157:2:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            },
                            "value": "32"
                          },
                          "src": "4141:18:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1451,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4163:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4141:23:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "726573756c7473206e6f742033322d6279746520616c69676e6564",
                        "id": 1453,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4166:29:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c9caa8af887c814552b93ecaf851da48a5d2cff00383a07c7b88b62fab70bebd",
                          "typeString": "literal_string \"results not 32-byte aligned\""
                        },
                        "value": "results not 32-byte aligned"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c9caa8af887c814552b93ecaf851da48a5d2cff00383a07c7b88b62fab70bebd",
                          "typeString": "literal_string \"results not 32-byte aligned\""
                        }
                      ],
                      "id": 1446,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2798,
                        2799
                      ],
                      "referencedDeclaration": 2799,
                      "src": "4133:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1454,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4133:63:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1455,
                  "nodeType": "ExpressionStatement",
                  "src": "4133:63:7"
                },
                {
                  "assignments": [
                    1457
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1457,
                      "name": "outcomeSlotCount",
                      "nodeType": "VariableDeclaration",
                      "scope": 1567,
                      "src": "4206:21:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1456,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4206:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1462,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1461,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1458,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1435,
                        "src": "4230:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      "id": 1459,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4230:13:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3332",
                      "id": 1460,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4246:2:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_32_by_1",
                        "typeString": "int_const 32"
                      },
                      "value": "32"
                    },
                    "src": "4230:18:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4206:42:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1466,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1464,
                          "name": "outcomeSlotCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1457,
                          "src": "4266:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "323536",
                          "id": 1465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4286:3:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_256_by_1",
                            "typeString": "int_const 256"
                          },
                          "value": "256"
                        },
                        "src": "4266:23:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "746f6f206d616e79206f7574636f6d6520736c6f7473",
                        "id": 1467,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4291:24:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5706584e314540f601d1501360936f8fc9e30a7d2e74e7748785732369bd0cdd",
                          "typeString": "literal_string \"too many outcome slots\""
                        },
                        "value": "too many outcome slots"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5706584e314540f601d1501360936f8fc9e30a7d2e74e7748785732369bd0cdd",
                          "typeString": "literal_string \"too many outcome slots\""
                        }
                      ],
                      "id": 1463,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2798,
                        2799
                      ],
                      "referencedDeclaration": 2799,
                      "src": "4258:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1468,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4258:58:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1469,
                  "nodeType": "ExpressionStatement",
                  "src": "4258:58:7"
                },
                {
                  "assignments": [
                    1471
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1471,
                      "name": "conditionId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1567,
                      "src": "4326:19:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1470,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4326:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1481,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1475,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2795,
                              "src": "4375:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1476,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4375:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1477,
                            "name": "questionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1433,
                            "src": "4387:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1478,
                            "name": "outcomeSlotCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1457,
                            "src": "4399:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1473,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2782,
                            "src": "4358:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1474,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4358:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1479,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4358:58:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1472,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2789,
                      "src": "4348:9:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1480,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4348:69:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4326:91:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1488,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1483,
                              "name": "payoutNumerators",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1365,
                              "src": "4435:16:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$",
                                "typeString": "mapping(bytes32 => uint256[] storage ref)"
                              }
                            },
                            "id": 1485,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1484,
                              "name": "conditionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1471,
                              "src": "4452:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4435:29:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                              "typeString": "uint256[] storage ref"
                            }
                          },
                          "id": 1486,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4435:36:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1487,
                          "name": "outcomeSlotCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1457,
                          "src": "4475:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4435:56:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6e756d626572206f66206f7574636f6d6573206d69736d61746368",
                        "id": 1489,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4493:29:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c11e7a464a2ae39b1ccafde4608c18a0d9fde62f05cc44adfc808126044dd1e2",
                          "typeString": "literal_string \"number of outcomes mismatch\""
                        },
                        "value": "number of outcomes mismatch"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c11e7a464a2ae39b1ccafde4608c18a0d9fde62f05cc44adfc808126044dd1e2",
                          "typeString": "literal_string \"number of outcomes mismatch\""
                        }
                      ],
                      "id": 1482,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2798,
                        2799
                      ],
                      "referencedDeclaration": 2799,
                      "src": "4427:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1490,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4427:96:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1491,
                  "nodeType": "ExpressionStatement",
                  "src": "4427:96:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1497,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1493,
                            "name": "payoutDenominator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1369,
                            "src": "4541:17:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                              "typeString": "mapping(bytes32 => uint256)"
                            }
                          },
                          "id": 1495,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1494,
                            "name": "conditionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1471,
                            "src": "4559:11:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4541:30:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1496,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4575:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4541:35:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7061796f75742064656e6f6d696e61746f7220616c726561647920736574",
                        "id": 1498,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4578:32:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6e02e620da3906989996cbf7fada43ca471ebaecde092b11e3ff24dcae3669cf",
                          "typeString": "literal_string \"payout denominator already set\""
                        },
                        "value": "payout denominator already set"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6e02e620da3906989996cbf7fada43ca471ebaecde092b11e3ff24dcae3669cf",
                          "typeString": "literal_string \"payout denominator already set\""
                        }
                      ],
                      "id": 1492,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2798,
                        2799
                      ],
                      "referencedDeclaration": 2799,
                      "src": "4533:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1499,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4533:78:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1500,
                  "nodeType": "ExpressionStatement",
                  "src": "4533:78:7"
                },
                {
                  "body": {
                    "id": 1545,
                    "nodeType": "Block",
                    "src": "4665:454:7",
                    "statements": [
                      {
                        "assignments": [
                          1512
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1512,
                            "name": "payoutNum",
                            "nodeType": "VariableDeclaration",
                            "scope": 1545,
                            "src": "4679:14:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1511,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "4679:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1513,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4679:14:7"
                      },
                      {
                        "externalReferences": [
                          {
                            "payoutNum": {
                              "declaration": 1512,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "4802:9:7",
                              "valueSize": 1
                            }
                          },
                          {
                            "i": {
                              "declaration": 1502,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "4848:1:7",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 1514,
                        "nodeType": "InlineAssembly",
                        "operations": "{\n    payoutNum := calldataload(add(0x64, mul(0x20, i)))\n}",
                        "src": "4775:121:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1524,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1515,
                              "name": "payoutDenominator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1369,
                              "src": "4879:17:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 1517,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1516,
                              "name": "conditionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1471,
                              "src": "4897:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4879:30:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1522,
                                "name": "payoutNum",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1512,
                                "src": "4947:9:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1518,
                                  "name": "payoutDenominator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1369,
                                  "src": "4912:17:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                    "typeString": "mapping(bytes32 => uint256)"
                                  }
                                },
                                "id": 1520,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1519,
                                  "name": "conditionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1471,
                                  "src": "4930:11:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4912:30:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1521,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2586,
                              "src": "4912:34:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1523,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4912:45:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4879:78:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1525,
                        "nodeType": "ExpressionStatement",
                        "src": "4879:78:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1533,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1527,
                                    "name": "payoutNumerators",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1365,
                                    "src": "4980:16:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$",
                                      "typeString": "mapping(bytes32 => uint256[] storage ref)"
                                    }
                                  },
                                  "id": 1529,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1528,
                                    "name": "conditionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1471,
                                    "src": "4997:11:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4980:29:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                    "typeString": "uint256[] storage ref"
                                  }
                                },
                                "id": 1531,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1530,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1502,
                                  "src": "5010:1:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4980:32:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1532,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5016:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4980:37:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7061796f7574206e756d657261746f7220616c726561647920736574",
                              "id": 1534,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5019:30:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3a5485047320688d4127f54e4e0ca39f78a10abe715028e5b70b97dee5994e44",
                                "typeString": "literal_string \"payout numerator already set\""
                              },
                              "value": "payout numerator already set"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3a5485047320688d4127f54e4e0ca39f78a10abe715028e5b70b97dee5994e44",
                                "typeString": "literal_string \"payout numerator already set\""
                              }
                            ],
                            "id": 1526,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2798,
                              2799
                            ],
                            "referencedDeclaration": 2799,
                            "src": "4972:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4972:78:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1536,
                        "nodeType": "ExpressionStatement",
                        "src": "4972:78:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1543,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1537,
                                "name": "payoutNumerators",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1365,
                                "src": "5064:16:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$",
                                  "typeString": "mapping(bytes32 => uint256[] storage ref)"
                                }
                              },
                              "id": 1540,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1538,
                                "name": "conditionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1471,
                                "src": "5081:11:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5064:29:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            },
                            "id": 1541,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1539,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1502,
                              "src": "5094:1:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5064:32:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1542,
                            "name": "payoutNum",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1512,
                            "src": "5099:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5064:44:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1544,
                        "nodeType": "ExpressionStatement",
                        "src": "5064:44:7"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1507,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1505,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1502,
                      "src": "4638:1:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 1506,
                      "name": "outcomeSlotCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1457,
                      "src": "4642:16:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4638:20:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1546,
                  "initializationExpression": {
                    "assignments": [
                      1502
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1502,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 1546,
                        "src": "4626:6:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1501,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "4626:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1504,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1503,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4635:1:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4626:10:7"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1509,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4660:3:7",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1508,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1502,
                        "src": "4660:1:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1510,
                    "nodeType": "ExpressionStatement",
                    "src": "4660:3:7"
                  },
                  "nodeType": "ForStatement",
                  "src": "4621:498:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1552,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1548,
                            "name": "payoutDenominator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1369,
                            "src": "5136:17:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                              "typeString": "mapping(bytes32 => uint256)"
                            }
                          },
                          "id": 1550,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1549,
                            "name": "conditionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1471,
                            "src": "5154:11:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5136:30:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1551,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5169:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "5136:34:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7061796f757420697320616c6c207a65726f6573",
                        "id": 1553,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5172:22:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ecb4c17013e582c5700501761dd8163e4cceba6f6ed55e500cd2a5e2233938ef",
                          "typeString": "literal_string \"payout is all zeroes\""
                        },
                        "value": "payout is all zeroes"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ecb4c17013e582c5700501761dd8163e4cceba6f6ed55e500cd2a5e2233938ef",
                          "typeString": "literal_string \"payout is all zeroes\""
                        }
                      ],
                      "id": 1547,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2798,
                        2799
                      ],
                      "referencedDeclaration": 2799,
                      "src": "5128:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1554,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5128:67:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1555,
                  "nodeType": "ExpressionStatement",
                  "src": "5128:67:7"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1557,
                        "name": "conditionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1471,
                        "src": "5230:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1558,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2795,
                          "src": "5243:3:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1559,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5243:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1560,
                        "name": "questionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1433,
                        "src": "5255:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1561,
                        "name": "outcomeSlotCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1457,
                        "src": "5267:16:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1562,
                          "name": "payoutNumerators",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1365,
                          "src": "5285:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$",
                            "typeString": "mapping(bytes32 => uint256[] storage ref)"
                          }
                        },
                        "id": 1564,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1563,
                          "name": "conditionId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1471,
                          "src": "5302:11:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5285:29:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        }
                      ],
                      "id": 1556,
                      "name": "ConditionResolution",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1315,
                      "src": "5210:19:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes32_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,address,bytes32,uint256,uint256[] memory)"
                      }
                    },
                    "id": 1565,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5210:105:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1566,
                  "nodeType": "EmitStatement",
                  "src": "5205:110:7"
                }
              ]
            },
            "documentation": "@dev Called by the oracle for reporting results of conditions. Will set the payout vector for the condition with the ID ``keccak256(abi.encodePacked(oracle, questionId, outcomeSlotCount))``, where oracle is the message sender, questionId is one of the parameters of this function, and outcomeSlotCount is derived from result, which is the result of serializing 32-byte EVM words representing payoutNumerators for each outcome slot of the condition.\n @param questionId The question ID the oracle is answering for\n @param result The oracle's answer",
            "id": 1568,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "receiveResult",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1436,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1433,
                  "name": "questionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1568,
                  "src": "4018:18:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1432,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4018:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1435,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 1568,
                  "src": "4038:21:7",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1434,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4038:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4017:43:7"
            },
            "returnParameters": {
              "id": 1437,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4070:0:7"
            },
            "scope": 2497,
            "src": "3995:1327:7",
            "stateMutability": "nonpayable",
            "superFunction": 1276,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1761,
              "nodeType": "Block",
              "src": "6644:1485:7",
              "statements": [
                {
                  "assignments": [
                    1583
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1583,
                      "name": "outcomeSlotCount",
                      "nodeType": "VariableDeclaration",
                      "scope": 1761,
                      "src": "6654:21:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1582,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6654:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1588,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1584,
                        "name": "payoutNumerators",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1365,
                        "src": "6678:16:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$",
                          "typeString": "mapping(bytes32 => uint256[] storage ref)"
                        }
                      },
                      "id": 1586,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1585,
                        "name": "conditionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1574,
                        "src": "6695:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "6678:29:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                        "typeString": "uint256[] storage ref"
                      }
                    },
                    "id": 1587,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "6678:36:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6654:60:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1592,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1590,
                          "name": "outcomeSlotCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1583,
                          "src": "6732:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1591,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6751:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "6732:20:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "636f6e646974696f6e206e6f7420707265706172656420796574",
                        "id": 1593,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6754:28:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e04bbd75ab4a1437326ef11a696b620d013bedb4db855d7241cc1435c81cd55a",
                          "typeString": "literal_string \"condition not prepared yet\""
                        },
                        "value": "condition not prepared yet"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e04bbd75ab4a1437326ef11a696b620d013bedb4db855d7241cc1435c81cd55a",
                          "typeString": "literal_string \"condition not prepared yet\""
                        }
                      ],
                      "id": 1589,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2798,
                        2799
                      ],
                      "referencedDeclaration": 2799,
                      "src": "6724:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1594,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6724:59:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1595,
                  "nodeType": "ExpressionStatement",
                  "src": "6724:59:7"
                },
                {
                  "assignments": [
                    1597
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1597,
                      "name": "key",
                      "nodeType": "VariableDeclaration",
                      "scope": 1761,
                      "src": "6794:11:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1596,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6794:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1598,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6794:11:7"
                },
                {
                  "assignments": [
                    1600
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1600,
                      "name": "fullIndexSet",
                      "nodeType": "VariableDeclaration",
                      "scope": 1761,
                      "src": "6816:17:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1599,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6816:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1607,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1606,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1603,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1601,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6837:1:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1602,
                            "name": "outcomeSlotCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1583,
                            "src": "6842:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6837:21:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1604,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "6836:23:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 1605,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6862:1:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "6836:27:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6816:47:7"
                },
                {
                  "assignments": [
                    1609
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1609,
                      "name": "freeIndexSet",
                      "nodeType": "VariableDeclaration",
                      "scope": 1761,
                      "src": "6873:17:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1608,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6873:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1611,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 1610,
                    "name": "fullIndexSet",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1600,
                    "src": "6893:12:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6873:32:7"
                },
                {
                  "body": {
                    "id": 1678,
                    "nodeType": "Block",
                    "src": "6959:442:7",
                    "statements": [
                      {
                        "assignments": [
                          1624
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1624,
                            "name": "indexSet",
                            "nodeType": "VariableDeclaration",
                            "scope": 1678,
                            "src": "6973:13:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1623,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "6973:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1628,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1625,
                            "name": "partition",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1577,
                            "src": "6989:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 1627,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1626,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1613,
                            "src": "6999:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6989:12:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6973:28:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1636,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1632,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1630,
                                  "name": "indexSet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1624,
                                  "src": "7023:8:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1631,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7034:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7023:12:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1635,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1633,
                                  "name": "indexSet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1624,
                                  "src": "7039:8:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 1634,
                                  "name": "fullIndexSet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1600,
                                  "src": "7050:12:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7039:23:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "7023:39:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "676f7420696e76616c696420696e64657820736574",
                              "id": 1637,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7064:23:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6a6949259bc762cfed0fdf355e0e833a39c80f6df01cfb722c2d69f034e6a9c2",
                                "typeString": "literal_string \"got invalid index set\""
                              },
                              "value": "got invalid index set"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6a6949259bc762cfed0fdf355e0e833a39c80f6df01cfb722c2d69f034e6a9c2",
                                "typeString": "literal_string \"got invalid index set\""
                              }
                            ],
                            "id": 1629,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2798,
                              2799
                            ],
                            "referencedDeclaration": 2799,
                            "src": "7015:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1638,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7015:73:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1639,
                        "nodeType": "ExpressionStatement",
                        "src": "7015:73:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1646,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1643,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 1641,
                                      "name": "indexSet",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1624,
                                      "src": "7111:8:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 1642,
                                      "name": "freeIndexSet",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1609,
                                      "src": "7122:12:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "7111:23:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 1644,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "7110:25:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1645,
                                "name": "indexSet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1624,
                                "src": "7139:8:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7110:37:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "706172746974696f6e206e6f74206469736a6f696e74",
                              "id": 1647,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7149:24:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a336fd2d125b487729e17b65dd490bafa0eb0de3aa7aaeba65732e819267b75b",
                                "typeString": "literal_string \"partition not disjoint\""
                              },
                              "value": "partition not disjoint"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a336fd2d125b487729e17b65dd490bafa0eb0de3aa7aaeba65732e819267b75b",
                                "typeString": "literal_string \"partition not disjoint\""
                              }
                            ],
                            "id": 1640,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2798,
                              2799
                            ],
                            "referencedDeclaration": 2799,
                            "src": "7102:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1648,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7102:72:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1649,
                        "nodeType": "ExpressionStatement",
                        "src": "7102:72:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1652,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1650,
                            "name": "freeIndexSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1609,
                            "src": "7188:12:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "^=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1651,
                            "name": "indexSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1624,
                            "src": "7204:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7188:24:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1653,
                        "nodeType": "ExpressionStatement",
                        "src": "7188:24:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1666,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1654,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1597,
                            "src": "7226:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1658,
                                    "name": "collateralToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1570,
                                    "src": "7259:15:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$2761",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1660,
                                        "name": "parentCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1572,
                                        "src": "7292:18:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 1661,
                                        "name": "conditionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1574,
                                        "src": "7312:11:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 1662,
                                        "name": "indexSet",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1624,
                                        "src": "7325:8:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 1659,
                                      "name": "getCollectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2220,
                                      "src": "7276:15:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes32,bytes32,uint256) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 1663,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7276:58:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IERC20_$2761",
                                      "typeString": "contract IERC20"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1656,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2782,
                                    "src": "7242:3:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 1657,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7242:16:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 1664,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7242:93:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 1655,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2789,
                              "src": "7232:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 1665,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7232:104:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "7226:110:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 1667,
                        "nodeType": "ExpressionStatement",
                        "src": "7226:110:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1669,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2795,
                                "src": "7356:3:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1670,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7356:10:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1672,
                                  "name": "key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1597,
                                  "src": "7373:3:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 1671,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7368:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": "uint"
                              },
                              "id": 1673,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7368:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1674,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1579,
                              "src": "7379:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "",
                              "id": 1675,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7387:2:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 1668,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 481,
                            "src": "7350:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 1676,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7350:40:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1677,
                        "nodeType": "ExpressionStatement",
                        "src": "7350:40:7"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1619,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1616,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1613,
                      "src": "6932:1:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1617,
                        "name": "partition",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1577,
                        "src": "6936:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      "id": 1618,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6936:16:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6932:20:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1679,
                  "initializationExpression": {
                    "assignments": [
                      1613
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1613,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 1679,
                        "src": "6920:6:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1612,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "6920:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1615,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1614,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6929:1:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "6920:10:7"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1621,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "6954:3:7",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1620,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1613,
                        "src": "6954:1:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1622,
                    "nodeType": "ExpressionStatement",
                    "src": "6954:3:7"
                  },
                  "nodeType": "ForStatement",
                  "src": "6915:486:7"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1682,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1680,
                      "name": "freeIndexSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1609,
                      "src": "7415:12:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1681,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7431:1:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7415:17:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 1749,
                    "nodeType": "Block",
                    "src": "7809:204:7",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1738,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1724,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1597,
                            "src": "7823:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1728,
                                    "name": "collateralToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1570,
                                    "src": "7856:15:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$2761",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1730,
                                        "name": "parentCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1572,
                                        "src": "7889:18:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 1731,
                                        "name": "conditionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1574,
                                        "src": "7909:11:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 1734,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 1732,
                                          "name": "fullIndexSet",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1600,
                                          "src": "7922:12:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "^",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 1733,
                                          "name": "freeIndexSet",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1609,
                                          "src": "7937:12:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "7922:27:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 1729,
                                      "name": "getCollectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2220,
                                      "src": "7873:15:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes32,bytes32,uint256) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 1735,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7873:77:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IERC20_$2761",
                                      "typeString": "contract IERC20"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1726,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2782,
                                    "src": "7839:3:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 1727,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7839:16:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 1736,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7839:112:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 1725,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2789,
                              "src": "7829:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 1737,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7829:123:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "7823:129:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 1739,
                        "nodeType": "ExpressionStatement",
                        "src": "7823:129:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1741,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2795,
                                "src": "7972:3:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1742,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7972:10:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1744,
                                  "name": "key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1597,
                                  "src": "7989:3:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 1743,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7984:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": "uint"
                              },
                              "id": 1745,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7984:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1746,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1579,
                              "src": "7995:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1740,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 517,
                            "src": "7966:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 1747,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7966:36:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1748,
                        "nodeType": "ExpressionStatement",
                        "src": "7966:36:7"
                      }
                    ]
                  },
                  "id": 1750,
                  "nodeType": "IfStatement",
                  "src": "7411:602:7",
                  "trueBody": {
                    "id": 1723,
                    "nodeType": "Block",
                    "src": "7434:369:7",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 1687,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1683,
                            "name": "parentCollectionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1572,
                            "src": "7452:18:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1685,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7482:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 1684,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7474:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": "bytes32"
                            },
                            "id": 1686,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7474:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "7452:32:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 1721,
                          "nodeType": "Block",
                          "src": "7636:157:7",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1710,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1702,
                                  "name": "key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1597,
                                  "src": "7654:3:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 1706,
                                          "name": "collateralToken",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1570,
                                          "src": "7687:15:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$2761",
                                            "typeString": "contract IERC20"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 1707,
                                          "name": "parentCollectionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1572,
                                          "src": "7704:18:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_IERC20_$2761",
                                            "typeString": "contract IERC20"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1704,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2782,
                                          "src": "7670:3:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 1705,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encodePacked",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "7670:16:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 1708,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7670:53:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 1703,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2789,
                                    "src": "7660:9:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 1709,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7660:64:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "7654:70:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 1711,
                              "nodeType": "ExpressionStatement",
                              "src": "7654:70:7"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1713,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2795,
                                      "src": "7748:3:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 1714,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "7748:10:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1716,
                                        "name": "key",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1597,
                                        "src": "7765:3:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 1715,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7760:4:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": "uint"
                                    },
                                    "id": 1717,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7760:9:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1718,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1579,
                                    "src": "7771:6:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1712,
                                  "name": "_burn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 517,
                                  "src": "7742:5:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256)"
                                  }
                                },
                                "id": 1719,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7742:36:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1720,
                              "nodeType": "ExpressionStatement",
                              "src": "7742:36:7"
                            }
                          ]
                        },
                        "id": 1722,
                        "nodeType": "IfStatement",
                        "src": "7448:345:7",
                        "trueBody": {
                          "id": 1701,
                          "nodeType": "Block",
                          "src": "7486:144:7",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1691,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2795,
                                          "src": "7541:3:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 1692,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "7541:10:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 1694,
                                            "name": "this",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2834,
                                            "src": "7561:4:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_PredictionMarketSystem_$2497",
                                              "typeString": "contract PredictionMarketSystem"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_PredictionMarketSystem_$2497",
                                              "typeString": "contract PredictionMarketSystem"
                                            }
                                          ],
                                          "id": 1693,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "7553:7:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": "address"
                                        },
                                        "id": 1695,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7553:13:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 1696,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1579,
                                        "src": "7568:6:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1689,
                                        "name": "collateralToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1570,
                                        "src": "7512:15:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20_$2761",
                                          "typeString": "contract IERC20"
                                        }
                                      },
                                      "id": 1690,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "transferFrom",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2744,
                                      "src": "7512:28:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                        "typeString": "function (address,address,uint256) external returns (bool)"
                                      }
                                    },
                                    "id": 1697,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7512:63:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "636f756c64206e6f74207265636569766520636f6c6c61746572616c20746f6b656e73",
                                    "id": 1698,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7577:37:7",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_78876cf43ab8535e33b68e15004e5c9de6676e3ca25f51ac6b556de3a2a1b5dc",
                                      "typeString": "literal_string \"could not receive collateral tokens\""
                                    },
                                    "value": "could not receive collateral tokens"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_78876cf43ab8535e33b68e15004e5c9de6676e3ca25f51ac6b556de3a2a1b5dc",
                                      "typeString": "literal_string \"could not receive collateral tokens\""
                                    }
                                  ],
                                  "id": 1688,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    2798,
                                    2799
                                  ],
                                  "referencedDeclaration": 2799,
                                  "src": "7504:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 1699,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7504:111:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1700,
                              "nodeType": "ExpressionStatement",
                              "src": "7504:111:7"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1752,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2795,
                          "src": "8042:3:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1753,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8042:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1754,
                        "name": "collateralToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1570,
                        "src": "8054:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$2761",
                          "typeString": "contract IERC20"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1755,
                        "name": "parentCollectionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1572,
                        "src": "8071:18:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1756,
                        "name": "conditionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1574,
                        "src": "8091:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1757,
                        "name": "partition",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1577,
                        "src": "8104:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1758,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1579,
                        "src": "8115:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_contract$_IERC20_$2761",
                          "typeString": "contract IERC20"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1751,
                      "name": "PositionSplit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1330,
                      "src": "8028:13:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_contract$_IERC20_$2761_$_t_bytes32_$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (address,contract IERC20,bytes32,bytes32,uint256[] memory,uint256)"
                      }
                    },
                    "id": 1759,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8028:94:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1760,
                  "nodeType": "EmitStatement",
                  "src": "8023:99:7"
                }
              ]
            },
            "documentation": "@dev This function splits a position. If splitting from the collateral, this contract will attempt to transfer `amount` collateral from the message sender to itself. Otherwise, this contract will burn `amount` stake held by the message sender in the position being split. Regardless, if successful, `amount` stake will be minted in the split target positions. If any of the transfers, mints, or burns fail, the transaction will revert. The transaction will also revert if the given partition is trivial, invalid, or refers to more slots than the condition is prepared with.\n @param collateralToken The address of the positions' backing collateral token.\n @param parentCollectionId The ID of the outcome collections common to the position being split and the split target positions. May be null, in which only the collateral is shared.\n @param conditionId The ID of the condition to split on.\n @param partition An array of disjoint index sets representing a nontrivial partition of the outcome slots of the given condition.\n @param amount The amount of collateral or stake to split.",
            "id": 1762,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "splitPosition",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1580,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1570,
                  "name": "collateralToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 1762,
                  "src": "6485:22:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$2761",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1569,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2761,
                    "src": "6485:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$2761",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1572,
                  "name": "parentCollectionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1762,
                  "src": "6517:26:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1571,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6517:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1574,
                  "name": "conditionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1762,
                  "src": "6553:19:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1573,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6553:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1577,
                  "name": "partition",
                  "nodeType": "VariableDeclaration",
                  "scope": 1762,
                  "src": "6582:25:7",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1575,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "6582:4:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1576,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6582:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1579,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1762,
                  "src": "6617:11:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1578,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6617:4:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6475:159:7"
            },
            "returnParameters": {
              "id": 1581,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6644:0:7"
            },
            "scope": 2497,
            "src": "6453:1676:7",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1953,
              "nodeType": "Block",
              "src": "8327:1468:7",
              "statements": [
                {
                  "assignments": [
                    1777
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1777,
                      "name": "outcomeSlotCount",
                      "nodeType": "VariableDeclaration",
                      "scope": 1953,
                      "src": "8337:21:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1776,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8337:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1782,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1778,
                        "name": "payoutNumerators",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1365,
                        "src": "8361:16:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$",
                          "typeString": "mapping(bytes32 => uint256[] storage ref)"
                        }
                      },
                      "id": 1780,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1779,
                        "name": "conditionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1768,
                        "src": "8378:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "8361:29:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                        "typeString": "uint256[] storage ref"
                      }
                    },
                    "id": 1781,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "8361:36:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8337:60:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1786,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1784,
                          "name": "outcomeSlotCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1777,
                          "src": "8415:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1785,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8434:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "8415:20:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "636f6e646974696f6e206e6f7420707265706172656420796574",
                        "id": 1787,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8437:28:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e04bbd75ab4a1437326ef11a696b620d013bedb4db855d7241cc1435c81cd55a",
                          "typeString": "literal_string \"condition not prepared yet\""
                        },
                        "value": "condition not prepared yet"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e04bbd75ab4a1437326ef11a696b620d013bedb4db855d7241cc1435c81cd55a",
                          "typeString": "literal_string \"condition not prepared yet\""
                        }
                      ],
                      "id": 1783,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2798,
                        2799
                      ],
                      "referencedDeclaration": 2799,
                      "src": "8407:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1788,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8407:59:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1789,
                  "nodeType": "ExpressionStatement",
                  "src": "8407:59:7"
                },
                {
                  "assignments": [
                    1791
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1791,
                      "name": "key",
                      "nodeType": "VariableDeclaration",
                      "scope": 1953,
                      "src": "8477:11:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1790,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "8477:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1792,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8477:11:7"
                },
                {
                  "assignments": [
                    1794
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1794,
                      "name": "fullIndexSet",
                      "nodeType": "VariableDeclaration",
                      "scope": 1953,
                      "src": "8499:17:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1793,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8499:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1801,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1800,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1797,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1795,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8520:1:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1796,
                            "name": "outcomeSlotCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1777,
                            "src": "8525:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8520:21:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1798,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "8519:23:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 1799,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8545:1:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "8519:27:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8499:47:7"
                },
                {
                  "assignments": [
                    1803
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1803,
                      "name": "freeIndexSet",
                      "nodeType": "VariableDeclaration",
                      "scope": 1953,
                      "src": "8556:17:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1802,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8556:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1805,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 1804,
                    "name": "fullIndexSet",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1794,
                    "src": "8576:12:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8556:32:7"
                },
                {
                  "body": {
                    "id": 1871,
                    "nodeType": "Block",
                    "src": "8642:438:7",
                    "statements": [
                      {
                        "assignments": [
                          1818
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1818,
                            "name": "indexSet",
                            "nodeType": "VariableDeclaration",
                            "scope": 1871,
                            "src": "8656:13:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1817,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "8656:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1822,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1819,
                            "name": "partition",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1771,
                            "src": "8672:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 1821,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1820,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1807,
                            "src": "8682:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8672:12:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8656:28:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1830,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1826,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1824,
                                  "name": "indexSet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1818,
                                  "src": "8706:8:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1825,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8717:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "8706:12:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1829,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1827,
                                  "name": "indexSet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1818,
                                  "src": "8722:8:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 1828,
                                  "name": "fullIndexSet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1794,
                                  "src": "8733:12:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8722:23:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "8706:39:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "676f7420696e76616c696420696e64657820736574",
                              "id": 1831,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8747:23:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6a6949259bc762cfed0fdf355e0e833a39c80f6df01cfb722c2d69f034e6a9c2",
                                "typeString": "literal_string \"got invalid index set\""
                              },
                              "value": "got invalid index set"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6a6949259bc762cfed0fdf355e0e833a39c80f6df01cfb722c2d69f034e6a9c2",
                                "typeString": "literal_string \"got invalid index set\""
                              }
                            ],
                            "id": 1823,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2798,
                              2799
                            ],
                            "referencedDeclaration": 2799,
                            "src": "8698:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1832,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8698:73:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1833,
                        "nodeType": "ExpressionStatement",
                        "src": "8698:73:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1840,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1837,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 1835,
                                      "name": "indexSet",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1818,
                                      "src": "8794:8:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 1836,
                                      "name": "freeIndexSet",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1803,
                                      "src": "8805:12:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "8794:23:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 1838,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "8793:25:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1839,
                                "name": "indexSet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1818,
                                "src": "8822:8:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8793:37:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "706172746974696f6e206e6f74206469736a6f696e74",
                              "id": 1841,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8832:24:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a336fd2d125b487729e17b65dd490bafa0eb0de3aa7aaeba65732e819267b75b",
                                "typeString": "literal_string \"partition not disjoint\""
                              },
                              "value": "partition not disjoint"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a336fd2d125b487729e17b65dd490bafa0eb0de3aa7aaeba65732e819267b75b",
                                "typeString": "literal_string \"partition not disjoint\""
                              }
                            ],
                            "id": 1834,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2798,
                              2799
                            ],
                            "referencedDeclaration": 2799,
                            "src": "8785:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8785:72:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1843,
                        "nodeType": "ExpressionStatement",
                        "src": "8785:72:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1846,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1844,
                            "name": "freeIndexSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1803,
                            "src": "8871:12:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "^=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1845,
                            "name": "indexSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1818,
                            "src": "8887:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8871:24:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1847,
                        "nodeType": "ExpressionStatement",
                        "src": "8871:24:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1860,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1848,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1791,
                            "src": "8909:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1852,
                                    "name": "collateralToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1764,
                                    "src": "8942:15:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$2761",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1854,
                                        "name": "parentCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1766,
                                        "src": "8975:18:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 1855,
                                        "name": "conditionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1768,
                                        "src": "8995:11:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 1856,
                                        "name": "indexSet",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1818,
                                        "src": "9008:8:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 1853,
                                      "name": "getCollectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2220,
                                      "src": "8959:15:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes32,bytes32,uint256) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 1857,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8959:58:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IERC20_$2761",
                                      "typeString": "contract IERC20"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1850,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2782,
                                    "src": "8925:3:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 1851,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "8925:16:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 1858,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8925:93:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 1849,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2789,
                              "src": "8915:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 1859,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8915:104:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "8909:110:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 1861,
                        "nodeType": "ExpressionStatement",
                        "src": "8909:110:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1863,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2795,
                                "src": "9039:3:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1864,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9039:10:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1866,
                                  "name": "key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1791,
                                  "src": "9056:3:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 1865,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9051:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": "uint"
                              },
                              "id": 1867,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9051:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1868,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1773,
                              "src": "9062:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1862,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 517,
                            "src": "9033:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 1869,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9033:36:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1870,
                        "nodeType": "ExpressionStatement",
                        "src": "9033:36:7"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1813,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1810,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1807,
                      "src": "8615:1:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1811,
                        "name": "partition",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1771,
                        "src": "8619:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      "id": 1812,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8619:16:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8615:20:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1872,
                  "initializationExpression": {
                    "assignments": [
                      1807
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1807,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 1872,
                        "src": "8603:6:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1806,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "8603:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1809,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1808,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8612:1:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "8603:10:7"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1815,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "8637:3:7",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1814,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1807,
                        "src": "8637:1:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1816,
                    "nodeType": "ExpressionStatement",
                    "src": "8637:3:7"
                  },
                  "nodeType": "ForStatement",
                  "src": "8598:482:7"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1875,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1873,
                      "name": "freeIndexSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1803,
                      "src": "9094:12:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1874,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9110:1:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "9094:17:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 1941,
                    "nodeType": "Block",
                    "src": "9470:208:7",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1929,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1915,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1791,
                            "src": "9484:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1919,
                                    "name": "collateralToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1764,
                                    "src": "9517:15:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$2761",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1921,
                                        "name": "parentCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1766,
                                        "src": "9550:18:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 1922,
                                        "name": "conditionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1768,
                                        "src": "9570:11:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 1925,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 1923,
                                          "name": "fullIndexSet",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1794,
                                          "src": "9583:12:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "^",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 1924,
                                          "name": "freeIndexSet",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1803,
                                          "src": "9598:12:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "9583:27:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 1920,
                                      "name": "getCollectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2220,
                                      "src": "9534:15:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes32,bytes32,uint256) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 1926,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9534:77:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IERC20_$2761",
                                      "typeString": "contract IERC20"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1917,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2782,
                                    "src": "9500:3:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 1918,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "9500:16:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 1927,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9500:112:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 1916,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2789,
                              "src": "9490:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 1928,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9490:123:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "9484:129:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 1930,
                        "nodeType": "ExpressionStatement",
                        "src": "9484:129:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1932,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2795,
                                "src": "9633:3:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1933,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9633:10:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1935,
                                  "name": "key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1791,
                                  "src": "9650:3:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 1934,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9645:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": "uint"
                              },
                              "id": 1936,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9645:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1937,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1773,
                              "src": "9656:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "",
                              "id": 1938,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9664:2:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 1931,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 481,
                            "src": "9627:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 1939,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9627:40:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1940,
                        "nodeType": "ExpressionStatement",
                        "src": "9627:40:7"
                      }
                    ]
                  },
                  "id": 1942,
                  "nodeType": "IfStatement",
                  "src": "9090:588:7",
                  "trueBody": {
                    "id": 1914,
                    "nodeType": "Block",
                    "src": "9113:351:7",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 1880,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1876,
                            "name": "parentCollectionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1766,
                            "src": "9131:18:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1878,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9161:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 1877,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9153:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": "bytes32"
                            },
                            "id": 1879,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9153:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "9131:32:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 1912,
                          "nodeType": "Block",
                          "src": "9293:161:7",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1900,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1892,
                                  "name": "key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1791,
                                  "src": "9311:3:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 1896,
                                          "name": "collateralToken",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1764,
                                          "src": "9344:15:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$2761",
                                            "typeString": "contract IERC20"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 1897,
                                          "name": "parentCollectionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1766,
                                          "src": "9361:18:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_IERC20_$2761",
                                            "typeString": "contract IERC20"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1894,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2782,
                                          "src": "9327:3:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 1895,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encodePacked",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "9327:16:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 1898,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9327:53:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 1893,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2789,
                                    "src": "9317:9:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 1899,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9317:64:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "9311:70:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 1901,
                              "nodeType": "ExpressionStatement",
                              "src": "9311:70:7"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1903,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2795,
                                      "src": "9405:3:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 1904,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "9405:10:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1906,
                                        "name": "key",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1791,
                                        "src": "9422:3:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 1905,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9417:4:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": "uint"
                                    },
                                    "id": 1907,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9417:9:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1908,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1773,
                                    "src": "9428:6:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "",
                                    "id": 1909,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9436:2:7",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    },
                                    "value": ""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    }
                                  ],
                                  "id": 1902,
                                  "name": "_mint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 481,
                                  "src": "9399:5:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,uint256,uint256,bytes memory)"
                                  }
                                },
                                "id": 1910,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9399:40:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1911,
                              "nodeType": "ExpressionStatement",
                              "src": "9399:40:7"
                            }
                          ]
                        },
                        "id": 1913,
                        "nodeType": "IfStatement",
                        "src": "9127:327:7",
                        "trueBody": {
                          "id": 1891,
                          "nodeType": "Block",
                          "src": "9165:122:7",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1884,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2795,
                                          "src": "9216:3:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 1885,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "9216:10:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 1886,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1773,
                                        "src": "9228:6:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1882,
                                        "name": "collateralToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1764,
                                        "src": "9191:15:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20_$2761",
                                          "typeString": "contract IERC20"
                                        }
                                      },
                                      "id": 1883,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "transfer",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2715,
                                      "src": "9191:24:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                        "typeString": "function (address,uint256) external returns (bool)"
                                      }
                                    },
                                    "id": 1887,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9191:44:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "636f756c64206e6f742073656e6420636f6c6c61746572616c20746f6b656e73",
                                    "id": 1888,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9237:34:7",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_dcd28c60b7fa293f6dafe313fdc41bf17dfba1d84f95b6ea253655688f13ff97",
                                      "typeString": "literal_string \"could not send collateral tokens\""
                                    },
                                    "value": "could not send collateral tokens"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_dcd28c60b7fa293f6dafe313fdc41bf17dfba1d84f95b6ea253655688f13ff97",
                                      "typeString": "literal_string \"could not send collateral tokens\""
                                    }
                                  ],
                                  "id": 1881,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    2798,
                                    2799
                                  ],
                                  "referencedDeclaration": 2799,
                                  "src": "9183:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 1889,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9183:89:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1890,
                              "nodeType": "ExpressionStatement",
                              "src": "9183:89:7"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1944,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2795,
                          "src": "9708:3:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1945,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "9708:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1946,
                        "name": "collateralToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1764,
                        "src": "9720:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$2761",
                          "typeString": "contract IERC20"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1947,
                        "name": "parentCollectionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1766,
                        "src": "9737:18:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1948,
                        "name": "conditionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1768,
                        "src": "9757:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1949,
                        "name": "partition",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1771,
                        "src": "9770:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1950,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1773,
                        "src": "9781:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_contract$_IERC20_$2761",
                          "typeString": "contract IERC20"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1943,
                      "name": "PositionsMerge",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1345,
                      "src": "9693:14:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_contract$_IERC20_$2761_$_t_bytes32_$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (address,contract IERC20,bytes32,bytes32,uint256[] memory,uint256)"
                      }
                    },
                    "id": 1951,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9693:95:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1952,
                  "nodeType": "EmitStatement",
                  "src": "9688:100:7"
                }
              ]
            },
            "documentation": null,
            "id": 1954,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "mergePositions",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1774,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1764,
                  "name": "collateralToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 1954,
                  "src": "8168:22:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$2761",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1763,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2761,
                    "src": "8168:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$2761",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1766,
                  "name": "parentCollectionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1954,
                  "src": "8200:26:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1765,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8200:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1768,
                  "name": "conditionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1954,
                  "src": "8236:19:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1767,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8236:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1771,
                  "name": "partition",
                  "nodeType": "VariableDeclaration",
                  "scope": 1954,
                  "src": "8265:25:7",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1769,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "8265:4:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1770,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "8265:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1773,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1954,
                  "src": "8300:11:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1772,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8300:4:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8158:159:7"
            },
            "returnParameters": {
              "id": 1775,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8327:0:7"
            },
            "scope": 2497,
            "src": "8135:1660:7",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2178,
              "nodeType": "Block",
              "src": "9935:1748:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1971,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1967,
                            "name": "payoutDenominator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1369,
                            "src": "9953:17:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                              "typeString": "mapping(bytes32 => uint256)"
                            }
                          },
                          "id": 1969,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1968,
                            "name": "conditionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1960,
                            "src": "9971:11:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9953:30:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1970,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9986:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "9953:34:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "726573756c7420666f7220636f6e646974696f6e206e6f7420726563656976656420796574",
                        "id": 1972,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9989:39:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_09c18322476c8839a929e9b1b47022e0ac639da367088768fc0757a67e966311",
                          "typeString": "literal_string \"result for condition not received yet\""
                        },
                        "value": "result for condition not received yet"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_09c18322476c8839a929e9b1b47022e0ac639da367088768fc0757a67e966311",
                          "typeString": "literal_string \"result for condition not received yet\""
                        }
                      ],
                      "id": 1966,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2798,
                        2799
                      ],
                      "referencedDeclaration": 2799,
                      "src": "9945:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1973,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9945:84:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1974,
                  "nodeType": "ExpressionStatement",
                  "src": "9945:84:7"
                },
                {
                  "assignments": [
                    1976
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1976,
                      "name": "outcomeSlotCount",
                      "nodeType": "VariableDeclaration",
                      "scope": 2178,
                      "src": "10039:21:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1975,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10039:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1981,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1977,
                        "name": "payoutNumerators",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1365,
                        "src": "10063:16:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$",
                          "typeString": "mapping(bytes32 => uint256[] storage ref)"
                        }
                      },
                      "id": 1979,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1978,
                        "name": "conditionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1960,
                        "src": "10080:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "10063:29:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                        "typeString": "uint256[] storage ref"
                      }
                    },
                    "id": 1980,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "10063:36:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10039:60:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1985,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1983,
                          "name": "outcomeSlotCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1976,
                          "src": "10117:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10136:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "10117:20:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "636f6e646974696f6e206e6f7420707265706172656420796574",
                        "id": 1986,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10139:28:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e04bbd75ab4a1437326ef11a696b620d013bedb4db855d7241cc1435c81cd55a",
                          "typeString": "literal_string \"condition not prepared yet\""
                        },
                        "value": "condition not prepared yet"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e04bbd75ab4a1437326ef11a696b620d013bedb4db855d7241cc1435c81cd55a",
                          "typeString": "literal_string \"condition not prepared yet\""
                        }
                      ],
                      "id": 1982,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2798,
                        2799
                      ],
                      "referencedDeclaration": 2799,
                      "src": "10109:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1987,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10109:59:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1988,
                  "nodeType": "ExpressionStatement",
                  "src": "10109:59:7"
                },
                {
                  "assignments": [
                    1990
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1990,
                      "name": "totalPayout",
                      "nodeType": "VariableDeclaration",
                      "scope": 2178,
                      "src": "10179:16:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1989,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10179:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1992,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 1991,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "10198:1:7",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10179:20:7"
                },
                {
                  "assignments": [
                    1994
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1994,
                      "name": "key",
                      "nodeType": "VariableDeclaration",
                      "scope": 2178,
                      "src": "10209:11:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1993,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "10209:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1995,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10209:11:7"
                },
                {
                  "assignments": [
                    1997
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1997,
                      "name": "fullIndexSet",
                      "nodeType": "VariableDeclaration",
                      "scope": 2178,
                      "src": "10231:17:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1996,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10231:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2004,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2003,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2000,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1998,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10252:1:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1999,
                            "name": "outcomeSlotCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1976,
                            "src": "10257:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10252:21:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 2001,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "10251:23:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 2002,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10277:1:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "10251:27:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10231:47:7"
                },
                {
                  "body": {
                    "id": 2123,
                    "nodeType": "Block",
                    "src": "10332:825:7",
                    "statements": [
                      {
                        "assignments": [
                          2017
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2017,
                            "name": "indexSet",
                            "nodeType": "VariableDeclaration",
                            "scope": 2123,
                            "src": "10346:13:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2016,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "10346:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2021,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2018,
                            "name": "indexSets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1963,
                            "src": "10362:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 2020,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2019,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2006,
                            "src": "10372:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10362:12:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10346:28:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2029,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2025,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2023,
                                  "name": "indexSet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2017,
                                  "src": "10396:8:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2024,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10407:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "10396:12:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2028,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2026,
                                  "name": "indexSet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2017,
                                  "src": "10412:8:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2027,
                                  "name": "fullIndexSet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1997,
                                  "src": "10423:12:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10412:23:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "10396:39:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "676f7420696e76616c696420696e64657820736574",
                              "id": 2030,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10437:23:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6a6949259bc762cfed0fdf355e0e833a39c80f6df01cfb722c2d69f034e6a9c2",
                                "typeString": "literal_string \"got invalid index set\""
                              },
                              "value": "got invalid index set"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6a6949259bc762cfed0fdf355e0e833a39c80f6df01cfb722c2d69f034e6a9c2",
                                "typeString": "literal_string \"got invalid index set\""
                              }
                            ],
                            "id": 2022,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2798,
                              2799
                            ],
                            "referencedDeclaration": 2799,
                            "src": "10388:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10388:73:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2032,
                        "nodeType": "ExpressionStatement",
                        "src": "10388:73:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2045,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2033,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1994,
                            "src": "10475:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2037,
                                    "name": "collateralToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1956,
                                    "src": "10508:15:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$2761",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2039,
                                        "name": "parentCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1958,
                                        "src": "10541:18:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 2040,
                                        "name": "conditionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1960,
                                        "src": "10561:11:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 2041,
                                        "name": "indexSet",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2017,
                                        "src": "10574:8:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 2038,
                                      "name": "getCollectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2220,
                                      "src": "10525:15:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes32,bytes32,uint256) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 2042,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10525:58:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IERC20_$2761",
                                      "typeString": "contract IERC20"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2035,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2782,
                                    "src": "10491:3:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 2036,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "10491:16:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 2043,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10491:93:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 2034,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2789,
                              "src": "10481:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 2044,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10481:104:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "10475:110:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 2046,
                        "nodeType": "ExpressionStatement",
                        "src": "10475:110:7"
                      },
                      {
                        "assignments": [
                          2048
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2048,
                            "name": "payoutNumerator",
                            "nodeType": "VariableDeclaration",
                            "scope": 2123,
                            "src": "10600:20:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2047,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "10600:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2050,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2049,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10623:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10600:24:7"
                      },
                      {
                        "body": {
                          "id": 2082,
                          "nodeType": "Block",
                          "src": "10682:174:7",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2068,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2066,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2061,
                                    "name": "indexSet",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2017,
                                    "src": "10704:8:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 2064,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 2062,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "10716:1:7",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<<",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 2063,
                                          "name": "j",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2052,
                                          "src": "10721:1:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "10716:6:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 2065,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "10715:8:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "10704:19:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2067,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10727:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "10704:24:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 2081,
                              "nodeType": "IfStatement",
                              "src": "10700:142:7",
                              "trueBody": {
                                "id": 2080,
                                "nodeType": "Block",
                                "src": "10730:112:7",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2078,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 2069,
                                        "name": "payoutNumerator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2048,
                                        "src": "10752:15:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 2072,
                                                "name": "payoutNumerators",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1365,
                                                "src": "10790:16:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$",
                                                  "typeString": "mapping(bytes32 => uint256[] storage ref)"
                                                }
                                              },
                                              "id": 2074,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "id": 2073,
                                                "name": "conditionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1960,
                                                "src": "10807:11:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "10790:29:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                "typeString": "uint256[] storage ref"
                                              }
                                            },
                                            "id": 2076,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 2075,
                                              "name": "j",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2052,
                                              "src": "10820:1:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "10790:32:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2070,
                                            "name": "payoutNumerator",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2048,
                                            "src": "10770:15:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 2071,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2586,
                                          "src": "10770:19:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 2077,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10770:53:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "10752:71:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2079,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10752:71:7"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2057,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2055,
                            "name": "j",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2052,
                            "src": "10655:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2056,
                            "name": "outcomeSlotCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1976,
                            "src": "10659:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10655:20:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2083,
                        "initializationExpression": {
                          "assignments": [
                            2052
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2052,
                              "name": "j",
                              "nodeType": "VariableDeclaration",
                              "scope": 2083,
                              "src": "10643:6:7",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2051,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "10643:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 2054,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2053,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10652:1:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "10643:10:7"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2059,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "10677:3:7",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 2058,
                              "name": "j",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2052,
                              "src": "10677:1:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2060,
                          "nodeType": "ExpressionStatement",
                          "src": "10677:3:7"
                        },
                        "nodeType": "ForStatement",
                        "src": "10638:218:7"
                      },
                      {
                        "assignments": [
                          2085
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2085,
                            "name": "payoutStake",
                            "nodeType": "VariableDeclaration",
                            "scope": 2123,
                            "src": "10870:16:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2084,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "10870:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2093,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2087,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2795,
                                "src": "10899:3:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2088,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10899:10:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2090,
                                  "name": "key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1994,
                                  "src": "10916:3:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 2089,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10911:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": "uint"
                              },
                              "id": 2091,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10911:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2086,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              95
                            ],
                            "referencedDeclaration": 95,
                            "src": "10889:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (address,uint256) view returns (uint256)"
                            }
                          },
                          "id": 2092,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10889:32:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10870:51:7"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2096,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2094,
                            "name": "payoutStake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2085,
                            "src": "10939:11:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2095,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10953:1:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "10939:15:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2122,
                        "nodeType": "IfStatement",
                        "src": "10935:212:7",
                        "trueBody": {
                          "id": 2121,
                          "nodeType": "Block",
                          "src": "10956:191:7",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2110,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2097,
                                  "name": "totalPayout",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1990,
                                  "src": "10974:11:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 2105,
                                            "name": "payoutDenominator",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1369,
                                            "src": "11041:17:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                              "typeString": "mapping(bytes32 => uint256)"
                                            }
                                          },
                                          "id": 2107,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 2106,
                                            "name": "conditionId",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1960,
                                            "src": "11059:11:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "11041:30:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 2102,
                                              "name": "payoutNumerator",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2048,
                                              "src": "11020:15:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2100,
                                              "name": "payoutStake",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2085,
                                              "src": "11004:11:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 2101,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mul",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2645,
                                            "src": "11004:15:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 2103,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "11004:32:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 2104,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "div",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2670,
                                        "src": "11004:36:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 2108,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "11004:68:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2098,
                                      "name": "totalPayout",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1990,
                                      "src": "10988:11:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2099,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2586,
                                    "src": "10988:15:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2109,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10988:85:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10974:99:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2111,
                              "nodeType": "ExpressionStatement",
                              "src": "10974:99:7"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2113,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2795,
                                      "src": "11097:3:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 2114,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "11097:10:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2116,
                                        "name": "key",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1994,
                                        "src": "11114:3:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 2115,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "11109:4:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": "uint"
                                    },
                                    "id": 2117,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11109:9:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2118,
                                    "name": "payoutStake",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2085,
                                    "src": "11120:11:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2112,
                                  "name": "_burn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 517,
                                  "src": "11091:5:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256)"
                                  }
                                },
                                "id": 2119,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11091:41:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2120,
                              "nodeType": "ExpressionStatement",
                              "src": "11091:41:7"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2012,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2009,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2006,
                      "src": "10305:1:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2010,
                        "name": "indexSets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1963,
                        "src": "10309:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      "id": 2011,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "10309:16:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10305:20:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2124,
                  "initializationExpression": {
                    "assignments": [
                      2006
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2006,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2124,
                        "src": "10293:6:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2005,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "10293:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2008,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2007,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10302:1:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "10293:10:7"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2014,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "10327:3:7",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2013,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2006,
                        "src": "10327:1:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2015,
                    "nodeType": "ExpressionStatement",
                    "src": "10327:3:7"
                  },
                  "nodeType": "ForStatement",
                  "src": "10288:869:7"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2127,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2125,
                      "name": "totalPayout",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1990,
                      "src": "11171:11:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2126,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11185:1:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "11171:15:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2167,
                  "nodeType": "IfStatement",
                  "src": "11167:393:7",
                  "trueBody": {
                    "id": 2166,
                    "nodeType": "Block",
                    "src": "11188:372:7",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 2132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2128,
                            "name": "parentCollectionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1958,
                            "src": "11206:18:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2130,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11236:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 2129,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "11228:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": "bytes32"
                            },
                            "id": 2131,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11228:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "11206:32:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2164,
                          "nodeType": "Block",
                          "src": "11384:166:7",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2152,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2144,
                                  "name": "key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1994,
                                  "src": "11402:3:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2148,
                                          "name": "collateralToken",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1956,
                                          "src": "11435:15:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$2761",
                                            "typeString": "contract IERC20"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2149,
                                          "name": "parentCollectionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1958,
                                          "src": "11452:18:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_IERC20_$2761",
                                            "typeString": "contract IERC20"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2146,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2782,
                                          "src": "11418:3:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 2147,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encodePacked",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "11418:16:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 2150,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "11418:53:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 2145,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2789,
                                    "src": "11408:9:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 2151,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11408:64:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "11402:70:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 2153,
                              "nodeType": "ExpressionStatement",
                              "src": "11402:70:7"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2155,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2795,
                                      "src": "11496:3:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 2156,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "11496:10:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2158,
                                        "name": "key",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1994,
                                        "src": "11513:3:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 2157,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "11508:4:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": "uint"
                                    },
                                    "id": 2159,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11508:9:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2160,
                                    "name": "totalPayout",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1990,
                                    "src": "11519:11:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "",
                                    "id": 2161,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11532:2:7",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    },
                                    "value": ""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    }
                                  ],
                                  "id": 2154,
                                  "name": "_mint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 481,
                                  "src": "11490:5:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,uint256,uint256,bytes memory)"
                                  }
                                },
                                "id": 2162,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11490:45:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2163,
                              "nodeType": "ExpressionStatement",
                              "src": "11490:45:7"
                            }
                          ]
                        },
                        "id": 2165,
                        "nodeType": "IfStatement",
                        "src": "11202:348:7",
                        "trueBody": {
                          "id": 2143,
                          "nodeType": "Block",
                          "src": "11240:138:7",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2136,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2795,
                                          "src": "11291:3:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 2137,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "11291:10:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 2138,
                                        "name": "totalPayout",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1990,
                                        "src": "11303:11:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2134,
                                        "name": "collateralToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1956,
                                        "src": "11266:15:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20_$2761",
                                          "typeString": "contract IERC20"
                                        }
                                      },
                                      "id": 2135,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "transfer",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2715,
                                      "src": "11266:24:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                        "typeString": "function (address,uint256) external returns (bool)"
                                      }
                                    },
                                    "id": 2139,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11266:49:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "636f756c64206e6f74207472616e73666572207061796f757420746f206d6573736167652073656e646572",
                                    "id": 2140,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11317:45:7",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_210eeaafba043db52b30d6e4d8afdedff22365482b862fdf81bd2fbee3646893",
                                      "typeString": "literal_string \"could not transfer payout to message sender\""
                                    },
                                    "value": "could not transfer payout to message sender"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_210eeaafba043db52b30d6e4d8afdedff22365482b862fdf81bd2fbee3646893",
                                      "typeString": "literal_string \"could not transfer payout to message sender\""
                                    }
                                  ],
                                  "id": 2133,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    2798,
                                    2799
                                  ],
                                  "referencedDeclaration": 2799,
                                  "src": "11258:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 2141,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11258:105:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2142,
                              "nodeType": "ExpressionStatement",
                              "src": "11258:105:7"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2169,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2795,
                          "src": "11591:3:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2170,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11591:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2171,
                        "name": "collateralToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1956,
                        "src": "11603:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$2761",
                          "typeString": "contract IERC20"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2172,
                        "name": "parentCollectionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1958,
                        "src": "11620:18:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2173,
                        "name": "conditionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1960,
                        "src": "11640:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2174,
                        "name": "indexSets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1963,
                        "src": "11653:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2175,
                        "name": "totalPayout",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1990,
                        "src": "11664:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_contract$_IERC20_$2761",
                          "typeString": "contract IERC20"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2168,
                      "name": "PayoutRedemption",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1360,
                      "src": "11574:16:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_contract$_IERC20_$2761_$_t_bytes32_$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (address,contract IERC20,bytes32,bytes32,uint256[] memory,uint256)"
                      }
                    },
                    "id": 2176,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11574:102:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2177,
                  "nodeType": "EmitStatement",
                  "src": "11569:107:7"
                }
              ]
            },
            "documentation": null,
            "id": 2179,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "redeemPositions",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1964,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1956,
                  "name": "collateralToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 2179,
                  "src": "9826:22:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$2761",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1955,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2761,
                    "src": "9826:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$2761",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1958,
                  "name": "parentCollectionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2179,
                  "src": "9850:26:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1957,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9850:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1960,
                  "name": "conditionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2179,
                  "src": "9878:19:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1959,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9878:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1963,
                  "name": "indexSets",
                  "nodeType": "VariableDeclaration",
                  "scope": 2179,
                  "src": "9899:25:7",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1961,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "9899:4:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1962,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "9899:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9825:100:7"
            },
            "returnParameters": {
              "id": 1965,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9935:0:7"
            },
            "scope": 2497,
            "src": "9801:1882:7",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2191,
              "nodeType": "Block",
              "src": "11990:60:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2186,
                        "name": "payoutNumerators",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1365,
                        "src": "12007:16:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$",
                          "typeString": "mapping(bytes32 => uint256[] storage ref)"
                        }
                      },
                      "id": 2188,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2187,
                        "name": "conditionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2181,
                        "src": "12024:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "12007:29:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                        "typeString": "uint256[] storage ref"
                      }
                    },
                    "id": 2189,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "12007:36:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2185,
                  "id": 2190,
                  "nodeType": "Return",
                  "src": "12000:43:7"
                }
              ]
            },
            "documentation": "@dev Gets the outcome slot count of a condition.\n @param conditionId ID of the condition.\n @return Number of outcome slots associated with a condition, or zero if condition has not been prepared yet.",
            "id": 2192,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getOutcomeSlotCount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2182,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2181,
                  "name": "conditionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2192,
                  "src": "11940:19:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2180,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11940:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11939:21:7"
            },
            "returnParameters": {
              "id": 2185,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2184,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2192,
                  "src": "11984:4:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2183,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11984:4:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11983:6:7"
            },
            "scope": 2497,
            "src": "11911:139:7",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2219,
              "nodeType": "Block",
              "src": "12176:150:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2216,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2205,
                              "name": "parentCollectionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2194,
                              "src": "12219:18:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 2204,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "12214:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint"
                          },
                          "id": 2206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12214:24:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2211,
                                      "name": "conditionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2196,
                                      "src": "12285:11:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 2212,
                                      "name": "indexSet",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2198,
                                      "src": "12298:8:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2209,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2782,
                                      "src": "12268:3:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 2210,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "12268:16:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 2213,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12268:39:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 2208,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2789,
                                "src": "12258:9:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 2214,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12258:50:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 2207,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "12253:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint"
                          },
                          "id": 2215,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12253:56:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "12214:95:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2203,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "12193:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes32_$",
                        "typeString": "type(bytes32)"
                      },
                      "typeName": "bytes32"
                    },
                    "id": 2217,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12193:126:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 2202,
                  "id": 2218,
                  "nodeType": "Return",
                  "src": "12186:133:7"
                }
              ]
            },
            "documentation": null,
            "id": 2220,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getCollectionId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2199,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2194,
                  "name": "parentCollectionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2220,
                  "src": "12081:26:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2193,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12081:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2196,
                  "name": "conditionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2220,
                  "src": "12109:19:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2195,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12109:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2198,
                  "name": "indexSet",
                  "nodeType": "VariableDeclaration",
                  "scope": 2220,
                  "src": "12130:13:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2197,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "12130:4:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12080:64:7"
            },
            "returnParameters": {
              "id": 2202,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2201,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2220,
                  "src": "12167:7:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2200,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12167:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12166:9:7"
            },
            "scope": 2497,
            "src": "12056:270:7",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2237,
            "name": "CHECK_IS_RECEIVER_REQUIRED_GAS",
            "nodeType": "VariableDeclaration",
            "scope": 2497,
            "src": "12603:274:7",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2221,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "12603:4:7",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "commonType": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "id": 2236,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "lValueRequested": false,
              "leftExpression": {
                "argumentTypes": null,
                "commonType": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "id": 2234,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "leftExpression": {
                  "argumentTypes": null,
                  "commonType": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "id": 2232,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "leftExpression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2230,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2228,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2226,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "3130303030",
                              "id": 2223,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12663:5:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10000_by_1",
                                "typeString": "int_const 10000"
                              },
                              "value": "10000"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_10000_by_1",
                                "typeString": "int_const 10000"
                              }
                            ],
                            "id": 2222,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "12658:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint"
                          },
                          "id": 2224,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12658:11:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3634",
                          "id": 2225,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12672:2:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_64_by_1",
                            "typeString": "int_const 64"
                          },
                          "value": "64"
                        },
                        "src": "12658:16:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "/",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "3633",
                        "id": 2227,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12677:2:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_63_by_1",
                          "typeString": "int_const 63"
                        },
                        "value": "63"
                      },
                      "src": "12658:21:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 2229,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12682:1:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "12658:25:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "BinaryOperation",
                  "operator": "+",
                  "rightExpression": {
                    "argumentTypes": null,
                    "hexValue": "373030",
                    "id": 2231,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "12746:3:7",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_700_by_1",
                      "typeString": "int_const 700"
                    },
                    "value": "700"
                  },
                  "src": "12658:91:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "BinaryOperation",
                "operator": "+",
                "rightExpression": {
                  "argumentTypes": null,
                  "hexValue": "353634",
                  "id": 2233,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "12795:3:7",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_564_by_1",
                    "typeString": "int_const 564"
                  },
                  "value": "564"
                },
                "src": "12658:140:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "BinaryOperation",
              "operator": "+",
              "rightExpression": {
                "argumentTypes": null,
                "hexValue": "313030",
                "id": 2235,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "12874:3:7",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_100_by_1",
                  "typeString": "int_const 100"
                },
                "value": "100"
              },
              "src": "12658:219:7",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2254,
            "name": "CHECK_IS_RECEIVER_CALLDATA",
            "nodeType": "VariableDeclaration",
            "scope": 2497,
            "src": "12954:294:7",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes_memory",
              "typeString": "bytes"
            },
            "typeName": {
              "id": 2238,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "12954:5:7",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "737570706f727473496e746572666163652862797465733429",
                  "id": 2241,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "13031:27:7",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2",
                    "typeString": "literal_string \"supportsInterface(bytes4)\""
                  },
                  "value": "supportsInterface(bytes4)"
                },
                {
                  "argumentTypes": null,
                  "commonType": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "id": 2252,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "leftExpression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "6f6e45524331313535526563656976656428616464726573732c616464726573732c75696e743235362c75696e743235362c627974657329",
                            "id": 2244,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13085:58:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f23a6e612e1ff4830e658fe43f4e3cb4a5f8170bd5d9e69fb5d7a7fa9e4fdf97",
                              "typeString": "literal_string \"onERC1155Received(address,address,uint256,uint256,bytes)\""
                            },
                            "value": "onERC1155Received(address,address,uint256,uint256,bytes)"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f23a6e612e1ff4830e658fe43f4e3cb4a5f8170bd5d9e69fb5d7a7fa9e4fdf97",
                              "typeString": "literal_string \"onERC1155Received(address,address,uint256,uint256,bytes)\""
                            }
                          ],
                          "id": 2243,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2789,
                          "src": "13075:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 2245,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13075:69:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2242,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "13068:6:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes4_$",
                        "typeString": "type(bytes4)"
                      },
                      "typeName": "bytes4"
                    },
                    "id": 2246,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13068:77:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "nodeType": "BinaryOperation",
                  "operator": "^",
                  "rightExpression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "6f6e455243313135354261746368526563656976656428616464726573732c616464726573732c75696e743235365b5d2c75696e743235365b5d2c627974657329",
                            "id": 2249,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13173:67:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_bc197c819b3e337a6f9652dd10becd7eef83032af3b9d958d3d42f6694146621",
                              "typeString": "literal_string \"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\""
                            },
                            "value": "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_bc197c819b3e337a6f9652dd10becd7eef83032af3b9d958d3d42f6694146621",
                              "typeString": "literal_string \"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\""
                            }
                          ],
                          "id": 2248,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2789,
                          "src": "13163:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 2250,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13163:78:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2247,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "13156:6:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes4_$",
                        "typeString": "type(bytes4)"
                      },
                      "typeName": "bytes4"
                    },
                    "id": 2251,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13156:86:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "src": "13068:174:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  }
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2",
                    "typeString": "literal_string \"supportsInterface(bytes4)\""
                  },
                  {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  }
                ],
                "expression": {
                  "argumentTypes": null,
                  "id": 2239,
                  "name": "abi",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2782,
                  "src": "12998:3:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_magic_abi",
                    "typeString": "abi"
                  }
                },
                "id": 2240,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "memberName": "encodeWithSignature",
                "nodeType": "MemberAccess",
                "referencedDeclaration": null,
                "src": "12998:23:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                  "typeString": "function (string memory) pure returns (bytes memory)"
                }
              },
              "id": 2253,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "12998:250:7",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_memory_ptr",
                "typeString": "bytes memory"
              }
            },
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2373,
              "nodeType": "Block",
              "src": "13461:1386:7",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2269,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2260,
                        "src": "13474:2:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 2270,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isContract",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2779,
                      "src": "13474:13:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                        "typeString": "function (address) view returns (bool)"
                      }
                    },
                    "id": 2271,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13474:15:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2372,
                  "nodeType": "IfStatement",
                  "src": "13471:1370:7",
                  "trueBody": {
                    "id": 2371,
                    "nodeType": "Block",
                    "src": "13491:1350:7",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2276,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 2273,
                                  "name": "gasleft",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2788,
                                  "src": "13513:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view returns (uint256)"
                                  }
                                },
                                "id": 2274,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13513:9:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 2275,
                                "name": "CHECK_IS_RECEIVER_REQUIRED_GAS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2237,
                                "src": "13526:30:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13513:43:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "455243313135353a206e6f7420656e6f7567682067617320726573657276656420666f7220746f6b656e20726563656976657220636865636b",
                              "id": 2277,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13558:59:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_70143c97890a8de8bd28d50978595ef8a14cf1fbfce29e1980b2f38ced3ebc18",
                                "typeString": "literal_string \"ERC1155: not enough gas reserved for token receiver check\""
                              },
                              "value": "ERC1155: not enough gas reserved for token receiver check"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_70143c97890a8de8bd28d50978595ef8a14cf1fbfce29e1980b2f38ced3ebc18",
                                "typeString": "literal_string \"ERC1155: not enough gas reserved for token receiver check\""
                              }
                            ],
                            "id": 2272,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2798,
                              2799
                            ],
                            "referencedDeclaration": 2799,
                            "src": "13505:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2278,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13505:113:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2279,
                        "nodeType": "ExpressionStatement",
                        "src": "13505:113:7"
                      },
                      {
                        "assignments": [
                          2281,
                          2283
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2281,
                            "name": "callSucceeded",
                            "nodeType": "VariableDeclaration",
                            "scope": 2371,
                            "src": "13633:18:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2280,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "13633:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2283,
                            "name": "callReturnData",
                            "nodeType": "VariableDeclaration",
                            "scope": 2371,
                            "src": "13653:27:7",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 2282,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "13653:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2291,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2289,
                              "name": "CHECK_IS_RECEIVER_CALLDATA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2254,
                              "src": "13703:26:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory",
                                "typeString": "bytes memory"
                              }
                            ],
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "3130303030",
                                "id": 2287,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13696:5:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10000_by_1",
                                  "typeString": "int_const 10000"
                                },
                                "value": "10000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_10000_by_1",
                                  "typeString": "int_const 10000"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2284,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2260,
                                  "src": "13684:2:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 2285,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "call",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "13684:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                }
                              },
                              "id": 2286,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "gas",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "13684:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_setgas_nonpayable$_t_uint256_$returns$_t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas_$",
                                "typeString": "function (uint256) returns (function (bytes memory) payable returns (bool,bytes memory))"
                              }
                            },
                            "id": 2288,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13684:18:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 2290,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13684:46:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13632:98:7"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2306,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 2297,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2292,
                              "name": "callSucceeded",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2281,
                              "src": "13765:13:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2296,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2293,
                                  "name": "callReturnData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2283,
                                  "src": "13798:14:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 2294,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "13798:21:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2295,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13822:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "13798:25:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "13765:58:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 2305,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2300,
                                  "name": "callReturnData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2283,
                                  "src": "13854:14:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2301,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "13871:4:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bool_$",
                                        "typeString": "type(bool)"
                                      },
                                      "typeName": "bool"
                                    }
                                  ],
                                  "id": 2302,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "13870:6:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  },
                                  {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2298,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2782,
                                  "src": "13843:3:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 2299,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "decode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "13843:10:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 2303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13843:34:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 2304,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13881:4:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            "src": "13843:42:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "13765:120:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2369,
                          "nodeType": "Block",
                          "src": "14215:616:7",
                          "statements": [
                            {
                              "assignments": [
                                2329
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2329,
                                  "name": "implementer",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2369,
                                  "src": "14233:19:7",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 2328,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14233:7:7",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2341,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2334,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2260,
                                    "src": "14360:2:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "45524331313535546f6b656e5265636569766572",
                                            "id": 2337,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "14380:22:7",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_78eca591ab61c5e7d150a4c8756b2645287be0b2a3dc046cb359858001cc6587",
                                              "typeString": "literal_string \"ERC1155TokenReceiver\""
                                            },
                                            "value": "ERC1155TokenReceiver"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_78eca591ab61c5e7d150a4c8756b2645287be0b2a3dc046cb359858001cc6587",
                                              "typeString": "literal_string \"ERC1155TokenReceiver\""
                                            }
                                          ],
                                          "id": 2336,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "14374:5:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                            "typeString": "type(bytes storage pointer)"
                                          },
                                          "typeName": "bytes"
                                        },
                                        "id": 2338,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "14374:29:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 2335,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2789,
                                      "src": "14364:9:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 2339,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14364:40:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "307831383230613442373631384264453731446365386364633733614142364339353930356661443234",
                                        "id": 2331,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "14271:42:7",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        },
                                        "value": "0x1820a4B7618BdE71Dce8cdc73aAB6C95905faD24"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      ],
                                      "id": 2330,
                                      "name": "ERC1820Registry",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1210,
                                      "src": "14255:15:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_ERC1820Registry_$1210_$",
                                        "typeString": "type(contract ERC1820Registry)"
                                      }
                                    },
                                    "id": 2332,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14255:59:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ERC1820Registry_$1210",
                                      "typeString": "contract ERC1820Registry"
                                    }
                                  },
                                  "id": 2333,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getInterfaceImplementer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 883,
                                  "src": "14255:104:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_address_$",
                                    "typeString": "function (address,bytes32) view external returns (address)"
                                  }
                                },
                                "id": 2340,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14255:150:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "14233:172:7"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 2346,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2342,
                                  "name": "implementer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2329,
                                  "src": "14427:11:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 2344,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "14450:1:7",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 2343,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "14442:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 2345,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14442:10:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "14427:25:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 2368,
                              "nodeType": "IfStatement",
                              "src": "14424:393:7",
                              "trueBody": {
                                "id": 2367,
                                "nodeType": "Block",
                                "src": "14454:363:7",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          },
                                          "id": 2363,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 2352,
                                                "name": "operator",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2256,
                                                "src": "14562:8:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 2353,
                                                "name": "from",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2258,
                                                "src": "14572:4:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 2354,
                                                "name": "id",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2262,
                                                "src": "14578:2:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 2355,
                                                "name": "value",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2264,
                                                "src": "14582:5:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 2356,
                                                "name": "data",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2266,
                                                "src": "14589:4:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 2349,
                                                    "name": "implementer",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2329,
                                                    "src": "14531:11:7",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  ],
                                                  "id": 2348,
                                                  "name": "IERC1155TokenReceiver",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 778,
                                                  "src": "14509:21:7",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$778_$",
                                                    "typeString": "type(contract IERC1155TokenReceiver)"
                                                  }
                                                },
                                                "id": 2350,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "14509:34:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_IERC1155TokenReceiver_$778",
                                                  "typeString": "contract IERC1155TokenReceiver"
                                                }
                                              },
                                              "id": 2351,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "onERC1155Received",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 760,
                                              "src": "14509:52:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                                "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                                              }
                                            },
                                            "id": 2357,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "14509:85:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 2359,
                                                    "name": "implementer",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2329,
                                                    "src": "14648:11:7",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  ],
                                                  "id": 2358,
                                                  "name": "IERC1155TokenReceiver",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 778,
                                                  "src": "14626:21:7",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$778_$",
                                                    "typeString": "type(contract IERC1155TokenReceiver)"
                                                  }
                                                },
                                                "id": 2360,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "14626:34:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_IERC1155TokenReceiver_$778",
                                                  "typeString": "contract IERC1155TokenReceiver"
                                                }
                                              },
                                              "id": 2361,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "onERC1155Received",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 760,
                                              "src": "14626:52:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                                "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                                              }
                                            },
                                            "id": 2362,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "selector",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "14626:61:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "src": "14509:178:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "455243313135353a20676f7420756e6b6e6f776e2076616c75652066726f6d20696d706c656d656e746564206f6e455243313135355265636569766564",
                                          "id": 2364,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "14713:63:7",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_e6ed3a25af4a5ca586914719e01d4329330aaf64c804b30880bf3f85d81f12ac",
                                            "typeString": "literal_string \"ERC1155: got unknown value from implemented onERC1155Received\""
                                          },
                                          "value": "ERC1155: got unknown value from implemented onERC1155Received"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_e6ed3a25af4a5ca586914719e01d4329330aaf64c804b30880bf3f85d81f12ac",
                                            "typeString": "literal_string \"ERC1155: got unknown value from implemented onERC1155Received\""
                                          }
                                        ],
                                        "id": 2347,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          2798,
                                          2799
                                        ],
                                        "referencedDeclaration": 2799,
                                        "src": "14476:7:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 2365,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "14476:322:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2366,
                                    "nodeType": "ExpressionStatement",
                                    "src": "14476:322:7"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 2370,
                        "nodeType": "IfStatement",
                        "src": "13745:1086:7",
                        "trueBody": {
                          "id": 2327,
                          "nodeType": "Block",
                          "src": "13900:309:7",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    },
                                    "id": 2323,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2312,
                                          "name": "operator",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2256,
                                          "src": "13991:8:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2313,
                                          "name": "from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2258,
                                          "src": "14001:4:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2314,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2262,
                                          "src": "14007:2:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2315,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2264,
                                          "src": "14011:5:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2316,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2266,
                                          "src": "14018:4:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 2309,
                                              "name": "to",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2260,
                                              "src": "13969:2:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 2308,
                                            "name": "IERC1155TokenReceiver",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 778,
                                            "src": "13947:21:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$778_$",
                                              "typeString": "type(contract IERC1155TokenReceiver)"
                                            }
                                          },
                                          "id": 2310,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "13947:25:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC1155TokenReceiver_$778",
                                            "typeString": "contract IERC1155TokenReceiver"
                                          }
                                        },
                                        "id": 2311,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "onERC1155Received",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 760,
                                        "src": "13947:43:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                          "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                                        }
                                      },
                                      "id": 2317,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "13947:76:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 2319,
                                              "name": "to",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2260,
                                              "src": "14073:2:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 2318,
                                            "name": "IERC1155TokenReceiver",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 778,
                                            "src": "14051:21:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$778_$",
                                              "typeString": "type(contract IERC1155TokenReceiver)"
                                            }
                                          },
                                          "id": 2320,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "14051:25:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC1155TokenReceiver_$778",
                                            "typeString": "contract IERC1155TokenReceiver"
                                          }
                                        },
                                        "id": 2321,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "onERC1155Received",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 760,
                                        "src": "14051:43:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                          "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                                        }
                                      },
                                      "id": 2322,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "selector",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "14051:52:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "src": "13947:156:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "455243313135353a20676f7420756e6b6e6f776e2076616c75652066726f6d206f6e455243313135355265636569766564",
                                    "id": 2324,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14125:51:7",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_ed8e355e284874ab9344f5673b671de2fae4cbc95e3565b1501ffbb0f814cf6a",
                                      "typeString": "literal_string \"ERC1155: got unknown value from onERC1155Received\""
                                    },
                                    "value": "ERC1155: got unknown value from onERC1155Received"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_ed8e355e284874ab9344f5673b671de2fae4cbc95e3565b1501ffbb0f814cf6a",
                                      "typeString": "literal_string \"ERC1155: got unknown value from onERC1155Received\""
                                    }
                                  ],
                                  "id": 2307,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    2798,
                                    2799
                                  ],
                                  "referencedDeclaration": 2799,
                                  "src": "13918:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 2325,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13918:276:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2326,
                              "nodeType": "ExpressionStatement",
                              "src": "13918:276:7"
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 2374,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_doSafeTransferAcceptanceCheck",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2267,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2256,
                  "name": "operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2374,
                  "src": "13305:16:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2255,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13305:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2258,
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "scope": 2374,
                  "src": "13331:12:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2257,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13331:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2260,
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "scope": 2374,
                  "src": "13353:10:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2259,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13353:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2262,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 2374,
                  "src": "13373:10:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2261,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13373:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2264,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2374,
                  "src": "13393:13:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2263,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13393:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2266,
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 2374,
                  "src": "13416:17:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2265,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "13416:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13295:144:7"
            },
            "returnParameters": {
              "id": 2268,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13461:0:7"
            },
            "scope": 2497,
            "src": "13256:1591:7",
            "stateMutability": "nonpayable",
            "superFunction": 558,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2495,
              "nodeType": "Block",
              "src": "15083:1426:7",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2391,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2380,
                        "src": "15096:2:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 2392,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isContract",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2779,
                      "src": "15096:13:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                        "typeString": "function (address) view returns (bool)"
                      }
                    },
                    "id": 2393,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15096:15:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2494,
                  "nodeType": "IfStatement",
                  "src": "15093:1410:7",
                  "trueBody": {
                    "id": 2493,
                    "nodeType": "Block",
                    "src": "15113:1390:7",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2398,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 2395,
                                  "name": "gasleft",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2788,
                                  "src": "15135:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view returns (uint256)"
                                  }
                                },
                                "id": 2396,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15135:9:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 2397,
                                "name": "CHECK_IS_RECEIVER_REQUIRED_GAS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2237,
                                "src": "15148:30:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "15135:43:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "455243313135353a206e6f7420656e6f7567682067617320726573657276656420666f7220746f6b656e20726563656976657220636865636b",
                              "id": 2399,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15180:59:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_70143c97890a8de8bd28d50978595ef8a14cf1fbfce29e1980b2f38ced3ebc18",
                                "typeString": "literal_string \"ERC1155: not enough gas reserved for token receiver check\""
                              },
                              "value": "ERC1155: not enough gas reserved for token receiver check"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_70143c97890a8de8bd28d50978595ef8a14cf1fbfce29e1980b2f38ced3ebc18",
                                "typeString": "literal_string \"ERC1155: not enough gas reserved for token receiver check\""
                              }
                            ],
                            "id": 2394,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2798,
                              2799
                            ],
                            "referencedDeclaration": 2799,
                            "src": "15127:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2400,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15127:113:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2401,
                        "nodeType": "ExpressionStatement",
                        "src": "15127:113:7"
                      },
                      {
                        "assignments": [
                          2403,
                          2405
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2403,
                            "name": "callSucceeded",
                            "nodeType": "VariableDeclaration",
                            "scope": 2493,
                            "src": "15255:18:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2402,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "15255:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2405,
                            "name": "callReturnData",
                            "nodeType": "VariableDeclaration",
                            "scope": 2493,
                            "src": "15275:27:7",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 2404,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "15275:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2413,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2411,
                              "name": "CHECK_IS_RECEIVER_CALLDATA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2254,
                              "src": "15331:26:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory",
                                "typeString": "bytes memory"
                              }
                            ],
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "3130303030",
                                "id": 2409,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15324:5:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10000_by_1",
                                  "typeString": "int_const 10000"
                                },
                                "value": "10000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_10000_by_1",
                                  "typeString": "int_const 10000"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2406,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2380,
                                  "src": "15306:2:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 2407,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "staticcall",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "15306:13:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                                }
                              },
                              "id": 2408,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "gas",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "15306:17:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_setgas_nonpayable$_t_uint256_$returns$_t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas_$",
                                "typeString": "function (uint256) returns (function (bytes memory) view returns (bool,bytes memory))"
                              }
                            },
                            "id": 2410,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15306:24:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 2412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15306:52:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15254:104:7"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2428,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 2419,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2414,
                              "name": "callSucceeded",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2403,
                              "src": "15393:13:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2418,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2415,
                                  "name": "callReturnData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2405,
                                  "src": "15426:14:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 2416,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "15426:21:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2417,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15450:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "15426:25:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "15393:58:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 2427,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2422,
                                  "name": "callReturnData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2405,
                                  "src": "15482:14:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2423,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "15499:4:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bool_$",
                                        "typeString": "type(bool)"
                                      },
                                      "typeName": "bool"
                                    }
                                  ],
                                  "id": 2424,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "15498:6:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  },
                                  {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2420,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2782,
                                  "src": "15471:3:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 2421,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "decode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "15471:10:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 2425,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15471:34:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 2426,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15509:4:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            "src": "15471:42:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "15393:120:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2491,
                          "nodeType": "Block",
                          "src": "15860:633:7",
                          "statements": [
                            {
                              "assignments": [
                                2451
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2451,
                                  "name": "implementer",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2491,
                                  "src": "15878:19:7",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 2450,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15878:7:7",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2463,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2456,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2380,
                                    "src": "16005:2:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "45524331313535546f6b656e5265636569766572",
                                            "id": 2459,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "16025:22:7",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_78eca591ab61c5e7d150a4c8756b2645287be0b2a3dc046cb359858001cc6587",
                                              "typeString": "literal_string \"ERC1155TokenReceiver\""
                                            },
                                            "value": "ERC1155TokenReceiver"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_78eca591ab61c5e7d150a4c8756b2645287be0b2a3dc046cb359858001cc6587",
                                              "typeString": "literal_string \"ERC1155TokenReceiver\""
                                            }
                                          ],
                                          "id": 2458,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "16019:5:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                            "typeString": "type(bytes storage pointer)"
                                          },
                                          "typeName": "bytes"
                                        },
                                        "id": 2460,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "16019:29:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 2457,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2789,
                                      "src": "16009:9:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 2461,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "16009:40:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "307831383230613442373631384264453731446365386364633733614142364339353930356661443234",
                                        "id": 2453,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "15916:42:7",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        },
                                        "value": "0x1820a4B7618BdE71Dce8cdc73aAB6C95905faD24"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      ],
                                      "id": 2452,
                                      "name": "ERC1820Registry",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1210,
                                      "src": "15900:15:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_ERC1820Registry_$1210_$",
                                        "typeString": "type(contract ERC1820Registry)"
                                      }
                                    },
                                    "id": 2454,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15900:59:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ERC1820Registry_$1210",
                                      "typeString": "contract ERC1820Registry"
                                    }
                                  },
                                  "id": 2455,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getInterfaceImplementer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 883,
                                  "src": "15900:104:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_address_$",
                                    "typeString": "function (address,bytes32) view external returns (address)"
                                  }
                                },
                                "id": 2462,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15900:150:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15878:172:7"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 2468,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2464,
                                  "name": "implementer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2451,
                                  "src": "16072:11:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 2466,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "16095:1:7",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 2465,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "16087:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 2467,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "16087:10:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "16072:25:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 2490,
                              "nodeType": "IfStatement",
                              "src": "16069:410:7",
                              "trueBody": {
                                "id": 2489,
                                "nodeType": "Block",
                                "src": "16099:380:7",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          },
                                          "id": 2485,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 2474,
                                                "name": "operator",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2376,
                                                "src": "16212:8:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 2475,
                                                "name": "from",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2378,
                                                "src": "16222:4:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 2476,
                                                "name": "ids",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2383,
                                                "src": "16228:3:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                  "typeString": "uint256[] memory"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 2477,
                                                "name": "values",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2386,
                                                "src": "16233:6:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                  "typeString": "uint256[] memory"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 2478,
                                                "name": "data",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2388,
                                                "src": "16241:4:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                  "typeString": "uint256[] memory"
                                                },
                                                {
                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                  "typeString": "uint256[] memory"
                                                },
                                                {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 2471,
                                                    "name": "implementer",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2451,
                                                    "src": "16176:11:7",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  ],
                                                  "id": 2470,
                                                  "name": "IERC1155TokenReceiver",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 778,
                                                  "src": "16154:21:7",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$778_$",
                                                    "typeString": "type(contract IERC1155TokenReceiver)"
                                                  }
                                                },
                                                "id": 2472,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "16154:34:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_IERC1155TokenReceiver_$778",
                                                  "typeString": "contract IERC1155TokenReceiver"
                                                }
                                              },
                                              "id": 2473,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "onERC1155BatchReceived",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 777,
                                              "src": "16154:57:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                                "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"
                                              }
                                            },
                                            "id": 2479,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "16154:92:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 2481,
                                                    "name": "implementer",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2451,
                                                    "src": "16300:11:7",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  ],
                                                  "id": 2480,
                                                  "name": "IERC1155TokenReceiver",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 778,
                                                  "src": "16278:21:7",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$778_$",
                                                    "typeString": "type(contract IERC1155TokenReceiver)"
                                                  }
                                                },
                                                "id": 2482,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "16278:34:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_IERC1155TokenReceiver_$778",
                                                  "typeString": "contract IERC1155TokenReceiver"
                                                }
                                              },
                                              "id": 2483,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "onERC1155BatchReceived",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 777,
                                              "src": "16278:57:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                                "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"
                                              }
                                            },
                                            "id": 2484,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "selector",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "16278:66:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "src": "16154:190:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "455243313135353a20676f7420756e6b6e6f776e2076616c75652066726f6d20696d706c656d656e746564206f6e4552433131353542617463685265636569766564",
                                          "id": 2486,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "16370:68:7",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_52659fe8a2aab23558e5402f8cbb707d32d25302be784438d11f5caf1bfeb3ee",
                                            "typeString": "literal_string \"ERC1155: got unknown value from implemented onERC1155BatchReceived\""
                                          },
                                          "value": "ERC1155: got unknown value from implemented onERC1155BatchReceived"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_52659fe8a2aab23558e5402f8cbb707d32d25302be784438d11f5caf1bfeb3ee",
                                            "typeString": "literal_string \"ERC1155: got unknown value from implemented onERC1155BatchReceived\""
                                          }
                                        ],
                                        "id": 2469,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          2798,
                                          2799
                                        ],
                                        "referencedDeclaration": 2799,
                                        "src": "16121:7:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 2487,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "16121:339:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2488,
                                    "nodeType": "ExpressionStatement",
                                    "src": "16121:339:7"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 2492,
                        "nodeType": "IfStatement",
                        "src": "15373:1120:7",
                        "trueBody": {
                          "id": 2449,
                          "nodeType": "Block",
                          "src": "15528:326:7",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    },
                                    "id": 2445,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2434,
                                          "name": "operator",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2376,
                                          "src": "15624:8:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2435,
                                          "name": "from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2378,
                                          "src": "15634:4:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2436,
                                          "name": "ids",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2383,
                                          "src": "15640:3:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2437,
                                          "name": "values",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2386,
                                          "src": "15645:6:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2438,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2388,
                                          "src": "15653:4:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          },
                                          {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 2431,
                                              "name": "to",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2380,
                                              "src": "15597:2:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 2430,
                                            "name": "IERC1155TokenReceiver",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 778,
                                            "src": "15575:21:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$778_$",
                                              "typeString": "type(contract IERC1155TokenReceiver)"
                                            }
                                          },
                                          "id": 2432,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "15575:25:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC1155TokenReceiver_$778",
                                            "typeString": "contract IERC1155TokenReceiver"
                                          }
                                        },
                                        "id": 2433,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "onERC1155BatchReceived",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 777,
                                        "src": "15575:48:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                          "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"
                                        }
                                      },
                                      "id": 2439,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "15575:83:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 2441,
                                              "name": "to",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2380,
                                              "src": "15708:2:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 2440,
                                            "name": "IERC1155TokenReceiver",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 778,
                                            "src": "15686:21:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$778_$",
                                              "typeString": "type(contract IERC1155TokenReceiver)"
                                            }
                                          },
                                          "id": 2442,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "15686:25:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC1155TokenReceiver_$778",
                                            "typeString": "contract IERC1155TokenReceiver"
                                          }
                                        },
                                        "id": 2443,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "onERC1155BatchReceived",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 777,
                                        "src": "15686:48:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                          "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"
                                        }
                                      },
                                      "id": 2444,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "selector",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "15686:57:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "src": "15575:168:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "455243313135353a20676f7420756e6b6e6f776e2076616c75652066726f6d206f6e4552433131353542617463685265636569766564",
                                    "id": 2446,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15765:56:7",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_58a2cb4b4a89dfb73e68b77ccf865672b17ec44aca20d21ff9de955fc453cfbf",
                                      "typeString": "literal_string \"ERC1155: got unknown value from onERC1155BatchReceived\""
                                    },
                                    "value": "ERC1155: got unknown value from onERC1155BatchReceived"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_58a2cb4b4a89dfb73e68b77ccf865672b17ec44aca20d21ff9de955fc453cfbf",
                                      "typeString": "literal_string \"ERC1155: got unknown value from onERC1155BatchReceived\""
                                    }
                                  ],
                                  "id": 2429,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    2798,
                                    2799
                                  ],
                                  "referencedDeclaration": 2799,
                                  "src": "15546:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 2447,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15546:293:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2448,
                              "nodeType": "ExpressionStatement",
                              "src": "15546:293:7"
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 2496,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_doSafeBatchTransferAcceptanceCheck",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2389,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2376,
                  "name": "operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2496,
                  "src": "14907:16:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2375,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14907:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2378,
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "scope": 2496,
                  "src": "14933:12:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2377,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14933:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2380,
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "scope": 2496,
                  "src": "14955:10:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2379,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14955:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2383,
                  "name": "ids",
                  "nodeType": "VariableDeclaration",
                  "scope": 2496,
                  "src": "14975:20:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2381,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "14975:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2382,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "14975:9:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2386,
                  "name": "values",
                  "nodeType": "VariableDeclaration",
                  "scope": 2496,
                  "src": "15005:23:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2384,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "15005:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2385,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "15005:9:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2388,
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 2496,
                  "src": "15038:17:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2387,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "15038:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14897:164:7"
            },
            "returnParameters": {
              "id": 2390,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15083:0:7"
            },
            "scope": 2497,
            "src": "14853:1656:7",
            "stateMutability": "nonpayable",
            "superFunction": 601,
            "visibility": "internal"
          }
        ],
        "scope": 2498,
        "src": "321:16190:7"
      }
    ],
    "src": "0:16512:7"
  },
  "legacyAST": {
    "absolutePath": "/home/alan/src/github.com/gnosis/hg-contracts/contracts/PredictionMarketSystem.sol",
    "exportedSymbols": {
      "PredictionMarketSystem": [
        2497
      ]
    },
    "id": 2498,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1279,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".1"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:7"
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
        "file": "openzeppelin-solidity/contracts/token/ERC20/IERC20.sol",
        "id": 1281,
        "nodeType": "ImportDirective",
        "scope": 2498,
        "sourceUnit": 2762,
        "src": "24:80:7",
        "symbolAliases": [
          {
            "foreign": 1280,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/alan/src/github.com/gnosis/hg-contracts/contracts/ERC1155/IERC1155TokenReceiver.sol",
        "file": "./ERC1155/IERC1155TokenReceiver.sol",
        "id": 1283,
        "nodeType": "ImportDirective",
        "scope": 2498,
        "sourceUnit": 779,
        "src": "105:76:7",
        "symbolAliases": [
          {
            "foreign": 1282,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/alan/src/github.com/gnosis/hg-contracts/contracts/ERC1155/ERC1155.sol",
        "file": "./ERC1155/ERC1155.sol",
        "id": 1285,
        "nodeType": "ImportDirective",
        "scope": 2498,
        "sourceUnit": 603,
        "src": "182:48:7",
        "symbolAliases": [
          {
            "foreign": 1284,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/alan/src/github.com/gnosis/hg-contracts/contracts/ERC1820Registry.sol",
        "file": "./ERC1820Registry.sol",
        "id": 1287,
        "nodeType": "ImportDirective",
        "scope": 2498,
        "sourceUnit": 1211,
        "src": "231:56:7",
        "symbolAliases": [
          {
            "foreign": 1286,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/alan/src/github.com/gnosis/hg-contracts/contracts/OracleConsumer.sol",
        "file": "./OracleConsumer.sol",
        "id": 1288,
        "nodeType": "ImportDirective",
        "scope": 2498,
        "sourceUnit": 1278,
        "src": "288:30:7",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1289,
              "name": "OracleConsumer",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1277,
              "src": "356:14:7",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_OracleConsumer_$1277",
                "typeString": "contract OracleConsumer"
              }
            },
            "id": 1290,
            "nodeType": "InheritanceSpecifier",
            "src": "356:14:7"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1291,
              "name": "ERC1155",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 602,
              "src": "372:7:7",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC1155_$602",
                "typeString": "contract ERC1155"
              }
            },
            "id": 1292,
            "nodeType": "InheritanceSpecifier",
            "src": "372:7:7"
          }
        ],
        "contractDependencies": [
          602,
          740,
          1277,
          2549,
          2559
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2497,
        "linearizedBaseContracts": [
          2497,
          602,
          740,
          2549,
          2559,
          1277
        ],
        "name": "PredictionMarketSystem",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": "@dev Emitted upon the successful preparation of a condition.\n @param conditionId The condition's ID. This ID may be derived from the other three parameters via ``keccak256(abi.encodePacked(oracle, questionId, outcomeSlotCount))``.\n @param oracle The account assigned to report the result for the prepared condition.\n @param questionId An identifier for the question to be answered by the oracle.\n @param outcomeSlotCount The number of outcome slots which should be used for this condition. Must not exceed 256.",
            "id": 1302,
            "name": "ConditionPreparation",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1301,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1294,
                  "indexed": true,
                  "name": "conditionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1302,
                  "src": "970:27:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1293,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "970:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1296,
                  "indexed": true,
                  "name": "oracle",
                  "nodeType": "VariableDeclaration",
                  "scope": 1302,
                  "src": "1007:22:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1295,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1007:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1298,
                  "indexed": true,
                  "name": "questionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1302,
                  "src": "1039:26:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1297,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1039:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1300,
                  "indexed": false,
                  "name": "outcomeSlotCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1302,
                  "src": "1075:21:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1299,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1075:4:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "960:142:7"
            },
            "src": "934:169:7"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 1315,
            "name": "ConditionResolution",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1314,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1304,
                  "indexed": true,
                  "name": "conditionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1315,
                  "src": "1144:27:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1303,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1144:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1306,
                  "indexed": true,
                  "name": "oracle",
                  "nodeType": "VariableDeclaration",
                  "scope": 1315,
                  "src": "1181:22:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1305,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1181:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1308,
                  "indexed": true,
                  "name": "questionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1315,
                  "src": "1213:26:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1307,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1213:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1310,
                  "indexed": false,
                  "name": "outcomeSlotCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1315,
                  "src": "1249:21:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1309,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1249:4:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1313,
                  "indexed": false,
                  "name": "payoutNumerators",
                  "nodeType": "VariableDeclaration",
                  "scope": 1315,
                  "src": "1280:23:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1311,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "1280:4:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1312,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1280:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1134:175:7"
            },
            "src": "1109:201:7"
          },
          {
            "anonymous": false,
            "documentation": "@dev Emitted when a position is successfully split.",
            "id": 1330,
            "name": "PositionSplit",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1329,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1317,
                  "indexed": true,
                  "name": "stakeholder",
                  "nodeType": "VariableDeclaration",
                  "scope": 1330,
                  "src": "1405:27:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1316,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1405:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1319,
                  "indexed": false,
                  "name": "collateralToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 1330,
                  "src": "1442:22:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$2761",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1318,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2761,
                    "src": "1442:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$2761",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1321,
                  "indexed": true,
                  "name": "parentCollectionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1330,
                  "src": "1474:34:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1320,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1474:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1323,
                  "indexed": true,
                  "name": "conditionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1330,
                  "src": "1518:27:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1322,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1518:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1326,
                  "indexed": false,
                  "name": "partition",
                  "nodeType": "VariableDeclaration",
                  "scope": 1330,
                  "src": "1555:16:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1324,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "1555:4:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1325,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1555:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1328,
                  "indexed": false,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1330,
                  "src": "1581:11:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1327,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1581:4:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1395:203:7"
            },
            "src": "1376:223:7"
          },
          {
            "anonymous": false,
            "documentation": "@dev Emitted when positions are successfully merged.",
            "id": 1345,
            "name": "PositionsMerge",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1344,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1332,
                  "indexed": true,
                  "name": "stakeholder",
                  "nodeType": "VariableDeclaration",
                  "scope": 1345,
                  "src": "1695:27:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1331,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1695:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1334,
                  "indexed": false,
                  "name": "collateralToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 1345,
                  "src": "1732:22:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$2761",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1333,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2761,
                    "src": "1732:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$2761",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1336,
                  "indexed": true,
                  "name": "parentCollectionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1345,
                  "src": "1764:34:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1335,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1764:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1338,
                  "indexed": true,
                  "name": "conditionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1345,
                  "src": "1808:27:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1337,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1808:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1341,
                  "indexed": false,
                  "name": "partition",
                  "nodeType": "VariableDeclaration",
                  "scope": 1345,
                  "src": "1845:16:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1339,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "1845:4:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1340,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "1845:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1343,
                  "indexed": false,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1345,
                  "src": "1871:11:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1342,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1871:4:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1685:203:7"
            },
            "src": "1665:224:7"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 1360,
            "name": "PayoutRedemption",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 1359,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1347,
                  "indexed": true,
                  "name": "redeemer",
                  "nodeType": "VariableDeclaration",
                  "scope": 1360,
                  "src": "1926:24:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1346,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1926:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1349,
                  "indexed": true,
                  "name": "collateralToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 1360,
                  "src": "1960:30:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$2761",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1348,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2761,
                    "src": "1960:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$2761",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1351,
                  "indexed": true,
                  "name": "parentCollectionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1360,
                  "src": "2000:34:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1350,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2000:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1353,
                  "indexed": false,
                  "name": "conditionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1360,
                  "src": "2044:19:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1352,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2044:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1356,
                  "indexed": false,
                  "name": "indexSets",
                  "nodeType": "VariableDeclaration",
                  "scope": 1360,
                  "src": "2073:16:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1354,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "2073:4:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1355,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "2073:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1358,
                  "indexed": false,
                  "name": "payout",
                  "nodeType": "VariableDeclaration",
                  "scope": 1360,
                  "src": "2099:11:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1357,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2099:4:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1916:200:7"
            },
            "src": "1894:223:7"
          },
          {
            "constant": false,
            "id": 1365,
            "name": "payoutNumerators",
            "nodeType": "VariableDeclaration",
            "scope": 2497,
            "src": "2316:50:7",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$",
              "typeString": "mapping(bytes32 => uint256[])"
            },
            "typeName": {
              "id": 1364,
              "keyType": {
                "id": 1361,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "2324:7:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "2316:26:7",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$",
                "typeString": "mapping(bytes32 => uint256[])"
              },
              "valueType": {
                "baseType": {
                  "id": 1362,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "2335:4:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "id": 1363,
                "length": null,
                "nodeType": "ArrayTypeName",
                "src": "2335:6:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                  "typeString": "uint256[]"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 1369,
            "name": "payoutDenominator",
            "nodeType": "VariableDeclaration",
            "scope": 2497,
            "src": "2372:49:7",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
              "typeString": "mapping(bytes32 => uint256)"
            },
            "typeName": {
              "id": 1368,
              "keyType": {
                "id": 1366,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "2380:7:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "2372:24:7",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                "typeString": "mapping(bytes32 => uint256)"
              },
              "valueType": {
                "id": 1367,
                "name": "uint",
                "nodeType": "ElementaryTypeName",
                "src": "2391:4:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1430,
              "nodeType": "Block",
              "src": "2934:486:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1381,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1379,
                          "name": "outcomeSlotCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1375,
                          "src": "2952:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "323536",
                          "id": 1380,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2972:3:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_256_by_1",
                            "typeString": "int_const 256"
                          },
                          "value": "256"
                        },
                        "src": "2952:23:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "746f6f206d616e79206f7574636f6d6520736c6f7473",
                        "id": 1382,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2977:24:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5706584e314540f601d1501360936f8fc9e30a7d2e74e7748785732369bd0cdd",
                          "typeString": "literal_string \"too many outcome slots\""
                        },
                        "value": "too many outcome slots"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5706584e314540f601d1501360936f8fc9e30a7d2e74e7748785732369bd0cdd",
                          "typeString": "literal_string \"too many outcome slots\""
                        }
                      ],
                      "id": 1378,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2798,
                        2799
                      ],
                      "referencedDeclaration": 2799,
                      "src": "2944:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1383,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2944:58:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1384,
                  "nodeType": "ExpressionStatement",
                  "src": "2944:58:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1388,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1386,
                          "name": "outcomeSlotCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1375,
                          "src": "3020:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3039:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3020:20:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6e6f206f7574636f6d6520736c6f74732070726f7669646564",
                        "id": 1389,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3042:27:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_0f8d4cdd6800a772f716b37541d254a85fe03589c493b5a7965d27046c5199b9",
                          "typeString": "literal_string \"no outcome slots provided\""
                        },
                        "value": "no outcome slots provided"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_0f8d4cdd6800a772f716b37541d254a85fe03589c493b5a7965d27046c5199b9",
                          "typeString": "literal_string \"no outcome slots provided\""
                        }
                      ],
                      "id": 1385,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2798,
                        2799
                      ],
                      "referencedDeclaration": 2799,
                      "src": "3012:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1390,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3012:58:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1391,
                  "nodeType": "ExpressionStatement",
                  "src": "3012:58:7"
                },
                {
                  "assignments": [
                    1393
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1393,
                      "name": "conditionId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1430,
                      "src": "3080:19:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1392,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3080:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1402,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1397,
                            "name": "oracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1371,
                            "src": "3129:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1398,
                            "name": "questionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1373,
                            "src": "3137:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1399,
                            "name": "outcomeSlotCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1375,
                            "src": "3149:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1395,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2782,
                            "src": "3112:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1396,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3112:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1400,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3112:54:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1394,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2789,
                      "src": "3102:9:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1401,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3102:65:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3080:87:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1409,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1404,
                              "name": "payoutNumerators",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1365,
                              "src": "3185:16:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$",
                                "typeString": "mapping(bytes32 => uint256[] storage ref)"
                              }
                            },
                            "id": 1406,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1405,
                              "name": "conditionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1393,
                              "src": "3202:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3185:29:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                              "typeString": "uint256[] storage ref"
                            }
                          },
                          "id": 1407,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3185:36:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1408,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3225:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3185:41:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "636f6e646974696f6e20616c7265616479207072657061726564",
                        "id": 1410,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3228:28:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_085f2ba305b65e1749ffb9aa5f5036488c96fa506e8794890472c8b77d753ee9",
                          "typeString": "literal_string \"condition already prepared\""
                        },
                        "value": "condition already prepared"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_085f2ba305b65e1749ffb9aa5f5036488c96fa506e8794890472c8b77d753ee9",
                          "typeString": "literal_string \"condition already prepared\""
                        }
                      ],
                      "id": 1403,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2798,
                        2799
                      ],
                      "referencedDeclaration": 2799,
                      "src": "3177:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1411,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3177:80:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1412,
                  "nodeType": "ExpressionStatement",
                  "src": "3177:80:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1421,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1413,
                        "name": "payoutNumerators",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1365,
                        "src": "3267:16:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$",
                          "typeString": "mapping(bytes32 => uint256[] storage ref)"
                        }
                      },
                      "id": 1415,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1414,
                        "name": "conditionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1393,
                        "src": "3284:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3267:29:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                        "typeString": "uint256[] storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1419,
                          "name": "outcomeSlotCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1375,
                          "src": "3310:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 1418,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "3299:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_$",
                          "typeString": "function (uint256) pure returns (uint256[] memory)"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1416,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "3303:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1417,
                          "length": null,
                          "nodeType": "ArrayTypeName",
                          "src": "3303:6:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        }
                      },
                      "id": 1420,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3299:28:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory",
                        "typeString": "uint256[] memory"
                      }
                    },
                    "src": "3267:60:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                      "typeString": "uint256[] storage ref"
                    }
                  },
                  "id": 1422,
                  "nodeType": "ExpressionStatement",
                  "src": "3267:60:7"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1424,
                        "name": "conditionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1393,
                        "src": "3363:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1425,
                        "name": "oracle",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1371,
                        "src": "3376:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1426,
                        "name": "questionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1373,
                        "src": "3384:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1427,
                        "name": "outcomeSlotCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1375,
                        "src": "3396:16:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1423,
                      "name": "ConditionPreparation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1302,
                      "src": "3342:20:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,address,bytes32,uint256)"
                      }
                    },
                    "id": 1428,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3342:71:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1429,
                  "nodeType": "EmitStatement",
                  "src": "3337:76:7"
                }
              ]
            },
            "documentation": "@dev This function prepares a condition by initializing a payout vector associated with the condition.\n @param oracle The account assigned to report the result for the prepared condition.\n @param questionId An identifier for the question to be answered by the oracle.\n @param outcomeSlotCount The number of outcome slots which should be used for this condition. Must not exceed 256.",
            "id": 1431,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "prepareCondition",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1376,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1371,
                  "name": "oracle",
                  "nodeType": "VariableDeclaration",
                  "scope": 1431,
                  "src": "2866:14:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1370,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2866:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1373,
                  "name": "questionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1431,
                  "src": "2882:18:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1372,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2882:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1375,
                  "name": "outcomeSlotCount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1431,
                  "src": "2902:21:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1374,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2902:4:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2865:59:7"
            },
            "returnParameters": {
              "id": 1377,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2934:0:7"
            },
            "scope": 2497,
            "src": "2840:580:7",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1567,
              "nodeType": "Block",
              "src": "4070:1252:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1442,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1439,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1435,
                            "src": "4088:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          },
                          "id": 1440,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4088:13:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1441,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4104:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4088:17:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "726573756c747320656d707479",
                        "id": 1443,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4107:15:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_67ca5b66623ba79d71f57a7c233f78928bb6fc917ef9d081bd4b07d6f541640d",
                          "typeString": "literal_string \"results empty\""
                        },
                        "value": "results empty"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_67ca5b66623ba79d71f57a7c233f78928bb6fc917ef9d081bd4b07d6f541640d",
                          "typeString": "literal_string \"results empty\""
                        }
                      ],
                      "id": 1438,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2798,
                        2799
                      ],
                      "referencedDeclaration": 2799,
                      "src": "4080:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1444,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4080:43:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1445,
                  "nodeType": "ExpressionStatement",
                  "src": "4080:43:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1452,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1447,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1435,
                              "src": "4141:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            "id": 1448,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4141:13:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "%",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "3332",
                            "id": 1449,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4157:2:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            },
                            "value": "32"
                          },
                          "src": "4141:18:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1451,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4163:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4141:23:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "726573756c7473206e6f742033322d6279746520616c69676e6564",
                        "id": 1453,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4166:29:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c9caa8af887c814552b93ecaf851da48a5d2cff00383a07c7b88b62fab70bebd",
                          "typeString": "literal_string \"results not 32-byte aligned\""
                        },
                        "value": "results not 32-byte aligned"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c9caa8af887c814552b93ecaf851da48a5d2cff00383a07c7b88b62fab70bebd",
                          "typeString": "literal_string \"results not 32-byte aligned\""
                        }
                      ],
                      "id": 1446,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2798,
                        2799
                      ],
                      "referencedDeclaration": 2799,
                      "src": "4133:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1454,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4133:63:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1455,
                  "nodeType": "ExpressionStatement",
                  "src": "4133:63:7"
                },
                {
                  "assignments": [
                    1457
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1457,
                      "name": "outcomeSlotCount",
                      "nodeType": "VariableDeclaration",
                      "scope": 1567,
                      "src": "4206:21:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1456,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4206:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1462,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1461,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1458,
                        "name": "result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1435,
                        "src": "4230:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      "id": 1459,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4230:13:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3332",
                      "id": 1460,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4246:2:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_32_by_1",
                        "typeString": "int_const 32"
                      },
                      "value": "32"
                    },
                    "src": "4230:18:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4206:42:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1466,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1464,
                          "name": "outcomeSlotCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1457,
                          "src": "4266:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "323536",
                          "id": 1465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4286:3:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_256_by_1",
                            "typeString": "int_const 256"
                          },
                          "value": "256"
                        },
                        "src": "4266:23:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "746f6f206d616e79206f7574636f6d6520736c6f7473",
                        "id": 1467,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4291:24:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_5706584e314540f601d1501360936f8fc9e30a7d2e74e7748785732369bd0cdd",
                          "typeString": "literal_string \"too many outcome slots\""
                        },
                        "value": "too many outcome slots"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_5706584e314540f601d1501360936f8fc9e30a7d2e74e7748785732369bd0cdd",
                          "typeString": "literal_string \"too many outcome slots\""
                        }
                      ],
                      "id": 1463,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2798,
                        2799
                      ],
                      "referencedDeclaration": 2799,
                      "src": "4258:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1468,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4258:58:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1469,
                  "nodeType": "ExpressionStatement",
                  "src": "4258:58:7"
                },
                {
                  "assignments": [
                    1471
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1471,
                      "name": "conditionId",
                      "nodeType": "VariableDeclaration",
                      "scope": 1567,
                      "src": "4326:19:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1470,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "4326:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1481,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1475,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2795,
                              "src": "4375:3:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1476,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4375:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1477,
                            "name": "questionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1433,
                            "src": "4387:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1478,
                            "name": "outcomeSlotCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1457,
                            "src": "4399:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1473,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2782,
                            "src": "4358:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1474,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4358:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 1479,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4358:58:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 1472,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2789,
                      "src": "4348:9:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 1480,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4348:69:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4326:91:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1488,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1483,
                              "name": "payoutNumerators",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1365,
                              "src": "4435:16:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$",
                                "typeString": "mapping(bytes32 => uint256[] storage ref)"
                              }
                            },
                            "id": 1485,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1484,
                              "name": "conditionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1471,
                              "src": "4452:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4435:29:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                              "typeString": "uint256[] storage ref"
                            }
                          },
                          "id": 1486,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4435:36:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1487,
                          "name": "outcomeSlotCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1457,
                          "src": "4475:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4435:56:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6e756d626572206f66206f7574636f6d6573206d69736d61746368",
                        "id": 1489,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4493:29:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c11e7a464a2ae39b1ccafde4608c18a0d9fde62f05cc44adfc808126044dd1e2",
                          "typeString": "literal_string \"number of outcomes mismatch\""
                        },
                        "value": "number of outcomes mismatch"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c11e7a464a2ae39b1ccafde4608c18a0d9fde62f05cc44adfc808126044dd1e2",
                          "typeString": "literal_string \"number of outcomes mismatch\""
                        }
                      ],
                      "id": 1482,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2798,
                        2799
                      ],
                      "referencedDeclaration": 2799,
                      "src": "4427:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1490,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4427:96:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1491,
                  "nodeType": "ExpressionStatement",
                  "src": "4427:96:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1497,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1493,
                            "name": "payoutDenominator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1369,
                            "src": "4541:17:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                              "typeString": "mapping(bytes32 => uint256)"
                            }
                          },
                          "id": 1495,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1494,
                            "name": "conditionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1471,
                            "src": "4559:11:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4541:30:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1496,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4575:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4541:35:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7061796f75742064656e6f6d696e61746f7220616c726561647920736574",
                        "id": 1498,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4578:32:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6e02e620da3906989996cbf7fada43ca471ebaecde092b11e3ff24dcae3669cf",
                          "typeString": "literal_string \"payout denominator already set\""
                        },
                        "value": "payout denominator already set"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6e02e620da3906989996cbf7fada43ca471ebaecde092b11e3ff24dcae3669cf",
                          "typeString": "literal_string \"payout denominator already set\""
                        }
                      ],
                      "id": 1492,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2798,
                        2799
                      ],
                      "referencedDeclaration": 2799,
                      "src": "4533:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1499,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4533:78:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1500,
                  "nodeType": "ExpressionStatement",
                  "src": "4533:78:7"
                },
                {
                  "body": {
                    "id": 1545,
                    "nodeType": "Block",
                    "src": "4665:454:7",
                    "statements": [
                      {
                        "assignments": [
                          1512
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1512,
                            "name": "payoutNum",
                            "nodeType": "VariableDeclaration",
                            "scope": 1545,
                            "src": "4679:14:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1511,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "4679:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1513,
                        "initialValue": null,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4679:14:7"
                      },
                      {
                        "externalReferences": [
                          {
                            "payoutNum": {
                              "declaration": 1512,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "4802:9:7",
                              "valueSize": 1
                            }
                          },
                          {
                            "i": {
                              "declaration": 1502,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "4848:1:7",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 1514,
                        "nodeType": "InlineAssembly",
                        "operations": "{\n    payoutNum := calldataload(add(0x64, mul(0x20, i)))\n}",
                        "src": "4775:121:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1524,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1515,
                              "name": "payoutDenominator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1369,
                              "src": "4879:17:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                              }
                            },
                            "id": 1517,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1516,
                              "name": "conditionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1471,
                              "src": "4897:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4879:30:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1522,
                                "name": "payoutNum",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1512,
                                "src": "4947:9:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 1518,
                                  "name": "payoutDenominator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1369,
                                  "src": "4912:17:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                    "typeString": "mapping(bytes32 => uint256)"
                                  }
                                },
                                "id": 1520,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1519,
                                  "name": "conditionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1471,
                                  "src": "4930:11:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4912:30:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1521,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2586,
                              "src": "4912:34:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1523,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4912:45:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4879:78:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1525,
                        "nodeType": "ExpressionStatement",
                        "src": "4879:78:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1533,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 1527,
                                    "name": "payoutNumerators",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1365,
                                    "src": "4980:16:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$",
                                      "typeString": "mapping(bytes32 => uint256[] storage ref)"
                                    }
                                  },
                                  "id": 1529,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 1528,
                                    "name": "conditionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1471,
                                    "src": "4997:11:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4980:29:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                    "typeString": "uint256[] storage ref"
                                  }
                                },
                                "id": 1531,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 1530,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1502,
                                  "src": "5010:1:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4980:32:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1532,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5016:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4980:37:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "7061796f7574206e756d657261746f7220616c726561647920736574",
                              "id": 1534,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5019:30:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3a5485047320688d4127f54e4e0ca39f78a10abe715028e5b70b97dee5994e44",
                                "typeString": "literal_string \"payout numerator already set\""
                              },
                              "value": "payout numerator already set"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3a5485047320688d4127f54e4e0ca39f78a10abe715028e5b70b97dee5994e44",
                                "typeString": "literal_string \"payout numerator already set\""
                              }
                            ],
                            "id": 1526,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2798,
                              2799
                            ],
                            "referencedDeclaration": 2799,
                            "src": "4972:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4972:78:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1536,
                        "nodeType": "ExpressionStatement",
                        "src": "4972:78:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1543,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 1537,
                                "name": "payoutNumerators",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1365,
                                "src": "5064:16:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$",
                                  "typeString": "mapping(bytes32 => uint256[] storage ref)"
                                }
                              },
                              "id": 1540,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 1538,
                                "name": "conditionId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1471,
                                "src": "5081:11:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5064:29:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                "typeString": "uint256[] storage ref"
                              }
                            },
                            "id": 1541,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1539,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1502,
                              "src": "5094:1:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5064:32:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1542,
                            "name": "payoutNum",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1512,
                            "src": "5099:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5064:44:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1544,
                        "nodeType": "ExpressionStatement",
                        "src": "5064:44:7"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1507,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1505,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1502,
                      "src": "4638:1:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 1506,
                      "name": "outcomeSlotCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1457,
                      "src": "4642:16:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4638:20:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1546,
                  "initializationExpression": {
                    "assignments": [
                      1502
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1502,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 1546,
                        "src": "4626:6:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1501,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "4626:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1504,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1503,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4635:1:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4626:10:7"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1509,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4660:3:7",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1508,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1502,
                        "src": "4660:1:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1510,
                    "nodeType": "ExpressionStatement",
                    "src": "4660:3:7"
                  },
                  "nodeType": "ForStatement",
                  "src": "4621:498:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1552,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1548,
                            "name": "payoutDenominator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1369,
                            "src": "5136:17:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                              "typeString": "mapping(bytes32 => uint256)"
                            }
                          },
                          "id": 1550,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1549,
                            "name": "conditionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1471,
                            "src": "5154:11:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5136:30:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1551,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5169:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "5136:34:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7061796f757420697320616c6c207a65726f6573",
                        "id": 1553,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5172:22:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ecb4c17013e582c5700501761dd8163e4cceba6f6ed55e500cd2a5e2233938ef",
                          "typeString": "literal_string \"payout is all zeroes\""
                        },
                        "value": "payout is all zeroes"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ecb4c17013e582c5700501761dd8163e4cceba6f6ed55e500cd2a5e2233938ef",
                          "typeString": "literal_string \"payout is all zeroes\""
                        }
                      ],
                      "id": 1547,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2798,
                        2799
                      ],
                      "referencedDeclaration": 2799,
                      "src": "5128:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1554,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5128:67:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1555,
                  "nodeType": "ExpressionStatement",
                  "src": "5128:67:7"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1557,
                        "name": "conditionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1471,
                        "src": "5230:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1558,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2795,
                          "src": "5243:3:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1559,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5243:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1560,
                        "name": "questionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1433,
                        "src": "5255:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1561,
                        "name": "outcomeSlotCount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1457,
                        "src": "5267:16:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1562,
                          "name": "payoutNumerators",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1365,
                          "src": "5285:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$",
                            "typeString": "mapping(bytes32 => uint256[] storage ref)"
                          }
                        },
                        "id": 1564,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 1563,
                          "name": "conditionId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1471,
                          "src": "5302:11:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5285:29:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                          "typeString": "uint256[] storage ref"
                        }
                      ],
                      "id": 1556,
                      "name": "ConditionResolution",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1315,
                      "src": "5210:19:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes32_$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,address,bytes32,uint256,uint256[] memory)"
                      }
                    },
                    "id": 1565,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5210:105:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1566,
                  "nodeType": "EmitStatement",
                  "src": "5205:110:7"
                }
              ]
            },
            "documentation": "@dev Called by the oracle for reporting results of conditions. Will set the payout vector for the condition with the ID ``keccak256(abi.encodePacked(oracle, questionId, outcomeSlotCount))``, where oracle is the message sender, questionId is one of the parameters of this function, and outcomeSlotCount is derived from result, which is the result of serializing 32-byte EVM words representing payoutNumerators for each outcome slot of the condition.\n @param questionId The question ID the oracle is answering for\n @param result The oracle's answer",
            "id": 1568,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "receiveResult",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1436,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1433,
                  "name": "questionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1568,
                  "src": "4018:18:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1432,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4018:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1435,
                  "name": "result",
                  "nodeType": "VariableDeclaration",
                  "scope": 1568,
                  "src": "4038:21:7",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 1434,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4038:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4017:43:7"
            },
            "returnParameters": {
              "id": 1437,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4070:0:7"
            },
            "scope": 2497,
            "src": "3995:1327:7",
            "stateMutability": "nonpayable",
            "superFunction": 1276,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1761,
              "nodeType": "Block",
              "src": "6644:1485:7",
              "statements": [
                {
                  "assignments": [
                    1583
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1583,
                      "name": "outcomeSlotCount",
                      "nodeType": "VariableDeclaration",
                      "scope": 1761,
                      "src": "6654:21:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1582,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6654:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1588,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1584,
                        "name": "payoutNumerators",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1365,
                        "src": "6678:16:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$",
                          "typeString": "mapping(bytes32 => uint256[] storage ref)"
                        }
                      },
                      "id": 1586,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1585,
                        "name": "conditionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1574,
                        "src": "6695:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "6678:29:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                        "typeString": "uint256[] storage ref"
                      }
                    },
                    "id": 1587,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "6678:36:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6654:60:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1592,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1590,
                          "name": "outcomeSlotCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1583,
                          "src": "6732:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1591,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6751:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "6732:20:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "636f6e646974696f6e206e6f7420707265706172656420796574",
                        "id": 1593,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6754:28:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e04bbd75ab4a1437326ef11a696b620d013bedb4db855d7241cc1435c81cd55a",
                          "typeString": "literal_string \"condition not prepared yet\""
                        },
                        "value": "condition not prepared yet"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e04bbd75ab4a1437326ef11a696b620d013bedb4db855d7241cc1435c81cd55a",
                          "typeString": "literal_string \"condition not prepared yet\""
                        }
                      ],
                      "id": 1589,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2798,
                        2799
                      ],
                      "referencedDeclaration": 2799,
                      "src": "6724:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1594,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6724:59:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1595,
                  "nodeType": "ExpressionStatement",
                  "src": "6724:59:7"
                },
                {
                  "assignments": [
                    1597
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1597,
                      "name": "key",
                      "nodeType": "VariableDeclaration",
                      "scope": 1761,
                      "src": "6794:11:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1596,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "6794:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1598,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6794:11:7"
                },
                {
                  "assignments": [
                    1600
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1600,
                      "name": "fullIndexSet",
                      "nodeType": "VariableDeclaration",
                      "scope": 1761,
                      "src": "6816:17:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1599,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6816:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1607,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1606,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1603,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1601,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6837:1:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1602,
                            "name": "outcomeSlotCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1583,
                            "src": "6842:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6837:21:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1604,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "6836:23:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 1605,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6862:1:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "6836:27:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6816:47:7"
                },
                {
                  "assignments": [
                    1609
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1609,
                      "name": "freeIndexSet",
                      "nodeType": "VariableDeclaration",
                      "scope": 1761,
                      "src": "6873:17:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1608,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6873:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1611,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 1610,
                    "name": "fullIndexSet",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1600,
                    "src": "6893:12:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6873:32:7"
                },
                {
                  "body": {
                    "id": 1678,
                    "nodeType": "Block",
                    "src": "6959:442:7",
                    "statements": [
                      {
                        "assignments": [
                          1624
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1624,
                            "name": "indexSet",
                            "nodeType": "VariableDeclaration",
                            "scope": 1678,
                            "src": "6973:13:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1623,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "6973:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1628,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1625,
                            "name": "partition",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1577,
                            "src": "6989:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 1627,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1626,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1613,
                            "src": "6999:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6989:12:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6973:28:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1636,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1632,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1630,
                                  "name": "indexSet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1624,
                                  "src": "7023:8:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1631,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7034:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7023:12:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1635,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1633,
                                  "name": "indexSet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1624,
                                  "src": "7039:8:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 1634,
                                  "name": "fullIndexSet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1600,
                                  "src": "7050:12:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7039:23:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "7023:39:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "676f7420696e76616c696420696e64657820736574",
                              "id": 1637,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7064:23:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6a6949259bc762cfed0fdf355e0e833a39c80f6df01cfb722c2d69f034e6a9c2",
                                "typeString": "literal_string \"got invalid index set\""
                              },
                              "value": "got invalid index set"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6a6949259bc762cfed0fdf355e0e833a39c80f6df01cfb722c2d69f034e6a9c2",
                                "typeString": "literal_string \"got invalid index set\""
                              }
                            ],
                            "id": 1629,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2798,
                              2799
                            ],
                            "referencedDeclaration": 2799,
                            "src": "7015:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1638,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7015:73:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1639,
                        "nodeType": "ExpressionStatement",
                        "src": "7015:73:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1646,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1643,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 1641,
                                      "name": "indexSet",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1624,
                                      "src": "7111:8:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 1642,
                                      "name": "freeIndexSet",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1609,
                                      "src": "7122:12:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "7111:23:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 1644,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "7110:25:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1645,
                                "name": "indexSet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1624,
                                "src": "7139:8:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7110:37:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "706172746974696f6e206e6f74206469736a6f696e74",
                              "id": 1647,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7149:24:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a336fd2d125b487729e17b65dd490bafa0eb0de3aa7aaeba65732e819267b75b",
                                "typeString": "literal_string \"partition not disjoint\""
                              },
                              "value": "partition not disjoint"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a336fd2d125b487729e17b65dd490bafa0eb0de3aa7aaeba65732e819267b75b",
                                "typeString": "literal_string \"partition not disjoint\""
                              }
                            ],
                            "id": 1640,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2798,
                              2799
                            ],
                            "referencedDeclaration": 2799,
                            "src": "7102:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1648,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7102:72:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1649,
                        "nodeType": "ExpressionStatement",
                        "src": "7102:72:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1652,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1650,
                            "name": "freeIndexSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1609,
                            "src": "7188:12:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "^=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1651,
                            "name": "indexSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1624,
                            "src": "7204:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7188:24:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1653,
                        "nodeType": "ExpressionStatement",
                        "src": "7188:24:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1666,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1654,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1597,
                            "src": "7226:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1658,
                                    "name": "collateralToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1570,
                                    "src": "7259:15:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$2761",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1660,
                                        "name": "parentCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1572,
                                        "src": "7292:18:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 1661,
                                        "name": "conditionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1574,
                                        "src": "7312:11:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 1662,
                                        "name": "indexSet",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1624,
                                        "src": "7325:8:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 1659,
                                      "name": "getCollectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2220,
                                      "src": "7276:15:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes32,bytes32,uint256) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 1663,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7276:58:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IERC20_$2761",
                                      "typeString": "contract IERC20"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1656,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2782,
                                    "src": "7242:3:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 1657,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7242:16:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 1664,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7242:93:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 1655,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2789,
                              "src": "7232:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 1665,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7232:104:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "7226:110:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 1667,
                        "nodeType": "ExpressionStatement",
                        "src": "7226:110:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1669,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2795,
                                "src": "7356:3:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1670,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7356:10:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1672,
                                  "name": "key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1597,
                                  "src": "7373:3:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 1671,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7368:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": "uint"
                              },
                              "id": 1673,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7368:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1674,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1579,
                              "src": "7379:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "",
                              "id": 1675,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7387:2:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 1668,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 481,
                            "src": "7350:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 1676,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7350:40:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1677,
                        "nodeType": "ExpressionStatement",
                        "src": "7350:40:7"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1619,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1616,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1613,
                      "src": "6932:1:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1617,
                        "name": "partition",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1577,
                        "src": "6936:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      "id": 1618,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6936:16:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6932:20:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1679,
                  "initializationExpression": {
                    "assignments": [
                      1613
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1613,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 1679,
                        "src": "6920:6:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1612,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "6920:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1615,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1614,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6929:1:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "6920:10:7"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1621,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "6954:3:7",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1620,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1613,
                        "src": "6954:1:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1622,
                    "nodeType": "ExpressionStatement",
                    "src": "6954:3:7"
                  },
                  "nodeType": "ForStatement",
                  "src": "6915:486:7"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1682,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1680,
                      "name": "freeIndexSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1609,
                      "src": "7415:12:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1681,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7431:1:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7415:17:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 1749,
                    "nodeType": "Block",
                    "src": "7809:204:7",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1738,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1724,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1597,
                            "src": "7823:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1728,
                                    "name": "collateralToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1570,
                                    "src": "7856:15:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$2761",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1730,
                                        "name": "parentCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1572,
                                        "src": "7889:18:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 1731,
                                        "name": "conditionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1574,
                                        "src": "7909:11:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 1734,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 1732,
                                          "name": "fullIndexSet",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1600,
                                          "src": "7922:12:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "^",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 1733,
                                          "name": "freeIndexSet",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1609,
                                          "src": "7937:12:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "7922:27:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 1729,
                                      "name": "getCollectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2220,
                                      "src": "7873:15:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes32,bytes32,uint256) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 1735,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7873:77:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IERC20_$2761",
                                      "typeString": "contract IERC20"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1726,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2782,
                                    "src": "7839:3:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 1727,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7839:16:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 1736,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7839:112:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 1725,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2789,
                              "src": "7829:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 1737,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7829:123:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "7823:129:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 1739,
                        "nodeType": "ExpressionStatement",
                        "src": "7823:129:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1741,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2795,
                                "src": "7972:3:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1742,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "7972:10:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1744,
                                  "name": "key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1597,
                                  "src": "7989:3:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 1743,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7984:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": "uint"
                              },
                              "id": 1745,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7984:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1746,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1579,
                              "src": "7995:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1740,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 517,
                            "src": "7966:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 1747,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7966:36:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1748,
                        "nodeType": "ExpressionStatement",
                        "src": "7966:36:7"
                      }
                    ]
                  },
                  "id": 1750,
                  "nodeType": "IfStatement",
                  "src": "7411:602:7",
                  "trueBody": {
                    "id": 1723,
                    "nodeType": "Block",
                    "src": "7434:369:7",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 1687,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1683,
                            "name": "parentCollectionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1572,
                            "src": "7452:18:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1685,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7482:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 1684,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7474:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": "bytes32"
                            },
                            "id": 1686,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7474:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "7452:32:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 1721,
                          "nodeType": "Block",
                          "src": "7636:157:7",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1710,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1702,
                                  "name": "key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1597,
                                  "src": "7654:3:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 1706,
                                          "name": "collateralToken",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1570,
                                          "src": "7687:15:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$2761",
                                            "typeString": "contract IERC20"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 1707,
                                          "name": "parentCollectionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1572,
                                          "src": "7704:18:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_IERC20_$2761",
                                            "typeString": "contract IERC20"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1704,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2782,
                                          "src": "7670:3:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 1705,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encodePacked",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "7670:16:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 1708,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7670:53:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 1703,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2789,
                                    "src": "7660:9:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 1709,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7660:64:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "7654:70:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 1711,
                              "nodeType": "ExpressionStatement",
                              "src": "7654:70:7"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1713,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2795,
                                      "src": "7748:3:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 1714,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "7748:10:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1716,
                                        "name": "key",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1597,
                                        "src": "7765:3:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 1715,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7760:4:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": "uint"
                                    },
                                    "id": 1717,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7760:9:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1718,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1579,
                                    "src": "7771:6:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1712,
                                  "name": "_burn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 517,
                                  "src": "7742:5:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256)"
                                  }
                                },
                                "id": 1719,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7742:36:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1720,
                              "nodeType": "ExpressionStatement",
                              "src": "7742:36:7"
                            }
                          ]
                        },
                        "id": 1722,
                        "nodeType": "IfStatement",
                        "src": "7448:345:7",
                        "trueBody": {
                          "id": 1701,
                          "nodeType": "Block",
                          "src": "7486:144:7",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1691,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2795,
                                          "src": "7541:3:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 1692,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "7541:10:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 1694,
                                            "name": "this",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2834,
                                            "src": "7561:4:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_PredictionMarketSystem_$2497",
                                              "typeString": "contract PredictionMarketSystem"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_PredictionMarketSystem_$2497",
                                              "typeString": "contract PredictionMarketSystem"
                                            }
                                          ],
                                          "id": 1693,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "7553:7:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": "address"
                                        },
                                        "id": 1695,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7553:13:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 1696,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1579,
                                        "src": "7568:6:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1689,
                                        "name": "collateralToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1570,
                                        "src": "7512:15:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20_$2761",
                                          "typeString": "contract IERC20"
                                        }
                                      },
                                      "id": 1690,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "transferFrom",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2744,
                                      "src": "7512:28:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                        "typeString": "function (address,address,uint256) external returns (bool)"
                                      }
                                    },
                                    "id": 1697,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7512:63:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "636f756c64206e6f74207265636569766520636f6c6c61746572616c20746f6b656e73",
                                    "id": 1698,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7577:37:7",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_78876cf43ab8535e33b68e15004e5c9de6676e3ca25f51ac6b556de3a2a1b5dc",
                                      "typeString": "literal_string \"could not receive collateral tokens\""
                                    },
                                    "value": "could not receive collateral tokens"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_78876cf43ab8535e33b68e15004e5c9de6676e3ca25f51ac6b556de3a2a1b5dc",
                                      "typeString": "literal_string \"could not receive collateral tokens\""
                                    }
                                  ],
                                  "id": 1688,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    2798,
                                    2799
                                  ],
                                  "referencedDeclaration": 2799,
                                  "src": "7504:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 1699,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7504:111:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1700,
                              "nodeType": "ExpressionStatement",
                              "src": "7504:111:7"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1752,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2795,
                          "src": "8042:3:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1753,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8042:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1754,
                        "name": "collateralToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1570,
                        "src": "8054:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$2761",
                          "typeString": "contract IERC20"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1755,
                        "name": "parentCollectionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1572,
                        "src": "8071:18:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1756,
                        "name": "conditionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1574,
                        "src": "8091:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1757,
                        "name": "partition",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1577,
                        "src": "8104:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1758,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1579,
                        "src": "8115:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_contract$_IERC20_$2761",
                          "typeString": "contract IERC20"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1751,
                      "name": "PositionSplit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1330,
                      "src": "8028:13:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_contract$_IERC20_$2761_$_t_bytes32_$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (address,contract IERC20,bytes32,bytes32,uint256[] memory,uint256)"
                      }
                    },
                    "id": 1759,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8028:94:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1760,
                  "nodeType": "EmitStatement",
                  "src": "8023:99:7"
                }
              ]
            },
            "documentation": "@dev This function splits a position. If splitting from the collateral, this contract will attempt to transfer `amount` collateral from the message sender to itself. Otherwise, this contract will burn `amount` stake held by the message sender in the position being split. Regardless, if successful, `amount` stake will be minted in the split target positions. If any of the transfers, mints, or burns fail, the transaction will revert. The transaction will also revert if the given partition is trivial, invalid, or refers to more slots than the condition is prepared with.\n @param collateralToken The address of the positions' backing collateral token.\n @param parentCollectionId The ID of the outcome collections common to the position being split and the split target positions. May be null, in which only the collateral is shared.\n @param conditionId The ID of the condition to split on.\n @param partition An array of disjoint index sets representing a nontrivial partition of the outcome slots of the given condition.\n @param amount The amount of collateral or stake to split.",
            "id": 1762,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "splitPosition",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1580,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1570,
                  "name": "collateralToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 1762,
                  "src": "6485:22:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$2761",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1569,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2761,
                    "src": "6485:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$2761",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1572,
                  "name": "parentCollectionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1762,
                  "src": "6517:26:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1571,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6517:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1574,
                  "name": "conditionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1762,
                  "src": "6553:19:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1573,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6553:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1577,
                  "name": "partition",
                  "nodeType": "VariableDeclaration",
                  "scope": 1762,
                  "src": "6582:25:7",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1575,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "6582:4:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1576,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "6582:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1579,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1762,
                  "src": "6617:11:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1578,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6617:4:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6475:159:7"
            },
            "returnParameters": {
              "id": 1581,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6644:0:7"
            },
            "scope": 2497,
            "src": "6453:1676:7",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 1953,
              "nodeType": "Block",
              "src": "8327:1468:7",
              "statements": [
                {
                  "assignments": [
                    1777
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1777,
                      "name": "outcomeSlotCount",
                      "nodeType": "VariableDeclaration",
                      "scope": 1953,
                      "src": "8337:21:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1776,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8337:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1782,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1778,
                        "name": "payoutNumerators",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1365,
                        "src": "8361:16:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$",
                          "typeString": "mapping(bytes32 => uint256[] storage ref)"
                        }
                      },
                      "id": 1780,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1779,
                        "name": "conditionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1768,
                        "src": "8378:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "8361:29:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                        "typeString": "uint256[] storage ref"
                      }
                    },
                    "id": 1781,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "8361:36:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8337:60:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1786,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1784,
                          "name": "outcomeSlotCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1777,
                          "src": "8415:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1785,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8434:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "8415:20:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "636f6e646974696f6e206e6f7420707265706172656420796574",
                        "id": 1787,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8437:28:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e04bbd75ab4a1437326ef11a696b620d013bedb4db855d7241cc1435c81cd55a",
                          "typeString": "literal_string \"condition not prepared yet\""
                        },
                        "value": "condition not prepared yet"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e04bbd75ab4a1437326ef11a696b620d013bedb4db855d7241cc1435c81cd55a",
                          "typeString": "literal_string \"condition not prepared yet\""
                        }
                      ],
                      "id": 1783,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2798,
                        2799
                      ],
                      "referencedDeclaration": 2799,
                      "src": "8407:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1788,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8407:59:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1789,
                  "nodeType": "ExpressionStatement",
                  "src": "8407:59:7"
                },
                {
                  "assignments": [
                    1791
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1791,
                      "name": "key",
                      "nodeType": "VariableDeclaration",
                      "scope": 1953,
                      "src": "8477:11:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1790,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "8477:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1792,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8477:11:7"
                },
                {
                  "assignments": [
                    1794
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1794,
                      "name": "fullIndexSet",
                      "nodeType": "VariableDeclaration",
                      "scope": 1953,
                      "src": "8499:17:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1793,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8499:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1801,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1800,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1797,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1795,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8520:1:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1796,
                            "name": "outcomeSlotCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1777,
                            "src": "8525:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8520:21:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 1798,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "8519:23:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 1799,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8545:1:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "8519:27:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8499:47:7"
                },
                {
                  "assignments": [
                    1803
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1803,
                      "name": "freeIndexSet",
                      "nodeType": "VariableDeclaration",
                      "scope": 1953,
                      "src": "8556:17:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1802,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8556:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1805,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 1804,
                    "name": "fullIndexSet",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1794,
                    "src": "8576:12:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8556:32:7"
                },
                {
                  "body": {
                    "id": 1871,
                    "nodeType": "Block",
                    "src": "8642:438:7",
                    "statements": [
                      {
                        "assignments": [
                          1818
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1818,
                            "name": "indexSet",
                            "nodeType": "VariableDeclaration",
                            "scope": 1871,
                            "src": "8656:13:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1817,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "8656:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 1822,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1819,
                            "name": "partition",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1771,
                            "src": "8672:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 1821,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1820,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1807,
                            "src": "8682:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8672:12:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8656:28:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 1830,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1826,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1824,
                                  "name": "indexSet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1818,
                                  "src": "8706:8:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1825,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8717:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "8706:12:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1829,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1827,
                                  "name": "indexSet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1818,
                                  "src": "8722:8:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 1828,
                                  "name": "fullIndexSet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1794,
                                  "src": "8733:12:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8722:23:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "8706:39:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "676f7420696e76616c696420696e64657820736574",
                              "id": 1831,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8747:23:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6a6949259bc762cfed0fdf355e0e833a39c80f6df01cfb722c2d69f034e6a9c2",
                                "typeString": "literal_string \"got invalid index set\""
                              },
                              "value": "got invalid index set"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6a6949259bc762cfed0fdf355e0e833a39c80f6df01cfb722c2d69f034e6a9c2",
                                "typeString": "literal_string \"got invalid index set\""
                              }
                            ],
                            "id": 1823,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2798,
                              2799
                            ],
                            "referencedDeclaration": 2799,
                            "src": "8698:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1832,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8698:73:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1833,
                        "nodeType": "ExpressionStatement",
                        "src": "8698:73:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1840,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1837,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 1835,
                                      "name": "indexSet",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1818,
                                      "src": "8794:8:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 1836,
                                      "name": "freeIndexSet",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1803,
                                      "src": "8805:12:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "8794:23:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 1838,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "8793:25:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 1839,
                                "name": "indexSet",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1818,
                                "src": "8822:8:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8793:37:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "706172746974696f6e206e6f74206469736a6f696e74",
                              "id": 1841,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8832:24:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a336fd2d125b487729e17b65dd490bafa0eb0de3aa7aaeba65732e819267b75b",
                                "typeString": "literal_string \"partition not disjoint\""
                              },
                              "value": "partition not disjoint"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a336fd2d125b487729e17b65dd490bafa0eb0de3aa7aaeba65732e819267b75b",
                                "typeString": "literal_string \"partition not disjoint\""
                              }
                            ],
                            "id": 1834,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2798,
                              2799
                            ],
                            "referencedDeclaration": 2799,
                            "src": "8785:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8785:72:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1843,
                        "nodeType": "ExpressionStatement",
                        "src": "8785:72:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1846,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1844,
                            "name": "freeIndexSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1803,
                            "src": "8871:12:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "^=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1845,
                            "name": "indexSet",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1818,
                            "src": "8887:8:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8871:24:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1847,
                        "nodeType": "ExpressionStatement",
                        "src": "8871:24:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1860,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1848,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1791,
                            "src": "8909:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1852,
                                    "name": "collateralToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1764,
                                    "src": "8942:15:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$2761",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1854,
                                        "name": "parentCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1766,
                                        "src": "8975:18:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 1855,
                                        "name": "conditionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1768,
                                        "src": "8995:11:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 1856,
                                        "name": "indexSet",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1818,
                                        "src": "9008:8:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 1853,
                                      "name": "getCollectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2220,
                                      "src": "8959:15:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes32,bytes32,uint256) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 1857,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8959:58:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IERC20_$2761",
                                      "typeString": "contract IERC20"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1850,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2782,
                                    "src": "8925:3:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 1851,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "8925:16:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 1858,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8925:93:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 1849,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2789,
                              "src": "8915:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 1859,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8915:104:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "8909:110:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 1861,
                        "nodeType": "ExpressionStatement",
                        "src": "8909:110:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1863,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2795,
                                "src": "9039:3:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1864,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9039:10:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1866,
                                  "name": "key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1791,
                                  "src": "9056:3:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 1865,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9051:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": "uint"
                              },
                              "id": 1867,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9051:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1868,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1773,
                              "src": "9062:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1862,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 517,
                            "src": "9033:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 1869,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9033:36:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1870,
                        "nodeType": "ExpressionStatement",
                        "src": "9033:36:7"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1813,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1810,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1807,
                      "src": "8615:1:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 1811,
                        "name": "partition",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1771,
                        "src": "8619:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      "id": 1812,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "8619:16:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8615:20:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1872,
                  "initializationExpression": {
                    "assignments": [
                      1807
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 1807,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 1872,
                        "src": "8603:6:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1806,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "8603:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 1809,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1808,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8612:1:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "8603:10:7"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 1815,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "8637:3:7",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 1814,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1807,
                        "src": "8637:1:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1816,
                    "nodeType": "ExpressionStatement",
                    "src": "8637:3:7"
                  },
                  "nodeType": "ForStatement",
                  "src": "8598:482:7"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1875,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 1873,
                      "name": "freeIndexSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1803,
                      "src": "9094:12:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 1874,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9110:1:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "9094:17:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 1941,
                    "nodeType": "Block",
                    "src": "9470:208:7",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1929,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1915,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1791,
                            "src": "9484:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1919,
                                    "name": "collateralToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1764,
                                    "src": "9517:15:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$2761",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1921,
                                        "name": "parentCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1766,
                                        "src": "9550:18:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 1922,
                                        "name": "conditionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1768,
                                        "src": "9570:11:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 1925,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 1923,
                                          "name": "fullIndexSet",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1794,
                                          "src": "9583:12:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "^",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 1924,
                                          "name": "freeIndexSet",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1803,
                                          "src": "9598:12:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "9583:27:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 1920,
                                      "name": "getCollectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2220,
                                      "src": "9534:15:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes32,bytes32,uint256) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 1926,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9534:77:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IERC20_$2761",
                                      "typeString": "contract IERC20"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1917,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2782,
                                    "src": "9500:3:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 1918,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "9500:16:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 1927,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9500:112:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 1916,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2789,
                              "src": "9490:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 1928,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9490:123:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "9484:129:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 1930,
                        "nodeType": "ExpressionStatement",
                        "src": "9484:129:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1932,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2795,
                                "src": "9633:3:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1933,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "9633:10:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1935,
                                  "name": "key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1791,
                                  "src": "9650:3:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 1934,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9645:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": "uint"
                              },
                              "id": 1936,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9645:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1937,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1773,
                              "src": "9656:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "",
                              "id": 1938,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9664:2:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 1931,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 481,
                            "src": "9627:5:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 1939,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9627:40:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1940,
                        "nodeType": "ExpressionStatement",
                        "src": "9627:40:7"
                      }
                    ]
                  },
                  "id": 1942,
                  "nodeType": "IfStatement",
                  "src": "9090:588:7",
                  "trueBody": {
                    "id": 1914,
                    "nodeType": "Block",
                    "src": "9113:351:7",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 1880,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1876,
                            "name": "parentCollectionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1766,
                            "src": "9131:18:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1878,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9161:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 1877,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9153:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": "bytes32"
                            },
                            "id": 1879,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9153:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "9131:32:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 1912,
                          "nodeType": "Block",
                          "src": "9293:161:7",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1900,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1892,
                                  "name": "key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1791,
                                  "src": "9311:3:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 1896,
                                          "name": "collateralToken",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1764,
                                          "src": "9344:15:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$2761",
                                            "typeString": "contract IERC20"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 1897,
                                          "name": "parentCollectionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1766,
                                          "src": "9361:18:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_IERC20_$2761",
                                            "typeString": "contract IERC20"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1894,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2782,
                                          "src": "9327:3:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 1895,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encodePacked",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "9327:16:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 1898,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9327:53:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 1893,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2789,
                                    "src": "9317:9:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 1899,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9317:64:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "9311:70:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 1901,
                              "nodeType": "ExpressionStatement",
                              "src": "9311:70:7"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1903,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2795,
                                      "src": "9405:3:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 1904,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "9405:10:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1906,
                                        "name": "key",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1791,
                                        "src": "9422:3:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 1905,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9417:4:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": "uint"
                                    },
                                    "id": 1907,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9417:9:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 1908,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1773,
                                    "src": "9428:6:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "",
                                    "id": 1909,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9436:2:7",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    },
                                    "value": ""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    }
                                  ],
                                  "id": 1902,
                                  "name": "_mint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 481,
                                  "src": "9399:5:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,uint256,uint256,bytes memory)"
                                  }
                                },
                                "id": 1910,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9399:40:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1911,
                              "nodeType": "ExpressionStatement",
                              "src": "9399:40:7"
                            }
                          ]
                        },
                        "id": 1913,
                        "nodeType": "IfStatement",
                        "src": "9127:327:7",
                        "trueBody": {
                          "id": 1891,
                          "nodeType": "Block",
                          "src": "9165:122:7",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1884,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2795,
                                          "src": "9216:3:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 1885,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "9216:10:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 1886,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1773,
                                        "src": "9228:6:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1882,
                                        "name": "collateralToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1764,
                                        "src": "9191:15:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20_$2761",
                                          "typeString": "contract IERC20"
                                        }
                                      },
                                      "id": 1883,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "transfer",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2715,
                                      "src": "9191:24:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                        "typeString": "function (address,uint256) external returns (bool)"
                                      }
                                    },
                                    "id": 1887,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9191:44:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "636f756c64206e6f742073656e6420636f6c6c61746572616c20746f6b656e73",
                                    "id": 1888,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9237:34:7",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_dcd28c60b7fa293f6dafe313fdc41bf17dfba1d84f95b6ea253655688f13ff97",
                                      "typeString": "literal_string \"could not send collateral tokens\""
                                    },
                                    "value": "could not send collateral tokens"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_dcd28c60b7fa293f6dafe313fdc41bf17dfba1d84f95b6ea253655688f13ff97",
                                      "typeString": "literal_string \"could not send collateral tokens\""
                                    }
                                  ],
                                  "id": 1881,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    2798,
                                    2799
                                  ],
                                  "referencedDeclaration": 2799,
                                  "src": "9183:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 1889,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9183:89:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1890,
                              "nodeType": "ExpressionStatement",
                              "src": "9183:89:7"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 1944,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2795,
                          "src": "9708:3:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 1945,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "9708:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1946,
                        "name": "collateralToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1764,
                        "src": "9720:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$2761",
                          "typeString": "contract IERC20"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1947,
                        "name": "parentCollectionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1766,
                        "src": "9737:18:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1948,
                        "name": "conditionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1768,
                        "src": "9757:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1949,
                        "name": "partition",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1771,
                        "src": "9770:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1950,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1773,
                        "src": "9781:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_contract$_IERC20_$2761",
                          "typeString": "contract IERC20"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 1943,
                      "name": "PositionsMerge",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1345,
                      "src": "9693:14:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_contract$_IERC20_$2761_$_t_bytes32_$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (address,contract IERC20,bytes32,bytes32,uint256[] memory,uint256)"
                      }
                    },
                    "id": 1951,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9693:95:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1952,
                  "nodeType": "EmitStatement",
                  "src": "9688:100:7"
                }
              ]
            },
            "documentation": null,
            "id": 1954,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "mergePositions",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1774,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1764,
                  "name": "collateralToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 1954,
                  "src": "8168:22:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$2761",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1763,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2761,
                    "src": "8168:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$2761",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1766,
                  "name": "parentCollectionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1954,
                  "src": "8200:26:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1765,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8200:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1768,
                  "name": "conditionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 1954,
                  "src": "8236:19:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1767,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8236:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1771,
                  "name": "partition",
                  "nodeType": "VariableDeclaration",
                  "scope": 1954,
                  "src": "8265:25:7",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1769,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "8265:4:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1770,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "8265:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1773,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 1954,
                  "src": "8300:11:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1772,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8300:4:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8158:159:7"
            },
            "returnParameters": {
              "id": 1775,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8327:0:7"
            },
            "scope": 2497,
            "src": "8135:1660:7",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2178,
              "nodeType": "Block",
              "src": "9935:1748:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1971,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 1967,
                            "name": "payoutDenominator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1369,
                            "src": "9953:17:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                              "typeString": "mapping(bytes32 => uint256)"
                            }
                          },
                          "id": 1969,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1968,
                            "name": "conditionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1960,
                            "src": "9971:11:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9953:30:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1970,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9986:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "9953:34:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "726573756c7420666f7220636f6e646974696f6e206e6f7420726563656976656420796574",
                        "id": 1972,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9989:39:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_09c18322476c8839a929e9b1b47022e0ac639da367088768fc0757a67e966311",
                          "typeString": "literal_string \"result for condition not received yet\""
                        },
                        "value": "result for condition not received yet"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_09c18322476c8839a929e9b1b47022e0ac639da367088768fc0757a67e966311",
                          "typeString": "literal_string \"result for condition not received yet\""
                        }
                      ],
                      "id": 1966,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2798,
                        2799
                      ],
                      "referencedDeclaration": 2799,
                      "src": "9945:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1973,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9945:84:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1974,
                  "nodeType": "ExpressionStatement",
                  "src": "9945:84:7"
                },
                {
                  "assignments": [
                    1976
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1976,
                      "name": "outcomeSlotCount",
                      "nodeType": "VariableDeclaration",
                      "scope": 2178,
                      "src": "10039:21:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1975,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10039:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1981,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1977,
                        "name": "payoutNumerators",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1365,
                        "src": "10063:16:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$",
                          "typeString": "mapping(bytes32 => uint256[] storage ref)"
                        }
                      },
                      "id": 1979,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 1978,
                        "name": "conditionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1960,
                        "src": "10080:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "10063:29:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                        "typeString": "uint256[] storage ref"
                      }
                    },
                    "id": 1980,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "10063:36:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10039:60:7"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1985,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1983,
                          "name": "outcomeSlotCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1976,
                          "src": "10117:16:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10136:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "10117:20:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "636f6e646974696f6e206e6f7420707265706172656420796574",
                        "id": 1986,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10139:28:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e04bbd75ab4a1437326ef11a696b620d013bedb4db855d7241cc1435c81cd55a",
                          "typeString": "literal_string \"condition not prepared yet\""
                        },
                        "value": "condition not prepared yet"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e04bbd75ab4a1437326ef11a696b620d013bedb4db855d7241cc1435c81cd55a",
                          "typeString": "literal_string \"condition not prepared yet\""
                        }
                      ],
                      "id": 1982,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        2798,
                        2799
                      ],
                      "referencedDeclaration": 2799,
                      "src": "10109:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1987,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10109:59:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1988,
                  "nodeType": "ExpressionStatement",
                  "src": "10109:59:7"
                },
                {
                  "assignments": [
                    1990
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1990,
                      "name": "totalPayout",
                      "nodeType": "VariableDeclaration",
                      "scope": 2178,
                      "src": "10179:16:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1989,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10179:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1992,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 1991,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "10198:1:7",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10179:20:7"
                },
                {
                  "assignments": [
                    1994
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1994,
                      "name": "key",
                      "nodeType": "VariableDeclaration",
                      "scope": 2178,
                      "src": "10209:11:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1993,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "10209:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1995,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10209:11:7"
                },
                {
                  "assignments": [
                    1997
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1997,
                      "name": "fullIndexSet",
                      "nodeType": "VariableDeclaration",
                      "scope": 2178,
                      "src": "10231:17:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1996,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10231:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2004,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2003,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2000,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 1998,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10252:1:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1999,
                            "name": "outcomeSlotCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1976,
                            "src": "10257:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10252:21:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 2001,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "10251:23:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 2002,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10277:1:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "10251:27:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10231:47:7"
                },
                {
                  "body": {
                    "id": 2123,
                    "nodeType": "Block",
                    "src": "10332:825:7",
                    "statements": [
                      {
                        "assignments": [
                          2017
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2017,
                            "name": "indexSet",
                            "nodeType": "VariableDeclaration",
                            "scope": 2123,
                            "src": "10346:13:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2016,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "10346:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2021,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2018,
                            "name": "indexSets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1963,
                            "src": "10362:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 2020,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2019,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2006,
                            "src": "10372:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10362:12:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10346:28:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2029,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2025,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2023,
                                  "name": "indexSet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2017,
                                  "src": "10396:8:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2024,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10407:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "10396:12:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2028,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2026,
                                  "name": "indexSet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2017,
                                  "src": "10412:8:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2027,
                                  "name": "fullIndexSet",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1997,
                                  "src": "10423:12:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10412:23:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "10396:39:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "676f7420696e76616c696420696e64657820736574",
                              "id": 2030,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10437:23:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6a6949259bc762cfed0fdf355e0e833a39c80f6df01cfb722c2d69f034e6a9c2",
                                "typeString": "literal_string \"got invalid index set\""
                              },
                              "value": "got invalid index set"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6a6949259bc762cfed0fdf355e0e833a39c80f6df01cfb722c2d69f034e6a9c2",
                                "typeString": "literal_string \"got invalid index set\""
                              }
                            ],
                            "id": 2022,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2798,
                              2799
                            ],
                            "referencedDeclaration": 2799,
                            "src": "10388:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10388:73:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2032,
                        "nodeType": "ExpressionStatement",
                        "src": "10388:73:7"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 2045,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 2033,
                            "name": "key",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1994,
                            "src": "10475:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2037,
                                    "name": "collateralToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1956,
                                    "src": "10508:15:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$2761",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2039,
                                        "name": "parentCollectionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1958,
                                        "src": "10541:18:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 2040,
                                        "name": "conditionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1960,
                                        "src": "10561:11:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 2041,
                                        "name": "indexSet",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2017,
                                        "src": "10574:8:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 2038,
                                      "name": "getCollectionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2220,
                                      "src": "10525:15:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes32,bytes32,uint256) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 2042,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10525:58:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IERC20_$2761",
                                      "typeString": "contract IERC20"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2035,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2782,
                                    "src": "10491:3:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 2036,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "10491:16:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 2043,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10491:93:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 2034,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2789,
                              "src": "10481:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 2044,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10481:104:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "10475:110:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 2046,
                        "nodeType": "ExpressionStatement",
                        "src": "10475:110:7"
                      },
                      {
                        "assignments": [
                          2048
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2048,
                            "name": "payoutNumerator",
                            "nodeType": "VariableDeclaration",
                            "scope": 2123,
                            "src": "10600:20:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2047,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "10600:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2050,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2049,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10623:1:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10600:24:7"
                      },
                      {
                        "body": {
                          "id": 2082,
                          "nodeType": "Block",
                          "src": "10682:174:7",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2068,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2066,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 2061,
                                    "name": "indexSet",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2017,
                                    "src": "10704:8:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "components": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 2064,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 2062,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "10716:1:7",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<<",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 2063,
                                          "name": "j",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2052,
                                          "src": "10721:1:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "10716:6:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 2065,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "10715:8:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "10704:19:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2067,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10727:1:7",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "10704:24:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 2081,
                              "nodeType": "IfStatement",
                              "src": "10700:142:7",
                              "trueBody": {
                                "id": 2080,
                                "nodeType": "Block",
                                "src": "10730:112:7",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2078,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 2069,
                                        "name": "payoutNumerator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2048,
                                        "src": "10752:15:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "baseExpression": {
                                              "argumentTypes": null,
                                              "baseExpression": {
                                                "argumentTypes": null,
                                                "id": 2072,
                                                "name": "payoutNumerators",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1365,
                                                "src": "10790:16:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$",
                                                  "typeString": "mapping(bytes32 => uint256[] storage ref)"
                                                }
                                              },
                                              "id": 2074,
                                              "indexExpression": {
                                                "argumentTypes": null,
                                                "id": 2073,
                                                "name": "conditionId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1960,
                                                "src": "10807:11:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "10790:29:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                                                "typeString": "uint256[] storage ref"
                                              }
                                            },
                                            "id": 2076,
                                            "indexExpression": {
                                              "argumentTypes": null,
                                              "id": 2075,
                                              "name": "j",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2052,
                                              "src": "10820:1:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "10790:32:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2070,
                                            "name": "payoutNumerator",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2048,
                                            "src": "10770:15:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 2071,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2586,
                                          "src": "10770:19:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 2077,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10770:53:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "10752:71:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2079,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10752:71:7"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2057,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2055,
                            "name": "j",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2052,
                            "src": "10655:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2056,
                            "name": "outcomeSlotCount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1976,
                            "src": "10659:16:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10655:20:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2083,
                        "initializationExpression": {
                          "assignments": [
                            2052
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2052,
                              "name": "j",
                              "nodeType": "VariableDeclaration",
                              "scope": 2083,
                              "src": "10643:6:7",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2051,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "10643:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 2054,
                          "initialValue": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2053,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10652:1:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "10643:10:7"
                        },
                        "loopExpression": {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2059,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "10677:3:7",
                            "subExpression": {
                              "argumentTypes": null,
                              "id": 2058,
                              "name": "j",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2052,
                              "src": "10677:1:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2060,
                          "nodeType": "ExpressionStatement",
                          "src": "10677:3:7"
                        },
                        "nodeType": "ForStatement",
                        "src": "10638:218:7"
                      },
                      {
                        "assignments": [
                          2085
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2085,
                            "name": "payoutStake",
                            "nodeType": "VariableDeclaration",
                            "scope": 2123,
                            "src": "10870:16:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2084,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "10870:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2093,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2087,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2795,
                                "src": "10899:3:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2088,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10899:10:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2090,
                                  "name": "key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1994,
                                  "src": "10916:3:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 2089,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10911:4:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": "uint"
                              },
                              "id": 2091,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10911:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2086,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              95
                            ],
                            "referencedDeclaration": 95,
                            "src": "10889:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (address,uint256) view returns (uint256)"
                            }
                          },
                          "id": 2092,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10889:32:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10870:51:7"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2096,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2094,
                            "name": "payoutStake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2085,
                            "src": "10939:11:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2095,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10953:1:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "10939:15:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 2122,
                        "nodeType": "IfStatement",
                        "src": "10935:212:7",
                        "trueBody": {
                          "id": 2121,
                          "nodeType": "Block",
                          "src": "10956:191:7",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2110,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2097,
                                  "name": "totalPayout",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1990,
                                  "src": "10974:11:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 2105,
                                            "name": "payoutDenominator",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1369,
                                            "src": "11041:17:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                              "typeString": "mapping(bytes32 => uint256)"
                                            }
                                          },
                                          "id": 2107,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 2106,
                                            "name": "conditionId",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1960,
                                            "src": "11059:11:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "11041:30:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 2102,
                                              "name": "payoutNumerator",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2048,
                                              "src": "11020:15:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 2100,
                                              "name": "payoutStake",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2085,
                                              "src": "11004:11:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 2101,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mul",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2645,
                                            "src": "11004:15:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 2103,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "11004:32:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 2104,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "div",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2670,
                                        "src": "11004:36:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 2108,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "11004:68:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2098,
                                      "name": "totalPayout",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1990,
                                      "src": "10988:11:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2099,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2586,
                                    "src": "10988:15:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2109,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10988:85:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10974:99:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2111,
                              "nodeType": "ExpressionStatement",
                              "src": "10974:99:7"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2113,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2795,
                                      "src": "11097:3:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 2114,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "11097:10:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2116,
                                        "name": "key",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1994,
                                        "src": "11114:3:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 2115,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "11109:4:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": "uint"
                                    },
                                    "id": 2117,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11109:9:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2118,
                                    "name": "payoutStake",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2085,
                                    "src": "11120:11:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2112,
                                  "name": "_burn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 517,
                                  "src": "11091:5:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256,uint256)"
                                  }
                                },
                                "id": 2119,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11091:41:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2120,
                              "nodeType": "ExpressionStatement",
                              "src": "11091:41:7"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2012,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2009,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2006,
                      "src": "10305:1:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 2010,
                        "name": "indexSets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1963,
                        "src": "10309:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      "id": 2011,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "10309:16:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10305:20:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2124,
                  "initializationExpression": {
                    "assignments": [
                      2006
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2006,
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2124,
                        "src": "10293:6:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2005,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "10293:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 2008,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2007,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10302:1:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "10293:10:7"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 2014,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "10327:3:7",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 2013,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2006,
                        "src": "10327:1:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2015,
                    "nodeType": "ExpressionStatement",
                    "src": "10327:3:7"
                  },
                  "nodeType": "ForStatement",
                  "src": "10288:869:7"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2127,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 2125,
                      "name": "totalPayout",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1990,
                      "src": "11171:11:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 2126,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11185:1:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "11171:15:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2167,
                  "nodeType": "IfStatement",
                  "src": "11167:393:7",
                  "trueBody": {
                    "id": 2166,
                    "nodeType": "Block",
                    "src": "11188:372:7",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 2132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2128,
                            "name": "parentCollectionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1958,
                            "src": "11206:18:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2130,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11236:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 2129,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "11228:7:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": "bytes32"
                            },
                            "id": 2131,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11228:10:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "11206:32:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2164,
                          "nodeType": "Block",
                          "src": "11384:166:7",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 2152,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 2144,
                                  "name": "key",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1994,
                                  "src": "11402:3:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2148,
                                          "name": "collateralToken",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1956,
                                          "src": "11435:15:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$2761",
                                            "typeString": "contract IERC20"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2149,
                                          "name": "parentCollectionId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1958,
                                          "src": "11452:18:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_IERC20_$2761",
                                            "typeString": "contract IERC20"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2146,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2782,
                                          "src": "11418:3:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 2147,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encodePacked",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "11418:16:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 2150,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "11418:53:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 2145,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2789,
                                    "src": "11408:9:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 2151,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11408:64:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "11402:70:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 2153,
                              "nodeType": "ExpressionStatement",
                              "src": "11402:70:7"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2155,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2795,
                                      "src": "11496:3:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 2156,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "11496:10:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2158,
                                        "name": "key",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1994,
                                        "src": "11513:3:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 2157,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "11508:4:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": "uint"
                                    },
                                    "id": 2159,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11508:9:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2160,
                                    "name": "totalPayout",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1990,
                                    "src": "11519:11:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "",
                                    "id": 2161,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11532:2:7",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    },
                                    "value": ""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    }
                                  ],
                                  "id": 2154,
                                  "name": "_mint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 481,
                                  "src": "11490:5:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,uint256,uint256,bytes memory)"
                                  }
                                },
                                "id": 2162,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11490:45:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2163,
                              "nodeType": "ExpressionStatement",
                              "src": "11490:45:7"
                            }
                          ]
                        },
                        "id": 2165,
                        "nodeType": "IfStatement",
                        "src": "11202:348:7",
                        "trueBody": {
                          "id": 2143,
                          "nodeType": "Block",
                          "src": "11240:138:7",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2136,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2795,
                                          "src": "11291:3:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 2137,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "11291:10:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 2138,
                                        "name": "totalPayout",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1990,
                                        "src": "11303:11:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2134,
                                        "name": "collateralToken",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1956,
                                        "src": "11266:15:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20_$2761",
                                          "typeString": "contract IERC20"
                                        }
                                      },
                                      "id": 2135,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "transfer",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2715,
                                      "src": "11266:24:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                        "typeString": "function (address,uint256) external returns (bool)"
                                      }
                                    },
                                    "id": 2139,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11266:49:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "636f756c64206e6f74207472616e73666572207061796f757420746f206d6573736167652073656e646572",
                                    "id": 2140,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11317:45:7",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_210eeaafba043db52b30d6e4d8afdedff22365482b862fdf81bd2fbee3646893",
                                      "typeString": "literal_string \"could not transfer payout to message sender\""
                                    },
                                    "value": "could not transfer payout to message sender"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_210eeaafba043db52b30d6e4d8afdedff22365482b862fdf81bd2fbee3646893",
                                      "typeString": "literal_string \"could not transfer payout to message sender\""
                                    }
                                  ],
                                  "id": 2133,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    2798,
                                    2799
                                  ],
                                  "referencedDeclaration": 2799,
                                  "src": "11258:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 2141,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11258:105:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2142,
                              "nodeType": "ExpressionStatement",
                              "src": "11258:105:7"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 2169,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2795,
                          "src": "11591:3:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 2170,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "11591:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2171,
                        "name": "collateralToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1956,
                        "src": "11603:15:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$2761",
                          "typeString": "contract IERC20"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2172,
                        "name": "parentCollectionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1958,
                        "src": "11620:18:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2173,
                        "name": "conditionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1960,
                        "src": "11640:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2174,
                        "name": "indexSets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1963,
                        "src": "11653:9:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 2175,
                        "name": "totalPayout",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1990,
                        "src": "11664:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_contract$_IERC20_$2761",
                          "typeString": "contract IERC20"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[] calldata"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2168,
                      "name": "PayoutRedemption",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1360,
                      "src": "11574:16:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_contract$_IERC20_$2761_$_t_bytes32_$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (address,contract IERC20,bytes32,bytes32,uint256[] memory,uint256)"
                      }
                    },
                    "id": 2176,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11574:102:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2177,
                  "nodeType": "EmitStatement",
                  "src": "11569:107:7"
                }
              ]
            },
            "documentation": null,
            "id": 2179,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "redeemPositions",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1964,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1956,
                  "name": "collateralToken",
                  "nodeType": "VariableDeclaration",
                  "scope": 2179,
                  "src": "9826:22:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$2761",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1955,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2761,
                    "src": "9826:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$2761",
                      "typeString": "contract IERC20"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1958,
                  "name": "parentCollectionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2179,
                  "src": "9850:26:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1957,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9850:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1960,
                  "name": "conditionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2179,
                  "src": "9878:19:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1959,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9878:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1963,
                  "name": "indexSets",
                  "nodeType": "VariableDeclaration",
                  "scope": 2179,
                  "src": "9899:25:7",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1961,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "9899:4:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1962,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "9899:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9825:100:7"
            },
            "returnParameters": {
              "id": 1965,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9935:0:7"
            },
            "scope": 2497,
            "src": "9801:1882:7",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2191,
              "nodeType": "Block",
              "src": "11990:60:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 2186,
                        "name": "payoutNumerators",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1365,
                        "src": "12007:16:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_array$_t_uint256_$dyn_storage_$",
                          "typeString": "mapping(bytes32 => uint256[] storage ref)"
                        }
                      },
                      "id": 2188,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 2187,
                        "name": "conditionId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2181,
                        "src": "12024:11:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "12007:29:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage",
                        "typeString": "uint256[] storage ref"
                      }
                    },
                    "id": 2189,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "12007:36:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2185,
                  "id": 2190,
                  "nodeType": "Return",
                  "src": "12000:43:7"
                }
              ]
            },
            "documentation": "@dev Gets the outcome slot count of a condition.\n @param conditionId ID of the condition.\n @return Number of outcome slots associated with a condition, or zero if condition has not been prepared yet.",
            "id": 2192,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getOutcomeSlotCount",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2182,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2181,
                  "name": "conditionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2192,
                  "src": "11940:19:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2180,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11940:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11939:21:7"
            },
            "returnParameters": {
              "id": 2185,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2184,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2192,
                  "src": "11984:4:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2183,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11984:4:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11983:6:7"
            },
            "scope": 2497,
            "src": "11911:139:7",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2219,
              "nodeType": "Block",
              "src": "12176:150:7",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2216,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2205,
                              "name": "parentCollectionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2194,
                              "src": "12219:18:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 2204,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "12214:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint"
                          },
                          "id": 2206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12214:24:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2211,
                                      "name": "conditionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2196,
                                      "src": "12285:11:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 2212,
                                      "name": "indexSet",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2198,
                                      "src": "12298:8:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2209,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2782,
                                      "src": "12268:3:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 2210,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "12268:16:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 2213,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12268:39:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 2208,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2789,
                                "src": "12258:9:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 2214,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12258:50:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 2207,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "12253:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint"
                          },
                          "id": 2215,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12253:56:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "12214:95:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2203,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "12193:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes32_$",
                        "typeString": "type(bytes32)"
                      },
                      "typeName": "bytes32"
                    },
                    "id": 2217,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12193:126:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 2202,
                  "id": 2218,
                  "nodeType": "Return",
                  "src": "12186:133:7"
                }
              ]
            },
            "documentation": null,
            "id": 2220,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getCollectionId",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2199,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2194,
                  "name": "parentCollectionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2220,
                  "src": "12081:26:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2193,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12081:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2196,
                  "name": "conditionId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2220,
                  "src": "12109:19:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2195,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12109:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2198,
                  "name": "indexSet",
                  "nodeType": "VariableDeclaration",
                  "scope": 2220,
                  "src": "12130:13:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2197,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "12130:4:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12080:64:7"
            },
            "returnParameters": {
              "id": 2202,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2201,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2220,
                  "src": "12167:7:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 2200,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "12167:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12166:9:7"
            },
            "scope": 2497,
            "src": "12056:270:7",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2237,
            "name": "CHECK_IS_RECEIVER_REQUIRED_GAS",
            "nodeType": "VariableDeclaration",
            "scope": 2497,
            "src": "12603:274:7",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2221,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "12603:4:7",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "commonType": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "id": 2236,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "lValueRequested": false,
              "leftExpression": {
                "argumentTypes": null,
                "commonType": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "id": 2234,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "leftExpression": {
                  "argumentTypes": null,
                  "commonType": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "id": 2232,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "leftExpression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2230,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 2228,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2226,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "3130303030",
                              "id": 2223,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12663:5:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10000_by_1",
                                "typeString": "int_const 10000"
                              },
                              "value": "10000"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_10000_by_1",
                                "typeString": "int_const 10000"
                              }
                            ],
                            "id": 2222,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "12658:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": "uint"
                          },
                          "id": 2224,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12658:11:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3634",
                          "id": 2225,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12672:2:7",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_64_by_1",
                            "typeString": "int_const 64"
                          },
                          "value": "64"
                        },
                        "src": "12658:16:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "/",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "3633",
                        "id": 2227,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12677:2:7",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_63_by_1",
                          "typeString": "int_const 63"
                        },
                        "value": "63"
                      },
                      "src": "12658:21:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 2229,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12682:1:7",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "12658:25:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "BinaryOperation",
                  "operator": "+",
                  "rightExpression": {
                    "argumentTypes": null,
                    "hexValue": "373030",
                    "id": 2231,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "12746:3:7",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_700_by_1",
                      "typeString": "int_const 700"
                    },
                    "value": "700"
                  },
                  "src": "12658:91:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "BinaryOperation",
                "operator": "+",
                "rightExpression": {
                  "argumentTypes": null,
                  "hexValue": "353634",
                  "id": 2233,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "12795:3:7",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_564_by_1",
                    "typeString": "int_const 564"
                  },
                  "value": "564"
                },
                "src": "12658:140:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "BinaryOperation",
              "operator": "+",
              "rightExpression": {
                "argumentTypes": null,
                "hexValue": "313030",
                "id": 2235,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "12874:3:7",
                "subdenomination": null,
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_100_by_1",
                  "typeString": "int_const 100"
                },
                "value": "100"
              },
              "src": "12658:219:7",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": true,
            "id": 2254,
            "name": "CHECK_IS_RECEIVER_CALLDATA",
            "nodeType": "VariableDeclaration",
            "scope": 2497,
            "src": "12954:294:7",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes_memory",
              "typeString": "bytes"
            },
            "typeName": {
              "id": 2238,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "12954:5:7",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "737570706f727473496e746572666163652862797465733429",
                  "id": 2241,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "13031:27:7",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2",
                    "typeString": "literal_string \"supportsInterface(bytes4)\""
                  },
                  "value": "supportsInterface(bytes4)"
                },
                {
                  "argumentTypes": null,
                  "commonType": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "id": 2252,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "leftExpression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "6f6e45524331313535526563656976656428616464726573732c616464726573732c75696e743235362c75696e743235362c627974657329",
                            "id": 2244,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13085:58:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f23a6e612e1ff4830e658fe43f4e3cb4a5f8170bd5d9e69fb5d7a7fa9e4fdf97",
                              "typeString": "literal_string \"onERC1155Received(address,address,uint256,uint256,bytes)\""
                            },
                            "value": "onERC1155Received(address,address,uint256,uint256,bytes)"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f23a6e612e1ff4830e658fe43f4e3cb4a5f8170bd5d9e69fb5d7a7fa9e4fdf97",
                              "typeString": "literal_string \"onERC1155Received(address,address,uint256,uint256,bytes)\""
                            }
                          ],
                          "id": 2243,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2789,
                          "src": "13075:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 2245,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13075:69:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2242,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "13068:6:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes4_$",
                        "typeString": "type(bytes4)"
                      },
                      "typeName": "bytes4"
                    },
                    "id": 2246,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13068:77:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "nodeType": "BinaryOperation",
                  "operator": "^",
                  "rightExpression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "6f6e455243313135354261746368526563656976656428616464726573732c616464726573732c75696e743235365b5d2c75696e743235365b5d2c627974657329",
                            "id": 2249,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13173:67:7",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_bc197c819b3e337a6f9652dd10becd7eef83032af3b9d958d3d42f6694146621",
                              "typeString": "literal_string \"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\""
                            },
                            "value": "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_bc197c819b3e337a6f9652dd10becd7eef83032af3b9d958d3d42f6694146621",
                              "typeString": "literal_string \"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\""
                            }
                          ],
                          "id": 2248,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2789,
                          "src": "13163:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 2250,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13163:78:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 2247,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "13156:6:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes4_$",
                        "typeString": "type(bytes4)"
                      },
                      "typeName": "bytes4"
                    },
                    "id": 2251,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13156:86:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "src": "13068:174:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  }
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2",
                    "typeString": "literal_string \"supportsInterface(bytes4)\""
                  },
                  {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  }
                ],
                "expression": {
                  "argumentTypes": null,
                  "id": 2239,
                  "name": "abi",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 2782,
                  "src": "12998:3:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_magic_abi",
                    "typeString": "abi"
                  }
                },
                "id": 2240,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "memberName": "encodeWithSignature",
                "nodeType": "MemberAccess",
                "referencedDeclaration": null,
                "src": "12998:23:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                  "typeString": "function (string memory) pure returns (bytes memory)"
                }
              },
              "id": 2253,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "12998:250:7",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_memory_ptr",
                "typeString": "bytes memory"
              }
            },
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2373,
              "nodeType": "Block",
              "src": "13461:1386:7",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2269,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2260,
                        "src": "13474:2:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 2270,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isContract",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2779,
                      "src": "13474:13:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                        "typeString": "function (address) view returns (bool)"
                      }
                    },
                    "id": 2271,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13474:15:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2372,
                  "nodeType": "IfStatement",
                  "src": "13471:1370:7",
                  "trueBody": {
                    "id": 2371,
                    "nodeType": "Block",
                    "src": "13491:1350:7",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2276,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 2273,
                                  "name": "gasleft",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2788,
                                  "src": "13513:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view returns (uint256)"
                                  }
                                },
                                "id": 2274,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13513:9:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 2275,
                                "name": "CHECK_IS_RECEIVER_REQUIRED_GAS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2237,
                                "src": "13526:30:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13513:43:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "455243313135353a206e6f7420656e6f7567682067617320726573657276656420666f7220746f6b656e20726563656976657220636865636b",
                              "id": 2277,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13558:59:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_70143c97890a8de8bd28d50978595ef8a14cf1fbfce29e1980b2f38ced3ebc18",
                                "typeString": "literal_string \"ERC1155: not enough gas reserved for token receiver check\""
                              },
                              "value": "ERC1155: not enough gas reserved for token receiver check"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_70143c97890a8de8bd28d50978595ef8a14cf1fbfce29e1980b2f38ced3ebc18",
                                "typeString": "literal_string \"ERC1155: not enough gas reserved for token receiver check\""
                              }
                            ],
                            "id": 2272,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2798,
                              2799
                            ],
                            "referencedDeclaration": 2799,
                            "src": "13505:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2278,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13505:113:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2279,
                        "nodeType": "ExpressionStatement",
                        "src": "13505:113:7"
                      },
                      {
                        "assignments": [
                          2281,
                          2283
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2281,
                            "name": "callSucceeded",
                            "nodeType": "VariableDeclaration",
                            "scope": 2371,
                            "src": "13633:18:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2280,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "13633:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2283,
                            "name": "callReturnData",
                            "nodeType": "VariableDeclaration",
                            "scope": 2371,
                            "src": "13653:27:7",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 2282,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "13653:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2291,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2289,
                              "name": "CHECK_IS_RECEIVER_CALLDATA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2254,
                              "src": "13703:26:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory",
                                "typeString": "bytes memory"
                              }
                            ],
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "3130303030",
                                "id": 2287,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13696:5:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10000_by_1",
                                  "typeString": "int_const 10000"
                                },
                                "value": "10000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_10000_by_1",
                                  "typeString": "int_const 10000"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2284,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2260,
                                  "src": "13684:2:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 2285,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "call",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "13684:7:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                }
                              },
                              "id": 2286,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "gas",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "13684:11:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_setgas_nonpayable$_t_uint256_$returns$_t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas_$",
                                "typeString": "function (uint256) returns (function (bytes memory) payable returns (bool,bytes memory))"
                              }
                            },
                            "id": 2288,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13684:18:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 2290,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13684:46:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13632:98:7"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2306,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 2297,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2292,
                              "name": "callSucceeded",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2281,
                              "src": "13765:13:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2296,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2293,
                                  "name": "callReturnData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2283,
                                  "src": "13798:14:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 2294,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "13798:21:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2295,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13822:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "13798:25:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "13765:58:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 2305,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2300,
                                  "name": "callReturnData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2283,
                                  "src": "13854:14:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2301,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "13871:4:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bool_$",
                                        "typeString": "type(bool)"
                                      },
                                      "typeName": "bool"
                                    }
                                  ],
                                  "id": 2302,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "13870:6:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  },
                                  {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2298,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2782,
                                  "src": "13843:3:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 2299,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "decode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "13843:10:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 2303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13843:34:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 2304,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13881:4:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            "src": "13843:42:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "13765:120:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2369,
                          "nodeType": "Block",
                          "src": "14215:616:7",
                          "statements": [
                            {
                              "assignments": [
                                2329
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2329,
                                  "name": "implementer",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2369,
                                  "src": "14233:19:7",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 2328,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14233:7:7",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2341,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2334,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2260,
                                    "src": "14360:2:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "45524331313535546f6b656e5265636569766572",
                                            "id": 2337,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "14380:22:7",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_78eca591ab61c5e7d150a4c8756b2645287be0b2a3dc046cb359858001cc6587",
                                              "typeString": "literal_string \"ERC1155TokenReceiver\""
                                            },
                                            "value": "ERC1155TokenReceiver"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_78eca591ab61c5e7d150a4c8756b2645287be0b2a3dc046cb359858001cc6587",
                                              "typeString": "literal_string \"ERC1155TokenReceiver\""
                                            }
                                          ],
                                          "id": 2336,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "14374:5:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                            "typeString": "type(bytes storage pointer)"
                                          },
                                          "typeName": "bytes"
                                        },
                                        "id": 2338,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "14374:29:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 2335,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2789,
                                      "src": "14364:9:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 2339,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14364:40:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "307831383230613442373631384264453731446365386364633733614142364339353930356661443234",
                                        "id": 2331,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "14271:42:7",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        },
                                        "value": "0x1820a4B7618BdE71Dce8cdc73aAB6C95905faD24"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      ],
                                      "id": 2330,
                                      "name": "ERC1820Registry",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1210,
                                      "src": "14255:15:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_ERC1820Registry_$1210_$",
                                        "typeString": "type(contract ERC1820Registry)"
                                      }
                                    },
                                    "id": 2332,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14255:59:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ERC1820Registry_$1210",
                                      "typeString": "contract ERC1820Registry"
                                    }
                                  },
                                  "id": 2333,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getInterfaceImplementer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 883,
                                  "src": "14255:104:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_address_$",
                                    "typeString": "function (address,bytes32) view external returns (address)"
                                  }
                                },
                                "id": 2340,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14255:150:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "14233:172:7"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 2346,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2342,
                                  "name": "implementer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2329,
                                  "src": "14427:11:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 2344,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "14450:1:7",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 2343,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "14442:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 2345,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14442:10:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "14427:25:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 2368,
                              "nodeType": "IfStatement",
                              "src": "14424:393:7",
                              "trueBody": {
                                "id": 2367,
                                "nodeType": "Block",
                                "src": "14454:363:7",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          },
                                          "id": 2363,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 2352,
                                                "name": "operator",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2256,
                                                "src": "14562:8:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 2353,
                                                "name": "from",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2258,
                                                "src": "14572:4:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 2354,
                                                "name": "id",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2262,
                                                "src": "14578:2:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 2355,
                                                "name": "value",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2264,
                                                "src": "14582:5:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 2356,
                                                "name": "data",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2266,
                                                "src": "14589:4:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 2349,
                                                    "name": "implementer",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2329,
                                                    "src": "14531:11:7",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  ],
                                                  "id": 2348,
                                                  "name": "IERC1155TokenReceiver",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 778,
                                                  "src": "14509:21:7",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$778_$",
                                                    "typeString": "type(contract IERC1155TokenReceiver)"
                                                  }
                                                },
                                                "id": 2350,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "14509:34:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_IERC1155TokenReceiver_$778",
                                                  "typeString": "contract IERC1155TokenReceiver"
                                                }
                                              },
                                              "id": 2351,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "onERC1155Received",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 760,
                                              "src": "14509:52:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                                "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                                              }
                                            },
                                            "id": 2357,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "14509:85:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 2359,
                                                    "name": "implementer",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2329,
                                                    "src": "14648:11:7",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  ],
                                                  "id": 2358,
                                                  "name": "IERC1155TokenReceiver",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 778,
                                                  "src": "14626:21:7",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$778_$",
                                                    "typeString": "type(contract IERC1155TokenReceiver)"
                                                  }
                                                },
                                                "id": 2360,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "14626:34:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_IERC1155TokenReceiver_$778",
                                                  "typeString": "contract IERC1155TokenReceiver"
                                                }
                                              },
                                              "id": 2361,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "onERC1155Received",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 760,
                                              "src": "14626:52:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                                "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                                              }
                                            },
                                            "id": 2362,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "selector",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "14626:61:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "src": "14509:178:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "455243313135353a20676f7420756e6b6e6f776e2076616c75652066726f6d20696d706c656d656e746564206f6e455243313135355265636569766564",
                                          "id": 2364,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "14713:63:7",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_e6ed3a25af4a5ca586914719e01d4329330aaf64c804b30880bf3f85d81f12ac",
                                            "typeString": "literal_string \"ERC1155: got unknown value from implemented onERC1155Received\""
                                          },
                                          "value": "ERC1155: got unknown value from implemented onERC1155Received"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_e6ed3a25af4a5ca586914719e01d4329330aaf64c804b30880bf3f85d81f12ac",
                                            "typeString": "literal_string \"ERC1155: got unknown value from implemented onERC1155Received\""
                                          }
                                        ],
                                        "id": 2347,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          2798,
                                          2799
                                        ],
                                        "referencedDeclaration": 2799,
                                        "src": "14476:7:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 2365,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "14476:322:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2366,
                                    "nodeType": "ExpressionStatement",
                                    "src": "14476:322:7"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 2370,
                        "nodeType": "IfStatement",
                        "src": "13745:1086:7",
                        "trueBody": {
                          "id": 2327,
                          "nodeType": "Block",
                          "src": "13900:309:7",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    },
                                    "id": 2323,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2312,
                                          "name": "operator",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2256,
                                          "src": "13991:8:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2313,
                                          "name": "from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2258,
                                          "src": "14001:4:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2314,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2262,
                                          "src": "14007:2:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2315,
                                          "name": "value",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2264,
                                          "src": "14011:5:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2316,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2266,
                                          "src": "14018:4:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 2309,
                                              "name": "to",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2260,
                                              "src": "13969:2:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 2308,
                                            "name": "IERC1155TokenReceiver",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 778,
                                            "src": "13947:21:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$778_$",
                                              "typeString": "type(contract IERC1155TokenReceiver)"
                                            }
                                          },
                                          "id": 2310,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "13947:25:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC1155TokenReceiver_$778",
                                            "typeString": "contract IERC1155TokenReceiver"
                                          }
                                        },
                                        "id": 2311,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "onERC1155Received",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 760,
                                        "src": "13947:43:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                          "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                                        }
                                      },
                                      "id": 2317,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "13947:76:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 2319,
                                              "name": "to",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2260,
                                              "src": "14073:2:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 2318,
                                            "name": "IERC1155TokenReceiver",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 778,
                                            "src": "14051:21:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$778_$",
                                              "typeString": "type(contract IERC1155TokenReceiver)"
                                            }
                                          },
                                          "id": 2320,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "14051:25:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC1155TokenReceiver_$778",
                                            "typeString": "contract IERC1155TokenReceiver"
                                          }
                                        },
                                        "id": 2321,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "onERC1155Received",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 760,
                                        "src": "14051:43:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                          "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                                        }
                                      },
                                      "id": 2322,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "selector",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "14051:52:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "src": "13947:156:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "455243313135353a20676f7420756e6b6e6f776e2076616c75652066726f6d206f6e455243313135355265636569766564",
                                    "id": 2324,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14125:51:7",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_ed8e355e284874ab9344f5673b671de2fae4cbc95e3565b1501ffbb0f814cf6a",
                                      "typeString": "literal_string \"ERC1155: got unknown value from onERC1155Received\""
                                    },
                                    "value": "ERC1155: got unknown value from onERC1155Received"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_ed8e355e284874ab9344f5673b671de2fae4cbc95e3565b1501ffbb0f814cf6a",
                                      "typeString": "literal_string \"ERC1155: got unknown value from onERC1155Received\""
                                    }
                                  ],
                                  "id": 2307,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    2798,
                                    2799
                                  ],
                                  "referencedDeclaration": 2799,
                                  "src": "13918:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 2325,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13918:276:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2326,
                              "nodeType": "ExpressionStatement",
                              "src": "13918:276:7"
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 2374,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_doSafeTransferAcceptanceCheck",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2267,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2256,
                  "name": "operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2374,
                  "src": "13305:16:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2255,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13305:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2258,
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "scope": 2374,
                  "src": "13331:12:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2257,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13331:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2260,
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "scope": 2374,
                  "src": "13353:10:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2259,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13353:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2262,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 2374,
                  "src": "13373:10:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2261,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13373:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2264,
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 2374,
                  "src": "13393:13:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2263,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13393:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2266,
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 2374,
                  "src": "13416:17:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2265,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "13416:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13295:144:7"
            },
            "returnParameters": {
              "id": 2268,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13461:0:7"
            },
            "scope": 2497,
            "src": "13256:1591:7",
            "stateMutability": "nonpayable",
            "superFunction": 558,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2495,
              "nodeType": "Block",
              "src": "15083:1426:7",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2391,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2380,
                        "src": "15096:2:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 2392,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isContract",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2779,
                      "src": "15096:13:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                        "typeString": "function (address) view returns (bool)"
                      }
                    },
                    "id": 2393,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15096:15:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 2494,
                  "nodeType": "IfStatement",
                  "src": "15093:1410:7",
                  "trueBody": {
                    "id": 2493,
                    "nodeType": "Block",
                    "src": "15113:1390:7",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2398,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 2395,
                                  "name": "gasleft",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2788,
                                  "src": "15135:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                    "typeString": "function () view returns (uint256)"
                                  }
                                },
                                "id": 2396,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15135:9:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 2397,
                                "name": "CHECK_IS_RECEIVER_REQUIRED_GAS",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2237,
                                "src": "15148:30:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "15135:43:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "455243313135353a206e6f7420656e6f7567682067617320726573657276656420666f7220746f6b656e20726563656976657220636865636b",
                              "id": 2399,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15180:59:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_70143c97890a8de8bd28d50978595ef8a14cf1fbfce29e1980b2f38ced3ebc18",
                                "typeString": "literal_string \"ERC1155: not enough gas reserved for token receiver check\""
                              },
                              "value": "ERC1155: not enough gas reserved for token receiver check"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_70143c97890a8de8bd28d50978595ef8a14cf1fbfce29e1980b2f38ced3ebc18",
                                "typeString": "literal_string \"ERC1155: not enough gas reserved for token receiver check\""
                              }
                            ],
                            "id": 2394,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              2798,
                              2799
                            ],
                            "referencedDeclaration": 2799,
                            "src": "15127:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2400,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15127:113:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2401,
                        "nodeType": "ExpressionStatement",
                        "src": "15127:113:7"
                      },
                      {
                        "assignments": [
                          2403,
                          2405
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2403,
                            "name": "callSucceeded",
                            "nodeType": "VariableDeclaration",
                            "scope": 2493,
                            "src": "15255:18:7",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2402,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "15255:4:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 2405,
                            "name": "callReturnData",
                            "nodeType": "VariableDeclaration",
                            "scope": 2493,
                            "src": "15275:27:7",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 2404,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "15275:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 2413,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2411,
                              "name": "CHECK_IS_RECEIVER_CALLDATA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2254,
                              "src": "15331:26:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory",
                                "typeString": "bytes memory"
                              }
                            ],
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "3130303030",
                                "id": 2409,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15324:5:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10000_by_1",
                                  "typeString": "int_const 10000"
                                },
                                "value": "10000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_10000_by_1",
                                  "typeString": "int_const 10000"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2406,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2380,
                                  "src": "15306:2:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 2407,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "staticcall",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "15306:13:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                                }
                              },
                              "id": 2408,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "gas",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "15306:17:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_setgas_nonpayable$_t_uint256_$returns$_t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas_$",
                                "typeString": "function (uint256) returns (function (bytes memory) view returns (bool,bytes memory))"
                              }
                            },
                            "id": 2410,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15306:24:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$gas",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 2412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15306:52:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15254:104:7"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2428,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 2419,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2414,
                              "name": "callSucceeded",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2403,
                              "src": "15393:13:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2418,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2415,
                                  "name": "callReturnData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2405,
                                  "src": "15426:14:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 2416,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "15426:21:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2417,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15450:1:7",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "15426:25:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "15393:58:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 2427,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2422,
                                  "name": "callReturnData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2405,
                                  "src": "15482:14:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2423,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "15499:4:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bool_$",
                                        "typeString": "type(bool)"
                                      },
                                      "typeName": "bool"
                                    }
                                  ],
                                  "id": 2424,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "15498:6:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  },
                                  {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2420,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2782,
                                  "src": "15471:3:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 2421,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "decode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "15471:10:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 2425,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15471:34:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 2426,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15509:4:7",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            "src": "15471:42:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "15393:120:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2491,
                          "nodeType": "Block",
                          "src": "15860:633:7",
                          "statements": [
                            {
                              "assignments": [
                                2451
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2451,
                                  "name": "implementer",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2491,
                                  "src": "15878:19:7",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 2450,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15878:7:7",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2463,
                              "initialValue": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2456,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2380,
                                    "src": "16005:2:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "hexValue": "45524331313535546f6b656e5265636569766572",
                                            "id": 2459,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "16025:22:7",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_78eca591ab61c5e7d150a4c8756b2645287be0b2a3dc046cb359858001cc6587",
                                              "typeString": "literal_string \"ERC1155TokenReceiver\""
                                            },
                                            "value": "ERC1155TokenReceiver"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_78eca591ab61c5e7d150a4c8756b2645287be0b2a3dc046cb359858001cc6587",
                                              "typeString": "literal_string \"ERC1155TokenReceiver\""
                                            }
                                          ],
                                          "id": 2458,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "16019:5:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                            "typeString": "type(bytes storage pointer)"
                                          },
                                          "typeName": "bytes"
                                        },
                                        "id": 2460,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "16019:29:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 2457,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2789,
                                      "src": "16009:9:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 2461,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "16009:40:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "307831383230613442373631384264453731446365386364633733614142364339353930356661443234",
                                        "id": 2453,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "15916:42:7",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        },
                                        "value": "0x1820a4B7618BdE71Dce8cdc73aAB6C95905faD24"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      ],
                                      "id": 2452,
                                      "name": "ERC1820Registry",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1210,
                                      "src": "15900:15:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_ERC1820Registry_$1210_$",
                                        "typeString": "type(contract ERC1820Registry)"
                                      }
                                    },
                                    "id": 2454,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15900:59:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ERC1820Registry_$1210",
                                      "typeString": "contract ERC1820Registry"
                                    }
                                  },
                                  "id": 2455,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getInterfaceImplementer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 883,
                                  "src": "15900:104:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_address_$",
                                    "typeString": "function (address,bytes32) view external returns (address)"
                                  }
                                },
                                "id": 2462,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15900:150:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15878:172:7"
                            },
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 2468,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2464,
                                  "name": "implementer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2451,
                                  "src": "16072:11:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 2466,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "16095:1:7",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 2465,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "16087:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 2467,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "16087:10:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "16072:25:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 2490,
                              "nodeType": "IfStatement",
                              "src": "16069:410:7",
                              "trueBody": {
                                "id": 2489,
                                "nodeType": "Block",
                                "src": "16099:380:7",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          },
                                          "id": 2485,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 2474,
                                                "name": "operator",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2376,
                                                "src": "16212:8:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 2475,
                                                "name": "from",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2378,
                                                "src": "16222:4:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 2476,
                                                "name": "ids",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2383,
                                                "src": "16228:3:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                  "typeString": "uint256[] memory"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 2477,
                                                "name": "values",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2386,
                                                "src": "16233:6:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                  "typeString": "uint256[] memory"
                                                }
                                              },
                                              {
                                                "argumentTypes": null,
                                                "id": 2478,
                                                "name": "data",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2388,
                                                "src": "16241:4:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                  "typeString": "uint256[] memory"
                                                },
                                                {
                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                  "typeString": "uint256[] memory"
                                                },
                                                {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 2471,
                                                    "name": "implementer",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2451,
                                                    "src": "16176:11:7",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  ],
                                                  "id": 2470,
                                                  "name": "IERC1155TokenReceiver",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 778,
                                                  "src": "16154:21:7",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$778_$",
                                                    "typeString": "type(contract IERC1155TokenReceiver)"
                                                  }
                                                },
                                                "id": 2472,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "16154:34:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_IERC1155TokenReceiver_$778",
                                                  "typeString": "contract IERC1155TokenReceiver"
                                                }
                                              },
                                              "id": 2473,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "onERC1155BatchReceived",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 777,
                                              "src": "16154:57:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                                "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"
                                              }
                                            },
                                            "id": 2479,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "16154:92:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 2481,
                                                    "name": "implementer",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2451,
                                                    "src": "16300:11:7",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  ],
                                                  "id": 2480,
                                                  "name": "IERC1155TokenReceiver",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 778,
                                                  "src": "16278:21:7",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$778_$",
                                                    "typeString": "type(contract IERC1155TokenReceiver)"
                                                  }
                                                },
                                                "id": 2482,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "16278:34:7",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_IERC1155TokenReceiver_$778",
                                                  "typeString": "contract IERC1155TokenReceiver"
                                                }
                                              },
                                              "id": 2483,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "onERC1155BatchReceived",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 777,
                                              "src": "16278:57:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                                "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"
                                              }
                                            },
                                            "id": 2484,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "selector",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "16278:66:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "src": "16154:190:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "455243313135353a20676f7420756e6b6e6f776e2076616c75652066726f6d20696d706c656d656e746564206f6e4552433131353542617463685265636569766564",
                                          "id": 2486,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "16370:68:7",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_52659fe8a2aab23558e5402f8cbb707d32d25302be784438d11f5caf1bfeb3ee",
                                            "typeString": "literal_string \"ERC1155: got unknown value from implemented onERC1155BatchReceived\""
                                          },
                                          "value": "ERC1155: got unknown value from implemented onERC1155BatchReceived"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_52659fe8a2aab23558e5402f8cbb707d32d25302be784438d11f5caf1bfeb3ee",
                                            "typeString": "literal_string \"ERC1155: got unknown value from implemented onERC1155BatchReceived\""
                                          }
                                        ],
                                        "id": 2469,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          2798,
                                          2799
                                        ],
                                        "referencedDeclaration": 2799,
                                        "src": "16121:7:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 2487,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "16121:339:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2488,
                                    "nodeType": "ExpressionStatement",
                                    "src": "16121:339:7"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 2492,
                        "nodeType": "IfStatement",
                        "src": "15373:1120:7",
                        "trueBody": {
                          "id": 2449,
                          "nodeType": "Block",
                          "src": "15528:326:7",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    },
                                    "id": 2445,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2434,
                                          "name": "operator",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2376,
                                          "src": "15624:8:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2435,
                                          "name": "from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2378,
                                          "src": "15634:4:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2436,
                                          "name": "ids",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2383,
                                          "src": "15640:3:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2437,
                                          "name": "values",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2386,
                                          "src": "15645:6:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2438,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2388,
                                          "src": "15653:4:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          },
                                          {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 2431,
                                              "name": "to",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2380,
                                              "src": "15597:2:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 2430,
                                            "name": "IERC1155TokenReceiver",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 778,
                                            "src": "15575:21:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$778_$",
                                              "typeString": "type(contract IERC1155TokenReceiver)"
                                            }
                                          },
                                          "id": 2432,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "15575:25:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC1155TokenReceiver_$778",
                                            "typeString": "contract IERC1155TokenReceiver"
                                          }
                                        },
                                        "id": 2433,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "onERC1155BatchReceived",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 777,
                                        "src": "15575:48:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                          "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"
                                        }
                                      },
                                      "id": 2439,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "15575:83:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 2441,
                                              "name": "to",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2380,
                                              "src": "15708:2:7",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 2440,
                                            "name": "IERC1155TokenReceiver",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 778,
                                            "src": "15686:21:7",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$778_$",
                                              "typeString": "type(contract IERC1155TokenReceiver)"
                                            }
                                          },
                                          "id": 2442,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "15686:25:7",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC1155TokenReceiver_$778",
                                            "typeString": "contract IERC1155TokenReceiver"
                                          }
                                        },
                                        "id": 2443,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "onERC1155BatchReceived",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 777,
                                        "src": "15686:48:7",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                          "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"
                                        }
                                      },
                                      "id": 2444,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "selector",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "15686:57:7",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "src": "15575:168:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "455243313135353a20676f7420756e6b6e6f776e2076616c75652066726f6d206f6e4552433131353542617463685265636569766564",
                                    "id": 2446,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15765:56:7",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_58a2cb4b4a89dfb73e68b77ccf865672b17ec44aca20d21ff9de955fc453cfbf",
                                      "typeString": "literal_string \"ERC1155: got unknown value from onERC1155BatchReceived\""
                                    },
                                    "value": "ERC1155: got unknown value from onERC1155BatchReceived"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_58a2cb4b4a89dfb73e68b77ccf865672b17ec44aca20d21ff9de955fc453cfbf",
                                      "typeString": "literal_string \"ERC1155: got unknown value from onERC1155BatchReceived\""
                                    }
                                  ],
                                  "id": 2429,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    2798,
                                    2799
                                  ],
                                  "referencedDeclaration": 2799,
                                  "src": "15546:7:7",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 2447,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15546:293:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2448,
                              "nodeType": "ExpressionStatement",
                              "src": "15546:293:7"
                            }
                          ]
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": null,
            "id": 2496,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_doSafeBatchTransferAcceptanceCheck",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2389,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2376,
                  "name": "operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2496,
                  "src": "14907:16:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2375,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14907:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2378,
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "scope": 2496,
                  "src": "14933:12:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2377,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14933:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2380,
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "scope": 2496,
                  "src": "14955:10:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2379,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14955:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2383,
                  "name": "ids",
                  "nodeType": "VariableDeclaration",
                  "scope": 2496,
                  "src": "14975:20:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2381,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "14975:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2382,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "14975:9:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2386,
                  "name": "values",
                  "nodeType": "VariableDeclaration",
                  "scope": 2496,
                  "src": "15005:23:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2384,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "15005:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2385,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "15005:9:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2388,
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 2496,
                  "src": "15038:17:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2387,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "15038:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14897:164:7"
            },
            "returnParameters": {
              "id": 2390,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15083:0:7"
            },
            "scope": 2497,
            "src": "14853:1656:7",
            "stateMutability": "nonpayable",
            "superFunction": 601,
            "visibility": "internal"
          }
        ],
        "scope": 2498,
        "src": "321:16190:7"
      }
    ],
    "src": "0:16512:7"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.1+commit.c8a2cb62.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.3",
  "updatedAt": "2019-06-08T17:32:19.219Z",
  "devdoc": {
    "methods": {
      "balanceOf(address,uint256)": {
        "details": "Get the specified address' balance for token with specified ID.",
        "params": {
          "id": "ID of the token",
          "owner": "The address of the token holder"
        },
        "return": "The owner's balance of the token type requested"
      },
      "balanceOfBatch(address[],uint256[])": {
        "details": "Get the balance of multiple account/token pairs",
        "params": {
          "ids": "IDs of the tokens",
          "owners": "The addresses of the token holders"
        },
        "return": "Balances for each owner and token id pair"
      },
      "getOutcomeSlotCount(bytes32)": {
        "details": "Gets the outcome slot count of a condition.",
        "params": {
          "conditionId": "ID of the condition."
        },
        "return": "Number of outcome slots associated with a condition, or zero if condition has not been prepared yet."
      },
      "isApprovedForAll(address,address)": {
        "params": {
          "operator": "Address of authorized operator",
          "owner": "The owner of the Tokens"
        },
        "return": "True if the operator is approved, false if not"
      },
      "prepareCondition(address,bytes32,uint256)": {
        "details": "This function prepares a condition by initializing a payout vector associated with the condition.",
        "params": {
          "oracle": "The account assigned to report the result for the prepared condition.",
          "outcomeSlotCount": "The number of outcome slots which should be used for this condition. Must not exceed 256.",
          "questionId": "An identifier for the question to be answered by the oracle."
        }
      },
      "receiveResult(bytes32,bytes)": {
        "details": "Called by the oracle for reporting results of conditions. Will set the payout vector for the condition with the ID ``keccak256(abi.encodePacked(oracle, questionId, outcomeSlotCount))``, where oracle is the message sender, questionId is one of the parameters of this function, and outcomeSlotCount is derived from result, which is the result of serializing 32-byte EVM words representing payoutNumerators for each outcome slot of the condition.",
        "params": {
          "questionId": "The question ID the oracle is answering for",
          "result": "The oracle's answer"
        }
      },
      "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": {
        "details": "Transfers `values` amount(s) of `ids` from the `from` address to the `to` address specified. Caller must be approved to manage the tokens being transferred out of the `from` account. If `to` is a smart contract, will call `onERC1155BatchReceived` on `to` and act appropriately.",
        "params": {
          "data": "Data forwarded to `onERC1155Received` if `to` is a contract receiver",
          "from": "Source address",
          "ids": "IDs of each token type",
          "to": "Target address",
          "values": "Transfer amounts per token type"
        }
      },
      "safeTransferFrom(address,address,uint256,uint256,bytes)": {
        "details": "Transfers `value` amount of an `id` from the `from` address to the `to` address specified. Caller must be approved to manage the tokens being transferred out of the `from` account. If `to` is a smart contract, will call `onERC1155Received` on `to` and act appropriately.",
        "params": {
          "data": "Data forwarded to `onERC1155Received` if `to` is a contract receiver",
          "from": "Source address",
          "id": "ID of the token type",
          "to": "Target address",
          "value": "Transfer amount"
        }
      },
      "setApprovalForAll(address,bool)": {
        "details": "Sets or unsets the approval of a given operator An operator is allowed to transfer all tokens of the sender on their behalf",
        "params": {
          "approved": "representing the status of the approval to be set",
          "operator": "address to set the approval"
        }
      },
      "splitPosition(address,bytes32,bytes32,uint256[],uint256)": {
        "details": "This function splits a position. If splitting from the collateral, this contract will attempt to transfer `amount` collateral from the message sender to itself. Otherwise, this contract will burn `amount` stake held by the message sender in the position being split. Regardless, if successful, `amount` stake will be minted in the split target positions. If any of the transfers, mints, or burns fail, the transaction will revert. The transaction will also revert if the given partition is trivial, invalid, or refers to more slots than the condition is prepared with.",
        "params": {
          "amount": "The amount of collateral or stake to split.",
          "collateralToken": "The address of the positions' backing collateral token.",
          "conditionId": "The ID of the condition to split on.",
          "parentCollectionId": "The ID of the outcome collections common to the position being split and the split target positions. May be null, in which only the collateral is shared.",
          "partition": "An array of disjoint index sets representing a nontrivial partition of the outcome slots of the given condition."
        }
      },
      "supportsInterface(bytes4)": {
        "details": "See `IERC165.supportsInterface`.     * Time complexity O(1), guaranteed to always use less than 30 000 gas."
      }
    }
  },
  "userdoc": {
    "methods": {
      "isApprovedForAll(address,address)": {
        "notice": "Queries the approval status of an operator for a given owner."
      }
    }
  }
}