0x60806040523480156200001157600080fd5b506040516200196238038062001962833981016040819052620000349162000327565b6001600160a01b03891615806200005257506001600160a01b038816155b806200006557506001600160a01b038716155b806200007857506001600160a01b038116155b15620000b85760408051808201825260018152602160f91b6020820152905162461bcd60e51b8152620000af91906004016200047e565b60405180910390fd5b600180546001600160a01b03199081166001600160a01b038c811691909117909255600280549091168a831617905560038054600480546001600160401b038a81166001600160801b031990921691909117680100000000000000008a83160217909155928a167fffffff0000000000000000ff000000000000000000000000000000000000000090911617600160a81b928916929092029190911760ff60a01b1916600160a01b85151502179055600562000175838262000544565b50620001916000805160206200194283398151915280620001bc565b620001ac600080516020620019428339815191528262000207565b5050505050505050505062000610565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6000828152602081815260408083206001600160a01b038516845290915281205460ff16620002ac576000838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620002633390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620002b0565b5060005b92915050565b80516001600160a01b0381168114620002ce57600080fd5b919050565b80516001600160401b0381168114620002ce57600080fd5b634e487b7160e01b600052604160045260246000fd5b60005b838110156200031e57818101518382015260200162000304565b50506000910152565b60008060008060008060008060006101208a8c0312156200034757600080fd5b620003528a620002b6565b98506200036260208b01620002b6565b97506200037260408b01620002b6565b96506200038260608b01620002d3565b95506200039260808b01620002d3565b9450620003a260a08b01620002d3565b935060c08a01518015158114620003b857600080fd5b60e08b01519093506001600160401b0380821115620003d657600080fd5b818c0191508c601f830112620003eb57600080fd5b815181811115620004005762000400620002eb565b604051601f8201601f19908116603f011681019083821181831017156200042b576200042b620002eb565b816040528281528f60208487010111156200044557600080fd5b6200045883602083016020880162000301565b80965050505050506200046f6101008b01620002b6565b90509295985092959850929598565b60208152600082518060208401526200049f81604085016020870162000301565b601f01601f19169190910160400192915050565b600181811c90821680620004c857607f821691505b602082108103620004e957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200053f576000816000526020600020601f850160051c810160208610156200051a5750805b601f850160051c820191505b818110156200053b5782815560010162000526565b5050505b505050565b81516001600160401b03811115620005605762000560620002eb565b6200057881620005718454620004b3565b84620004ef565b602080601f831160018114620005b05760008415620005975750858301515b600019600386901b1c1916600185901b1785556200053b565b600085815260208120601f198616915b82811015620005e157888601518255948401946001909101908401620005c0565b5085821015620006005787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61132280620006206000396000f3fe608060405234801561001057600080fd5b506004361061014c5760003560e01c806350d25bcd116100c3578063bb8cbd6d1161007c578063bb8cbd6d146102ef578063c15ef47a14610302578063cd6495bf14610315578063ce84912814610328578063d547741f1461033b578063de5fb7bb1461034e57600080fd5b806350d25bcd146102975780636ba309281461029f57806387a9cc0e146102a757806391d14854146102ba578063a217fddf146102cd578063b59e0a10146102d557600080fd5b80631063cf5d116101155780631063cf5d146101fe578063198f725014610213578063248a9ca3146102265780632f2ff15d14610257578063313ce5671461026a57806336568abe1461028457600080fd5b80627314051461015157806301c4b8551461018857806301ffc9a71461019b57806306fdde03146101be5780630b9cc9e8146101d3575b600080fd5b60045461016b90600160401b90046001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b60045461016b906001600160401b031681565b6101ae6101a9366004610f15565b610361565b604051901515815260200161017f565b6101c6610398565b60405161017f9190610f46565b6002546101e6906001600160a01b031681565b6040516001600160a01b03909116815260200161017f565b61021161020c366004610f95565b610426565b005b610211610221366004610fda565b6104b2565b610249610234366004610ff5565b60009081526020819052604090206001015490565b60405190815260200161017f565b61021161026536600461100e565b61052e565b610272601281565b60405160ff909116815260200161017f565b61021161029236600461100e565b610559565b610249610591565b610249610883565b6102116102b5366004610f95565b6109f9565b6101ae6102c836600461100e565b610a92565b610249600081565b60035461016b90600160a81b90046001600160401b031681565b6001546101e6906001600160a01b031681565b6003546101e6906001600160a01b031681565b610211610323366004610fda565b610abb565b610211610336366004610f95565b610b38565b61021161034936600461100e565b610bce565b61021161035c366004610fda565b610bf3565b60006001600160e01b03198216637965db0b60e01b148061039257506301ffc9a760e01b6001600160e01b03198316145b92915050565b600580546103a59061103a565b80601f01602080910402602001604051908101604052809291908181526020018280546103d19061103a565b801561041e5780601f106103f35761010080835404028352916020019161041e565b820191906000526020600020905b81548152906001019060200180831161040157829003601f168201915b505050505081565b6000805160206112b683398151915261043e81610c77565b6004805467ffffffffffffffff19166001600160401b03841690811790915560408051818152601491810191909152731c5d5bdd1953dc9858db19551a5b59531a5b5a5d60621b606082015260208101919091526000805160206112f6833981519152906080015b60405180910390a15050565b6000805160206112b68339815191526104ca81610c77565b600180546001600160a01b0319166001600160a01b03841690811790915560408051818152600d918101919091526c626173655573644f7261636c6560981b606082015260208101919091526000805160206112d6833981519152906080016104a6565b60008281526020819052604090206001015461054981610c77565b6105538383610c84565b50505050565b6001600160a01b03811633146105825760405163334bd91960e11b815260040160405180910390fd5b61058c8282610d16565b505050565b600061059b610d81565b60025460408051633fabe5a360e21b815290516001600160a01b03909216916000918291849163feaf968c9160048083019260a09291908290030181865afa1580156105eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060f919061108e565b5093505092505060008213158061063c57506004544290610639906001600160401b0316836110f4565b11155b156106795760408051808201825260018152600560fc1b6020820152905162461bcd60e51b81526106709190600401610f46565b60405180910390fd5b6000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106dd9190611107565b90506000600160009054906101000a90046001600160a01b03169050600080826001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561073a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075e919061108e565b509350509250506000821315806107925750600354429061078f90600160a81b90046001600160401b0316836110f4565b11155b156107c65760408051808201825260018152600560fc1b6020820152905162461bcd60e51b81526106709190600401610f46565b6000836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082a9190611107565b905061083f61083a86600a61120e565b610ea7565b610849908461121d565b61086261085783601261124d565b61083a90600a61120e565b61086c908961121d565b6108769190611266565b9850505050505050505090565b600061088d610d81565b60015460408051633fabe5a360e21b815290516001600160a01b03909216916000918291849163feaf968c9160048083019260a09291908290030181865afa1580156108dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610901919061108e565b509350509250506000821315806109355750600354429061093290600160a81b90046001600160401b0316836110f4565b11155b156109695760408051808201825260018152600560fc1b6020820152905162461bcd60e51b81526106709190600401610f46565b6109ce836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108579190611107565b6109dd61083a6012600a61120e565b6109e7908461121d565b6109f19190611266565b935050505090565b6000805160206112b6833981519152610a1181610c77565b600480546001600160401b038416600160401b0267ffffffffffffffff60401b199091161790556040516000805160206112f6833981519152906104a69084906040808252601690820152751cd95c5d595b98d95c911bdddb9d1a5b59531a5b5a5d60521b60608201526001600160401b0391909116602082015260800190565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6000805160206112b6833981519152610ad381610c77565b600280546001600160a01b0319166001600160a01b03841690811790915560408051818152600e918101919091526d71756f74655573644f7261636c6560901b606082015260208101919091526000805160206112d6833981519152906080016104a6565b6000805160206112b6833981519152610b5081610c77565b600380546001600160401b038416600160a81b0267ffffffffffffffff60a81b199091161790556040516000805160206112f6833981519152906104a690849060408082526013908201527218985cd953dc9858db19551a5b59531a5b5a5d606a1b60608201526001600160401b0391909116602082015260800190565b600082815260208190526040902060010154610be981610c77565b6105538383610d16565b6000805160206112b6833981519152610c0b81610c77565b600380546001600160a01b0319166001600160a01b038416908117909155604080518181526015918101919091527473657175656e636572557074696d654f7261636c6560581b606082015260208101919091526000805160206112d6833981519152906080016104a6565b610c818133610ed8565b50565b6000610c908383610a92565b610d0e576000838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055610cc63390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610392565b506000610392565b6000610d228383610a92565b15610d0e576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610392565b600354600160a01b900460ff1615610ea557600080600360009054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610de9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0d919061108e565b509194509250508215905080610e4d57604080518082018252600281526114d160f21b6020820152905162461bcd60e51b81526106709190600401610f46565b6000610e5983426112a2565b600454909150600160401b90046001600160401b0316811161055357604080518082018252600281526114d160f21b6020820152905162461bcd60e51b81526106709190600401610f46565b565b60006001600160ff1b03821115610ed45760405163123baf0360e11b815260048101839052602401610670565b5090565b610ee28282610a92565b610f115760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610670565b5050565b600060208284031215610f2757600080fd5b81356001600160e01b031981168114610f3f57600080fd5b9392505050565b60006020808352835180602085015260005b81811015610f7457858101830151858201604001528201610f58565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215610fa757600080fd5b81356001600160401b0381168114610f3f57600080fd5b80356001600160a01b0381168114610fd557600080fd5b919050565b600060208284031215610fec57600080fd5b610f3f82610fbe565b60006020828403121561100757600080fd5b5035919050565b6000806040838503121561102157600080fd5b8235915061103160208401610fbe565b90509250929050565b600181811c9082168061104e57607f821691505b60208210810361106e57634e487b7160e01b600052602260045260246000fd5b50919050565b805169ffffffffffffffffffff81168114610fd557600080fd5b600080600080600060a086880312156110a657600080fd5b6110af86611074565b94506020860151935060408601519250606086015191506110d260808701611074565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b80820180821115610392576103926110de565b60006020828403121561111957600080fd5b815160ff81168114610f3f57600080fd5b600181815b8085111561116557816000190482111561114b5761114b6110de565b8085161561115857918102915b93841c939080029061112f565b509250929050565b60008261117c57506001610392565b8161118957506000610392565b816001811461119f57600281146111a9576111c5565b6001915050610392565b60ff8411156111ba576111ba6110de565b50506001821b610392565b5060208310610133831016604e8410600b84101617156111e8575081810a610392565b6111f2838361112a565b8060001904821115611206576112066110de565b029392505050565b6000610f3f60ff84168361116d565b80820260008212600160ff1b84141615611239576112396110de565b8181058314821517610392576103926110de565b60ff8181168382160190811115610392576103926110de565b60008261128357634e487b7160e01b600052601260045260246000fd5b600160ff1b82146000198414161561129d5761129d6110de565b500590565b81810381811115610392576103926110de56fe35a7846a2a701fff6f9d61a46ebff5da578c5dcee8bdf361c569f9ea4ee647710134e6f5996fac027f7faa0c7a9c387e89baea8ced15a0cf3c3f3aeb53367c09bc767dbbbd4bc41accc44ab367fdc4b4c9de58617615e4d6c446916d23de5bb8a164736f6c6343000817000a35a7846a2a701fff6f9d61a46ebff5da578c5dcee8bdf361c569f9ea4ee647710000000000000000000000006bf14cb0a831078629d993fdebcb182b21a8774c00000000000000000000000043d12fb3afcad5347fa764eeab105478337b720000000000000000000000000045c2b8c204568a03dc7a2e32b71d67fe97f908a900000000000000000000000000000000000000000000000000000000000151b200000000000000000000000000000000000000000000000000000000000151b20000000000000000000000000000000000000000000000000000000000000e1000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000120000000000000000000000000304429401bfcfe7e65fa7fb08ad03f0f88db512d00000000000000000000000000000000000000000000000000000000000000074574685573646300000000000000000000000000000000000000000000000000