0 txs
392 calls
constructor
No constructor.
functions
acceptCrocProxyRole
nonpayablefunction acceptCrocProxyRole(address, uint16 slot) returns (bool)
protocolCmd
nonpayablefunction protocolCmd(bytes cmd)
userCmd
payablefunction userCmd(bytes cmd) payable
events
CrocKnockoutCross
event CrocKnockoutCross(bytes32 indexed pool, int24 indexed tick, bool isBid, uint32 pivotTime, uint64 feeMileage, uint160 commitEntropy)
errors
No errors.
creation bytecode
0x608060405262010011805460ff60e01b1916600160e71b17905534801561002557600080fd5b50615171806100356000396000f3fe6080604052600436106100345760003560e01c8063ac54c0fc14610039578063b67019801461006d578063f96dc7881461008f575b600080fd5b34801561004557600080fd5b506100596100543660046145ff565b6100a2565b604051901515815260200160405180910390f35b34801561007957600080fd5b5061008d61008836600461462b565b6100b1565b005b61008d61009d36600461462b565b61027d565b61ffff81166003145b92915050565b60008282601f8181106100c6576100c661469d565b919091013560f81c9150507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff938101610107576101028383610509565b505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9260ff82160161013b576101028383610580565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9160ff82160161016f576101028383610616565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8e60ff8216016101a3576101028383610653565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8c60ff8216016101d75761010283836106a4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8d60ff82160161020b5761010283836106f5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9060ff82160161023f57610102838361078e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8f60ff8216016102735761010283836107ee565b6101028383610913565b60008282601f8181106102925761029261469d565b919091013560f81c9150507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb981016102ce576101028383610aba565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb860ff821601610302576101028383610b37565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb760ff821601610336576101028383610c21565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffad60ff82160161036a576101028383610c43565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb660ff82160161039e576101028383610c75565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb560ff8216016103d2576101028383610c97565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb460ff821601610406576101028383610cb9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb060ff82160161043a576101028383610cdf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaf60ff82160161046e576101028383610d03565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffae60ff8216016104a2576101028383610d29565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f496e76616c696420636f6d6d616e64000000000000000000000000000000000060448201526064015b60405180910390fd5b6000610517828401846146dd565b6040519092508291507ff04678cb0a9a94c6123dfbed8362627d9754e802db5ef393b2abf29bbffb10c890600090a26000908152620100086020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555050565b6000808080808061059387890189614707565b6040805161ffff87811682528616602082015260ff858116828401528481166060830152831660808201529051969d50949b50929950909750955093508892507f6574bab9cbe9cbdd301eff0716be38e5549a862fbb0a27f091ae8e30acf09752919081900360a00190a261060c868686868686610d47565b5050505050505050565b600080808080808061062a888a018a614786565b97509750975097509750975097505061064887878787878787610f80565b505050505050505050565b60006106618284018461481a565b60405160ff821681529092507f703dadb0730cdc09b07d7039d74dddaa44bed181ac5df56ceaac826808f8c07c915060200160405180910390a16101028161105a565b60006106b28284018461481a565b60405160ff821681529092507f78cebabf44aeb53b6a6d1d9fda97040ebcd7b5119147f4d20834f499d194eebb915060200160405180910390a161010281611139565b6000808061070584860186614844565b6201000b5460405170010000000000000000000000000000000090910460ff168152929650909450925082915073ffffffffffffffffffffffffffffffffffffffff80851691908616907fb89e42dc3bd965ba356db6bd3f5ddd604530083da13da6d8491ad2b2718a011f9060200160405180910390a461078783838361121e565b5050505050565b600061079c828401846148b3565b6040516fffffffffffffffffffffffffffffffff821681529092507f7838d07bf20579cb7640bf7e1381607db1a5d8c4799053314890c72673a85c2e915060200160405180910390a16101028161127b565b600080806107fe848601866148dd565b604080516fffffffffffffffffffffffffffffffff8416815261ffff83166020820152939750919550935073ffffffffffffffffffffffffffffffffffffffff861692507f56f43876270ac6e001a4449e363d26518c494eac1547ed144ab29b5b99e38d08910160405180910390a273ffffffffffffffffffffffffffffffffffffffff831660009081526201000a6020526040902080547fffffffffffffffffffffffffff000000000000000000000000000000000000ff166101006fffffffffffffffffffffffffffffffff8516027fffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffff16177101000000000000000000000000000000000061ffff841602179055610787565b60005474010000000000000000000000000000000000000000900460ff16610999576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105009060208082526004908201527f5375646f00000000000000000000000000000000000000000000000000000000604082015260600190565b60008282601f8181106109ae576109ae61469d565b919091013560f81c9150507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd881016109ea57610102838361135c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd760ff821601610a1e57610102838361146e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec60ff821601610a52576101028383611613565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea60ff821601610a865761010283836117d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe960ff8216016104a257610102838361186a565b6000808080610acb85870187614933565b945094509450945050600080610ae2868686611905565b91509150610af2828787876119ce565b600080610b00848685611b12565b6000549193509150610b2b9073ffffffffffffffffffffffffffffffffffffffff1689848a85611d08565b50505050505050505050565b60008080610b4784860186614a27565b9350935093505060005b8151811015610c1957600361ffff16828281518110610b7257610b7261469d565b602002602001015161ffff1603610be5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496e76616c696420526f7574657220417070726f7665000000000000000000006044820152606401610500565b610c098484848481518110610bfc57610bfc61469d565b6020026020010151611d48565b610c1281614b37565b9050610b51565b505050505050565b60008080610c3184860186614b6f565b93509350935050610787838383611dce565b6000808080808080610c57888a018a614bc7565b97509750975097509750975097505061064887878787878787611e79565b60008080610c8584860186614c5f565b93509350935050610787838383611f41565b60008080610ca784860186614c5f565b93509350935050610787838383612012565b6000808080610cca85870187614c9c565b945094509450945050610c1984848484612051565b600080610cee83850185614cf7565b9250925050610cfd82826120c6565b50505050565b6000808080610d1485870187614dc1565b945094509450945050610c19848484846121d7565b600080610d3883850185614e3c565b9250925050610cfd82826122ec565b60008681526201000860205260408120805460ff84811668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff87831667010000000000000002167fffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffff9289166601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff61ffff8c811664010000000002919091167fffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffff918e16610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000090971696909617600117169490941793909317919091169190911717815590610e6988846123f3565b905073ffffffffffffffffffffffffffffffffffffffff81161561060c5760008173ffffffffffffffffffffffffffffffffffffffff163b118015610f1a57508073ffffffffffffffffffffffffffffffffffffffff1663f4f886846040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1a9190614eaa565b61060c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4f7261636c6500000000000000000000000000000000000000000000000000006044820152606401610500565b6000610f8d888888612417565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff0000ff1661010061ffff978816027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff16176401000000009590961694909402949094177fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff16660100000000000060ff938416027fffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffff1617670100000000000000919092160217905550505050565b620100115460ff7c0100000000000000000000000000000000000000000000000000000000909104811690821611156110ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f54520000000000000000000000000000000000000000000000000000000000006044820152606401610500565b6201000b805460ff909216700100000000000000000000000000000000027fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff909216919091179055565b620100115460ff7c0100000000000000000000000000000000000000000000000000000000909104811690821611156111ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f54520000000000000000000000000000000000000000000000000000000000006044820152606401610500565b6000805460ff9092167801000000000000000000000000000000000000000000000000027fffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b600061122b848484612417565b6201000b5481547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff1670010000000000000000000000000000000090910460ff1663010000000217905550505050565b6000816fffffffffffffffffffffffffffffffff161180156112b15750629896806fffffffffffffffffffffffffffffffff8216105b611317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f496e6974206c69710000000000000000000000000000000000000000000000006044820152606401610500565b6201000b80547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b600061136a82840184614ec7565b620100115490925074010000000000000000000000000000000000000000900467ffffffffffffffff1642101590506113ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f54726561737572792073746172740000000000000000000000000000000000006044820152606401610500565b620100115460405173ffffffffffffffffffffffffffffffffffffffff918216918316907fbdcd7dcddd535083a6d22b55c021205ac0eff43705fb59b6645f6f479a6dd20b90600090a362010011546101029073ffffffffffffffffffffffffffffffffffffffff168261251a565b600061147c82840184614ec7565b91505073ffffffffffffffffffffffffffffffffffffffff8116158015906114ba575073ffffffffffffffffffffffffffffffffffffffff81163b15155b611520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f547265617375727920696e76616c6964000000000000000000000000000000006044820152606401610500565b6201001180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905561156f4262093a80614efe565b6201001180547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff81167401000000000000000000000000000000000000000067ffffffffffffffff94851681029182179384905560405193049093169273ffffffffffffffffffffffffffffffffffffffff918216911617907f0f02a9e0f1a59164f628064cb5ecad90405bca20d668c8528c2165d67476533c90600090a3505050565b600061162182840184614ec7565b91505073ffffffffffffffffffffffffffffffffffffffff811615801590611660575060008173ffffffffffffffffffffffffffffffffffffffff163b115b80156116d857508073ffffffffffffffffffffffffffffffffffffffff16637abda6c26040518163ffffffff1660e01b81526004016020604051808303816000875af11580156116b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d89190614eaa565b61173e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496e76616c696420417574686f726974790000000000000000000000000000006044820152606401610500565b620100015460405173ffffffffffffffffffffffffffffffffffffffff909116907f794f2baba4b07f7dd9f1123c7e93530ca10b65cf26558362b14d0a437e3099c590600090a26201000180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790555050565b60006117de82840184614f11565b9150507f2e7754bb17467b54f4b17a302f1adb01f606496fa3421665b36ff44ff8dbc5fa81604051611814911515815260200190565b60405180910390a160008054911515760100000000000000000000000000000000000000000000027fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff9092169190911790555050565b600061187882840184614f11565b9150507f7fabf78b254427483595fa50cfb7e832154c4936f7bdb0b266535f271722dc46816040516118ae911515815260200190565b60405180910390a16000805491151577010000000000000000000000000000000000000000000000027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff9092169190911790555050565b60408051610140810182526000606082018181526080830182905260a0830182905260c0830182905260e0830182905261010083018290526101208301829052825260208201819052918101829052906119608585856125f7565b600061196b8461267a565b6201000b54700100000000000000000000000000000000900460ff166040820152905061199e62010009878787856127b6565b6119a98686866128ce565b6201000b549093506fffffffffffffffffffffffffffffffff16915050935093915050565b604084015173ffffffffffffffffffffffffffffffffffffffff1615610cfd576040848101516000805492517fc745fb8200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384166004820152336024820152868416604482015285841660648201526084810185905290929091169063c745fb829060a4016020604051808303816000875af1158015611a85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa99190614eaa565b905080610787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f5a000000000000000000000000000000000000000000000000000000000000006044820152606401610500565b6000806000611be786602001516040805160a0810182526000808252602082018190529181018290526060810182905260808101919091525060009081526201000f6020908152604091829020825160a08101845281546fffffffffffffffffffffffffffffffff8082168352700100000000000000000000000000000000918290048116948301949094526001909201549283169381019390935267ffffffffffffffff90820481166060840152780100000000000000000000000000000000000000000000000090910416608082015290565b9050611bf38186612938565b836fffffffffffffffffffffffffffffffff16600003611c1257600193505b611c1c8185612a78565b60208881015160009081526201000f82526040908190208551928601516fffffffffffffffffffffffffffffffff9384167001000000000000000000000000000000009185168202178255918601516001909101805460608801516080890151939095167fffffffffffffffff0000000000000000000000000000000000000000000000009091161767ffffffffffffffff9485169093029290921777ffffffffffffffffffffffffffffffffffffffffffffffff1678010000000000000000000000000000000000000000000000009390911692909202919091179055909350915050935093915050565b600080611d158685612aa3565b91509150611d298788888888886003612bf2565b611d34868387612c47565b611d3f848285612c47565b50505050505050565b60008054611d6d9073ffffffffffffffffffffffffffffffffffffffff168584612d97565b60009081526201001060205260409020805463ffffffff90941674010000000000000000000000000000000000000000027fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff90941693909317909255505050565b600054611dfa9073ffffffffffffffffffffffffffffffffffffffff168383611df5612df1565b612ec6565b6000611e068483612efc565b6000818152620100106020526040812080549293508592909190611e3d9084906fffffffffffffffffffffffffffffffff16614f3d565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050505050565b6040517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff88811660048301523060248301526fffffffffffffffffffffffffffffffff881660448301526064820186905260ff8516608483015260a4820184905260c4820183905286169063d505accf9060e401600060405180830381600087803b158015611f1e57600080fd5b505af1158015611f32573d6000803e3d6000fd5b50505050611d3f878787611dce565b60008054611f659073ffffffffffffffffffffffffffffffffffffffff1683612efc565b60008181526201001060205260408120549192506fffffffffffffffffffffffffffffffff90911690611f988583612f4b565b6000848152620100106020526040812080549293508392909190611fcf9084906fffffffffffffffffffffffffffffffff16614f6d565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550610c198682866000613015565b600080546120369073ffffffffffffffffffffffffffffffffffffffff1683612efc565b905060006120448584612efc565b9050610787828286613058565b600080546120759073ffffffffffffffffffffffffffffffffffffffff1686613146565b600080549192509061209d9073ffffffffffffffffffffffffffffffffffffffff1686613146565b905060006120ab8385612efc565b905060006120b98386612efc565b905061060c828288613058565b60008054620100109082906120f19073ffffffffffffffffffffffffffffffffffffffff16866131a1565b81526020810191909152604001600020805490915063ffffffff7001000000000000000000000000000000009091048116908316101561218d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f4e490000000000000000000000000000000000000000000000000000000000006044820152606401610500565b805463ffffffff909216700100000000000000000000000000000000027fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff90921691909117905550565b600080546040517f70311dae00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116926370311dae926122369290911690899089908890600401615004565b6020604051808303816000875af1158015612255573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122799190614eaa565b9050806122e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f4f4e0000000000000000000000000000000000000000000000000000000000006044820152606401610500565b61078785856120c6565b600080546040517fc38a1b8c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581169263c38a1b8c926123479290911690869060040161504f565b6020604051808303816000875af1158015612366573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061238a9190614eaa565b905080610102576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f4f470000000000000000000000000000000000000000000000000000000000006044820152606401610500565b6000600182811681148061240857600061240e565b606085901c5b95945050505050565b6000612428620100098585856131d2565b6040805160e081018252825460ff808216835261ffff610100830481166020850152630100000083048216948401949094526401000000008204909316606083015266010000000000008104831660808301526701000000000000008104831660a083015268010000000000000000900490911660c08201529091506124ad906131f9565b612513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f50490000000000000000000000000000000000000000000000000000000000006044820152606401610500565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526201000c6020526040902080547fffffffffffffffffffffffffffffffff0000000000000000000000000000000081169091556fffffffffffffffffffffffffffffffff168015610102576040805173ffffffffffffffffffffffffffffffffffffffff85811660208084019190915290851682840152825180830384018152606090920183528151918101919091206000818152620100109092529181208054849290611e3d9084906fffffffffffffffffffffffffffffffff16614f3d565b60006126086201000985858561327b565b9050612613816133aa565b15610cfd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f50460000000000000000000000000000000000000000000000000000000000006044820152606401610500565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152506000818152620100086020908152604091829020825160e081018452905460ff808216835261ffff6101008304811694840194909452630100000082048116948301949094526401000000008104909216606082015266010000000000008204831660808201526701000000000000008204831660a08201526801000000000000000090910490911660c082015261274b816131f9565b6127b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f50540000000000000000000000000000000000000000000000000000000000006044820152606401610500565b919050565b60006127c385858561342b565b90508186600083815260200190815260200160002060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548161ffff021916908361ffff16021790555060408201518160000160036101000a81548160ff021916908360ff16021790555060608201518160000160046101000a81548161ffff021916908361ffff16021790555060808201518160000160066101000a81548160ff021916908360ff16021790555060a08201518160000160076101000a81548160ff021916908360ff16021790555060c08201518160000160086101000a81548160ff021916908360ff160217905550905050505050505050565b60408051610140810182526000606082018181526080830182905260a0830182905260c0830182905260e08301829052610100830182905261012083018290528252602082018190529181019190915261292d6201000985858561327b565b90506124ad816133aa565b60006129438261349e565b90507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5d892600282900b128015906129805750620cb14a600282900b13155b6129e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f52000000000000000000000000000000000000000000000000000000000000006044820152606401610500565b82516fffffffffffffffffffffffffffffffff1615612a61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f4e000000000000000000000000000000000000000000000000000000000000006044820152606401610500565b506fffffffffffffffffffffffffffffffff169052565b600080600080612a8886866137f1565b91509150612a96828261381b565b9350935050509250929050565b60008073ffffffffffffffffffffffffffffffffffffffff841615612b55576040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015612b2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b509190615086565b612b58565b60005b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290925073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa158015612bc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be99190615086565b90509250929050565b73ffffffffffffffffffffffffffffffffffffffff8516612c2357612c1e87878660018516151561385f565b612c35565b612c3587878688600186161515613894565b611d3f87878486600286161515613894565b73ffffffffffffffffffffffffffffffffffffffff831615610102576040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015612cd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf49190615086565b9050828110158015612d0a5750600082600f0b12155b8015612d3157506fffffffffffffffffffffffffffffffff8216612d2e848361509f565b10155b610cfd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f54440000000000000000000000000000000000000000000000000000000000006044820152606401610500565b6040805173ffffffffffffffffffffffffffffffffffffffff808616602083015284169181019190915261ffff821660608201526000906080015b6040516020818303038152906040528051906020012090509392505050565b600080547501000000000000000000000000000000000000000000900460ff1615612e78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f44530000000000000000000000000000000000000000000000000000000000006044820152606401610500565b612e81346138c4565b600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000179055919050565b73ffffffffffffffffffffffffffffffffffffffff8216612ef157612eec8484836138e3565b610cfd565b610cfd848484613989565b6040805173ffffffffffffffffffffffffffffffffffffffff80851660208301528316918101919091526000906060015b60405160208183030381529060405280519060200120905092915050565b60008083600f0b1215612f7257612f61836150b2565b612f6b9083614f6d565b9050612f87565b82600f0b600003612f84575080612f87565b50815b816fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff1611156100ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f53430000000000000000000000000000000000000000000000000000000000006044820152606401610500565b73ffffffffffffffffffffffffffffffffffffffff821661303b57612eec8484836139a7565b610cfd8285856fffffffffffffffffffffffffffffffff166139cc565b60008381526201001060205260408120546fffffffffffffffffffffffffffffffff16906130868383612f4b565b60008681526201001060205260408120805492935083929091906130bd9084906fffffffffffffffffffffffffffffffff16614f6d565b82546101009290920a6fffffffffffffffffffffffffffffffff818102199093169183160217909155600086815262010010602052604081208054859450909261310991859116614f3d565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505050505050565b6000816000036131575750816100ab565b506040805173ffffffffffffffffffffffffffffffffffffffff848116602080840191909152828401859052835180840385018152606090930190935281519190920120166100ab565b6040805173ffffffffffffffffffffffffffffffffffffffff84166020820152908101829052600090606001612f2d565b6000806131e085858561342b565b6000908152602087905260409020915050949350505050565b6000600160ff16826000015160ff161115613270576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f49505300000000000000000000000000000000000000000000000000000000006044820152606401610500565b505160ff1660011490565b60408051610140810182526000606082018181526080830182905260a0830182905260c0830182905260e0830182905261010083018290526101208301829052825260208201819052918101829052906132d685858561342b565b600081815260208881526040808320815160e081018352905460ff808216835261ffff6101008304811695840195909552630100000082048116938301939093526401000000008104909316606082015266010000000000008304821660808201526701000000000000008304821660a0820152680100000000000000009092041660c082018190529293509161336e9086906123f3565b60408051606081018252938452602084019490945273ffffffffffffffffffffffffffffffffffffffff16928201929092529695505050505050565b805151600090600160ff909116111561341f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f49505300000000000000000000000000000000000000000000000000000000006044820152606401610500565b50515160ff1660011490565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161061346557600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff808716602083015285169181019190915260608101839052608001612dd2565b6000620100026fffffffffffffffffffffffffffffffff8316108015906134e657506f0ffff5433e2b3d8211706e6102aa94726fffffffffffffffffffffffffffffffff8316105b6134ef57600080fd5b77ffffffffffffffffffffffffffffffff0000000000000000604083901b166fffffffffffffffffffffffffffffffff811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c9790881196179094179092171790911717176080811061359957607f810383901c91506135a3565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581027ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc5568101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b146137e257886fffffffffffffffffffffffffffffffff166137be82613b35565b6fffffffffffffffffffffffffffffffff1611156137dc57816137e4565b806137e4565b815b9998505050505050505050565b6000806000806138018686613ea7565b9150915061380f8686613f1a565b612a9682826001613f42565b600080613839846fffffffffffffffffffffffffffffffff16613fb9565b613854846fffffffffffffffffffffffffffffffff16613fb9565b915091509250929050565b6000613869612df1565b905082600f0b60001461388a5761388585858560008587613fed565b610787565b610787848261402e565b73ffffffffffffffffffffffffffffffffffffffff82166138b457600080fd5b6000610c19868686868587613fed565b806fffffffffffffffffffffffffffffffff811681146127b157600080fd5b816fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff161015613971576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f45430000000000000000000000000000000000000000000000000000000000006044820152606401610500565b600061397d8383614f6d565b9050610cfd848261402e565b610102818430856fffffffffffffffffffffffffffffffff16614062565b610102836139b58385614f3d565b6fffffffffffffffffffffffffffffffff166141d3565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691613a6391906150f0565b6000604051808303816000865af19150503d8060008114613aa0576040519150601f19603f3d011682016040523d82523d6000602084013e613aa5565b606091505b5091509150818015613acf575080511580613acf575080806020019051810190613acf9190614eaa565b610787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f54460000000000000000000000000000000000000000000000000000000000006044820152606401610500565b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5d892600283900b12801590613b725750620cb14a600283900b13155b613b7b57600080fd5b6000808360020b12613b90578260020b613b98565b8260020b6000035b9050600081600116600003613bbe57700100000000000000000000000000000000613bd0565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615613c04576ffff97272373d413259a46990580e213a0260801c5b6004821615613c23576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613c42576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613c61576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613c80576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613c9f576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613cbe576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615613cde576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615613cfe576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615613d1e576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613d3e576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615613d5e576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615613d7e576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615613d9e576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615613dbe576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615613ddf576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615613dff576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615613e1e576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615613e3b576b048a170391f7dc42444e8fa20260801c5b60008460020b1315613e7a57807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81613e7657613e7661510c565b0490505b68010000000000000000810615613e92576001613e95565b60005b60ff16604082901c0192505050919050565b6000806000613eba84866060015161429d565b8551909150613efd906fffffffffffffffffffffffffffffffff80841691160260401c5b77ffffffffffffffffffffffffffffffffffffffffffffffff166142f2565b9250613f10613ede82876000015161432b565b9150509250929050565b613f3e82613f39836fffffffffffffffffffffffffffffffff16613fb9565b614374565b5050565b6000806000856fffffffffffffffffffffffffffffffff161180613f635750825b613f6e576000613f79565b613f79600486614f3d565b6000856fffffffffffffffffffffffffffffffff161180613f975750835b613fa2576000613fad565b613fad600486614f3d565b91509150935093915050565b60006f80000000000000000000000000000000826fffffffffffffffffffffffffffffffff1610613fe957600080fd5b5090565b6000600f85900b131561400c5761400786858585856143b3565b610c19565b6000600f85900b1215610c1957610c1985614026866150b2565b8585856143e6565b6fffffffffffffffffffffffffffffffff811615613f3e57613f3e82826fffffffffffffffffffffffffffffffff166141d3565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052915160009283929088169161410191906150f0565b6000604051808303816000865af19150503d806000811461413e576040519150601f19603f3d011682016040523d82523d6000602084013e614143565b606091505b509150915081801561416d57508051158061416d57508080602001905181019061416d9190614eaa565b610c19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f54460000000000000000000000000000000000000000000000000000000000006044820152606401610500565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461422d576040519150601f19603f3d011682016040523d82523d6000602084013e614232565b606091505b5050905080610102576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f54460000000000000000000000000000000000000000000000000000000000006044820152606401610500565b600066010000000000006fffffffffffffffffffffffffffffffff80851667ffffffffffffffff851683010290603082901c9081111561240e576fffffffffffffffffffffffffffffffff93505050506100ab565b806fffffffffffffffffffffffffffffffff811677ffffffffffffffffffffffffffffffffffffffffffffffff8216146127b157600080fd5b60006fffffffffffffffffffffffffffffffff821677ffffffffffffffffffffffffffffffff0000000000000000604085901b168161436c5761436c61510c565b049392505050565b6020820151614395906fffffffffffffffffffffffffffffffff168261440e565b6fffffffffffffffffffffffffffffffff1660209092019190915250565b80156143da5760006143c686868661447b565b90506143d48682868661455a565b50610787565b61078785858585612ec6565b8015614402576143f7858585611dfa565b6138858584846145a3565b61078785858585613015565b60008082600f0b121561444557508082016fffffffffffffffffffffffffffffffff8084169082161061444057600080fd5b6100ab565b826fffffffffffffffffffffffffffffffff168284019150816fffffffffffffffffffffffffffffffff1610156100ab57600080fd5b6000806144888584612efc565b600081815262010010602052604090208054919250906fffffffffffffffffffffffffffffffff90811690861681111561451d578154869083906000906144e29084906fffffffffffffffffffffffffffffffff16614f6d565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550614550565b81547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016825561454d8187614f6d565b93505b5050509392505050565b6fffffffffffffffffffffffffffffffff83161561457e57612eec84848484612ec6565b73ffffffffffffffffffffffffffffffffffffffff8216610cfd57610cfd848261402e565b73ffffffffffffffffffffffffffffffffffffffff821661010257610102838261402e565b73ffffffffffffffffffffffffffffffffffffffff811681146145ea57600080fd5b50565b803561ffff811681146127b157600080fd5b6000806040838503121561461257600080fd5b823561461d816145c8565b9150612be9602084016145ed565b6000806020838503121561463e57600080fd5b823567ffffffffffffffff8082111561465657600080fd5b818501915085601f83011261466a57600080fd5b81358181111561467957600080fd5b86602082850101111561468b57600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b803560ff811681146127b157600080fd5b600080604083850312156146f057600080fd5b6146f9836146cc565b946020939093013593505050565b600080600080600080600060e0888a03121561472257600080fd5b61472b886146cc565b965060208801359550614740604089016145ed565b945061474e606089016145ed565b935061475c608089016146cc565b925061476a60a089016146cc565b915061477860c089016146cc565b905092959891949750929550565b600080600080600080600080610100898b0312156147a357600080fd5b6147ac896146cc565b975060208901356147bc816145c8565b965060408901356147cc816145c8565b9550606089013594506147e160808a016145ed565b93506147ef60a08a016145ed565b92506147fd60c08a016146cc565b915061480b60e08a016146cc565b90509295985092959890939650565b6000806040838503121561482d57600080fd5b614836836146cc565b9150612be9602084016146cc565b6000806000806080858703121561485a57600080fd5b614863856146cc565b93506020850135614873816145c8565b92506040850135614883816145c8565b9396929550929360600135925050565b80356fffffffffffffffffffffffffffffffff811681146127b157600080fd5b600080604083850312156148c657600080fd5b6148cf836146cc565b9150612be960208401614893565b600080600080608085870312156148f357600080fd5b6148fc856146cc565b9350602085013561490c816145c8565b925061491a60408601614893565b9150614928606086016145ed565b905092959194509250565b600080600080600060a0868803121561494b57600080fd5b614954866146cc565b94506020860135614964816145c8565b93506040860135614974816145c8565b92506060860135915061498960808701614893565b90509295509295909350565b803563ffffffff811681146127b157600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614a1f57614a1f6149a9565b604052919050565b60008060008060808587031215614a3d57600080fd5b614a46856146cc565b9350602080860135614a57816145c8565b9350614a6560408701614995565b9250606086013567ffffffffffffffff80821115614a8257600080fd5b818801915088601f830112614a9657600080fd5b813581811115614aa857614aa86149a9565b8060051b9150614ab98483016149d8565b818152918301840191848101908b841115614ad357600080fd5b938501935b83851015614af857614ae9856145ed565b82529385019390850190614ad8565b989b979a50959850505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614b6857614b68614b08565b5060010190565b60008060008060808587031215614b8557600080fd5b614b8e856146cc565b93506020850135614b9e816145c8565b9250614bac60408601614893565b91506060850135614bbc816145c8565b939692955090935050565b600080600080600080600080610100898b031215614be457600080fd5b614bed896146cc565b97506020890135614bfd816145c8565b9650614c0b60408a01614893565b95506060890135614c1b816145c8565b945060808901359350614c3060a08a016146cc565b925060c0890135915060e089013590509295985092959890939650565b8035600f81900b81146127b157600080fd5b60008060008060808587031215614c7557600080fd5b614c7e856146cc565b93506020850135614c8e816145c8565b9250614bac60408601614c4d565b600080600080600060a08688031215614cb457600080fd5b614cbd866146cc565b94506020860135935060408601359250614cd960608701614c4d565b91506080860135614ce9816145c8565b809150509295509295909350565b600080600060608486031215614d0c57600080fd5b614d15846146cc565b925060208401359150614d2a60408501614995565b90509250925092565b600082601f830112614d4457600080fd5b813567ffffffffffffffff811115614d5e57614d5e6149a9565b614d8f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016149d8565b818152846020838601011115614da457600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215614dd957600080fd5b614de2866146cc565b945060208601359350614df760408701614995565b92506060860135614e07816145c8565b9150608086013567ffffffffffffffff811115614e2357600080fd5b614e2f88828901614d33565b9150509295509295909350565b600080600060608486031215614e5157600080fd5b614e5a846146cc565b92506020840135614e6a816145c8565b9150604084013567ffffffffffffffff811115614e8657600080fd5b614e9286828701614d33565b9150509250925092565b80151581146145ea57600080fd5b600060208284031215614ebc57600080fd5b815161251381614e9c565b60008060408385031215614eda57600080fd5b614ee3836146cc565b91506020830135614ef3816145c8565b809150509250929050565b808201808211156100ab576100ab614b08565b60008060408385031215614f2457600080fd5b614f2d836146cc565b91506020830135614ef381614e9c565b6fffffffffffffffffffffffffffffffff818116838216019080821115614f6657614f66614b08565b5092915050565b6fffffffffffffffffffffffffffffffff828116828216039080821115614f6657614f66614b08565b60005b83811015614fb1578181015183820152602001614f99565b50506000910152565b60008151808452614fd2816020860160208601614f96565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015263ffffffff831660408201526080606082015260006150456080830184614fba565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061507e6040830184614fba565b949350505050565b60006020828403121561509857600080fd5b5051919050565b818103818111156100ab576100ab614b08565b600081600f0b7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081036150e7576150e7614b08565b60000392915050565b60008251615102818460208701614f96565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220c1f216ea837b8fb578d0588301f6ce6699645481b1bc318620df8c04bf7a233b64736f6c63430008130033