{
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "MerkleLib__insert_treeIsFull",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_treeData",
          "type": "bytes"
        },
        {
          "internalType": "bytes32[]",
          "name": "_leavesToInsert",
          "type": "bytes32[]"
        }
      ],
      "name": "calculateRoot",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "_calculatedRoot",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x608060405234801561001057600080fd5b50611b38806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80638130a02014610030575b600080fd5b61004361003e3660046117cd565b610055565b60405190815260200160405180910390f35b600061005f61162b565b60008480602001905181019061007591906118a3565b909250905061008261164a565b6020810182905282815260005b85518110156100ce576100c48682815181106100ad576100ad611926565b60200260200101518361011990919063ffffffff16565b915060010161008f565b50805181906000906100e3908290602061166a565b506020918201519101556100f76000610275565b935060008061010681806116a8565b6020820160009055505050505092915050565b61012161164a565b600083602001805161013290611984565b908190529050600161014660206002611adc565b6101509190611aef565b811115610189576040517f8eab04bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b602081101561023c57816001166001036101c5578451849082602081106101b5576101b5611926565b60200201525083915061026f9050565b845181602081106101d8576101d8611926565b6020020151846040516020016101f8929190918252602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209350600191821c910161018c565b506040517f8eab04bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b60208101546000908082036102ac57507f27ae5ba08d7291c96c8cbddcc148bf48a6d68c7974b94356f53754ef6171d75792915050565b60008360018316156102ce578054600052600060205260406000209350610b81565b60028316156103135760018101546000527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb56020526040600020935060019150610b81565b60048316156103585760028101546000527fb4c11951957c6f8f642c4af61cd6b24640fec6dc7fc607ee8206a99e92410d306020526040600020935060029150610b81565b600883161561039d5760038101546000527f21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba856020526040600020935060039150610b81565b60108316156103e25760048101546000527fe58769b32a1beaf1ea27375a44095a0d1fb664ce2dd358e7fcbfb78c26a193446020526040600020935060049150610b81565b60208316156104275760058101546000527f0eb01ebfc9ed27500cd4dfc979272d1f0913cc9f66540d7e8005811109e1cf2d6020526040600020935060059150610b81565b604083161561046c5760068101546000527f887c22bd8750d34016ac3c66b5ff102dacdd73f6b014e710b51e8022af9a19686020526040600020935060069150610b81565b60808316156104b15760078101546000527fffd70157e48063fc33c97a050f7f640233bf646cc98d9524c6b92bcf3ab56f836020526040600020935060079150610b81565b6101008316156104f75760088101546000527f9867cc5f7f196b93bae1e27e6320742445d290f2263827498b54fec539f756af6020526040600020935060089150610b81565b61020083161561053d5760098101546000527fcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e06020526040600020935060099150610b81565b61040083161561058357600a8101546000527ff9dc3e7fe016e050eff260334f18a5d4fe391d82092319f5964f2e2eb7c1c3a560205260406000209350600a9150610b81565b6108008316156105c957600b8101546000527ff8b13a49e282f609c317a833fb8d976d11517c571d1221a265d25af778ecf89260205260406000209350600b9150610b81565b61100083161561060f57600c8101546000527f3490c6ceeb450aecdc82e28293031d10c7d73bf85e57bf041a97360aa2c5d99c60205260406000209350600c9150610b81565b61200083161561065557600d8101546000527fc1df82d9c4b87413eae2ef048f94b4d3554cea73d92b0f7af96e0271c691e2bb60205260406000209350600d9150610b81565b61400083161561069b57600e8101546000527f5c67add7c6caf302256adedf7ab114da0acfe870d449a3a489f781d659e8becc60205260406000209350600e9150610b81565b6180008316156106e157600f8101546000527fda7bce9f4e8618b6bd2f4132ce798cdc7a60e7e1460a7299e3c6342a579626d260205260406000209350600f9150610b81565b620100008316156107285760108101546000527f2733e50f526ec2fa19a22b31e8ed50f23cd1fdf94c9154ed3a7609a2f1ff981f6020526040600020935060109150610b81565b6202000083161561076f5760118101546000527fe1d3b5c807b281e4683cc6d6315cf95b9ade8641defcb32372f1c126e398ef7a6020526040600020935060119150610b81565b620400008316156107b65760128101546000527f5a2dce0a8a7f68bb74560f8f71837c2c2ebbcbf7fffb42ae1896f13f7c7479a06020526040600020935060129150610b81565b620800008316156107fd5760138101546000527fb46a28b6f55540f89444f63de0378e3d121be09e06cc9ded1c20e65876d36aa06020526040600020935060139150610b81565b621000008316156108445760148101546000527fc65e9645644786b620e2dd2ad648ddfcbf4a7e5b1a3a4ecfe7f64667a3f0b7e26020526040600020935060149150610b81565b6220000083161561088b5760158101546000527ff4418588ed35a2458cffeb39b93d26f18d2ab13bdce6aee58e7b99359ec2dfd96020526040600020935060159150610b81565b624000008316156108d25760168101546000527f5a9c16dc00d6ef18b7933a6f8dc65ccb55667138776f7dea101070dc8796e3776020526040600020935060169150610b81565b628000008316156109195760178101546000527f4df84f40ae0c8229d0d6069e5c8f39a7c299677a09d367fc7b05e3bc380ee6526020526040600020935060179150610b81565b63010000008316156109615760188101546000527fcdc72595f74c7b1043d0e1ffbab734648c838dfb0527d971b602bc216c9619ef6020526040600020935060189150610b81565b63020000008316156109a95760198101546000527f0abf5ac974a1ed57f4050aa510dd9c74f508277b39d7973bb2dfccc5eeb0618d6020526040600020935060199150610b81565b63040000008316156109f157601a8101546000527fb8cd74046ff337f0a7bf2c8e03e10f642c1886798d71806ab1e888d9e5ee87d060205260406000209350601a9150610b81565b6308000000831615610a3957601b8101546000527f838c5655cb21c6cb83313b5a631175dff4963772cce9108188b34ac87c81c41e60205260406000209350601b9150610b81565b6310000000831615610a8157601c8101546000527f662ee4dd2dd7b2bc707961b1e646c4047669dcb6584f0d8d770daf5d7e7deb2e60205260406000209350601c9150610b81565b6320000000831615610ac957601d8101546000527f388ab20e2573d171a88108e79d820e98f26c0b84aa8b2f4aa4968dbb818ea32260205260406000209350601d9150610b81565b6340000000831615610b1157601e8101546000527f93237c50ba75ee485f4c22adf2f741400bdf8d6a9cc7df7ecae576221665d73560205260406000209350601e9150610b81565b6380000000831615610b5957601f8101546000527f8448818bb4ae4562849e949e17ac16e0be16688e156b5cf15e098c627c0056a960205260406000209350601f9150610b81565b7f27ae5ba08d7291c96c8cbddcc148bf48a6d68c7974b94356f53754ef6171d7579350602091505b601e8211611623576001821015610bdf57600283168015610bad57600182015460005284602052610bd6565b846000527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb56020525b50604060002093505b6002821015610c3557600483168015610c0357600282015460005284602052610c2c565b846000527fb4c11951957c6f8f642c4af61cd6b24640fec6dc7fc607ee8206a99e92410d306020525b50604060002093505b6003821015610c8b57600883168015610c5957600382015460005284602052610c82565b846000527f21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba856020525b50604060002093505b6004821015610ce157601083168015610caf57600482015460005284602052610cd8565b846000527fe58769b32a1beaf1ea27375a44095a0d1fb664ce2dd358e7fcbfb78c26a193446020525b50604060002093505b6005821015610d3757602083168015610d0557600582015460005284602052610d2e565b846000527f0eb01ebfc9ed27500cd4dfc979272d1f0913cc9f66540d7e8005811109e1cf2d6020525b50604060002093505b6006821015610d8d57604083168015610d5b57600682015460005284602052610d84565b846000527f887c22bd8750d34016ac3c66b5ff102dacdd73f6b014e710b51e8022af9a19686020525b50604060002093505b6007821015610de357608083168015610db157600782015460005284602052610dda565b846000527fffd70157e48063fc33c97a050f7f640233bf646cc98d9524c6b92bcf3ab56f836020525b50604060002093505b6008821015610e3a5761010083168015610e0857600882015460005284602052610e31565b846000527f9867cc5f7f196b93bae1e27e6320742445d290f2263827498b54fec539f756af6020525b50604060002093505b6009821015610e915761020083168015610e5f57600982015460005284602052610e88565b846000527fcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e06020525b50604060002093505b600a821015610ee85761040083168015610eb657600a82015460005284602052610edf565b846000527ff9dc3e7fe016e050eff260334f18a5d4fe391d82092319f5964f2e2eb7c1c3a56020525b50604060002093505b600b821015610f3f5761080083168015610f0d57600b82015460005284602052610f36565b846000527ff8b13a49e282f609c317a833fb8d976d11517c571d1221a265d25af778ecf8926020525b50604060002093505b600c821015610f965761100083168015610f6457600c82015460005284602052610f8d565b846000527f3490c6ceeb450aecdc82e28293031d10c7d73bf85e57bf041a97360aa2c5d99c6020525b50604060002093505b600d821015610fed5761200083168015610fbb57600d82015460005284602052610fe4565b846000527fc1df82d9c4b87413eae2ef048f94b4d3554cea73d92b0f7af96e0271c691e2bb6020525b50604060002093505b600e821015611044576140008316801561101257600e8201546000528460205261103b565b846000527f5c67add7c6caf302256adedf7ab114da0acfe870d449a3a489f781d659e8becc6020525b50604060002093505b600f82101561109b576180008316801561106957600f82015460005284602052611092565b846000527fda7bce9f4e8618b6bd2f4132ce798cdc7a60e7e1460a7299e3c6342a579626d26020525b50604060002093505b60108210156110f35762010000831680156110c1576010820154600052846020526110ea565b846000527f2733e50f526ec2fa19a22b31e8ed50f23cd1fdf94c9154ed3a7609a2f1ff981f6020525b50604060002093505b601182101561114b57620200008316801561111957601182015460005284602052611142565b846000527fe1d3b5c807b281e4683cc6d6315cf95b9ade8641defcb32372f1c126e398ef7a6020525b50604060002093505b60128210156111a35762040000831680156111715760128201546000528460205261119a565b846000527f5a2dce0a8a7f68bb74560f8f71837c2c2ebbcbf7fffb42ae1896f13f7c7479a06020525b50604060002093505b60138210156111fb5762080000831680156111c9576013820154600052846020526111f2565b846000527fb46a28b6f55540f89444f63de0378e3d121be09e06cc9ded1c20e65876d36aa06020525b50604060002093505b60148210156112535762100000831680156112215760148201546000528460205261124a565b846000527fc65e9645644786b620e2dd2ad648ddfcbf4a7e5b1a3a4ecfe7f64667a3f0b7e26020525b50604060002093505b60158210156112ab576220000083168015611279576015820154600052846020526112a2565b846000527ff4418588ed35a2458cffeb39b93d26f18d2ab13bdce6aee58e7b99359ec2dfd96020525b50604060002093505b60168210156113035762400000831680156112d1576016820154600052846020526112fa565b846000527f5a9c16dc00d6ef18b7933a6f8dc65ccb55667138776f7dea101070dc8796e3776020525b50604060002093505b601782101561135b57628000008316801561132957601782015460005284602052611352565b846000527f4df84f40ae0c8229d0d6069e5c8f39a7c299677a09d367fc7b05e3bc380ee6526020525b50604060002093505b60188210156113b457630100000083168015611382576018820154600052846020526113ab565b846000527fcdc72595f74c7b1043d0e1ffbab734648c838dfb0527d971b602bc216c9619ef6020525b50604060002093505b601982101561140d576302000000831680156113db57601982015460005284602052611404565b846000527f0abf5ac974a1ed57f4050aa510dd9c74f508277b39d7973bb2dfccc5eeb0618d6020525b50604060002093505b601a8210156114665763040000008316801561143457601a8201546000528460205261145d565b846000527fb8cd74046ff337f0a7bf2c8e03e10f642c1886798d71806ab1e888d9e5ee87d06020525b50604060002093505b601b8210156114bf5763080000008316801561148d57601b820154600052846020526114b6565b846000527f838c5655cb21c6cb83313b5a631175dff4963772cce9108188b34ac87c81c41e6020525b50604060002093505b601c821015611518576310000000831680156114e657601c8201546000528460205261150f565b846000527f662ee4dd2dd7b2bc707961b1e646c4047669dcb6584f0d8d770daf5d7e7deb2e6020525b50604060002093505b601d8210156115715763200000008316801561153f57601d82015460005284602052611568565b846000527f388ab20e2573d171a88108e79d820e98f26c0b84aa8b2f4aa4968dbb818ea3226020525b50604060002093505b601e8210156115ca5763400000008316801561159857601e820154600052846020526115c1565b846000527f93237c50ba75ee485f4c22adf2f741400bdf8d6a9cc7df7ecae576221665d7356020525b50604060002093505b601f821015611623576380000000831680156115f157601f8201546000528460205261161a565b846000527f8448818bb4ae4562849e949e17ac16e0be16688e156b5cf15e098c627c0056a96020525b50604060002093505b505050919050565b6040518061040001604052806020906020820280368337509192915050565b604051806040016040528061165d61162b565b8152602001600081525090565b8260208101928215611698579160200282015b8281111561169857825182559160200191906001019061167d565b506116a49291506116ba565b5090565b506116b79060208101906116ba565b50565b5b808211156116a457600081556001016116bb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611745576117456116cf565b604052919050565b600082601f83011261175e57600080fd5b8135602067ffffffffffffffff82111561177a5761177a6116cf565b8160051b6117898282016116fe565b92835284810182019282810190878511156117a357600080fd5b83870192505b848310156117c2578235825291830191908301906117a9565b979650505050505050565b600080604083850312156117e057600080fd5b823567ffffffffffffffff808211156117f857600080fd5b818501915085601f83011261180c57600080fd5b8135602082821115611820576118206116cf565b611850817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116016116fe565b828152888284870101111561186457600080fd5b8282860183830137600092810182019290925290945085013591508082111561188c57600080fd5b506118998582860161174d565b9150509250929050565b60008061042083850312156118b757600080fd5b83601f8401126118c657600080fd5b60405161040080820182811067ffffffffffffffff821117156118eb576118eb6116cf565b604052840181868211156118fe57600080fd5b855b82811015611918578051825260209182019101611900565b505051909590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036119b5576119b5611955565b5060010190565b600181815b80851115611a1557817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156119fb576119fb611955565b80851615611a0857918102915b93841c93908002906119c1565b509250929050565b600082611a2c5750600161026f565b81611a395750600061026f565b8160018114611a4f5760028114611a5957611a75565b600191505061026f565b60ff841115611a6a57611a6a611955565b50506001821b61026f565b5060208310610133831016604e8410600b8410161715611a98575081810a61026f565b611aa283836119bc565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611ad457611ad4611955565b029392505050565b6000611ae88383611a1d565b9392505050565b8181038181111561026f5761026f61195556fea2646970667358221220ad69055cbc679ceef4d5dcb87a3819b8c31536d13485da7871a7be255a6db0e264736f6c63430008130033",
    "sourceMap": "180:1247:56:-:0;;;361:16;;;;;;;;;;180:1247;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80638130a02014610030575b600080fd5b61004361003e3660046117cd565b610055565b60405190815260200160405180910390f35b600061005f61162b565b60008480602001905181019061007591906118a3565b909250905061008261164a565b6020810182905282815260005b85518110156100ce576100c48682815181106100ad576100ad611926565b60200260200101518361011990919063ffffffff16565b915060010161008f565b50805181906000906100e3908290602061166a565b506020918201519101556100f76000610275565b935060008061010681806116a8565b6020820160009055505050505092915050565b61012161164a565b600083602001805161013290611984565b908190529050600161014660206002611adc565b6101509190611aef565b811115610189576040517f8eab04bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b602081101561023c57816001166001036101c5578451849082602081106101b5576101b5611926565b60200201525083915061026f9050565b845181602081106101d8576101d8611926565b6020020151846040516020016101f8929190918252602082015260400190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209350600191821c910161018c565b506040517f8eab04bb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b60208101546000908082036102ac57507f27ae5ba08d7291c96c8cbddcc148bf48a6d68c7974b94356f53754ef6171d75792915050565b60008360018316156102ce578054600052600060205260406000209350610b81565b60028316156103135760018101546000527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb56020526040600020935060019150610b81565b60048316156103585760028101546000527fb4c11951957c6f8f642c4af61cd6b24640fec6dc7fc607ee8206a99e92410d306020526040600020935060029150610b81565b600883161561039d5760038101546000527f21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba856020526040600020935060039150610b81565b60108316156103e25760048101546000527fe58769b32a1beaf1ea27375a44095a0d1fb664ce2dd358e7fcbfb78c26a193446020526040600020935060049150610b81565b60208316156104275760058101546000527f0eb01ebfc9ed27500cd4dfc979272d1f0913cc9f66540d7e8005811109e1cf2d6020526040600020935060059150610b81565b604083161561046c5760068101546000527f887c22bd8750d34016ac3c66b5ff102dacdd73f6b014e710b51e8022af9a19686020526040600020935060069150610b81565b60808316156104b15760078101546000527fffd70157e48063fc33c97a050f7f640233bf646cc98d9524c6b92bcf3ab56f836020526040600020935060079150610b81565b6101008316156104f75760088101546000527f9867cc5f7f196b93bae1e27e6320742445d290f2263827498b54fec539f756af6020526040600020935060089150610b81565b61020083161561053d5760098101546000527fcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e06020526040600020935060099150610b81565b61040083161561058357600a8101546000527ff9dc3e7fe016e050eff260334f18a5d4fe391d82092319f5964f2e2eb7c1c3a560205260406000209350600a9150610b81565b6108008316156105c957600b8101546000527ff8b13a49e282f609c317a833fb8d976d11517c571d1221a265d25af778ecf89260205260406000209350600b9150610b81565b61100083161561060f57600c8101546000527f3490c6ceeb450aecdc82e28293031d10c7d73bf85e57bf041a97360aa2c5d99c60205260406000209350600c9150610b81565b61200083161561065557600d8101546000527fc1df82d9c4b87413eae2ef048f94b4d3554cea73d92b0f7af96e0271c691e2bb60205260406000209350600d9150610b81565b61400083161561069b57600e8101546000527f5c67add7c6caf302256adedf7ab114da0acfe870d449a3a489f781d659e8becc60205260406000209350600e9150610b81565b6180008316156106e157600f8101546000527fda7bce9f4e8618b6bd2f4132ce798cdc7a60e7e1460a7299e3c6342a579626d260205260406000209350600f9150610b81565b620100008316156107285760108101546000527f2733e50f526ec2fa19a22b31e8ed50f23cd1fdf94c9154ed3a7609a2f1ff981f6020526040600020935060109150610b81565b6202000083161561076f5760118101546000527fe1d3b5c807b281e4683cc6d6315cf95b9ade8641defcb32372f1c126e398ef7a6020526040600020935060119150610b81565b620400008316156107b65760128101546000527f5a2dce0a8a7f68bb74560f8f71837c2c2ebbcbf7fffb42ae1896f13f7c7479a06020526040600020935060129150610b81565b620800008316156107fd5760138101546000527fb46a28b6f55540f89444f63de0378e3d121be09e06cc9ded1c20e65876d36aa06020526040600020935060139150610b81565b621000008316156108445760148101546000527fc65e9645644786b620e2dd2ad648ddfcbf4a7e5b1a3a4ecfe7f64667a3f0b7e26020526040600020935060149150610b81565b6220000083161561088b5760158101546000527ff4418588ed35a2458cffeb39b93d26f18d2ab13bdce6aee58e7b99359ec2dfd96020526040600020935060159150610b81565b624000008316156108d25760168101546000527f5a9c16dc00d6ef18b7933a6f8dc65ccb55667138776f7dea101070dc8796e3776020526040600020935060169150610b81565b628000008316156109195760178101546000527f4df84f40ae0c8229d0d6069e5c8f39a7c299677a09d367fc7b05e3bc380ee6526020526040600020935060179150610b81565b63010000008316156109615760188101546000527fcdc72595f74c7b1043d0e1ffbab734648c838dfb0527d971b602bc216c9619ef6020526040600020935060189150610b81565b63020000008316156109a95760198101546000527f0abf5ac974a1ed57f4050aa510dd9c74f508277b39d7973bb2dfccc5eeb0618d6020526040600020935060199150610b81565b63040000008316156109f157601a8101546000527fb8cd74046ff337f0a7bf2c8e03e10f642c1886798d71806ab1e888d9e5ee87d060205260406000209350601a9150610b81565b6308000000831615610a3957601b8101546000527f838c5655cb21c6cb83313b5a631175dff4963772cce9108188b34ac87c81c41e60205260406000209350601b9150610b81565b6310000000831615610a8157601c8101546000527f662ee4dd2dd7b2bc707961b1e646c4047669dcb6584f0d8d770daf5d7e7deb2e60205260406000209350601c9150610b81565b6320000000831615610ac957601d8101546000527f388ab20e2573d171a88108e79d820e98f26c0b84aa8b2f4aa4968dbb818ea32260205260406000209350601d9150610b81565b6340000000831615610b1157601e8101546000527f93237c50ba75ee485f4c22adf2f741400bdf8d6a9cc7df7ecae576221665d73560205260406000209350601e9150610b81565b6380000000831615610b5957601f8101546000527f8448818bb4ae4562849e949e17ac16e0be16688e156b5cf15e098c627c0056a960205260406000209350601f9150610b81565b7f27ae5ba08d7291c96c8cbddcc148bf48a6d68c7974b94356f53754ef6171d7579350602091505b601e8211611623576001821015610bdf57600283168015610bad57600182015460005284602052610bd6565b846000527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb56020525b50604060002093505b6002821015610c3557600483168015610c0357600282015460005284602052610c2c565b846000527fb4c11951957c6f8f642c4af61cd6b24640fec6dc7fc607ee8206a99e92410d306020525b50604060002093505b6003821015610c8b57600883168015610c5957600382015460005284602052610c82565b846000527f21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba856020525b50604060002093505b6004821015610ce157601083168015610caf57600482015460005284602052610cd8565b846000527fe58769b32a1beaf1ea27375a44095a0d1fb664ce2dd358e7fcbfb78c26a193446020525b50604060002093505b6005821015610d3757602083168015610d0557600582015460005284602052610d2e565b846000527f0eb01ebfc9ed27500cd4dfc979272d1f0913cc9f66540d7e8005811109e1cf2d6020525b50604060002093505b6006821015610d8d57604083168015610d5b57600682015460005284602052610d84565b846000527f887c22bd8750d34016ac3c66b5ff102dacdd73f6b014e710b51e8022af9a19686020525b50604060002093505b6007821015610de357608083168015610db157600782015460005284602052610dda565b846000527fffd70157e48063fc33c97a050f7f640233bf646cc98d9524c6b92bcf3ab56f836020525b50604060002093505b6008821015610e3a5761010083168015610e0857600882015460005284602052610e31565b846000527f9867cc5f7f196b93bae1e27e6320742445d290f2263827498b54fec539f756af6020525b50604060002093505b6009821015610e915761020083168015610e5f57600982015460005284602052610e88565b846000527fcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e06020525b50604060002093505b600a821015610ee85761040083168015610eb657600a82015460005284602052610edf565b846000527ff9dc3e7fe016e050eff260334f18a5d4fe391d82092319f5964f2e2eb7c1c3a56020525b50604060002093505b600b821015610f3f5761080083168015610f0d57600b82015460005284602052610f36565b846000527ff8b13a49e282f609c317a833fb8d976d11517c571d1221a265d25af778ecf8926020525b50604060002093505b600c821015610f965761100083168015610f6457600c82015460005284602052610f8d565b846000527f3490c6ceeb450aecdc82e28293031d10c7d73bf85e57bf041a97360aa2c5d99c6020525b50604060002093505b600d821015610fed5761200083168015610fbb57600d82015460005284602052610fe4565b846000527fc1df82d9c4b87413eae2ef048f94b4d3554cea73d92b0f7af96e0271c691e2bb6020525b50604060002093505b600e821015611044576140008316801561101257600e8201546000528460205261103b565b846000527f5c67add7c6caf302256adedf7ab114da0acfe870d449a3a489f781d659e8becc6020525b50604060002093505b600f82101561109b576180008316801561106957600f82015460005284602052611092565b846000527fda7bce9f4e8618b6bd2f4132ce798cdc7a60e7e1460a7299e3c6342a579626d26020525b50604060002093505b60108210156110f35762010000831680156110c1576010820154600052846020526110ea565b846000527f2733e50f526ec2fa19a22b31e8ed50f23cd1fdf94c9154ed3a7609a2f1ff981f6020525b50604060002093505b601182101561114b57620200008316801561111957601182015460005284602052611142565b846000527fe1d3b5c807b281e4683cc6d6315cf95b9ade8641defcb32372f1c126e398ef7a6020525b50604060002093505b60128210156111a35762040000831680156111715760128201546000528460205261119a565b846000527f5a2dce0a8a7f68bb74560f8f71837c2c2ebbcbf7fffb42ae1896f13f7c7479a06020525b50604060002093505b60138210156111fb5762080000831680156111c9576013820154600052846020526111f2565b846000527fb46a28b6f55540f89444f63de0378e3d121be09e06cc9ded1c20e65876d36aa06020525b50604060002093505b60148210156112535762100000831680156112215760148201546000528460205261124a565b846000527fc65e9645644786b620e2dd2ad648ddfcbf4a7e5b1a3a4ecfe7f64667a3f0b7e26020525b50604060002093505b60158210156112ab576220000083168015611279576015820154600052846020526112a2565b846000527ff4418588ed35a2458cffeb39b93d26f18d2ab13bdce6aee58e7b99359ec2dfd96020525b50604060002093505b60168210156113035762400000831680156112d1576016820154600052846020526112fa565b846000527f5a9c16dc00d6ef18b7933a6f8dc65ccb55667138776f7dea101070dc8796e3776020525b50604060002093505b601782101561135b57628000008316801561132957601782015460005284602052611352565b846000527f4df84f40ae0c8229d0d6069e5c8f39a7c299677a09d367fc7b05e3bc380ee6526020525b50604060002093505b60188210156113b457630100000083168015611382576018820154600052846020526113ab565b846000527fcdc72595f74c7b1043d0e1ffbab734648c838dfb0527d971b602bc216c9619ef6020525b50604060002093505b601982101561140d576302000000831680156113db57601982015460005284602052611404565b846000527f0abf5ac974a1ed57f4050aa510dd9c74f508277b39d7973bb2dfccc5eeb0618d6020525b50604060002093505b601a8210156114665763040000008316801561143457601a8201546000528460205261145d565b846000527fb8cd74046ff337f0a7bf2c8e03e10f642c1886798d71806ab1e888d9e5ee87d06020525b50604060002093505b601b8210156114bf5763080000008316801561148d57601b820154600052846020526114b6565b846000527f838c5655cb21c6cb83313b5a631175dff4963772cce9108188b34ac87c81c41e6020525b50604060002093505b601c821015611518576310000000831680156114e657601c8201546000528460205261150f565b846000527f662ee4dd2dd7b2bc707961b1e646c4047669dcb6584f0d8d770daf5d7e7deb2e6020525b50604060002093505b601d8210156115715763200000008316801561153f57601d82015460005284602052611568565b846000527f388ab20e2573d171a88108e79d820e98f26c0b84aa8b2f4aa4968dbb818ea3226020525b50604060002093505b601e8210156115ca5763400000008316801561159857601e820154600052846020526115c1565b846000527f93237c50ba75ee485f4c22adf2f741400bdf8d6a9cc7df7ecae576221665d7356020525b50604060002093505b601f821015611623576380000000831680156115f157601f8201546000528460205261161a565b846000527f8448818bb4ae4562849e949e17ac16e0be16688e156b5cf15e098c627c0056a96020525b50604060002093505b505050919050565b6040518061040001604052806020906020820280368337509192915050565b604051806040016040528061165d61162b565b8152602001600081525090565b8260208101928215611698579160200282015b8281111561169857825182559160200191906001019061167d565b506116a49291506116ba565b5090565b506116b79060208101906116ba565b50565b5b808211156116a457600081556001016116bb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611745576117456116cf565b604052919050565b600082601f83011261175e57600080fd5b8135602067ffffffffffffffff82111561177a5761177a6116cf565b8160051b6117898282016116fe565b92835284810182019282810190878511156117a357600080fd5b83870192505b848310156117c2578235825291830191908301906117a9565b979650505050505050565b600080604083850312156117e057600080fd5b823567ffffffffffffffff808211156117f857600080fd5b818501915085601f83011261180c57600080fd5b8135602082821115611820576118206116cf565b611850817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116016116fe565b828152888284870101111561186457600080fd5b8282860183830137600092810182019290925290945085013591508082111561188c57600080fd5b506118998582860161174d565b9150509250929050565b60008061042083850312156118b757600080fd5b83601f8401126118c657600080fd5b60405161040080820182811067ffffffffffffffff821117156118eb576118eb6116cf565b604052840181868211156118fe57600080fd5b855b82811015611918578051825260209182019101611900565b505051909590945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036119b5576119b5611955565b5060010190565b600181815b80851115611a1557817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156119fb576119fb611955565b80851615611a0857918102915b93841c93908002906119c1565b509250929050565b600082611a2c5750600161026f565b81611a395750600061026f565b8160018114611a4f5760028114611a5957611a75565b600191505061026f565b60ff841115611a6a57611a6a611955565b50506001821b61026f565b5060208310610133831016604e8410600b8410161715611a98575081810a61026f565b611aa283836119bc565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611ad457611ad4611955565b029392505050565b6000611ae88383611a1d565b9392505050565b8181038181111561026f5761026f61195556fea2646970667358221220ad69055cbc679ceef4d5dcb87a3819b8c31536d13485da7871a7be255a6db0e264736f6c63430008130033",
    "sourceMap": "180:1247:56:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;651:774;;;;;;:::i;:::-;;:::i;:::-;;;2460:25:113;;;2448:2;2433:18;651:774:56;;;;;;;;762:23;793:41;;:::i;:::-;840:18;906:9;895:45;;;;;;;;;;;;:::i;:::-;865:75;;-1:-1:-1;865:75:56;-1:-1:-1;947:27:56;;:::i;:::-;980:11;;;:24;;;1010:28;;;:12;1045:143;1067:15;:22;1062:2;:27;1045:143;;;1108:33;1121:15;1137:2;1121:19;;;;;;;;:::i;:::-;;;;;;;1108:5;:12;;:33;;;;:::i;:::-;1100:41;-1:-1:-1;1169:4:56;;1045:143;;;-1:-1:-1;1341:17:56;;1353:5;;1341:9;;:17;;:9;;:17;;:::i;:::-;-1:-1:-1;1341:17:56;;;;;;;;1382:16;:9;:14;:16::i;:::-;1364:34;-1:-1:-1;1411:9:56;;1404:16;1411:9;;1404:16;:::i;:::-;;;;;;;;;787:638;;;651:774;;;;:::o;4911:1332:40:-;4982:11;;:::i;:::-;5098:12;5115:4;:10;;5113:12;;;;;:::i;:::-;;;;;;-1:-1:-1;463:1:40;445:15;400:2;445:1;:15;:::i;:::-;:19;;;;:::i;:::-;5135:4;:17;5131:60;;;5161:30;;;;;;;;;;;;;;5131:60;5425:9;5420:626;400:2;5436:1;:14;5420:626;;;5564:4;5571:1;5564:8;5577:1;5563:15;5559:202;;5710:11;;5727:4;;5722:1;5710:14;;;;;;;:::i;:::-;;;;:21;-1:-1:-1;5748:4:40;;-1:-1:-1;5741:11:40;;-1:-1:-1;5741:11:40;5559:202;5899:11;;5911:1;5899:14;;;;;;;:::i;:::-;;;;;5915:4;5882:38;;;;;;;;5700:19:113;;;5744:2;5735:12;;5728:28;5781:2;5772:12;;5543:247;5882:38:40;;;;;;;;;;;;;;5872:49;;5882:38;5872:49;;;;;-1:-1:-1;5938:1:40;5929:10;;;;6028:3;5420:626;;;;6208:30;;;;;;;;;;;;;;4911:1332;;;;;:::o;6396:18012::-;6493:10;;;;6452:16;;6514:11;;;6510:43;;-1:-1:-1;6542:4:40;;6396:18012;-1:-1:-1;;6396:18012:40:o;6510:43::-;6559:9;6608;6692:1;6684:6;6680:14;6677:162;;;6725:9;6719:16;6716:1;6709:27;6762:3;6756:4;6749:17;6804:4;6801:1;6791:18;6779:30;;6822:5;;6677:162;6866:9;6854:22;;6851:197;;;6922:1;6911:9;6907:17;6901:24;6898:1;6891:35;6952:3;6946:4;6939:17;6994:4;6991:1;6981:18;6969:30;;7017:1;7012:6;;7031:5;;6851:197;7075:9;7063:22;;7060:197;;;7131:1;7120:9;7116:17;7110:24;7107:1;7100:35;7161:3;7155:4;7148:17;7203:4;7200:1;7190:18;7178:30;;7226:1;7221:6;;7240:5;;7060:197;7284:9;7272:22;;7269:197;;;7340:1;7329:9;7325:17;7319:24;7316:1;7309:35;7370:3;7364:4;7357:17;7412:4;7409:1;7399:18;7387:30;;7435:1;7430:6;;7449:5;;7269:197;7493:9;7481:22;;7478:197;;;7549:1;7538:9;7534:17;7528:24;7525:1;7518:35;7579:3;7573:4;7566:17;7621:4;7618:1;7608:18;7596:30;;7644:1;7639:6;;7658:5;;7478:197;7702:9;7690:22;;7687:197;;;7758:1;7747:9;7743:17;7737:24;7734:1;7727:35;7788:3;7782:4;7775:17;7830:4;7827:1;7817:18;7805:30;;7853:1;7848:6;;7867:5;;7687:197;7911:9;7899:22;;7896:197;;;7967:1;7956:9;7952:17;7946:24;7943:1;7936:35;7997:3;7991:4;7984:17;8039:4;8036:1;8026:18;8014:30;;8062:1;8057:6;;8076:5;;7896:197;8120:9;8108:22;;8105:197;;;8176:1;8165:9;8161:17;8155:24;8152:1;8145:35;8206:3;8200:4;8193:17;8248:4;8245:1;8235:18;8223:30;;8271:1;8266:6;;8285:5;;8105:197;8329:9;8317:22;;8314:197;;;8385:1;8374:9;8370:17;8364:24;8361:1;8354:35;8415:3;8409:4;8402:17;8457:4;8454:1;8444:18;8432:30;;8480:1;8475:6;;8494:5;;8314:197;8538:9;8526:22;;8523:197;;;8594:1;8583:9;8579:17;8573:24;8570:1;8563:35;8624:3;8618:4;8611:17;8666:4;8663:1;8653:18;8641:30;;8689:1;8684:6;;8703:5;;8523:197;8747:10;8735:23;;8732:201;;;8804:2;8793:9;8789:18;8783:25;8780:1;8773:36;8835:4;8829;8822:18;8878:4;8875:1;8865:18;8853:30;;8901:2;8896:7;;8916:5;;8732:201;8960:10;8948:23;;8945:201;;;9017:2;9006:9;9002:18;8996:25;8993:1;8986:36;9048:4;9042;9035:18;9091:4;9088:1;9078:18;9066:30;;9114:2;9109:7;;9129:5;;8945:201;9173:10;9161:23;;9158:201;;;9230:2;9219:9;9215:18;9209:25;9206:1;9199:36;9261:4;9255;9248:18;9304:4;9301:1;9291:18;9279:30;;9327:2;9322:7;;9342:5;;9158:201;9386:10;9374:23;;9371:201;;;9443:2;9432:9;9428:18;9422:25;9419:1;9412:36;9474:4;9468;9461:18;9517:4;9514:1;9504:18;9492:30;;9540:2;9535:7;;9555:5;;9371:201;9599:10;9587:23;;9584:201;;;9656:2;9645:9;9641:18;9635:25;9632:1;9625:36;9687:4;9681;9674:18;9730:4;9727:1;9717:18;9705:30;;9753:2;9748:7;;9768:5;;9584:201;9812:10;9800:23;;9797:201;;;9869:2;9858:9;9854:18;9848:25;9845:1;9838:36;9900:4;9894;9887:18;9943:4;9940:1;9930:18;9918:30;;9966:2;9961:7;;9981:5;;9797:201;10025:10;10013:23;;10010:201;;;10082:2;10071:9;10067:18;10061:25;10058:1;10051:36;10113:4;10107;10100:18;10156:4;10153:1;10143:18;10131:30;;10179:2;10174:7;;10194:5;;10010:201;10238:10;10226:23;;10223:201;;;10295:2;10284:9;10280:18;10274:25;10271:1;10264:36;10326:4;10320;10313:18;10369:4;10366:1;10356:18;10344:30;;10392:2;10387:7;;10407:5;;10223:201;10451:10;10439:23;;10436:201;;;10508:2;10497:9;10493:18;10487:25;10484:1;10477:36;10539:4;10533;10526:18;10582:4;10579:1;10569:18;10557:30;;10605:2;10600:7;;10620:5;;10436:201;10664:10;10652:23;;10649:201;;;10721:2;10710:9;10706:18;10700:25;10697:1;10690:36;10752:4;10746;10739:18;10795:4;10792:1;10782:18;10770:30;;10818:2;10813:7;;10833:5;;10649:201;10877:10;10865:23;;10862:201;;;10934:2;10923:9;10919:18;10913:25;10910:1;10903:36;10965:4;10959;10952:18;11008:4;11005:1;10995:18;10983:30;;11031:2;11026:7;;11046:5;;10862:201;11090:10;11078:23;;11075:201;;;11147:2;11136:9;11132:18;11126:25;11123:1;11116:36;11178:4;11172;11165:18;11221:4;11218:1;11208:18;11196:30;;11244:2;11239:7;;11259:5;;11075:201;11303:10;11291:23;;11288:201;;;11360:2;11349:9;11345:18;11339:25;11336:1;11329:36;11391:4;11385;11378:18;11434:4;11431:1;11421:18;11409:30;;11457:2;11452:7;;11472:5;;11288:201;11516:10;11504:23;;11501:201;;;11573:2;11562:9;11558:18;11552:25;11549:1;11542:36;11604:4;11598;11591:18;11647:4;11644:1;11634:18;11622:30;;11670:2;11665:7;;11685:5;;11501:201;11729:10;11717:23;;11714:201;;;11786:2;11775:9;11771:18;11765:25;11762:1;11755:36;11817:4;11811;11804:18;11860:4;11857:1;11847:18;11835:30;;11883:2;11878:7;;11898:5;;11714:201;11942:10;11930:23;;11927:201;;;11999:2;11988:9;11984:18;11978:25;11975:1;11968:36;12030:4;12024;12017:18;12073:4;12070:1;12060:18;12048:30;;12096:2;12091:7;;12111:5;;11927:201;12155:10;12143:23;;12140:201;;;12212:2;12201:9;12197:18;12191:25;12188:1;12181:36;12243:4;12237;12230:18;12286:4;12283:1;12273:18;12261:30;;12309:2;12304:7;;12324:5;;12140:201;12368:10;12356:23;;12353:201;;;12425:2;12414:9;12410:18;12404:25;12401:1;12394:36;12456:4;12450;12443:18;12499:4;12496:1;12486:18;12474:30;;12522:2;12517:7;;12537:5;;12353:201;12581:10;12569:23;;12566:201;;;12638:2;12627:9;12623:18;12617:25;12614:1;12607:36;12669:4;12663;12656:18;12712:4;12709:1;12699:18;12687:30;;12735:2;12730:7;;12750:5;;12566:201;12794:10;12782:23;;12779:201;;;12851:2;12840:9;12836:18;12830:25;12827:1;12820:36;12882:4;12876;12869:18;12925:4;12922:1;12912:18;12900:30;;12948:2;12943:7;;12963:5;;12779:201;13007:10;12995:23;;12992:201;;;13064:2;13053:9;13049:18;13043:25;13040:1;13033:36;13095:4;13089;13082:18;13138:4;13135:1;13125:18;13113:30;;13161:2;13156:7;;13176:5;;12992:201;13220:10;13208:23;;13205:201;;;13277:2;13266:9;13262:18;13256:25;13253:1;13246:36;13308:4;13302;13295:18;13351:4;13348:1;13338:18;13326:30;;13374:2;13369:7;;13389:5;;13205:201;13430:4;13418:16;;13450:2;13445:7;;6650:6828;13497:2;13494:1;13491:9;13503:5;13488:22;13541:1;13538;13535:8;13532:335;;;13577:9;13565:22;;13600:88;;;;13756:1;13745:9;13741:17;13735:24;13732:1;13725:35;13788:8;13782:4;13775:22;13558:253;;13600:88;13633:8;13630:1;13623:19;13670:3;13664:4;13657:17;13558:253;;13850:4;13847:1;13837:18;13825:30;;13532:335;13888:1;13885;13882:8;13879:335;;;13924:9;13912:22;;13947:88;;;;14103:1;14092:9;14088:17;14082:24;14079:1;14072:35;14135:8;14129:4;14122:22;13905:253;;13947:88;13980:8;13977:1;13970:19;14017:3;14011:4;14004:17;13905:253;;14197:4;14194:1;14184:18;14172:30;;13879:335;14235:1;14232;14229:8;14226:335;;;14271:9;14259:22;;14294:88;;;;14450:1;14439:9;14435:17;14429:24;14426:1;14419:35;14482:8;14476:4;14469:22;14252:253;;14294:88;14327:8;14324:1;14317:19;14364:3;14358:4;14351:17;14252:253;;14544:4;14541:1;14531:18;14519:30;;14226:335;14582:1;14579;14576:8;14573:335;;;14618:9;14606:22;;14641:88;;;;14797:1;14786:9;14782:17;14776:24;14773:1;14766:35;14829:8;14823:4;14816:22;14599:253;;14641:88;14674:8;14671:1;14664:19;14711:3;14705:4;14698:17;14599:253;;14891:4;14888:1;14878:18;14866:30;;14573:335;14929:1;14926;14923:8;14920:335;;;14965:9;14953:22;;14988:88;;;;15144:1;15133:9;15129:17;15123:24;15120:1;15113:35;15176:8;15170:4;15163:22;14946:253;;14988:88;15021:8;15018:1;15011:19;15058:3;15052:4;15045:17;14946:253;;15238:4;15235:1;15225:18;15213:30;;14920:335;15276:1;15273;15270:8;15267:335;;;15312:9;15300:22;;15335:88;;;;15491:1;15480:9;15476:17;15470:24;15467:1;15460:35;15523:8;15517:4;15510:22;15293:253;;15335:88;15368:8;15365:1;15358:19;15405:3;15399:4;15392:17;15293:253;;15585:4;15582:1;15572:18;15560:30;;15267:335;15623:1;15620;15617:8;15614:335;;;15659:9;15647:22;;15682:88;;;;15838:1;15827:9;15823:17;15817:24;15814:1;15807:35;15870:8;15864:4;15857:22;15640:253;;15682:88;15715:8;15712:1;15705:19;15752:3;15746:4;15739:17;15640:253;;15932:4;15929:1;15919:18;15907:30;;15614:335;15970:1;15967;15964:8;15961:335;;;16006:9;15994:22;;16029:88;;;;16185:1;16174:9;16170:17;16164:24;16161:1;16154:35;16217:8;16211:4;16204:22;15987:253;;16029:88;16062:8;16059:1;16052:19;16099:3;16093:4;16086:17;15987:253;;16279:4;16276:1;16266:18;16254:30;;15961:335;16317:1;16314;16311:8;16308:335;;;16353:9;16341:22;;16376:88;;;;16532:1;16521:9;16517:17;16511:24;16508:1;16501:35;16564:8;16558:4;16551:22;16334:253;;16376:88;16409:8;16406:1;16399:19;16446:3;16440:4;16433:17;16334:253;;16626:4;16623:1;16613:18;16601:30;;16308:335;16664:2;16661:1;16658:9;16655:339;;;16701:10;16689:23;;16725:89;;;;16882:2;16871:9;16867:18;16861:25;16858:1;16851:36;16915:8;16909:4;16902:22;16682:256;;16725:89;16758:8;16755:1;16748:19;16795:4;16789;16782:18;16682:256;;16977:4;16974:1;16964:18;16952:30;;16655:339;17015:2;17012:1;17009:9;17006:339;;;17052:10;17040:23;;17076:89;;;;17233:2;17222:9;17218:18;17212:25;17209:1;17202:36;17266:8;17260:4;17253:22;17033:256;;17076:89;17109:8;17106:1;17099:19;17146:4;17140;17133:18;17033:256;;17328:4;17325:1;17315:18;17303:30;;17006:339;17366:2;17363:1;17360:9;17357:339;;;17403:10;17391:23;;17427:89;;;;17584:2;17573:9;17569:18;17563:25;17560:1;17553:36;17617:8;17611:4;17604:22;17384:256;;17427:89;17460:8;17457:1;17450:19;17497:4;17491;17484:18;17384:256;;17679:4;17676:1;17666:18;17654:30;;17357:339;17717:2;17714:1;17711:9;17708:339;;;17754:10;17742:23;;17778:89;;;;17935:2;17924:9;17920:18;17914:25;17911:1;17904:36;17968:8;17962:4;17955:22;17735:256;;17778:89;17811:8;17808:1;17801:19;17848:4;17842;17835:18;17735:256;;18030:4;18027:1;18017:18;18005:30;;17708:339;18068:2;18065:1;18062:9;18059:339;;;18105:10;18093:23;;18129:89;;;;18286:2;18275:9;18271:18;18265:25;18262:1;18255:36;18319:8;18313:4;18306:22;18086:256;;18129:89;18162:8;18159:1;18152:19;18199:4;18193;18186:18;18086:256;;18381:4;18378:1;18368:18;18356:30;;18059:339;18419:2;18416:1;18413:9;18410:339;;;18456:10;18444:23;;18480:89;;;;18637:2;18626:9;18622:18;18616:25;18613:1;18606:36;18670:8;18664:4;18657:22;18437:256;;18480:89;18513:8;18510:1;18503:19;18550:4;18544;18537:18;18437:256;;18732:4;18729:1;18719:18;18707:30;;18410:339;18770:2;18767:1;18764:9;18761:339;;;18807:10;18795:23;;18831:89;;;;18988:2;18977:9;18973:18;18967:25;18964:1;18957:36;19021:8;19015:4;19008:22;18788:256;;18831:89;18864:8;18861:1;18854:19;18901:4;18895;18888:18;18788:256;;19083:4;19080:1;19070:18;19058:30;;18761:339;19121:2;19118:1;19115:9;19112:339;;;19158:10;19146:23;;19182:89;;;;19339:2;19328:9;19324:18;19318:25;19315:1;19308:36;19372:8;19366:4;19359:22;19139:256;;19182:89;19215:8;19212:1;19205:19;19252:4;19246;19239:18;19139:256;;19434:4;19431:1;19421:18;19409:30;;19112:339;19472:2;19469:1;19466:9;19463:339;;;19509:10;19497:23;;19533:89;;;;19690:2;19679:9;19675:18;19669:25;19666:1;19659:36;19723:8;19717:4;19710:22;19490:256;;19533:89;19566:8;19563:1;19556:19;19603:4;19597;19590:18;19490:256;;19785:4;19782:1;19772:18;19760:30;;19463:339;19823:2;19820:1;19817:9;19814:339;;;19860:10;19848:23;;19884:89;;;;20041:2;20030:9;20026:18;20020:25;20017:1;20010:36;20074:8;20068:4;20061:22;19841:256;;19884:89;19917:8;19914:1;19907:19;19954:4;19948;19941:18;19841:256;;20136:4;20133:1;20123:18;20111:30;;19814:339;20174:2;20171:1;20168:9;20165:339;;;20211:10;20199:23;;20235:89;;;;20392:2;20381:9;20377:18;20371:25;20368:1;20361:36;20425:8;20419:4;20412:22;20192:256;;20235:89;20268:8;20265:1;20258:19;20305:4;20299;20292:18;20192:256;;20487:4;20484:1;20474:18;20462:30;;20165:339;20525:2;20522:1;20519:9;20516:339;;;20562:10;20550:23;;20586:89;;;;20743:2;20732:9;20728:18;20722:25;20719:1;20712:36;20776:8;20770:4;20763:22;20543:256;;20586:89;20619:8;20616:1;20609:19;20656:4;20650;20643:18;20543:256;;20838:4;20835:1;20825:18;20813:30;;20516:339;20876:2;20873:1;20870:9;20867:339;;;20913:10;20901:23;;20937:89;;;;21094:2;21083:9;21079:18;21073:25;21070:1;21063:36;21127:8;21121:4;21114:22;20894:256;;20937:89;20970:8;20967:1;20960:19;21007:4;21001;20994:18;20894:256;;21189:4;21186:1;21176:18;21164:30;;20867:339;21227:2;21224:1;21221:9;21218:339;;;21264:10;21252:23;;21288:89;;;;21445:2;21434:9;21430:18;21424:25;21421:1;21414:36;21478:8;21472:4;21465:22;21245:256;;21288:89;21321:8;21318:1;21311:19;21358:4;21352;21345:18;21245:256;;21540:4;21537:1;21527:18;21515:30;;21218:339;21578:2;21575:1;21572:9;21569:339;;;21615:10;21603:23;;21639:89;;;;21796:2;21785:9;21781:18;21775:25;21772:1;21765:36;21829:8;21823:4;21816:22;21596:256;;21639:89;21672:8;21669:1;21662:19;21709:4;21703;21696:18;21596:256;;21891:4;21888:1;21878:18;21866:30;;21569:339;21929:2;21926:1;21923:9;21920:339;;;21966:10;21954:23;;21990:89;;;;22147:2;22136:9;22132:18;22126:25;22123:1;22116:36;22180:8;22174:4;22167:22;21947:256;;21990:89;22023:8;22020:1;22013:19;22060:4;22054;22047:18;21947:256;;22242:4;22239:1;22229:18;22217:30;;21920:339;22280:2;22277:1;22274:9;22271:339;;;22317:10;22305:23;;22341:89;;;;22498:2;22487:9;22483:18;22477:25;22474:1;22467:36;22531:8;22525:4;22518:22;22298:256;;22341:89;22374:8;22371:1;22364:19;22411:4;22405;22398:18;22298:256;;22593:4;22590:1;22580:18;22568:30;;22271:339;22631:2;22628:1;22625:9;22622:339;;;22668:10;22656:23;;22692:89;;;;22849:2;22838:9;22834:18;22828:25;22825:1;22818:36;22882:8;22876:4;22869:22;22649:256;;22692:89;22725:8;22722:1;22715:19;22762:4;22756;22749:18;22649:256;;22944:4;22941:1;22931:18;22919:30;;22622:339;22982:2;22979:1;22976:9;22973:339;;;23019:10;23007:23;;23043:89;;;;23200:2;23189:9;23185:18;23179:25;23176:1;23169:36;23233:8;23227:4;23220:22;23000:256;;23043:89;23076:8;23073:1;23066:19;23113:4;23107;23100:18;23000:256;;23295:4;23292:1;23282:18;23270:30;;22973:339;23333:2;23330:1;23327:9;23324:339;;;23370:10;23358:23;;23394:89;;;;23551:2;23540:9;23536:18;23530:25;23527:1;23520:36;23584:8;23578:4;23571:22;23351:256;;23394:89;23427:8;23424:1;23417:19;23464:4;23458;23451:18;23351:256;;23646:4;23643:1;23633:18;23621:30;;23324:339;23684:2;23681:1;23678:9;23675:339;;;23721:10;23709:23;;23745:89;;;;23902:2;23891:9;23887:18;23881:25;23878:1;23871:36;23935:8;23929:4;23922:22;23702:256;;23745:89;23778:8;23775:1;23768:19;23815:4;23809;23802:18;23702:256;;23997:4;23994:1;23984:18;23972:30;;23675:339;24035:2;24032:1;24029:9;24026:339;;;24072:10;24060:23;;24096:89;;;;24253:2;24242:9;24238:18;24232:25;24229:1;24222:36;24286:8;24280:4;24273:22;24053:256;;24096:89;24129:8;24126:1;24119:19;24166:4;24160;24153:18;24053:256;;24348:4;24345:1;24335:18;24323:30;;24026:339;6629:2;6583:17821;;6396:18012;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;14:184:113;66:77;63:1;56:88;163:4;160:1;153:15;187:4;184:1;177:15;203:334;274:2;268:9;330:2;320:13;;335:66;316:86;304:99;;433:18;418:34;;454:22;;;415:62;412:88;;;480:18;;:::i;:::-;516:2;509:22;203:334;;-1:-1:-1;203:334:113:o;542:712::-;596:5;649:3;642:4;634:6;630:17;626:27;616:55;;667:1;664;657:12;616:55;703:6;690:20;729:4;752:18;748:2;745:26;742:52;;;774:18;;:::i;:::-;820:2;817:1;813:10;843:28;867:2;863;859:11;843:28;:::i;:::-;905:15;;;975;;;971:24;;;936:12;;;;1007:15;;;1004:35;;;1035:1;1032;1025:12;1004:35;1071:2;1063:6;1059:15;1048:26;;1083:142;1099:6;1094:3;1091:15;1083:142;;;1165:17;;1153:30;;1116:12;;;;1203;;;;1083:142;;;1243:5;542:712;-1:-1:-1;;;;;;;542:712:113:o;1259:1050::-;1361:6;1369;1422:2;1410:9;1401:7;1397:23;1393:32;1390:52;;;1438:1;1435;1428:12;1390:52;1478:9;1465:23;1507:18;1548:2;1540:6;1537:14;1534:34;;;1564:1;1561;1554:12;1534:34;1602:6;1591:9;1587:22;1577:32;;1647:7;1640:4;1636:2;1632:13;1628:27;1618:55;;1669:1;1666;1659:12;1618:55;1705:2;1692:16;1727:4;1750:2;1746;1743:10;1740:36;;;1756:18;;:::i;:::-;1798:112;1906:2;1837:66;1830:4;1826:2;1822:13;1818:86;1814:95;1798:112;:::i;:::-;1933:2;1926:5;1919:17;1973:7;1968:2;1963;1959;1955:11;1951:20;1948:33;1945:53;;;1994:1;1991;1984:12;1945:53;2049:2;2044;2040;2036:11;2031:2;2024:5;2020:14;2007:45;2093:1;2072:14;;;2068:23;;2061:34;;;;2076:5;;-1:-1:-1;2157:18:113;;2144:32;;-1:-1:-1;2188:16:113;;;2185:36;;;2217:1;2214;2207:12;2185:36;;2240:63;2295:7;2284:8;2273:9;2269:24;2240:63;:::i;:::-;2230:73;;;1259:1050;;;;;:::o;2496:837::-;2599:6;2607;2660:4;2648:9;2639:7;2635:23;2631:34;2628:54;;;2678:1;2675;2668:12;2628:54;2727:7;2720:4;2709:9;2705:20;2701:34;2691:62;;2749:1;2746;2739:12;2691:62;2782:2;2776:9;2804:4;2847:2;2839:6;2835:15;2916:6;2904:10;2901:22;2880:18;2868:10;2865:34;2862:62;2859:88;;;2927:18;;:::i;:::-;2963:2;2956:22;3027:18;;2998:6;3057:19;;;3054:39;;;3089:1;3086;3079:12;3054:39;3113:9;3131:139;3147:6;3142:3;3139:15;3131:139;;;3215:10;;3203:23;;3255:4;3246:14;;;;3164;3131:139;;;-1:-1:-1;;3314:13:113;3289:6;;3314:13;;-1:-1:-1;2496:837:113;-1:-1:-1;;;2496:837:113:o;3338:184::-;3390:77;3387:1;3380:88;3487:4;3484:1;3477:15;3511:4;3508:1;3501:15;3527:184;3579:77;3576:1;3569:88;3676:4;3673:1;3666:15;3700:4;3697:1;3690:15;3716:195;3755:3;3786:66;3779:5;3776:77;3773:103;;3856:18;;:::i;:::-;-1:-1:-1;3903:1:113;3892:13;;3716:195::o;3916:482::-;4005:1;4048:5;4005:1;4062:330;4083:7;4073:8;4070:21;4062:330;;;4202:4;4134:66;4130:77;4124:4;4121:87;4118:113;;;4211:18;;:::i;:::-;4261:7;4251:8;4247:22;4244:55;;;4281:16;;;;4244:55;4360:22;;;;4320:15;;;;4062:330;;;4066:3;3916:482;;;;;:::o;4403:866::-;4452:5;4482:8;4472:80;;-1:-1:-1;4523:1:113;4537:5;;4472:80;4571:4;4561:76;;-1:-1:-1;4608:1:113;4622:5;;4561:76;4653:4;4671:1;4666:59;;;;4739:1;4734:130;;;;4646:218;;4666:59;4696:1;4687:10;;4710:5;;;4734:130;4771:3;4761:8;4758:17;4755:43;;;4778:18;;:::i;:::-;-1:-1:-1;;4834:1:113;4820:16;;4849:5;;4646:218;;4948:2;4938:8;4935:16;4929:3;4923:4;4920:13;4916:36;4910:2;4900:8;4897:16;4892:2;4886:4;4883:12;4879:35;4876:77;4873:159;;;-1:-1:-1;4985:19:113;;;5017:5;;4873:159;5064:34;5089:8;5083:4;5064:34;:::i;:::-;5194:6;5126:66;5122:79;5113:7;5110:92;5107:118;;;5205:18;;:::i;:::-;5243:20;;4403:866;-1:-1:-1;;;4403:866:113:o;5274:131::-;5334:5;5363:36;5390:8;5384:4;5363:36;:::i;:::-;5354:45;5274:131;-1:-1:-1;;;5274:131:113:o;5410:128::-;5477:9;;;5498:11;;;5495:37;;;5512:18;;:::i",
    "linkReferences": {}
  },
  "methodIdentifiers": {
    "calculateRoot(bytes,bytes32[])": "8130a020"
  },
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"MerkleLib__insert_treeIsFull\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_treeData\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"_leavesToInsert\",\"type\":\"bytes32[]\"}],\"name\":\"calculateRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"_calculatedRoot\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"calculateRoot(bytes,bytes32[])\":{\"params\":{\"_treeData\":\"The encoded Merkle tree data parameters for the tree verifier.\"},\"returns\":{\"_calculatedRoot\":\"The calculated Merkle root hash.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"calculateRoot(bytes,bytes32[])\":{\"notice\":\"Calculates the Merkle root hash given a set of Merkle tree branches and merkle tree leaves count.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"solidity/contracts/periphery/SparseMerkleTreeL32Verifier.sol\":\"SparseMerkleTreeL32Verifier\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[\":@defi-wonderland/=node_modules/@defi-wonderland/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":solmate/=node_modules/solmate/src/\"]},\"sources\":{\"solidity/contracts/libraries/MerkleLib.sol\":{\"keccak256\":\"0xed4a220b5b637b6acedf357e638c2d7581f23a83e0c34e9bfa8020689bec713a\",\"license\":\"MIT OR Apache-2.0\",\"urls\":[\"bzz-raw://1226b36c8e04d47f295f9e7ab586576e6c78a353095a1ea45ea5c25226d70dcd\",\"dweb:/ipfs/QmdtJd61h9aEfiKiE3asaLeGGs7ie8JdMkiGCJaGFbuUBD\"]},\"solidity/contracts/periphery/SparseMerkleTreeL32Verifier.sol\":{\"keccak256\":\"0xd82e96e31e01231d23c72650d7352c486d29046f4b7e0a23fd869e88be3078db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2942e6d1d4d738558c8513b796f6b6893d9cb11cdc105797873a72e5610a6687\",\"dweb:/ipfs/QmaX5EmQ7srDUEBB6HTcSnmgPvuAkHsnybsDrLuaFadGhc\"]},\"solidity/interfaces/ITreeVerifier.sol\":{\"keccak256\":\"0xa972e97e192769f790d29df93d4c20c85a4e2a71a4944b876af8f878e776dae3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://42dd99fd1f44780363b631b139038b6e4bed18384078588dec0dc367f4efac0e\",\"dweb:/ipfs/QmSATnXhsANXpLPpbr6XNuoqx2yURHccco4z4iGHiq92je\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.19+commit.7dd6d404"
    },
    "language": "Solidity",
    "output": {
      "abi": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "MerkleLib__insert_treeIsFull"
        },
        {
          "inputs": [
            {
              "internalType": "bytes",
              "name": "_treeData",
              "type": "bytes"
            },
            {
              "internalType": "bytes32[]",
              "name": "_leavesToInsert",
              "type": "bytes32[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "calculateRoot",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "_calculatedRoot",
              "type": "bytes32"
            }
          ]
        }
      ],
      "devdoc": {
        "kind": "dev",
        "methods": {
          "calculateRoot(bytes,bytes32[])": {
            "params": {
              "_treeData": "The encoded Merkle tree data parameters for the tree verifier."
            },
            "returns": {
              "_calculatedRoot": "The calculated Merkle root hash."
            }
          }
        },
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {
          "calculateRoot(bytes,bytes32[])": {
            "notice": "Calculates the Merkle root hash given a set of Merkle tree branches and merkle tree leaves count."
          }
        },
        "version": 1
      }
    },
    "settings": {
      "remappings": [
        "@defi-wonderland/=node_modules/@defi-wonderland/",
        "@openzeppelin/=node_modules/@openzeppelin/",
        "ds-test/=node_modules/ds-test/src/",
        "forge-std/=node_modules/forge-std/src/",
        "solmate/=node_modules/solmate/src/"
      ],
      "optimizer": {
        "enabled": true,
        "runs": 10000
      },
      "metadata": {
        "bytecodeHash": "ipfs"
      },
      "compilationTarget": {
        "solidity/contracts/periphery/SparseMerkleTreeL32Verifier.sol": "SparseMerkleTreeL32Verifier"
      },
      "libraries": {}
    },
    "sources": {
      "solidity/contracts/libraries/MerkleLib.sol": {
        "keccak256": "0xed4a220b5b637b6acedf357e638c2d7581f23a83e0c34e9bfa8020689bec713a",
        "urls": [
          "bzz-raw://1226b36c8e04d47f295f9e7ab586576e6c78a353095a1ea45ea5c25226d70dcd",
          "dweb:/ipfs/QmdtJd61h9aEfiKiE3asaLeGGs7ie8JdMkiGCJaGFbuUBD"
        ],
        "license": "MIT OR Apache-2.0"
      },
      "solidity/contracts/periphery/SparseMerkleTreeL32Verifier.sol": {
        "keccak256": "0xd82e96e31e01231d23c72650d7352c486d29046f4b7e0a23fd869e88be3078db",
        "urls": [
          "bzz-raw://2942e6d1d4d738558c8513b796f6b6893d9cb11cdc105797873a72e5610a6687",
          "dweb:/ipfs/QmaX5EmQ7srDUEBB6HTcSnmgPvuAkHsnybsDrLuaFadGhc"
        ],
        "license": "MIT"
      },
      "solidity/interfaces/ITreeVerifier.sol": {
        "keccak256": "0xa972e97e192769f790d29df93d4c20c85a4e2a71a4944b876af8f878e776dae3",
        "urls": [
          "bzz-raw://42dd99fd1f44780363b631b139038b6e4bed18384078588dec0dc367f4efac0e",
          "dweb:/ipfs/QmSATnXhsANXpLPpbr6XNuoqx2yURHccco4z4iGHiq92je"
        ],
        "license": "MIT"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "solidity/contracts/periphery/SparseMerkleTreeL32Verifier.sol",
    "id": 42343,
    "exportedSymbols": {
      "ITreeVerifier": [
        42377
      ],
      "MerkleLib": [
        36001
      ],
      "SparseMerkleTreeL32Verifier": [
        42342
      ]
    },
    "nodeType": "SourceUnit",
    "src": "32:1396:56",
    "nodes": [
      {
        "id": 42230,
        "nodeType": "PragmaDirective",
        "src": "32:24:56",
        "nodes": [],
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".19"
        ]
      },
      {
        "id": 42232,
        "nodeType": "ImportDirective",
        "src": "58:65:56",
        "nodes": [],
        "absolutePath": "solidity/interfaces/ITreeVerifier.sol",
        "file": "../../interfaces/ITreeVerifier.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 42343,
        "sourceUnit": 42378,
        "symbolAliases": [
          {
            "foreign": {
              "id": 42231,
              "name": "ITreeVerifier",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 42377,
              "src": "66:13:56",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 42234,
        "nodeType": "ImportDirective",
        "src": "125:53:56",
        "nodes": [],
        "absolutePath": "solidity/contracts/libraries/MerkleLib.sol",
        "file": "../libraries/MerkleLib.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 42343,
        "sourceUnit": 36002,
        "symbolAliases": [
          {
            "foreign": {
              "id": 42233,
              "name": "MerkleLib",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 36001,
              "src": "133:9:56",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 42342,
        "nodeType": "ContractDefinition",
        "src": "180:1247:56",
        "nodes": [
          {
            "id": 42240,
            "nodeType": "UsingForDirective",
            "src": "238:35:56",
            "nodes": [],
            "global": false,
            "libraryName": {
              "id": 42237,
              "name": "MerkleLib",
              "nameLocations": [
                "244:9:56"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 36001,
              "src": "244:9:56"
            },
            "typeName": {
              "id": 42239,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 42238,
                "name": "MerkleLib.Tree",
                "nameLocations": [
                  "258:9:56",
                  "268:4:56"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 35882,
                "src": "258:14:56"
              },
              "referencedDeclaration": 35882,
              "src": "258:14:56",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Tree_$35882_storage_ptr",
                "typeString": "struct MerkleLib.Tree"
              }
            }
          },
          {
            "id": 42243,
            "nodeType": "VariableDeclaration",
            "src": "277:42:56",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "_TREE_DEPTH",
            "nameLocation": "303:11:56",
            "scope": 42342,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 42241,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "277:7:56",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "3332",
              "id": 42242,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "317:2:56",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_32_by_1",
                "typeString": "int_const 32"
              },
              "value": "32"
            },
            "visibility": "internal"
          },
          {
            "id": 42246,
            "nodeType": "VariableDeclaration",
            "src": "323:33:56",
            "nodes": [],
            "constant": false,
            "mutability": "mutable",
            "name": "_tempTree",
            "nameLocation": "347:9:56",
            "scope": 42342,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_Tree_$35882_storage",
              "typeString": "struct MerkleLib.Tree"
            },
            "typeName": {
              "id": 42245,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 42244,
                "name": "MerkleLib.Tree",
                "nameLocations": [
                  "323:9:56",
                  "333:4:56"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 35882,
                "src": "323:14:56"
              },
              "referencedDeclaration": 35882,
              "src": "323:14:56",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Tree_$35882_storage_ptr",
                "typeString": "struct MerkleLib.Tree"
              }
            },
            "visibility": "internal"
          },
          {
            "id": 42250,
            "nodeType": "FunctionDefinition",
            "src": "361:16:56",
            "nodes": [],
            "body": {
              "id": 42249,
              "nodeType": "Block",
              "src": "375:2:56",
              "nodes": [],
              "statements": []
            },
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "parameters": {
              "id": 42247,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "372:2:56"
            },
            "returnParameters": {
              "id": 42248,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "375:0:56"
            },
            "scope": 42342,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 42341,
            "nodeType": "FunctionDefinition",
            "src": "651:774:56",
            "nodes": [],
            "body": {
              "id": 42340,
              "nodeType": "Block",
              "src": "787:638:56",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    42266
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 42266,
                      "mutability": "mutable",
                      "name": "_treeBranches",
                      "nameLocation": "821:13:56",
                      "nodeType": "VariableDeclaration",
                      "scope": 42340,
                      "src": "793:41:56",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$32_memory_ptr",
                        "typeString": "bytes32[32]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 42264,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "793:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 42265,
                        "length": {
                          "id": 42263,
                          "name": "_TREE_DEPTH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 42243,
                          "src": "801:11:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "ArrayTypeName",
                        "src": "793:20:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$32_storage_ptr",
                          "typeString": "bytes32[32]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 42267,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "793:41:56"
                },
                {
                  "assignments": [
                    42269
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 42269,
                      "mutability": "mutable",
                      "name": "_treeCount",
                      "nameLocation": "848:10:56",
                      "nodeType": "VariableDeclaration",
                      "scope": 42340,
                      "src": "840:18:56",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 42268,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "840:7:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 42270,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "840:18:56"
                },
                {
                  "expression": {
                    "id": 42285,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "components": [
                        {
                          "id": 42271,
                          "name": "_treeBranches",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 42266,
                          "src": "866:13:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$32_memory_ptr",
                            "typeString": "bytes32[32] memory"
                          }
                        },
                        {
                          "id": 42272,
                          "name": "_treeCount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 42269,
                          "src": "881:10:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 42273,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "TupleExpression",
                      "src": "865:27:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_array$_t_bytes32_$32_memory_ptr_$_t_uint256_$",
                        "typeString": "tuple(bytes32[32] memory,uint256)"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 42276,
                          "name": "_treeData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 42253,
                          "src": "906:9:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        {
                          "components": [
                            {
                              "baseExpression": {
                                "id": 42278,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "918:7:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": {
                                  "id": 42277,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "918:7:56",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 42280,
                              "indexExpression": {
                                "hexValue": "3332",
                                "id": 42279,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "926:2:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "918:11:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_array$_t_bytes32_$32_memory_ptr_$",
                                "typeString": "type(bytes32[32] memory)"
                              }
                            },
                            {
                              "id": 42282,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "931:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 42281,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "931:7:56",
                                "typeDescriptions": {}
                              }
                            }
                          ],
                          "id": 42283,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "917:22:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_type$_t_array$_t_bytes32_$32_memory_ptr_$_$_t_type$_t_uint256_$_$",
                            "typeString": "tuple(type(bytes32[32] memory),type(uint256))"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          },
                          {
                            "typeIdentifier": "t_tuple$_t_type$_t_array$_t_bytes32_$32_memory_ptr_$_$_t_type$_t_uint256_$_$",
                            "typeString": "tuple(type(bytes32[32] memory),type(uint256))"
                          }
                        ],
                        "expression": {
                          "id": 42274,
                          "name": "abi",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -1,
                          "src": "895:3:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_abi",
                            "typeString": "abi"
                          }
                        },
                        "id": 42275,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "899:6:56",
                        "memberName": "decode",
                        "nodeType": "MemberAccess",
                        "src": "895:10:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                          "typeString": "function () pure"
                        }
                      },
                      "id": 42284,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "895:45:56",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$_t_array$_t_bytes32_$32_memory_ptr_$_t_uint256_$",
                        "typeString": "tuple(bytes32[32] memory,uint256)"
                      }
                    },
                    "src": "865:75:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 42286,
                  "nodeType": "ExpressionStatement",
                  "src": "865:75:56"
                },
                {
                  "assignments": [
                    42291
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 42291,
                      "mutability": "mutable",
                      "name": "_tree",
                      "nameLocation": "969:5:56",
                      "nodeType": "VariableDeclaration",
                      "scope": 42340,
                      "src": "947:27:56",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Tree_$35882_memory_ptr",
                        "typeString": "struct MerkleLib.Tree"
                      },
                      "typeName": {
                        "id": 42290,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 42289,
                          "name": "MerkleLib.Tree",
                          "nameLocations": [
                            "947:9:56",
                            "957:4:56"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 35882,
                          "src": "947:14:56"
                        },
                        "referencedDeclaration": 35882,
                        "src": "947:14:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Tree_$35882_storage_ptr",
                          "typeString": "struct MerkleLib.Tree"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 42292,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "947:27:56"
                },
                {
                  "expression": {
                    "id": 42297,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 42293,
                        "name": "_tree",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42291,
                        "src": "980:5:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Tree_$35882_memory_ptr",
                          "typeString": "struct MerkleLib.Tree memory"
                        }
                      },
                      "id": 42295,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "986:5:56",
                      "memberName": "count",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 35881,
                      "src": "980:11:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 42296,
                      "name": "_treeCount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 42269,
                      "src": "994:10:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "980:24:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 42298,
                  "nodeType": "ExpressionStatement",
                  "src": "980:24:56"
                },
                {
                  "expression": {
                    "id": 42303,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 42299,
                        "name": "_tree",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42291,
                        "src": "1010:5:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Tree_$35882_memory_ptr",
                          "typeString": "struct MerkleLib.Tree memory"
                        }
                      },
                      "id": 42301,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "1016:6:56",
                      "memberName": "branch",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 35879,
                      "src": "1010:12:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$32_memory_ptr",
                        "typeString": "bytes32[32] memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 42302,
                      "name": "_treeBranches",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 42266,
                      "src": "1025:13:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$32_memory_ptr",
                        "typeString": "bytes32[32] memory"
                      }
                    },
                    "src": "1010:28:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$32_memory_ptr",
                      "typeString": "bytes32[32] memory"
                    }
                  },
                  "id": 42304,
                  "nodeType": "ExpressionStatement",
                  "src": "1010:28:56"
                },
                {
                  "body": {
                    "id": 42325,
                    "nodeType": "Block",
                    "src": "1092:96:56",
                    "statements": [
                      {
                        "expression": {
                          "id": 42319,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 42312,
                            "name": "_tree",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 42291,
                            "src": "1100:5:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Tree_$35882_memory_ptr",
                              "typeString": "struct MerkleLib.Tree memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "baseExpression": {
                                  "id": 42315,
                                  "name": "_leavesToInsert",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 42256,
                                  "src": "1121:15:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                    "typeString": "bytes32[] memory"
                                  }
                                },
                                "id": 42317,
                                "indexExpression": {
                                  "id": 42316,
                                  "name": "_i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 42306,
                                  "src": "1137:2:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1121:19:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "id": 42313,
                                "name": "_tree",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42291,
                                "src": "1108:5:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Tree_$35882_memory_ptr",
                                  "typeString": "struct MerkleLib.Tree memory"
                                }
                              },
                              "id": 42314,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1114:6:56",
                              "memberName": "insert",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 35958,
                              "src": "1108:12:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_Tree_$35882_memory_ptr_$_t_bytes32_$returns$_t_struct$_Tree_$35882_memory_ptr_$attached_to$_t_struct$_Tree_$35882_memory_ptr_$",
                                "typeString": "function (struct MerkleLib.Tree memory,bytes32) pure returns (struct MerkleLib.Tree memory)"
                              }
                            },
                            "id": 42318,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1108:33:56",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Tree_$35882_memory_ptr",
                              "typeString": "struct MerkleLib.Tree memory"
                            }
                          },
                          "src": "1100:41:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Tree_$35882_memory_ptr",
                            "typeString": "struct MerkleLib.Tree memory"
                          }
                        },
                        "id": 42320,
                        "nodeType": "ExpressionStatement",
                        "src": "1100:41:56"
                      },
                      {
                        "id": 42324,
                        "nodeType": "UncheckedBlock",
                        "src": "1149:33:56",
                        "statements": [
                          {
                            "expression": {
                              "id": 42322,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": true,
                              "src": "1169:4:56",
                              "subExpression": {
                                "id": 42321,
                                "name": "_i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42306,
                                "src": "1171:2:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 42323,
                            "nodeType": "ExpressionStatement",
                            "src": "1169:4:56"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 42311,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 42308,
                      "name": "_i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 42306,
                      "src": "1062:2:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 42309,
                        "name": "_leavesToInsert",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 42256,
                        "src": "1067:15:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      "id": 42310,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1083:6:56",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "1067:22:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1062:27:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 42326,
                  "initializationExpression": {
                    "assignments": [
                      42306
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 42306,
                        "mutability": "mutable",
                        "name": "_i",
                        "nameLocation": "1058:2:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 42326,
                        "src": "1050:10:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 42305,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1050:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 42307,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1050:10:56"
                  },
                  "nodeType": "ForStatement",
                  "src": "1045:143:56"
                },
                {
                  "expression": {
                    "id": 42329,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 42327,
                      "name": "_tempTree",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 42246,
                      "src": "1341:9:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Tree_$35882_storage",
                        "typeString": "struct MerkleLib.Tree storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 42328,
                      "name": "_tree",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 42291,
                      "src": "1353:5:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Tree_$35882_memory_ptr",
                        "typeString": "struct MerkleLib.Tree memory"
                      }
                    },
                    "src": "1341:17:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Tree_$35882_storage",
                      "typeString": "struct MerkleLib.Tree storage ref"
                    }
                  },
                  "id": 42330,
                  "nodeType": "ExpressionStatement",
                  "src": "1341:17:56"
                },
                {
                  "expression": {
                    "id": 42335,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 42331,
                      "name": "_calculatedRoot",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 42259,
                      "src": "1364:15:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "id": 42332,
                          "name": "_tempTree",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 42246,
                          "src": "1382:9:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Tree_$35882_storage",
                            "typeString": "struct MerkleLib.Tree storage ref"
                          }
                        },
                        "id": 42333,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1392:4:56",
                        "memberName": "root",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 35984,
                        "src": "1382:14:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Tree_$35882_storage_ptr_$returns$_t_bytes32_$attached_to$_t_struct$_Tree_$35882_storage_ptr_$",
                          "typeString": "function (struct MerkleLib.Tree storage pointer) view returns (bytes32)"
                        }
                      },
                      "id": 42334,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1382:16:56",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "1364:34:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 42336,
                  "nodeType": "ExpressionStatement",
                  "src": "1364:34:56"
                },
                {
                  "expression": {
                    "id": 42338,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "1404:16:56",
                    "subExpression": {
                      "id": 42337,
                      "name": "_tempTree",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 42246,
                      "src": "1411:9:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Tree_$35882_storage",
                        "typeString": "struct MerkleLib.Tree storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 42339,
                  "nodeType": "ExpressionStatement",
                  "src": "1404:16:56"
                }
              ]
            },
            "baseFunctions": [
              42376
            ],
            "documentation": {
              "id": 42251,
              "nodeType": "StructuredDocumentation",
              "src": "381:267:56",
              "text": " @notice Calculates the Merkle root hash given a set of Merkle tree branches and merkle tree leaves count.\n @param _treeData The encoded Merkle tree data parameters for the tree verifier.\n @return _calculatedRoot The calculated Merkle root hash."
            },
            "functionSelector": "8130a020",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "calculateRoot",
            "nameLocation": "660:13:56",
            "parameters": {
              "id": 42257,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 42253,
                  "mutability": "mutable",
                  "name": "_treeData",
                  "nameLocation": "692:9:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 42341,
                  "src": "679:22:56",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 42252,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "679:5:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 42256,
                  "mutability": "mutable",
                  "name": "_leavesToInsert",
                  "nameLocation": "724:15:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 42341,
                  "src": "707:32:56",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 42254,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "707:7:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 42255,
                    "nodeType": "ArrayTypeName",
                    "src": "707:9:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "673:70:56"
            },
            "returnParameters": {
              "id": 42260,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 42259,
                  "mutability": "mutable",
                  "name": "_calculatedRoot",
                  "nameLocation": "770:15:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 42341,
                  "src": "762:23:56",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 42258,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "762:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "761:25:56"
            },
            "scope": 42342,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 42235,
              "name": "ITreeVerifier",
              "nameLocations": [
                "220:13:56"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 42377,
              "src": "220:13:56"
            },
            "id": 42236,
            "nodeType": "InheritanceSpecifier",
            "src": "220:13:56"
          }
        ],
        "canonicalName": "SparseMerkleTreeL32Verifier",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          42342,
          42377
        ],
        "name": "SparseMerkleTreeL32Verifier",
        "nameLocation": "189:27:56",
        "scope": 42343,
        "usedErrors": [
          35765
        ]
      }
    ],
    "license": "MIT"
  },
  "id": 56
}