0 txs
12.2k calls
constructor
constructor()
functions
getAnnouncedOrder
viewfunction getAnnouncedOrder(address account) view returns (tuple order)
hasOrderExpired
viewfunction hasOrderExpired(address account) view returns (bool expired)
MIN_DEPOSIT
viewfunction MIN_DEPOSIT() view returns (uint256)
MODULE_KEY
viewfunction MODULE_KEY() view returns (bytes32)
vault
viewfunction vault() view returns (address)
announceLeverageAdjust
nonpayablefunction announceLeverageAdjust(uint256 tokenId, int256 marginAdjustment, int256 additionalSizeAdjustment, uint256 fillPrice, uint256 keeperFee)
announceLeverageClose
nonpayablefunction announceLeverageClose(uint256 tokenId, uint256 minFillPrice, uint256 keeperFee)
announceLeverageOpen
nonpayablefunction announceLeverageOpen(uint256 margin, uint256 additionalSize, uint256 maxFillPrice, uint256 keeperFee)
announceLeverageOpenFor
nonpayablefunction announceLeverageOpenFor(uint256 margin, uint256 additionalSize, uint256 maxFillPrice, uint256 keeperFee, address receiver)
announceStableDeposit
nonpayablefunction announceStableDeposit(uint256 depositAmount, uint256 minAmountOut, uint256 keeperFee)
announceStableDepositFor
nonpayablefunction announceStableDepositFor(uint256 depositAmount, uint256 minAmountOut, uint256 keeperFee, address receiver)
announceStableWithdraw
nonpayablefunction announceStableWithdraw(uint256 withdrawAmount, uint256 minAmountOut, uint256 keeperFee)
cancelExistingOrder
nonpayablefunction cancelExistingOrder(address account)
cancelOrderByModule
nonpayablefunction cancelOrderByModule(address account)
executeOrder
payablefunction executeOrder(address account, bytes[] priceUpdateData) payable
forceRemoveOrder
nonpayablefunction forceRemoveOrder(address account)
initialize
nonpayablefunction initialize(address _vault)
setVault
nonpayablefunction setVault(address _vault)
events
Initialized
event Initialized(uint64 version)
OrderAnnounced
event OrderAnnounced(address account, uint8 orderType, uint256 keeperFee)
OrderCancelled
event OrderCancelled(address account, uint8 orderType)
OrderExecuted
event OrderExecuted(address account, uint8 orderType, uint256 keeperFee)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
AmountTooSmall
error AmountTooSmall(uint256 amount, uint256 minAmount)
DelayedOrderInvalid
error DelayedOrderInvalid(address account)
ExecutableTimeNotReached
error ExecutableTimeNotReached(uint256 executableTime)
FailedInnerCall
error FailedInnerCall()
HighSlippage
error HighSlippage(uint256 supplied, uint256 accepted)
InvalidFee
error InvalidFee(uint256 fee)
InvalidInitialization
error InvalidInitialization()
InvariantViolation
error InvariantViolation(string variableName)
MaxFillPriceTooLow
error MaxFillPriceTooLow(uint256 maxFillPrice, uint256 currentPrice)
MinFillPriceTooHigh
error MinFillPriceTooHigh(uint256 minFillPrice, uint256 currentPrice)
ModuleKeyEmpty
error ModuleKeyEmpty()
NotEnoughBalanceForWithdraw
error NotEnoughBalanceForWithdraw(address account, uint256 totalBalance, uint256 withdrawAmount)
NotEnoughMarginForFees
error NotEnoughMarginForFees(int256 marginAmount, uint256 feeAmount)
NotInitializing
error NotInitializing()
NotTokenOwner
error NotTokenOwner(uint256 tokenId, address msgSender)
OnlyAuthorizedModule
error OnlyAuthorizedModule(address msgSender)
OnlyOwner
error OnlyOwner(address msgSender)
OrderHasExpired
error OrderHasExpired()
OrderHasNotExpired
error OrderHasNotExpired()
Paused
error Paused(bytes32 moduleKey)
PositionCreatesBadDebt
error PositionCreatesBadDebt()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
ValueNotPositive
error ValueNotPositive(string variableName)
WithdrawalTooSmall
error WithdrawalTooSmall(uint256 withdrawAmount, uint256 keeperFee)
ZeroAddress
error ZeroAddress(string variableName)
ZeroValue
error ZeroValue(string variableName)
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b615ba180620000e66000396000f3fe6080604052600436106101095760003560e01c806390f9644f11610095578063e014396911610064578063e0143969146102c9578063e1e158a5146102e9578063ed46834f14610300578063f2f6a2ce14610320578063fbfa77cf1461034057600080fd5b806390f9644f14610249578063a777b82b14610269578063b1c41fc314610289578063c4d66de8146102a957600080fd5b8063360f699b116100dc578063360f699b146101a55780633a7b1c21146101c55780633d23b9ca146101d85780636817031b146101fc5780637b6d83401461021c57600080fd5b806303bb4f691461010e5780630fc9b8221461013057806326e7dfe9146101505780632cf3aadf14610185575b600080fd5b34801561011a57600080fd5b5061012e610129366004615163565b610378565b005b34801561013c57600080fd5b5061012e61014b366004615180565b61051f565b34801561015c57600080fd5b5061017061016b366004615163565b610f7e565b60405190151581526020015b60405180910390f35b34801561019157600080fd5b5061012e6101a03660046151bb565b611088565b3480156101b157600080fd5b5061012e6101c03660046151bb565b611695565b61012e6101d33660046151e7565b611b21565b3480156101e457600080fd5b506101ee60005481565b60405190815260200161017c565b34801561020857600080fd5b5061012e610217366004615163565b6120cd565b34801561022857600080fd5b5061023c610237366004615163565b6121d1565b60405161017c919061532e565b34801561025557600080fd5b5061012e610264366004615341565b612304565b34801561027557600080fd5b5061012e610284366004615163565b612317565b34801561029557600080fd5b5061012e6102a43660046151bb565b6123f5565b3480156102b557600080fd5b5061012e6102c4366004615163565b612401565b3480156102d557600080fd5b5061012e6102e4366004615163565b612537565b3480156102f557600080fd5b506101ee620f424081565b34801561030c57600080fd5b5061012e61031b366004615373565b612725565b34801561032c57600080fd5b5061012e61033b3660046153c0565b612d34565b34801561034c57600080fd5b50600154610360906001600160a01b031681565b6040516001600160a01b03909116815260200161017c565b60015460405163399dd46360e01b81523360048201526001600160a01b039091169063399dd46390602401602060405180830381865afa1580156103c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e49190615401565b151560000361040d57604051633b9e98fd60e11b81523360048201526024015b60405180910390fd5b6001600160a01b03811660009081526032602052604090819020815160808101909252805461051c9284929091829060ff1660068111156104505761045061526e565b60068111156104615761046161526e565b81526001820154602082015260028201546001600160401b0316604082015260038201805460609092019161049590615423565b80601f01602080910402602001604051908101604052809291908181526020018280546104c190615423565b801561050e5780601f106104e35761010080835404028352916020019161050e565b820191906000526020600020905b8154815290600101906020018083116104f157829003601f168201915b5050505050815250506130a0565b50565b600154600054604051632b47fe9b60e01b81526001600160a01b0390921691632b47fe9b916105549160040190815260200190565b602060405180830381865afa158015610571573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105959190615401565b156105b957600054604051630cb09dc760e01b815260040161040491815260200190565b60006105c582336135c5565b9050841580156105d3575083155b156106335760405163046c82ad60e41b815260206004820152602960248201527f6d617267696e41646a7573746d656e747c6164646974696f6e616c53697a6541604482015268191a9d5cdd1b595b9d60ba1b6064820152608401610404565b600154604051630aa10e9f60e41b81526d6c657665726167654d6f64756c6560901b60048201526000916001600160a01b03169063aa10e9f090602401602060405180830381865afa15801561068d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b1919061545d565b6040516331a9108f60e11b81526004810189905290915033906001600160a01b03831690636352211e90602401602060405180830381865afa1580156106fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071f919061545d565b6001600160a01b03161461074f57604051630da7a30b60e31b815260048101889052336024820152604401610404565b600154604051630aa10e9f60e41b81526b6f7261636c654d6f64756c6560a01b6004820152600091829182916001600160a01b03169063aa10e9f090602401602060405180830381865afa1580156107ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107cf919061545d565b6001600160a01b03166398d5fdca6040518163ffffffff1660e01b81526004016040805180830381865afa15801561080b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082f919061547a565b5090506000881261093757604051634f599c3160e11b8152600481018990526001600160a01b03851690639eb3386290602401602060405180830381865afa15801561087f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a3919061549e565b600154604051630ce8fe6160e01b8152600481018b9052602481018390529193506001600160a01b031690630ce8fe619060440160006040518083038186803b1580156108ef57600080fd5b505afa158015610903573d6000803e3d6000fd5b50505050808710156109325760405163086aa6a360e41b81526004810188905260248101829052604401610404565b6109de565b6001600160a01b038416639eb338626109528a6000196154cd565b6040518263ffffffff1660e01b815260040161097091815260200190565b602060405180830381865afa15801561098d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b1919061549e565b9150808711156109de5760405163117838d960e01b81526004810188905260248101829052604401610404565b6109e886836154fd565b60015460405163eb02c30160e01b8152600481018d9052919450600093508992506001600160a01b03169063eb02c30190602401608060405180830381865afa158015610a39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5d919061554e565b60400151610a6b91906155b3565b90506000808913610a8557610a80838a6155db565b610a87565b885b604051633de9a8bb60e11b8152600481018c90526001600160a01b03861690637bd3517690602401606060405180830381865afa158015610acc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af09190615602565b60400151610afe91906155b3565b90506000811280610b0f5750600082125b15610b7057604051634f686b7d60e01b815260206004820152602a60248201527f6e65774d617267696e4166746572536574746c656d656e747c6e65774164646960448201526974696f6e616c53697a6560b01b6064820152608401610404565b600154604051630aa10e9f60e41b8152706c69717569646174696f6e4d6f64756c6560781b600482015282916001600160a01b03169063aa10e9f090602401602060405180830381865afa158015610bcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf0919061545d565b6040516314a184e760e01b815260048101859052602481018a90526001600160a01b0391909116906314a184e790604401602060405180830381865afa158015610c3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c62919061549e565b10610c8057604051632904a7fd60e11b815260040160405180910390fd5b604051630d46a8eb60e11b815260048101829052602481018390526001600160a01b03851690631a8d51d69060440160006040518083038186803b158015610cc757600080fd5b505afa158015610cdb573d6000803e3d6000fd5b505050505050604051806080016040528060056006811115610cff57610cff61526e565b8152602001858152602001846001600160401b031681526020016040518060c001604052808b81526020018a81526020018981526020018881526020018785610d48919061563e565b815260200184815250604051602001610da09190600060c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b60408051601f19818403018152918152915233600090815260326020522081518154829060ff19166001836006811115610ddc57610ddc61526e565b021790555060208201516001820155604082015160028201805467ffffffffffffffff19166001600160401b0390921691909117905560608201516003820190610e269082615697565b50506040516324b51b7960e11b8152600481018a90526b3232b630bcb2b227b93232b960a11b60248201526001600160a01b038416915063496a36f290604401600060405180830381600087803b158015610e8057600080fd5b505af1158015610e94573d6000803e3d6000fd5b505050506000871315610f3857610f383330610eb0848b6154fd565b600160009054906101000a90046001600160a01b03166001600160a01b031663d8dfeb456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f27919061545d565b6001600160a01b0316929190613817565b7f0aaed4f1864bd4663319a4a0ceb0b5f0766e7e58ee27cf50c48232258d5f582c33600586604051610f6c93929190615756565b60405180910390a15050505050505050565b6001600160a01b0381166000908152603260205260408120600201546001600160401b031680610ff15760405163046c82ad60e41b815260206004820152601060248201527f65786563757461626c65417454696d65000000000000000000000000000000006044820152606401610404565b60015460408051631ab1532b60e01b8152905142926001600160a01b031691631ab1532b9160048083019260209291908290030181865afa15801561103a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105e9190615781565b611071906001600160401b0316836154fd565b101561107e576001611081565b60005b9392505050565b600154600054604051632b47fe9b60e01b81526001600160a01b0390921691632b47fe9b916110bd9160040190815260200190565b602060405180830381865afa1580156110da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fe9190615401565b1561112257600054604051630cb09dc760e01b815260040161040491815260200190565b600061112e82336135c5565b600154604051630aa10e9f60e41b81526d6c657665726167654d6f64756c6560901b600482015291925060009182916001600160a01b03169063aa10e9f090602401602060405180830381865afa15801561118d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b1919061545d565b6040516331a9108f60e11b81526004810188905290915033906001600160a01b03831690636352211e90602401602060405180830381865afa1580156111fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121f919061545d565b6001600160a01b03161461124f57604051630da7a30b60e31b815260048101879052336024820152604401610404565b60015460405163eb02c30160e01b8152600481018890526000916001600160a01b03169063eb02c30190602401608060405180830381865afa158015611299573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bd919061554e565b604001519050816001600160a01b0316639eb33862826040518263ffffffff1660e01b81526004016112f191815260200190565b602060405180830381865afa15801561130e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611332919061549e565b604051633de9a8bb60e11b8152600481018990529093506000906001600160a01b03841690637bd3517690602401606060405180830381865afa15801561137d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a19190615602565b60400151905060006113b387866154fd565b9050808212156113e057604051630c46115560e31b81526004810183905260248101829052604401610404565b600154604051630aa10e9f60e41b81526b6f7261636c654d6f64756c6560a01b60048201526000916001600160a01b03169063aa10e9f090602401602060405180830381865afa158015611438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145c919061545d565b6001600160a01b03166398d5fdca6040518163ffffffff1660e01b81526004016040805180830381865afa158015611498573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114bc919061547a565b509050808911156114ea5760405163117838d960e01b8152600481018a905260248101829052604401610404565b5050505060405180608001604052806004600681111561150c5761150c61526e565b815260208082018790526001600160401b0386166040808401919091528051606080820183528b82528184018b815291830188815283518086018e90529251838501525182820152825180830382018152608090920183529093019290925233600090815260329091522081518154829060ff191660018360068111156115955761159561526e565b021790555060208201516001820155604082015160028201805467ffffffffffffffff19166001600160401b03909216919091179055606082015160038201906115df9082615697565b50506040516324b51b7960e11b8152600481018890526b3232b630bcb2b227b93232b960a11b60248201526001600160a01b038316915063496a36f290604401600060405180830381600087803b15801561163957600080fd5b505af115801561164d573d6000803e3d6000fd5b505050507f0aaed4f1864bd4663319a4a0ceb0b5f0766e7e58ee27cf50c48232258d5f582c3360048660405161168593929190615756565b60405180910390a1505050505050565b600154600054604051632b47fe9b60e01b81526001600160a01b0390921691632b47fe9b916116ca9160040190815260200190565b602060405180830381865afa1580156116e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170b9190615401565b1561172f57600054604051630cb09dc760e01b815260040161040491815260200190565b600061173b82336135c5565b600154604051630aa10e9f60e41b81526b737461626c654d6f64756c6560a01b60048201529192506000916001600160a01b039091169063aa10e9f090602401602060405180830381865afa158015611798573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bc919061545d565b6040516370a0823160e01b81523360048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182a919061549e565b90508581101561185d57604051637462f12160e01b81523360048201526024810182905260448101879052606401610404565b60405163d24545a760e01b8152600481018790526000906001600160a01b0384169063d24545a790602401602060405180830381865afa1580156118a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c9919061549e565b6001549091506001600160a01b0316630ce8fe6160006118e8846157aa565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526004810192909252602482015260440160006040518083038186803b15801561193c57600080fd5b505afa158015611950573d6000803e3d6000fd5b505050508085111561197f5760405163666f986f60e11b81526004810182905260248101869052604401610404565b611989858261563e565b9050858110156119b65760405163437879d160e01b81526004810182905260248101879052604401610404565b5060408051608081019091528060028152602001858152602001846001600160401b03168152602001604051806040016040528089815260200188815250604051602001611a0491906157c6565b60408051601f19818403018152918152915233600090815260326020522081518154829060ff19166001836006811115611a4057611a4061526e565b021790555060208201516001820155604082015160028201805467ffffffffffffffff19166001600160401b0390921691909117905560608201516003820190611a8a9082615697565b505060405163282d3fdf60e01b8152336004820152602481018890526001600160a01b038416915063282d3fdf90604401600060405180830381600087803b158015611ad557600080fd5b505af1158015611ae9573d6000803e3d6000fd5b505050507f0aaed4f1864bd4663319a4a0ceb0b5f0766e7e58ee27cf50c48232258d5f582c3360028660405161168593929190615756565b611b29613893565b600154600054604051632b47fe9b60e01b81526001600160a01b0390921691632b47fe9b91611b5e9160040190815260200190565b602060405180830381865afa158015611b7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9f9190615401565b15611bc357600054604051630cb09dc760e01b815260040161040491815260200190565b600154604051630aa10e9f60e41b81526b6f7261636c654d6f64756c6560a01b60048201526001600160a01b0390911690339084908490849063aa10e9f090602401602060405180830381865afa158015611c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c46919061545d565b6001600160a01b03166308f9c88e348585856040518563ffffffff1660e01b8152600401611c7693929190615806565b6000604051808303818588803b158015611c8f57600080fd5b505af1158015611ca3573d6000803e3d6000fd5b5050600154604051630aa10e9f60e41b81526b737461626c654d6f64756c6560a01b60048201526001600160a01b0390911693506000925083915063aa10e9f090602401602060405180830381865afa158015611d04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d28919061545d565b905060006040518060400160405280611d40856138dd565b8152602001836001600160a01b03166367f77e546040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da7919061549e565b90526001600160a01b038b1660009081526032602052604081205491925060ff90911690816006811115611ddd57611ddd61526e565b03611e065760405163f84a80a760e01b81526001600160a01b038c166004820152602401610404565b600160009054906101000a90046001600160a01b03166001600160a01b031663146a89cc6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e5657600080fd5b505af1158015611e6a573d6000803e3d6000fd5b50505050600160009054906101000a90046001600160a01b03166001600160a01b03166360435c306040518163ffffffff1660e01b815260040160006040518083038186803b158015611ebc57600080fd5b505afa158015611ed0573d6000803e3d6000fd5b5060019250611edd915050565b816006811115611eef57611eef61526e565b03611f0257611efd8b613ae9565b611f8a565b6002816006811115611f1657611f1661526e565b03611f2457611efd8b613e41565b6003816006811115611f3857611f3861526e565b03611f4657611efd8b614255565b6004816006811115611f5a57611f5a61526e565b03611f6857611efd8b6144c8565b6005816006811115611f7c57611f7c61526e565b03611f8a57611f8a8b61479c565b5060006040518060400160405280611fa1866138dd565b8152602001846001600160a01b03166367f77e546040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fe4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612008919061549e565b90528251815191925061201a91614b7d565b61208e836001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561205b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207f919061549e565b83602001518360200151614be4565b61209784614c4b565b50505050505050506120c860017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60015460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015612116573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213a919061545d565b6001600160a01b03161461216357604051630543601560e11b8152336004820152602401610404565b6001600160a01b0381166121a25760405163eac0d38960e01b81526020600482015260056024820152641d985d5b1d60da1b6044820152606401610404565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6121fb60408051608081019091528060008152600060208201819052604082015260609081015290565b6001600160a01b038216600090815260326020526040908190208151608081019092528054829060ff1660068111156122365761223661526e565b60068111156122475761224761526e565b81526001820154602082015260028201546001600160401b0316604082015260038201805460609092019161227b90615423565b80601f01602080910402602001604051908101604052809291908181526020018280546122a790615423565b80156122f45780601f106122c9576101008083540402835291602001916122f4565b820191906000526020600020905b8154815290600101906020018083116122d757829003601f168201915b5050505050815250509050919050565b6123118484848433612725565b50505050565b60015460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015612360573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612384919061545d565b6001600160a01b0316146123ad57604051630543601560e11b8152336004820152602401610404565b6001600160a01b0381166000908152603260205260408120805460ff191681556001810182905560028101805467ffffffffffffffff19169055906120c86003830182615100565b6120c883838333612d34565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b031660008115801561244b5750825b90506000826001600160401b031660011480156124675750303b155b905081158015612475575080155b156124935760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156124c757845468ff00000000000000001916680100000000000000001785555b6124e06b3232b630bcb2b227b93232b960a11b87614d28565b6124e8614db9565b831561252f57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001611685565b505050505050565b6001600160a01b0381166000908152603260205260408082208151608081019092528054829060ff1660068111156125715761257161526e565b60068111156125825761258261526e565b81526001820154602082015260028201546001600160401b031660408201526003820180546060909201916125b690615423565b80601f01602080910402602001604051908101604052809291908181526020018280546125e290615423565b801561262f5780601f106126045761010080835404028352916020019161262f565b820191906000526020600020905b81548152906001019060200180831161261257829003601f168201915b50505050508152505090506000600681111561264d5761264d61526e565b815160068111156126605761266061526e565b03612669575050565b600160009054906101000a90046001600160a01b03166001600160a01b0316631ab1532b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126e09190615781565b81604001516126ef91906158b6565b6001600160401b031642116127175760405163f31e62b160e01b815260040160405180910390fd5b61272182826130a0565b5050565b600154600054604051632b47fe9b60e01b81526001600160a01b0390921691632b47fe9b9161275a9160040190815260200190565b602060405180830381865afa158015612777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061279b9190615401565b156127bf57600054604051630cb09dc760e01b815260040161040491815260200190565b600154604051630aa10e9f60e41b81526d6c657665726167654d6f64756c6560901b60048201526000916001600160a01b03169063aa10e9f090602401602060405180830381865afa158015612819573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283d919061545d565b9050600061284b84846135c5565b604051634f599c3160e11b8152600481018890529091506000906001600160a01b03841690639eb3386290602401602060405180830381865afa158015612896573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ba919061549e565b600154604051630ce8fe6160e01b8152600481018a9052602481018390529192506001600160a01b031690630ce8fe619060440160006040518083038186803b15801561290657600080fd5b505afa15801561291a573d6000803e3d6000fd5b5050604051630d46a8eb60e11b8152600481018b9052602481018a90526001600160a01b0386169250631a8d51d6915060440160006040518083038186803b15801561296557600080fd5b505afa158015612979573d6000803e3d6000fd5b5050600154604051630aa10e9f60e41b81526b6f7261636c654d6f64756c6560a01b6004820152600093506001600160a01b03909116915063aa10e9f090602401602060405180830381865afa1580156129d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129fb919061545d565b6001600160a01b03166398d5fdca6040518163ffffffff1660e01b81526004016040805180830381865afa158015612a37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a5b919061547a565b50905080871015612a895760405163086aa6a360e41b81526004810188905260248101829052604401610404565b600154604051630aa10e9f60e41b8152706c69717569646174696f6e4d6f64756c6560781b60048201528a916001600160a01b03169063aa10e9f090602401602060405180830381865afa158015612ae5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b09919061545d565b6040516314a184e760e01b8152600481018b9052602481018a90526001600160a01b0391909116906314a184e790604401602060405180830381865afa158015612b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7b919061549e565b10612b9957604051632904a7fd60e11b815260040160405180910390fd5b60408051608081019091528060038152602001878152602001846001600160401b031681526020016040518060a001604052808c81526020018b81526020018a8152602001858152602001336001600160a01b0316815250604051602001612c3f9190600060a082019050825182526020830151602083015260408301516040830152606083015160608301526001600160a01b03608084015116608083015292915050565b60408051601f1981840301815291815291526001600160a01b038716600090815260326020522081518154829060ff19166001836006811115612c8457612c8461526e565b021790555060208201516001820155604082015160028201805467ffffffffffffffff19166001600160401b0390921691909117905560608201516003820190612cce9082615697565b50612ced91503390503084612ce38a8e6154fd565b610eb091906154fd565b7f0aaed4f1864bd4663319a4a0ceb0b5f0766e7e58ee27cf50c48232258d5f582c85600388604051612d2193929190615756565b60405180910390a1505050505050505050565b600154600054604051632b47fe9b60e01b81526001600160a01b0390921691632b47fe9b91612d699160040190815260200190565b602060405180830381865afa158015612d86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612daa9190615401565b15612dce57600054604051630cb09dc760e01b815260040161040491815260200190565b6000612dda83836135c5565b600154604051630b85d2d960e11b8152600481018890529192506001600160a01b03169063170ba5b29060240160006040518083038186803b158015612e1f57600080fd5b505afa158015612e33573d6000803e3d6000fd5b50505050620f4240851015612e6657604051625a5b2760e31b815260048101869052620f42406024820152604401610404565b600154604051630aa10e9f60e41b81526b737461626c654d6f64756c6560a01b60048201526000916001600160a01b03169063aa10e9f090602401602060405180830381865afa158015612ebe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ee2919061545d565b6001600160a01b03166336758550876040518263ffffffff1660e01b8152600401612f0f91815260200190565b602060405180830381865afa158015612f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f50919061549e565b905084811015612f7d5760405163437879d160e01b81526004810182905260248101869052604401610404565b604080516080810182526001815260208082018790526001600160401b038516828401528251606081810185528a82528183018a9052338286015293519293840192612fc992016158d6565b60408051601f1981840301815291815291526001600160a01b038516600090815260326020522081518154829060ff1916600183600681111561300e5761300e61526e565b021790555060208201516001820155604082015160028201805467ffffffffffffffff19166001600160401b03909216919091179055606082015160038201906130589082615697565b5061306c915033905030610eb0878a6154fd565b7f0aaed4f1864bd4663319a4a0ceb0b5f0766e7e58ee27cf50c48232258d5f582c8360018660405161168593929190615756565b6001600160a01b0382166000908152603260205260408120805460ff191681556001810182905560028101805467ffffffffffffffff19169055906130e86003830182615100565b5060019050815160068111156131005761310061526e565b036131c6576000816060015180602001905181019061311f9190615900565b90506131c0838360200151836000015161313991906154fd565b600160009054906101000a90046001600160a01b03166001600160a01b031663d8dfeb456040518163ffffffff1660e01b8152600401602060405180830381865afa15801561318c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b0919061545d565b6001600160a01b03169190614dcb565b50613586565b6002815160068111156131db576131db61526e565b036132e257600081606001518060200190518101906131fa9190615942565b600154604051630aa10e9f60e41b81526b737461626c654d6f64756c6560a01b60048201529192506001600160a01b03169063aa10e9f090602401602060405180830381865afa158015613252573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613276919061545d565b8151604051637eee288d60e01b81526001600160a01b0386811660048301526024820192909252911690637eee288d906044015b600060405180830381600087803b1580156132c457600080fd5b505af11580156132d8573d6000803e3d6000fd5b5050505050613586565b6003815160068111156132f7576132f761526e565b0361333f57600081606001518060200190518101906133169190615990565b90506131c08382606001518360000151856020015161333591906154fd565b61313991906154fd565b6004815160068111156133545761335461526e565b0361343857600081606001518060200190518101906133739190615602565b600154604051630aa10e9f60e41b81526d6c657665726167654d6f64756c6560901b60048201529192506001600160a01b03169063aa10e9f090602401602060405180830381865afa1580156133cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133f1919061545d565b81516040516393b0719d60e01b815260048101919091526b3232b630bcb2b227b93232b960a11b60248201526001600160a01b0391909116906393b0719d906044016132aa565b60058151600681111561344d5761344d61526e565b03613586576000816060015180602001905181019061346c9190615a05565b905060008160200151131561349357613493838260a00151836020015161313991906154fd565b600154604051630aa10e9f60e41b81526d6c657665726167654d6f64756c6560901b60048201526001600160a01b039091169063aa10e9f090602401602060405180830381865afa1580156134ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613510919061545d565b81516040516393b0719d60e01b815260048101919091526b3232b630bcb2b227b93232b960a11b60248201526001600160a01b0391909116906393b0719d90604401600060405180830381600087803b15801561356c57600080fd5b505af1158015613580573d6000803e3d6000fd5b50505050505b80516040517f4a6b5a554fec07280a14030b5fe290efc3254f7a1448f2e4d1a687ad5e4904fd916135b991859190615a7e565b60405180910390a15050565b6001546040805163051aa27360e21b815290516000926001600160a01b03169163146a89cc916004808301928692919082900301818387803b15801561360a57600080fd5b505af115801561361e573d6000803e3d6000fd5b50505050600160009054906101000a90046001600160a01b03166001600160a01b03166360435c306040518163ffffffff1660e01b815260040160006040518083038186803b15801561367057600080fd5b505afa158015613684573d6000803e3d6000fd5b5050600154604051630aa10e9f60e41b8152686b656570657246656560b81b60048201526001600160a01b03909116925063aa10e9f09150602401602060405180830381865afa1580156136dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613700919061545d565b6001600160a01b031663354662e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561373d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613761919061549e565b8310156137845760405163179c637760e11b815260048101849052602401610404565b61378d82612537565b600160009054906101000a90046001600160a01b03166001600160a01b031663027566a96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138049190615781565b611081906001600160401b0316426154fd565b6040516001600160a01b0384811660248301528381166044830152606482018390526123119186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050614dfc565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f008054600119016138d757604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b600080826001600160a01b031663d8dfeb456040518163ffffffff1660e01b8152600401602060405180830381865afa15801561391e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613942919061545d565b6040516370a0823160e01b81526001600160a01b03858116600483015291909116906370a0823190602401602060405180830381865afa15801561398a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139ae919061549e565b90506000836001600160a01b0316631cc5b7766040518163ffffffff1660e01b8152600401606060405180830381865afa1580156139f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a149190615602565b60000151846001600160a01b03166385820ba36040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a7a919061549e565b613a8491906155b3565b905080821215613ad75760405163015cf55b60e31b815260206004820152600e60248201527f636f6c6c61746572616c4e6574310000000000000000000000000000000000006044820152606401610404565b613ae181836155db565b949350505050565b6001600160a01b0381166000908152603260205260408082208151608081019092528054829060ff166006811115613b2357613b2361526e565b6006811115613b3457613b3461526e565b81526001820154602082015260028201546001600160401b03166040820152600382018054606090920191613b6890615423565b80601f0160208091040260200160405190810160405280929190818152602001828054613b9490615423565b8015613be15780601f10613bb657610100808354040283529160200191613be1565b820191906000526020600020905b815481529060010190602001808311613bc457829003601f168201915b505050505081525050905060008160600151806020019051810190613c069190615900565b6001548151604051630b85d2d960e11b815260048101919091529192506001600160a01b03169063170ba5b29060240160006040518083038186803b158015613c4e57600080fd5b505afa158015613c62573d6000803e3d6000fd5b50505050613c7d8383604001516001600160401b0316614e5f565b600154604051630aa10e9f60e41b81526b737461626c654d6f64756c6560a01b60048201526001600160a01b039091169063aa10e9f090602401602060405180830381865afa158015613cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cf8919061545d565b6001600160a01b031663c149e6ae848460400151846040518463ffffffff1660e01b8152600401613d2b93929190615a9b565b600060405180830381600087803b158015613d4557600080fd5b505af1158015613d59573d6000803e3d6000fd5b505050506020828101516001546040805163d8dfeb4560e01b81529051613dad943394936001600160a01b03169263d8dfeb4592600480830193928290030181865afa15801561318c573d6000803e3d6000fd5b60015481516040805163d8dfeb4560e01b81529051613dfe936001600160a01b03169291839163d8dfeb45916004808201926020929091908290030181865afa15801561318c573d6000803e3d6000fd5b815160208301516040517e33bce9199bd52d311031877abb23eb96f48c0233bcff63a4e4acb31896ce3792613e34928792615756565b60405180910390a1505050565b6001600160a01b0381166000908152603260205260408082208151608081019092528054829060ff166006811115613e7b57613e7b61526e565b6006811115613e8c57613e8c61526e565b81526001820154602082015260028201546001600160401b03166040820152600382018054606090920191613ec090615423565b80601f0160208091040260200160405190810160405280929190818152602001828054613eec90615423565b8015613f395780601f10613f0e57610100808354040283529160200191613f39565b820191906000526020600020905b815481529060010190602001808311613f1c57829003601f168201915b5050505050815250509050613f5b8282604001516001600160401b0316614e5f565b60008160600151806020019051810190613f759190615942565b600154604051630aa10e9f60e41b81526b737461626c654d6f64756c6560a01b600482015291925060009182916001600160a01b03169063aa10e9f090602401602060405180830381865afa158015613fd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ff6919061545d565b6001600160a01b031663c1105875868660400151866040518463ffffffff1660e01b815260040161402993929190615ae4565b60408051808303816000875af1158015614047573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061406b919061547a565b91509150600081856020015161408191906154fd565b9050808310156140ae57604051630c46115560e31b81526004810184905260248101829052604401610404565b6140b8818461563e565b925083602001518310156140ef57602084015160405163437879d160e01b8152610404918591600401918252602082015260400190565b600154604051631bf9f06960e11b8152600481018490526001600160a01b03909116906337f3e0d290602401600060405180830381600087803b15801561413557600080fd5b505af1158015614149573d6000803e3d6000fd5b50506001546020880151604051636250216960e01b815233600482015260248101919091526001600160a01b03909116925063625021699150604401600060405180830381600087803b15801561419f57600080fd5b505af11580156141b3573d6000803e3d6000fd5b5050600154604051636250216960e01b81526001600160a01b038a8116600483015260248201889052909116925063625021699150604401600060405180830381600087803b15801561420557600080fd5b505af1158015614219573d6000803e3d6000fd5b5050865160208801516040517e33bce9199bd52d311031877abb23eb96f48c0233bcff63a4e4acb31896ce37945061168593508a929190615756565b6001600160a01b0381166000908152603260205260408082208151608081019092528054829060ff16600681111561428f5761428f61526e565b60068111156142a0576142a061526e565b81526001820154602082015260028201546001600160401b031660408201526003820180546060909201916142d490615423565b80601f016020809104026020016040519081016040528092919081815260200182805461430090615423565b801561434d5780601f106143225761010080835404028352916020019161434d565b820191906000526020600020905b81548152906001019060200180831161433057829003601f168201915b5050505050815250509050600081606001518060200190518101906143729190615990565b905061438b8383604001516001600160401b0316614e5f565b6001546020830151606083015183516143b2936001600160a01b03169291613335916154fd565b600154604051630aa10e9f60e41b81526d6c657665726167654d6f64756c6560901b60048201526001600160a01b039091169063aa10e9f090602401602060405180830381865afa15801561440b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061442f919061545d565b6001600160a01b03166306dcdd048433856040518463ffffffff1660e01b815260040161445e93929190615b1a565b600060405180830381600087803b15801561447857600080fd5b505af115801561448c573d6000803e3d6000fd5b5050835160208501516040517e33bce9199bd52d311031877abb23eb96f48c0233bcff63a4e4acb31896ce379450613e34935087929190615756565b6001600160a01b0381166000908152603260205260408082208151608081019092528054829060ff1660068111156145025761450261526e565b60068111156145135761451361526e565b81526001820154602082015260028201546001600160401b0316604082015260038201805460609092019161454790615423565b80601f016020809104026020016040519081016040528092919081815260200182805461457390615423565b80156145c05780601f10614595576101008083540402835291602001916145c0565b820191906000526020600020905b8154815290600101906020018083116145a357829003601f168201915b5050505050815250509050600081606001518060200190518101906145e59190615602565b600154604051630aa10e9f60e41b81526d6c657665726167654d6f64756c6560901b60048201529192506000916001600160a01b039091169063aa10e9f090602401602060405180830381865afa158015614644573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614668919061545d565b82516040516331a9108f60e11b81529192506001600160a01b03831691636352211e9161469b9160040190815260200190565b602060405180830381865afa1580156146b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146dc919061545d565b506146f48484604001516001600160401b0316614e5f565b60405163070a9a7560e41b81526001600160a01b038216906370a9a7509061472490879033908890600401615b1a565b600060405180830381600087803b15801561473e57600080fd5b505af1158015614752573d6000803e3d6000fd5b5050845160208601516040517e33bce9199bd52d311031877abb23eb96f48c0233bcff63a4e4acb31896ce37945061478e935088929190615756565b60405180910390a150505050565b6001600160a01b0381166000908152603260205260408082208151608081019092528054829060ff1660068111156147d6576147d661526e565b60068111156147e7576147e761526e565b81526001820154602082015260028201546001600160401b0316604082015260038201805460609092019161481b90615423565b80601f016020809104026020016040519081016040528092919081815260200182805461484790615423565b80156148945780601f1061486957610100808354040283529160200191614894565b820191906000526020600020905b81548152906001019060200180831161487757829003601f168201915b5050505050815250509050600081606001518060200190518101906148b99190615a05565b600154604051630aa10e9f60e41b81526d6c657665726167654d6f64756c6560901b60048201529192506000916001600160a01b039091169063aa10e9f090602401602060405180830381865afa158015614918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061493c919061545d565b82516040516331a9108f60e11b81529192506001600160a01b03831691636352211e9161496f9160040190815260200190565b602060405180830381865afa15801561498c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149b0919061545d565b506149c88484604001516001600160401b0316614e5f565b600154604051630aa10e9f60e41b8152693634b6b4ba27b93232b960b11b60048201526001600160a01b039091169063aa10e9f090602401602060405180830381865afa158015614a1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a41919061545d565b825160405163018dc31960e41b81526001600160a01b0392909216916318dc319091614a739160040190815260200190565b600060405180830381600087803b158015614a8d57600080fd5b505af1158015614aa1573d6000803e3d6000fd5b50505050600082602001511315614adb57600154602080850151608085015191850151614adb936001600160a01b031692613335916154fd565b81516040516393b0719d60e01b815260048101919091526b3232b630bcb2b227b93232b960a11b60248201526001600160a01b038216906393b0719d90604401600060405180830381600087803b158015614b3557600080fd5b505af1158015614b49573d6000803e3d6000fd5b50506040516352643c6160e11b81526001600160a01b038416925063a4c878c2915061472490879033908890600401615b1a565b80821380614b965750614b9382620f42406155b3565b81135b156127215760405163015cf55b60e31b815260206004820152600e60248201527f636f6c6c61746572616c4e6574320000000000000000000000000000000000006044820152606401610404565b600083118015614bfd575081614bfb8260016154fd565b105b156120c85760405163015cf55b60e31b815260206004820152601860248201527f737461626c65436f6c6c61746572616c506572536861726500000000000000006044820152606401610404565b6000816001600160a01b0316631cc5b7766040518163ffffffff1660e01b8152600401606060405180830381865afa158015614c8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614caf9190615602565b60200151101561051c5760405163015cf55b60e31b815260206004820152601f60248201527f676c6f62616c41766572616765507269636549734e6f744e65676174697665006044820152606401610404565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b81614d465760405163673791e360e11b815260040160405180910390fd5b6001600160a01b038116614d855760405163eac0d38960e01b81526020600482015260056024820152641d985d5b1d60da1b6044820152606401610404565b6000919091556001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909216919091179055565b614dc1614f74565b614dc9614fc2565b565b6040516001600160a01b038381166024830152604482018390526120c891859182169063a9059cbb9060640161384c565b6000614e116001600160a01b03841683614fca565b90508051600014158015614e36575080806020019051810190614e349190615401565b155b156120c857604051635274afe760e01b81526001600160a01b0384166004820152602401610404565b600160009054906101000a90046001600160a01b03166001600160a01b0316631ab1532b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ed69190615781565b614ee9906001600160401b0316826154fd565b421115614f085760405162bcf1ab60e61b815260040160405180910390fd5b80421015614f2c5760405163d0878a9360e01b815260048101829052602401610404565b6001600160a01b0382166000908152603260205260408120805460ff191681556001810182905560028101805467ffffffffffffffff19169055906123116003830182615100565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16614dc957604051631afcd79f60e31b815260040160405180910390fd5b614d02614f74565b606061108183836000614fde565b92915050565b6060814710156150035760405163cd78605960e01b8152306004820152602401610404565b600080856001600160a01b0316848660405161501f9190615b4f565b60006040518083038185875af1925050503d806000811461505c576040519150601f19603f3d011682016040523d82523d6000602084013e615061565b606091505b509150915061507186838361507b565b9695505050505050565b6060826150905761508b826150d7565b611081565b81511580156150a757506001600160a01b0384163b155b156150d057604051639996b31560e01b81526001600160a01b0385166004820152602401610404565b5080611081565b8051156150e75780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50805461510c90615423565b6000825580601f1061511c575050565b601f01602090049060005260206000209081019061051c91905b8082111561514a5760008155600101615136565b5090565b6001600160a01b038116811461051c57600080fd5b60006020828403121561517557600080fd5b81356110818161514e565b600080600080600060a0868803121561519857600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000806000606084860312156151d057600080fd5b505081359360208301359350604090920135919050565b6000806000604084860312156151fc57600080fd5b83356152078161514e565b925060208401356001600160401b038082111561522357600080fd5b818601915086601f83011261523757600080fd5b81358181111561524657600080fd5b8760208260051b850101111561525b57600080fd5b6020830194508093505050509250925092565b634e487b7160e01b600052602160045260246000fd5b600781106152a257634e487b7160e01b600052602160045260246000fd5b9052565b60005b838110156152c15781810151838201526020016152a9565b50506000910152565b6152d5828251615284565b602081015160208301526001600160401b036040820151166040830152600060608201516080606085015280518060808601526153198160a08701602085016152a6565b601f01601f19169390930160a0019392505050565b60208152600061108160208301846152ca565b6000806000806080858703121561535757600080fd5b5050823594602084013594506040840135936060013592509050565b600080600080600060a0868803121561538b57600080fd5b8535945060208601359350604086013592506060860135915060808601356153b28161514e565b809150509295509295909350565b600080600080608085870312156153d657600080fd5b84359350602085013592506040850135915060608501356153f68161514e565b939692955090935050565b60006020828403121561541357600080fd5b8151801515811461108157600080fd5b600181811c9082168061543757607f821691505b60208210810361545757634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561546f57600080fd5b81516110818161514e565b6000806040838503121561548d57600080fd5b505080516020909101519092909150565b6000602082840312156154b057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b80820260008212600160ff1b841416156154e9576154e96154b7565b8181058314821517614fd857614fd86154b7565b80820180821115614fd857614fd86154b7565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561554857615548615510565b60405290565b60006080828403121561556057600080fd5b604051608081018181106001600160401b038211171561558257615582615510565b8060405250825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b80820182811260008312801582168215821617156155d3576155d36154b7565b505092915050565b81810360008312801583831316838312821617156155fb576155fb6154b7565b5092915050565b60006060828403121561561457600080fd5b61561c615526565b8251815260208301516020820152604083015160408201528091505092915050565b81810381811115614fd857614fd86154b7565b601f8211156120c857600081815260208120601f850160051c810160208610156156785750805b601f850160051c820191505b8181101561252f57828155600101615684565b81516001600160401b038111156156b0576156b0615510565b6156c4816156be8454615423565b84615651565b602080601f8311600181146156f957600084156156e15750858301515b600019600386901b1c1916600185901b17855561252f565b600085815260208120601f198616915b8281101561572857888601518255948401946001909101908401615709565b50858210156157465787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b0384168152606081016157736020830185615284565b826040830152949350505050565b60006020828403121561579357600080fd5b81516001600160401b038116811461108157600080fd5b6000600160ff1b82016157bf576157bf6154b7565b5060000390565b815181526020808301519082015260408101614fd8565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000604082016001600160a01b038616835260206040818501528185835260608501905060608660051b86010192508660005b878110156158a857868503605f190183528135368a9003601e1901811261585f57600080fd5b890184810190356001600160401b0381111561587a57600080fd5b80360382131561588957600080fd5b6158948782846157dd565b965050509183019190830190600101615839565b509298975050505050505050565b6001600160401b038181168382160190808211156155fb576155fb6154b7565b81518152602080830151908201526040808301516001600160a01b03169082015260608101614fd8565b60006060828403121561591257600080fd5b61591a615526565b825181526020830151602082015260408301516159368161514e565b60408201529392505050565b60006040828403121561595457600080fd5b604051604081018181106001600160401b038211171561597657615976615510565b604052825181526020928301519281019290925250919050565b600060a082840312156159a257600080fd5b60405160a081018181106001600160401b03821117156159c4576159c4615510565b80604052508251815260208301516020820152604083015160408201526060830151606082015260808301516159f98161514e565b60808201529392505050565b600060c08284031215615a1757600080fd5b60405160c081018181106001600160401b0382111715615a3957615a39615510565b8060405250825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201528091505092915050565b6001600160a01b0383168152604081016110816020830184615284565b6001600160a01b03841681526001600160401b038316602082015260a08101613ae1604083018480518252602080820151908301526040908101516001600160a01b0316910152565b6001600160a01b03841681526001600160401b038316602082015260808101613ae1604083018480518252602090810151910152565b60006001600160a01b03808616835280851660208401525060606040830152615b4660608301846152ca565b95945050505050565b60008251615b618184602087016152a6565b919091019291505056fea26469706673582212206d31d003b61c71b525e0c1ab865841a7a4983a92601a5d5551552820b3beaf0264736f6c63430008140033