{
  "_format": "hh-sol-artifact-1",
  "contractName": "OracleTest",
  "sourceName": "contracts/elixir-core/test/OracleTest.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "by",
          "type": "uint32"
        }
      ],
      "name": "advanceTime",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "advanceTimeBy",
              "type": "uint32"
            },
            {
              "internalType": "int24",
              "name": "tick",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "liquidity",
              "type": "uint128"
            }
          ],
          "internalType": "struct OracleTest.UpdateParams[]",
          "name": "params",
          "type": "tuple[]"
        }
      ],
      "name": "batchUpdate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "cardinality",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "cardinalityNext",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32[]",
          "name": "secondsAgos",
          "type": "uint32[]"
        }
      ],
      "name": "getGasCostOfObserve",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint16",
          "name": "_cardinalityNext",
          "type": "uint16"
        }
      ],
      "name": "grow",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "index",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "",
          "type": "uint16"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "time",
              "type": "uint32"
            },
            {
              "internalType": "int24",
              "name": "tick",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "liquidity",
              "type": "uint128"
            }
          ],
          "internalType": "struct OracleTest.InitializeParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "liquidity",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "",
          "type": "uint128"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "observations",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "blockTimestamp",
          "type": "uint32"
        },
        {
          "internalType": "int56",
          "name": "tickCumulative",
          "type": "int56"
        },
        {
          "internalType": "uint160",
          "name": "secondsPerLiquidityCumulativeX128",
          "type": "uint160"
        },
        {
          "internalType": "bool",
          "name": "initialized",
          "type": "bool"
        },
        {
          "internalType": "uint192",
          "name": "rewardPerLiquidityCumulativeX64",
          "type": "uint192"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32[]",
          "name": "secondsAgos",
          "type": "uint32[]"
        }
      ],
      "name": "observe",
      "outputs": [
        {
          "internalType": "int56[]",
          "name": "tickCumulatives",
          "type": "int56[]"
        },
        {
          "internalType": "uint160[]",
          "name": "secondsPerLiquidityCumulativeX128s",
          "type": "uint160[]"
        },
        {
          "internalType": "uint192[]",
          "name": "rewardPerLiquidityCumulativeX64s",
          "type": "uint192[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rewardPerSecondX48",
      "outputs": [
        {
          "internalType": "uint144",
          "name": "",
          "type": "uint144"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rewardRateEffectiveUntil",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tick",
      "outputs": [
        {
          "internalType": "int24",
          "name": "",
          "type": "int24"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "time",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint32",
              "name": "advanceTimeBy",
              "type": "uint32"
            },
            {
              "internalType": "int24",
              "name": "tick",
              "type": "int24"
            },
            {
              "internalType": "uint128",
              "name": "liquidity",
              "type": "uint128"
            }
          ],
          "internalType": "struct OracleTest.UpdateParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "update",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50611a2a806100206000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806374e69cef11610097578063daf50f6b11610066578063daf50f6b14610220578063dbffe9ad14610233578063dd158c181461023b578063f7fd2cfa1461024357610100565b806374e69cef146101b8578063761eb23e146101d8578063883bdbfd146101eb578063d81740db1461020d57610100565b80633eaf5d9f116100d35780633eaf5d9f1461017157806358319b4d146101865780636142258a1461019b57806365829dc5146101a357610100565b806316ada547146101055780631a68650214610123578063252c09d7146101385780632986c0e51461015c575b600080fd5b61010d610256565b60405161011a91906119a1565b60405180910390f35b61012b610264565b60405161011a9190611961565b61014b610146366004611804565b61027c565b60405161011a9594939291906119b2565b6101646102d7565b60405161011a9190611989565b6101796102ea565b60405161011a919061191c565b61018e6102fd565b60405161011a9190611975565b61010d61030e565b6101b66101b13660046117a0565b610323565b005b6101cb6101c6366004611722565b610451565b60405161011a9190611998565b6101b66101e63660046117e2565b610515565b6101fe6101f9366004611722565b610553565b60405161011a93929190611883565b6101b661021b3660046116b2565b610612565b6101b661022e3660046117a0565b6107bc565b610164610907565b61016461091a565b6101b661025136600461181c565b61092d565b6201fffe5463ffffffff1681565b6201fffe54600160381b90046001600160801b031681565b60008161ffff811061028d57600080fd5b60020201805460019091015463ffffffff82169250640100000000820460060b91600160581b81046001600160a01b031691600160f81b90910460ff16906001600160c01b031685565b6201fffe54600160b81b900461ffff1681565b6201fffe54640100000000900460020b81565b6201ffff546001600160901b031681565b6201ffff54600160901b900463ffffffff1681565b610333610251602083018361181c565b6201fffe546201ffff546103a99160009161ffff600160b81b830481169263ffffffff80821693640100000000830460020b936001600160801b03600160381b850416936001600160901b03831693600160901b909304831692600160c81b8204831692600160d81b9092049091169061095016565b6201fffe805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b93909216929092021790556103ec604082016020830161177f565b6201fffe805460029290920b62ffffff166401000000000266ffffff000000001990921691909117905561042660608201604083016117bb565b6201fffe60076101000a8154816001600160801b0302191690836001600160801b0316021790555050565b6201fffe5460009063ffffffff811690640100000000810460020b90600160381b81046001600160801b031690600160b81b900461ffff16845a90506105048589898080602002602001604051908101604052809392919081815260200183836020028082843760009201829052506201ffff546201fffe5491969594508b93508992508a916001600160901b03821691600160901b900463ffffffff90811691600160c81b900461ffff1690610b6c16565b5050505a9003979650505050505050565b6201fffe5461053290600090600160d81b900461ffff1683610d29565b6201fffe601b6101000a81548161ffff021916908361ffff16021790555050565b60608060606106056201fffe60009054906101000a900463ffffffff1686868080602002602001604051908101604052809392919081815260200183836020028082843760009201829052506201fffe546201ffff549196959450640100000000810460020b935061ffff600160b81b8204811693506001600160801b03600160381b830416926001600160901b0381169263ffffffff600160901b909204821692600160c81b9091041690610b6c16565b9250925092509250925092565b6201fffe546201ffff54640100000000820460020b916001600160801b03600160381b8204169161ffff600160b81b8304811692600160c81b8104821692600160d81b82049092169163ffffffff918216916001600160901b03821691600160901b90041660005b89811015610713578a8a8281811061068e57fe5b6106a4926020606090920201908101915061181c565b909301926106ba600088868c8c88888d8d610950565b90975095508a8a828181106106cb57fe5b90506060020160200160208101906106e3919061177f565b98508a8a828181106106f157fe5b905060600201604001602081019061070991906117bb565b975060010161067a565b50506201fffe805466ffffff00000000191664010000000062ffffff60029a909a0b99909916989098029790971776ffffffffffffffffffffffffffffffff000000000000001916600160381b6001600160801b0397909716969096029590951761ffff60b81b1916600160b81b61ffff958616021761ffff60c81b1916600160c81b93909416929092029290921763ffffffff191663ffffffff919091161790925550505050565b6201fffe54600160c81b900461ffff16156107f25760405162461bcd60e51b81526004016107e99061192a565b60405180910390fd5b6107ff602082018261181c565b6201fffe805463ffffffff191663ffffffff9290921691909117905561082b604082016020830161177f565b6201fffe805460029290920b62ffffff166401000000000266ffffff000000001990921691909117905561086560608201604083016117bb565b6201fffe80546001600160801b0392909216600160381b0276ffffffffffffffffffffffffffffffff00000000000000199092169190911790556108b76108af602083018361181c565b600090610dd2565b6201fffe80547fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160d81b61ffff938416021761ffff60c81b1916600160c81b939092169290920217905550565b6201fffe54600160c81b900461ffff1681565b6201fffe54600160d81b900461ffff1681565b6201fffe805463ffffffff19811663ffffffff9182169390930116919091179055565b60008060008b8b61ffff1661ffff811061096657fe5b6040805160a08101825260029290920292909201805463ffffffff8082168085526401000000008304600690810b810b900b6020860152600160581b83046001600160a01b031695850195909552600160f81b90910460ff16151560608401526001909101546001600160c01b031660808301529092508b1614156109f1578a859250925050610b5e565b8461ffff168461ffff16118015610a1257506001850361ffff168b61ffff16145b15610a1f57839150610a23565b8491505b8161ffff168b60010161ffff1681610a3757fe5b069250610a48818b8b8b8b8b610e46565b8c8461ffff1661ffff8110610a5957fe5b825160029190910291909101805460208401516040850151606086015163ffffffff1990931663ffffffff909516949094176affffffffffffff00000000191664010000000066ffffffffffffff60069390930b9290921691909102177fff0000000000000000000000000000000000000000ffffffffffffffffffffff16600160581b6001600160a01b0390941693909302929092177effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b921515929092029190911781556080909101516001909101805477ffffffffffffffffffffffffffffffffffffffffffffffff19166001600160c01b03909216919091179055505b995099975050505050505050565b606080606060008461ffff1611610bae576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b895167ffffffffffffffff81118015610bc657600080fd5b50604051908082528060200260200182016040528015610bf0578160200160208202803683370190505b509250895167ffffffffffffffff81118015610c0b57600080fd5b50604051908082528060200260200182016040528015610c35578160200160208202803683370190505b509150895167ffffffffffffffff81118015610c5057600080fd5b50604051908082528060200260200182016040528015610c7a578160200160208202803683370190505b50905060005b8a51811015610d1957610cad8d8d8d8481518110610c9a57fe5b60200260200101518d8d8d8d8d8d610f90565b868481518110610cb957fe5b60200260200101868581518110610ccc57fe5b60200260200101868681518110610cdf57fe5b6001600160c01b03909416602094850291909101909301929092526001600160a01b039092169052600691820b90910b9052600101610c80565b5099509950999650505050505050565b6000808361ffff1611610d67576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b8261ffff168261ffff1611610d7d575081610dcb565b825b8261ffff168161ffff161015610dc6576001858261ffff1661ffff8110610da257fe5b60020201805463ffffffff191663ffffffff92909216919091179055600101610d7f565b508190505b9392505050565b6040805160a08101825263ffffffff928316808252600060208301819052928201839052600160608301819052608090920192909252835463ffffffff1916909117909116600160f81b178255908101805477ffffffffffffffffffffffffffffffffffffffffffffffff19169055908190565b610e4e61166d565b865186036001600160801b038516610e67576001610e69565b845b9450600063ffffffff4211610eb457428463ffffffff1610610e8b5781610eaf565b886000015163ffffffff168463ffffffff161115610eac5788518403610eaf565b60005b610eb7565b60005b90506040518060a001604052808963ffffffff1681526020018363ffffffff168960020b028b602001510160060b8152602001876001600160801b031660808563ffffffff166001600160a01b0316901b6001600160a01b031681610f1857fe5b048b60400151016001600160a01b03168152602001600115158152602001876001600160801b03168363ffffffff166010896001600160901b03166001600160c01b0316901b026001600160c01b031681610f6f57fe5b048b60800151016001600160c01b0316815250925050509695505050505050565b6000808063ffffffff8a1661105c5760008c8961ffff1661ffff8110610fb257fe5b6040805160a08101825260029290920292909201805463ffffffff8082168085526401000000008304600690810b810b900b6020860152600160581b83046001600160a01b031695850195909552600160f81b90910460ff16151560608401526001909101546001600160c01b031660808301529092508d16146110415761103e818d8c8b8b8b610e46565b90505b8060200151816040015182608001519350935093505061117f565b898b036000806110738f8f858f8f8f8f8f8f61118e565b91509150816000015163ffffffff168363ffffffff1614156110ac5781602001518260400151836080015195509550955050505061117f565b805163ffffffff848116911614156110db5780602001518160400151826080015195509550955050505061117f565b8151815160208085015190840151918390039286039163ffffffff80841692908516910360060b8161110957fe5b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b0316028161113b57fe5b048560400151018263ffffffff168463ffffffff1687608001518760800151036001600160c01b03168161116b57fe5b040286608001510197509750975050505050505b99509950999650505050505050565b61119661166d565b61119e61166d565b8a8761ffff1661ffff81106111af57fe5b6040805160a08101825260029290920292909201805463ffffffff81168084526401000000008204600690810b810b900b6020850152600160581b82046001600160a01b031694840194909452600160f81b900460ff1615156060830152600101546001600160c01b03166080820152925061122d908b908b6113d5565b15611267578863ffffffff16826000015163ffffffff16141561124f57610b5e565b8161125e838b8b8a8a8a610e46565b91509150610b5e565b8a8361ffff168860010161ffff168161127c57fe5b0661ffff1661ffff811061128c57fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff161515606082018190526001909201546001600160c01b031660808201529250611370576040805160a0810182528c5463ffffffff811682526401000000008104600690810b810b900b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015260018c01546001600160c01b0316608082015291505b61137f8a83600001518b6113d5565b6113b6576040805162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015290519081900360640190fd5b6113c38b8b8b8a87611498565b91509150995099975050505050505050565b60008363ffffffff168363ffffffff16111580156113ff57508363ffffffff168263ffffffff1611155b1561141b578163ffffffff168363ffffffff1611159050610dcb565b60008463ffffffff168463ffffffff1611611443578363ffffffff166401000000000161144b565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff161161147c578363ffffffff1664010000000001611484565b8363ffffffff165b64ffffffffff169091111595945050505050565b6114a061166d565b6114a861166d565b60008361ffff168560010161ffff16816114be57fe5b0661ffff169050600060018561ffff16830103905060005b506002818301048961ffff871682816114eb57fe5b0661ffff81106114f757fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff161515606082018190526001909201546001600160c01b03166080820152955061157c578060010192506114d6565b898661ffff16826001018161158d57fe5b0661ffff811061159957fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff16151560608201526001909101546001600160c01b03166080820152855190945060009061161f908b908b6113d5565b905080801561163857506116388a8a87600001516113d5565b156116435750611660565b806116535760018203925061165a565b8160010193505b506114d6565b5050509550959350505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b6000606082840312156116ac578081fd5b50919050565b600080602083850312156116c4578182fd5b823567ffffffffffffffff808211156116db578384fd5b818501915085601f8301126116ee578384fd5b8135818111156116fc578485fd5b866020606083028501011115611710578485fd5b60209290920196919550909350505050565b60008060208385031215611734578182fd5b823567ffffffffffffffff8082111561174b578384fd5b818501915085601f83011261175e578384fd5b81358181111561176c578485fd5b8660208083028501011115611710578485fd5b600060208284031215611790578081fd5b81358060020b8114610dcb578182fd5b6000606082840312156117b1578081fd5b610dcb838361169b565b6000602082840312156117cc578081fd5b81356001600160801b0381168114610dcb578182fd5b6000602082840312156117f3578081fd5b813561ffff81168114610dcb578182fd5b600060208284031215611815578081fd5b5035919050565b60006020828403121561182d578081fd5b813563ffffffff81168114610dcb578182fd5b6000815180845260208085019450808401835b838110156118785781516001600160c01b031687529582019590820190600101611853565b509495945050505050565b606080825284519082018190526000906020906080840190828801845b828110156118bf57815160060b845292840192908401906001016118a0565b50505083810382850152855180825286830191830190845b818110156118fc5783516001600160a01b0316835292840192918401916001016118d7565b505084810360408601526119108187611840565b98975050505050505050565b60029190910b815260200190565b60208082526013908201527f616c726561647920696e697469616c697a656400000000000000000000000000604082015260600190565b6001600160801b0391909116815260200190565b6001600160901b0391909116815260200190565b61ffff91909116815260200190565b90815260200190565b63ffffffff91909116815260200190565b63ffffffff95909516855260069390930b60208501526001600160a01b03919091166040840152151560608301526001600160c01b0316608082015260a0019056fea264697066735822122002acd38f8925afceb7b92c6e72f0d8cdee7003d69e28036bf58a85170063364c64736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c806374e69cef11610097578063daf50f6b11610066578063daf50f6b14610220578063dbffe9ad14610233578063dd158c181461023b578063f7fd2cfa1461024357610100565b806374e69cef146101b8578063761eb23e146101d8578063883bdbfd146101eb578063d81740db1461020d57610100565b80633eaf5d9f116100d35780633eaf5d9f1461017157806358319b4d146101865780636142258a1461019b57806365829dc5146101a357610100565b806316ada547146101055780631a68650214610123578063252c09d7146101385780632986c0e51461015c575b600080fd5b61010d610256565b60405161011a91906119a1565b60405180910390f35b61012b610264565b60405161011a9190611961565b61014b610146366004611804565b61027c565b60405161011a9594939291906119b2565b6101646102d7565b60405161011a9190611989565b6101796102ea565b60405161011a919061191c565b61018e6102fd565b60405161011a9190611975565b61010d61030e565b6101b66101b13660046117a0565b610323565b005b6101cb6101c6366004611722565b610451565b60405161011a9190611998565b6101b66101e63660046117e2565b610515565b6101fe6101f9366004611722565b610553565b60405161011a93929190611883565b6101b661021b3660046116b2565b610612565b6101b661022e3660046117a0565b6107bc565b610164610907565b61016461091a565b6101b661025136600461181c565b61092d565b6201fffe5463ffffffff1681565b6201fffe54600160381b90046001600160801b031681565b60008161ffff811061028d57600080fd5b60020201805460019091015463ffffffff82169250640100000000820460060b91600160581b81046001600160a01b031691600160f81b90910460ff16906001600160c01b031685565b6201fffe54600160b81b900461ffff1681565b6201fffe54640100000000900460020b81565b6201ffff546001600160901b031681565b6201ffff54600160901b900463ffffffff1681565b610333610251602083018361181c565b6201fffe546201ffff546103a99160009161ffff600160b81b830481169263ffffffff80821693640100000000830460020b936001600160801b03600160381b850416936001600160901b03831693600160901b909304831692600160c81b8204831692600160d81b9092049091169061095016565b6201fffe805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b93909216929092021790556103ec604082016020830161177f565b6201fffe805460029290920b62ffffff166401000000000266ffffff000000001990921691909117905561042660608201604083016117bb565b6201fffe60076101000a8154816001600160801b0302191690836001600160801b0316021790555050565b6201fffe5460009063ffffffff811690640100000000810460020b90600160381b81046001600160801b031690600160b81b900461ffff16845a90506105048589898080602002602001604051908101604052809392919081815260200183836020028082843760009201829052506201ffff546201fffe5491969594508b93508992508a916001600160901b03821691600160901b900463ffffffff90811691600160c81b900461ffff1690610b6c16565b5050505a9003979650505050505050565b6201fffe5461053290600090600160d81b900461ffff1683610d29565b6201fffe601b6101000a81548161ffff021916908361ffff16021790555050565b60608060606106056201fffe60009054906101000a900463ffffffff1686868080602002602001604051908101604052809392919081815260200183836020028082843760009201829052506201fffe546201ffff549196959450640100000000810460020b935061ffff600160b81b8204811693506001600160801b03600160381b830416926001600160901b0381169263ffffffff600160901b909204821692600160c81b9091041690610b6c16565b9250925092509250925092565b6201fffe546201ffff54640100000000820460020b916001600160801b03600160381b8204169161ffff600160b81b8304811692600160c81b8104821692600160d81b82049092169163ffffffff918216916001600160901b03821691600160901b90041660005b89811015610713578a8a8281811061068e57fe5b6106a4926020606090920201908101915061181c565b909301926106ba600088868c8c88888d8d610950565b90975095508a8a828181106106cb57fe5b90506060020160200160208101906106e3919061177f565b98508a8a828181106106f157fe5b905060600201604001602081019061070991906117bb565b975060010161067a565b50506201fffe805466ffffff00000000191664010000000062ffffff60029a909a0b99909916989098029790971776ffffffffffffffffffffffffffffffff000000000000001916600160381b6001600160801b0397909716969096029590951761ffff60b81b1916600160b81b61ffff958616021761ffff60c81b1916600160c81b93909416929092029290921763ffffffff191663ffffffff919091161790925550505050565b6201fffe54600160c81b900461ffff16156107f25760405162461bcd60e51b81526004016107e99061192a565b60405180910390fd5b6107ff602082018261181c565b6201fffe805463ffffffff191663ffffffff9290921691909117905561082b604082016020830161177f565b6201fffe805460029290920b62ffffff166401000000000266ffffff000000001990921691909117905561086560608201604083016117bb565b6201fffe80546001600160801b0392909216600160381b0276ffffffffffffffffffffffffffffffff00000000000000199092169190911790556108b76108af602083018361181c565b600090610dd2565b6201fffe80547fffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160d81b61ffff938416021761ffff60c81b1916600160c81b939092169290920217905550565b6201fffe54600160c81b900461ffff1681565b6201fffe54600160d81b900461ffff1681565b6201fffe805463ffffffff19811663ffffffff9182169390930116919091179055565b60008060008b8b61ffff1661ffff811061096657fe5b6040805160a08101825260029290920292909201805463ffffffff8082168085526401000000008304600690810b810b900b6020860152600160581b83046001600160a01b031695850195909552600160f81b90910460ff16151560608401526001909101546001600160c01b031660808301529092508b1614156109f1578a859250925050610b5e565b8461ffff168461ffff16118015610a1257506001850361ffff168b61ffff16145b15610a1f57839150610a23565b8491505b8161ffff168b60010161ffff1681610a3757fe5b069250610a48818b8b8b8b8b610e46565b8c8461ffff1661ffff8110610a5957fe5b825160029190910291909101805460208401516040850151606086015163ffffffff1990931663ffffffff909516949094176affffffffffffff00000000191664010000000066ffffffffffffff60069390930b9290921691909102177fff0000000000000000000000000000000000000000ffffffffffffffffffffff16600160581b6001600160a01b0390941693909302929092177effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b921515929092029190911781556080909101516001909101805477ffffffffffffffffffffffffffffffffffffffffffffffff19166001600160c01b03909216919091179055505b995099975050505050505050565b606080606060008461ffff1611610bae576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b895167ffffffffffffffff81118015610bc657600080fd5b50604051908082528060200260200182016040528015610bf0578160200160208202803683370190505b509250895167ffffffffffffffff81118015610c0b57600080fd5b50604051908082528060200260200182016040528015610c35578160200160208202803683370190505b509150895167ffffffffffffffff81118015610c5057600080fd5b50604051908082528060200260200182016040528015610c7a578160200160208202803683370190505b50905060005b8a51811015610d1957610cad8d8d8d8481518110610c9a57fe5b60200260200101518d8d8d8d8d8d610f90565b868481518110610cb957fe5b60200260200101868581518110610ccc57fe5b60200260200101868681518110610cdf57fe5b6001600160c01b03909416602094850291909101909301929092526001600160a01b039092169052600691820b90910b9052600101610c80565b5099509950999650505050505050565b6000808361ffff1611610d67576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b8261ffff168261ffff1611610d7d575081610dcb565b825b8261ffff168161ffff161015610dc6576001858261ffff1661ffff8110610da257fe5b60020201805463ffffffff191663ffffffff92909216919091179055600101610d7f565b508190505b9392505050565b6040805160a08101825263ffffffff928316808252600060208301819052928201839052600160608301819052608090920192909252835463ffffffff1916909117909116600160f81b178255908101805477ffffffffffffffffffffffffffffffffffffffffffffffff19169055908190565b610e4e61166d565b865186036001600160801b038516610e67576001610e69565b845b9450600063ffffffff4211610eb457428463ffffffff1610610e8b5781610eaf565b886000015163ffffffff168463ffffffff161115610eac5788518403610eaf565b60005b610eb7565b60005b90506040518060a001604052808963ffffffff1681526020018363ffffffff168960020b028b602001510160060b8152602001876001600160801b031660808563ffffffff166001600160a01b0316901b6001600160a01b031681610f1857fe5b048b60400151016001600160a01b03168152602001600115158152602001876001600160801b03168363ffffffff166010896001600160901b03166001600160c01b0316901b026001600160c01b031681610f6f57fe5b048b60800151016001600160c01b0316815250925050509695505050505050565b6000808063ffffffff8a1661105c5760008c8961ffff1661ffff8110610fb257fe5b6040805160a08101825260029290920292909201805463ffffffff8082168085526401000000008304600690810b810b900b6020860152600160581b83046001600160a01b031695850195909552600160f81b90910460ff16151560608401526001909101546001600160c01b031660808301529092508d16146110415761103e818d8c8b8b8b610e46565b90505b8060200151816040015182608001519350935093505061117f565b898b036000806110738f8f858f8f8f8f8f8f61118e565b91509150816000015163ffffffff168363ffffffff1614156110ac5781602001518260400151836080015195509550955050505061117f565b805163ffffffff848116911614156110db5780602001518160400151826080015195509550955050505061117f565b8151815160208085015190840151918390039286039163ffffffff80841692908516910360060b8161110957fe5b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b0316028161113b57fe5b048560400151018263ffffffff168463ffffffff1687608001518760800151036001600160c01b03168161116b57fe5b040286608001510197509750975050505050505b99509950999650505050505050565b61119661166d565b61119e61166d565b8a8761ffff1661ffff81106111af57fe5b6040805160a08101825260029290920292909201805463ffffffff81168084526401000000008204600690810b810b900b6020850152600160581b82046001600160a01b031694840194909452600160f81b900460ff1615156060830152600101546001600160c01b03166080820152925061122d908b908b6113d5565b15611267578863ffffffff16826000015163ffffffff16141561124f57610b5e565b8161125e838b8b8a8a8a610e46565b91509150610b5e565b8a8361ffff168860010161ffff168161127c57fe5b0661ffff1661ffff811061128c57fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff161515606082018190526001909201546001600160c01b031660808201529250611370576040805160a0810182528c5463ffffffff811682526401000000008104600690810b810b900b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015260018c01546001600160c01b0316608082015291505b61137f8a83600001518b6113d5565b6113b6576040805162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015290519081900360640190fd5b6113c38b8b8b8a87611498565b91509150995099975050505050505050565b60008363ffffffff168363ffffffff16111580156113ff57508363ffffffff168263ffffffff1611155b1561141b578163ffffffff168363ffffffff1611159050610dcb565b60008463ffffffff168463ffffffff1611611443578363ffffffff166401000000000161144b565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff161161147c578363ffffffff1664010000000001611484565b8363ffffffff165b64ffffffffff169091111595945050505050565b6114a061166d565b6114a861166d565b60008361ffff168560010161ffff16816114be57fe5b0661ffff169050600060018561ffff16830103905060005b506002818301048961ffff871682816114eb57fe5b0661ffff81106114f757fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff161515606082018190526001909201546001600160c01b03166080820152955061157c578060010192506114d6565b898661ffff16826001018161158d57fe5b0661ffff811061159957fe5b6040805160a08101825260029290920292909201805463ffffffff811683526401000000008104600690810b810b900b6020840152600160581b81046001600160a01b031693830193909352600160f81b90920460ff16151560608201526001909101546001600160c01b03166080820152855190945060009061161f908b908b6113d5565b905080801561163857506116388a8a87600001516113d5565b156116435750611660565b806116535760018203925061165a565b8160010193505b506114d6565b5050509550959350505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b6000606082840312156116ac578081fd5b50919050565b600080602083850312156116c4578182fd5b823567ffffffffffffffff808211156116db578384fd5b818501915085601f8301126116ee578384fd5b8135818111156116fc578485fd5b866020606083028501011115611710578485fd5b60209290920196919550909350505050565b60008060208385031215611734578182fd5b823567ffffffffffffffff8082111561174b578384fd5b818501915085601f83011261175e578384fd5b81358181111561176c578485fd5b8660208083028501011115611710578485fd5b600060208284031215611790578081fd5b81358060020b8114610dcb578182fd5b6000606082840312156117b1578081fd5b610dcb838361169b565b6000602082840312156117cc578081fd5b81356001600160801b0381168114610dcb578182fd5b6000602082840312156117f3578081fd5b813561ffff81168114610dcb578182fd5b600060208284031215611815578081fd5b5035919050565b60006020828403121561182d578081fd5b813563ffffffff81168114610dcb578182fd5b6000815180845260208085019450808401835b838110156118785781516001600160c01b031687529582019590820190600101611853565b509495945050505050565b606080825284519082018190526000906020906080840190828801845b828110156118bf57815160060b845292840192908401906001016118a0565b50505083810382850152855180825286830191830190845b818110156118fc5783516001600160a01b0316835292840192918401916001016118d7565b505084810360408601526119108187611840565b98975050505050505050565b60029190910b815260200190565b60208082526013908201527f616c726561647920696e697469616c697a656400000000000000000000000000604082015260600190565b6001600160801b0391909116815260200190565b6001600160901b0391909116815260200190565b61ffff91909116815260200190565b90815260200190565b63ffffffff91909116815260200190565b63ffffffff95909516855260069390930b60208501526001600160a01b03919091166040840152151560608301526001600160c01b0316608082015260a0019056fea264697066735822122002acd38f8925afceb7b92c6e72f0d8cdee7003d69e28036bf58a85170063364c64736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
