0 txs
0 calls
constructor
constructor(address _registry)
functions
authority
viewfunction authority() view returns (address)
getKyberRouter
viewfunction getKyberRouter() view returns (address)
getRegistry
viewfunction getRegistry() view returns (address)
getRouterUtil
viewfunction getRouterUtil() view returns (address)
isConsumingScheduledOp
viewfunction isConsumingScheduledOp() view returns (bytes4)
paused
viewfunction paused() view returns (bool)
previewRate
viewfunction previewRate(bytes _commands, bytes[] _inputs) view returns (uint256)
previewSpotRate
viewfunction previewSpotRate(bytes _commands, bytes[] _inputs) view returns (uint256)
execute
payablefunction execute(bytes _commands, bytes[] _inputs, uint256 _deadline) payable
execute
payablefunction execute(bytes _commands, bytes[] _inputs) payable
initialize
nonpayablefunction initialize(address _routerUtil, address _kyberRouter, address _initialAuthority)
onFlashLoan
nonpayablefunction onFlashLoan(address, address _token, uint256 _amount, uint256 _fee, bytes _data) returns (bytes32)
pause
nonpayablefunction pause()
setAuthority
nonpayablefunction setAuthority(address newAuthority)
setKyberRouter
nonpayablefunction setKyberRouter(address _kyberRouter)
setRouterUtil
nonpayablefunction setRouterUtil(address _routerUtil)
unPause
nonpayablefunction unPause()
events
AuthorityUpdated
event AuthorityUpdated(address authority)
Initialized
event Initialized(uint64 version)
KyberRouterChange
event KyberRouterChange(address indexed previousKyberRouter, address indexed newKyberRouter)
Paused
event Paused(address account)
RouterUtilChange
event RouterUtilChange(address indexed previousRouterUtil, address indexed newRouterUtil)
Unpaused
event Unpaused(address account)
errors
AccessManagedInvalidAuthority
error AccessManagedInvalidAuthority(address authority)
AccessManagedRequiredDelay
error AccessManagedRequiredDelay(address caller, uint32 delay)
AccessManagedUnauthorized
error AccessManagedUnauthorized(address caller)
AddressEmptyCode
error AddressEmptyCode(address target)
AddressError
error AddressError()
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
AmountError
error AmountError()
BalanceUnderflow
error BalanceUnderflow()
CallFailed
error CallFailed()
DirectOnFlashloanCall
error DirectOnFlashloanCall()
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
FailedInnerCall
error FailedInnerCall()
InvalidCommandType
error InvalidCommandType(uint256 commandType)
InvalidFlashloanLender
error InvalidFlashloanLender(address lender)
InvalidInitialization
error InvalidInitialization()
KyberRouterNotSet
error KyberRouterNotSet()
LengthMismatch
error LengthMismatch()
MathOverflowedMulDiv
error MathOverflowedMulDiv()
MaxInvolvedTokensExceeded
error MaxInvolvedTokensExceeded()
MinimumBalanceNotReached
error MinimumBalanceNotReached(address token, address owner, uint256 minimumBalance, uint256 actualBalance)
NotInitializing
error NotInitializing()
PermitFailed
error PermitFailed()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
TransactionDeadlinePassed
error TransactionDeadlinePassed()
UnauthorizedOnFlashloanCaller
error UnauthorizedOnFlashloanCaller()
UnauthorizedReentrantCall
error UnauthorizedReentrantCall()
creation bytecode
0x60c06040527f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd960a05234801562000034575f80fd5b506040516200606b3803806200606b833981016040819052620000579162000151565b806001600160a01b0381166200008057604051630c59659760e31b815260040160405180910390fd5b6001600160a01b0316608052620000966200009d565b5062000180565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000ee5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146200014e5780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f6020828403121562000162575f80fd5b81516001600160a01b038116811462000179575f80fd5b9392505050565b60805160a051615ea6620001c55f395f61052901525f81816101a1015281816113440152818161152f0152818161195901528181611c740152611fd50152615ea65ff3fe6080604052600436106100fd575f3560e01c80637a9e5e4b116100925780638fb36037116100625780638fb36037146102a0578063b748f092146102cd578063bf7e214f146102ec578063c0c53b8b14610300578063f7b188a51461031f575f80fd5b80637a9e5e4b1461022f5780638456cb591461024e5780638b0c9584146102625780638b33203c14610281575f80fd5b80635ab1bd53116100cd5780635ab1bd53146101935780635c975abb146101c557806361fbaaaa146101f357806369dfa6c214610210575f80fd5b806323e30c8b1461010857806324856bc31461013a5780633593564c1461014f578063466489fb14610162575f80fd5b3661010457005b5f80fd5b348015610113575f80fd5b50610127610122366004614e69565b610333565b6040519081526020015b60405180910390f35b61014d610148366004614f1f565b610557565b005b61014d61015d366004614f85565b61065b565b34801561016d575f80fd5b506002546001600160a01b03165b6040516001600160a01b039091168152602001610131565b34801561019e575f80fd5b507f000000000000000000000000000000000000000000000000000000000000000061017b565b3480156101d0575f80fd5b505f80516020615e518339815191525460ff166040519015158152602001610131565b3480156101fe575f80fd5b506003546001600160a01b031661017b565b34801561021b575f80fd5b5061012761022a366004614f1f565b610689565b34801561023a575f80fd5b5061014d610249366004614ff2565b6106a0565b348015610259575f80fd5b5061014d61072b565b34801561026d575f80fd5b5061014d61027c366004614ff2565b610741565b34801561028c575f80fd5b5061014d61029b366004614ff2565b6107cc565b3480156102ab575f80fd5b506102b4610830565b6040516001600160e01b03199091168152602001610131565b3480156102d8575f80fd5b506101276102e7366004614f1f565b610866565b3480156102f7575f80fd5b5061017b610875565b34801561030b575f80fd5b5061014d61031a36600461500d565b610890565b34801561032a575f80fd5b5061014d6109a8565b5f80546001600160a01b031661035c57604051630606fd0760e51b815260040160405180910390fd5b6001546001600160a01b031633146103875760405163242762f960e01b815260040160405180910390fd5b5f8061039584860186615126565b6040516324856bc360e01b8152919350915030906324856bc3906103bf9085908590600401615245565b5f604051808303815f87803b1580156103d6575f80fd5b505af11580156103e8573d5f803e3d5ffd5b505050505f86886103f991906152c9565b604051636eb1769f60e11b81523060048201523360248201529091505f906001600160a01b038b169063dd62ed3e90604401602060405180830381865afa158015610446573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061046a91906152dc565b905081811015610488576104886001600160a01b038b1633846109b9565b6040516370a0823160e01b81523060048201525f906001600160a01b038c16906370a0823190602401602060405180830381865afa1580156104cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104f091906152dc565b905082811015610526575f54610526906001600160a01b03163061051484876152f3565b6001600160a01b038f16929190610a7c565b507f00000000000000000000000000000000000000000000000000000000000000009b9a5050505050505050505050565b61055f610ab5565b82818114610583576040516001621398b960e31b0319815260040160405180910390fd5b5f80546001600160a01b03166105b057505f80546001600160a01b031916331790553460045560016105d0565b3330146105d05760405163f9ce257360e01b815260040160405180910390fd5b5f5b82811015610639575f8787838181106105ed576105ed615306565b9050013560f81c60f81b9050365f87878581811061060d5761060d615306565b905060200281019061061f919061531a565b9150915061062e838383610ae5565b5050506001016105d2565b508015610653575f80546001600160a01b03191681556004555b505050505050565b808042111561067d57604051632dfb7c8b60e11b815260040160405180910390fd5b61065386868686610557565b5f610697858585855f612e8c565b95945050505050565b336106a9610875565b6001600160a01b0316816001600160a01b0316146106e95760405162d1953b60e31b81526001600160a01b03821660048201526024015b60405180910390fd5b816001600160a01b03163b5f0361071e576040516361798f2f60e11b81526001600160a01b03831660048201526024016106e0565b61072782612fb0565b5050565b610737335b5f36613010565b61073f613106565b565b61074a33610730565b6001600160a01b03811661077157604051630c59659760e31b815260040160405180910390fd5b6002546040516001600160a01b038084169216907fbacf07ffb3274576773b014d636ae5319ff022a18a5b0f958eaac799cf68439b905f90a3600280546001600160a01b0319166001600160a01b0392909216919091179055565b6107d533610730565b6003546040516001600160a01b038084169216907f775376a8cc8424fc322e2ac2b50230180c9622951b05587f5ab18ff432a03d49905f90a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b5f80516020615e3183398151915280545f9190600160a01b900460ff16610857575f610860565b638fb3603760e01b5b91505090565b5f610697858585856001612e8c565b5f80516020615e31833981519152546001600160a01b031690565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156108d45750825b90505f826001600160401b031660011480156108ef5750303b155b9050811580156108fd575080155b1561091b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561094557845460ff60401b1916600160401b1785555b61094f8888613168565b610958866131c5565b831561099e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b6109b133610730565b61073f6131d9565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052610a0a848261321e565b610a76576040516001600160a01b0384811660248301525f6044830152610a6c91869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506132c1565b610a7684826132c1565b50505050565b6040516001600160a01b038481166024830152838116604483015260648201839052610a769186918216906323b872dd90608401610a3a565b5f80516020615e518339815191525460ff161561073f5760405163d93c066560e01b815260040160405180910390fd5b60f883901c603f1680610b26575f80610b008486018661535c565b5f549193509150610b1f906001600160a01b0380851691163084610a7c565b5050610a76565b60018103610c8e575f8080808080610b40888a018a615386565b5f5460405163d505accf60e01b81526001600160a01b039182166004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c48101839052969c50949a509298509096509450925087169063d505accf9060e4015f604051808303815f87803b158015610bbd575f80fd5b505af1925050508015610bce575060015b610c69575f8054604051636eb1769f60e11b81526001600160a01b0391821660048201523060248201529088169063dd62ed3e90604401602060405180830381865afa158015610c20573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4491906152dc565b905085811015610c675760405163b78cb0dd60e01b815260040160405180910390fd5b505b5f54610c83906001600160a01b0388811691163088610a7c565b505050505050610a76565b60028103610ce4575f8080610ca5858701876153e3565b925092509250610cb482613327565b9150610cc0838261336c565b90508015610cdc57610cdc6001600160a01b03841683836133eb565b505050610a76565b6003811480610cf35750601581145b80610cfe5750601e81145b15610f53575f8080808080610d15888a018a615421565b9550955095509550955095505f866001600160a01b031663c6610657876040518263ffffffff1660e01b8152600401610d5091815260200190565b602060405180830381865afa158015610d6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d8f919061547b565b9050610d9b818561336c565b9350610da682613327565b9150610dbc6001600160a01b03821688866109b9565b60038803610e565760405163ce7d650360e01b8152600481018790526024810186905260448101859052606481018490525f60848201526001600160a01b0383811660a483015288169063ce7d65039060c4015b6020604051808303815f875af1158015610e2c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e5091906152dc565b50610f33565b60158803610ea857604051630532419d60e51b8152600481018790526024810186905260448101859052606481018490526001600160a01b03838116608483015288169063a64833a09060a401610e10565b60405163ddc1f59d60e01b8152600f87810b600483015286900b602482015260448101859052606481018490526001600160a01b03838116608483015288169063ddc1f59d9060a4016020604051808303815f875af1158015610f0d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f3191906152dc565b505b610f476001600160a01b038216885f6109b9565b50505050505050610a76565b60108103611097575f808080610f6b86880188615496565b93509350935093505f846001600160a01b031663732e86fe6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fb0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fd4919061547b565b9050610fdf83613327565b9250610feb818561336c565b93506110016001600160a01b03821686866109b9565b60405163680d5c7760e11b8152600481018590526001600160a01b0384811660248301526044820184905286169063d01ab8ee906064016020604051808303815f875af1158015611054573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061107891906152dc565b5061108d6001600160a01b038216865f6109b9565b5050505050610a76565b60118103611141575f8080806110af86880188615496565b93509350935093506110c082613327565b91506110cc848461336c565b604051631886c6df60e21b81529093506001600160a01b0385169063621b1b7c906111019086908690309087906004016154db565b6020604051808303815f875af115801561111d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061108d91906152dc565b6004810361127a575f808061115885870187615500565b9250925092505f836001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561119b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111bf919061547b565b90506111cb818461336c565b92506111d682613327565b91506111ec6001600160a01b03821685856109b9565b604051636e553f6560e01b8152600481018490526001600160a01b038381166024830152851690636e553f65906044016020604051808303815f875af1158015611238573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125c91906152dc565b506112716001600160a01b038216855f6109b9565b50505050610a76565b60058103611465575f8080808061129387890189615534565b945094509450945094505f856001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112fe919061547b565b905061130a818661336c565b945061131584613327565b935061132083613327565b60405163f5e306f760e01b81526001600160a01b0388811660048301529194505f917f0000000000000000000000000000000000000000000000000000000000000000169063f5e306f790602401602060405180830381865afa158015611389573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ad919061559a565b905080156113c5576113c082888861341c565b6113d9565b6113d96001600160a01b03831688886109b9565b604051630e4cca4b60e41b81526001600160a01b0388169063e4cca4b09061140b9089908990899089906004016154db565b6020604051808303815f875af1158015611427573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061144b91906152dc565b5080610f4757610f476001600160a01b038316885f6109b9565b600681036115f6575f8080808061147e87890189615534565b945094509450945094505f856001600160a01b031663c644fe946040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114e9919061547b565b90506114f5818661336c565b945061150084613327565b935061150b83613327565b60405163f5e306f760e01b81526001600160a01b0388811660048301529194505f917f0000000000000000000000000000000000000000000000000000000000000000169063f5e306f790602401602060405180830381865afa158015611574573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611598919061559a565b905080156115b0576115ab82888861341c565b6115c4565b6115c46001600160a01b03831688886109b9565b604051631520940360e11b81526001600160a01b03881690632a4128069061140b9089908990899089906004016154db565b600781036116a2575f808061160d85870187615500565b92509250925061161d838361336c565b915061162881613327565b604051635d043b2960e11b8152600481018490526001600160a01b0380831660248301523060448301529192509084169063ba087652906064016020604051808303815f875af115801561167e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061127191906152dc565b60088114806116b15750600981145b15611917575f8080806116c686880188615496565b93509350935093506116d782613327565b91506116e3848461336c565b92505f846001600160a01b031663204f83f96040518163ffffffff1660e01b8152600401602060405180830381865afa158015611722573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061174691906152dc565b42106117525783611823565b61182384866001600160a01b03166304aa50ad6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611792573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117b6919061547b565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa1580156117fa573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061181e91906152dc565b6134ac565b9050600886036118a557604051639f40a7b360e01b81526001600160a01b03861690639f40a7b39061185f9084908790309088906004016154db565b6020604051808303815f875af115801561187b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061189f91906152dc565b5061108d565b6040516385326f4560e01b81526001600160a01b038616906385326f45906118d79084908790309088906004016154db565b6020604051808303815f875af11580156118f3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c8391906152dc565b600a8103611a8c575f80808061192f868801886155b3565b60405163f5e306f760e01b81526001600160a01b03858116600483015294985092965090945092507f00000000000000000000000000000000000000000000000000000000000000009091169063f5e306f790602401602060405180830381865afa1580156119a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119c4919061559a565b6119ec5760405163e8c4926760e01b81526001600160a01b03851660048201526024016106e0565b600180546001600160a01b0319166001600160a01b038616908117909155604051632e7ff4ef60e11b8152635cffe9de90611a3190309087908790879060040161561a565b6020604051808303815f875af1158015611a4d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a71919061559a565b5050600180546001600160a01b031916905550610a76915050565b600b811480611a9b5750601681145b80611aa65750601a81145b15611deb575f80808080611abc87890189615534565b94509450945094509450611acf83613327565b9250611ada82613327565b60405163c661065760e01b81525f600482018190529193506001600160a01b0387169063c661065790602401602060405180830381865afa158015611b21573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b45919061547b565b60405163c661065760e01b8152600160048201529091505f906001600160a01b0388169063c661065790602401602060405180830381865afa158015611b8d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bb1919061547b565b9050611bbd828761336c565b60405163fbfc779760e01b8152600481018290526001600160a01b03808a166024830152831660448201529096505f9073662deb224ce02060688701fcc8ce156bbca4bdd59063fbfc779790606401602060405180830381865af4158015611c27573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c4b91906152dc565b90508015611d995760405163f5e306f760e01b81526001600160a01b0383811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063f5e306f790602401602060405180830381865afa158015611cbb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cdf919061559a565b90508015611cf757611cf284848461341c565b611d0b565b611d0b6001600160a01b03851684846109b9565b604051631520940360e11b81526001600160a01b03841690632a41280690611d3d9085908b908b908b906004016154db565b6020604051808303815f875af1158015611d59573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d7d91906152dc565b5080611d9757611d976001600160a01b038516845f6109b9565b505b6001600160a01b0386163014801590611dba5750611db781886152f3565b15155b15611dde57611dde86611dcd838a6152f3565b6001600160a01b03861691906133eb565b5050505050505050610a76565b601f811480611dfa5750602081145b80611e055750602181145b1561213c575f8080808080611e1c888a018a61564c565b955095509550955095509550611e3183613327565b9250611e3c82613327565b60405163c661065760e01b81525f600482018190529193506001600160a01b0388169063c661065790602401602060405180830381865afa158015611e83573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ea7919061547b565b60405163c661065760e01b8152600160048201529091505f906001600160a01b0389169063c661065790602401602060405180830381865afa158015611eef573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f13919061547b565b9050611f1f828861336c565b60405163013b28a760e51b815260048101829052602481018890526001600160a01b03831660448201529097505f9073662deb224ce02060688701fcc8ce156bbca4bdd59063276514e090606401602060405180830381865af4158015611f88573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fac91906152dc565b905080156120fa5760405163f5e306f760e01b81526001600160a01b0383811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063f5e306f790602401602060405180830381865afa15801561201c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612040919061559a565b905080156120585761205384848461341c565b61206c565b61206c6001600160a01b03851684846109b9565b604051631520940360e11b81526001600160a01b03841690632a4128069061209e9085908b908b908b906004016154db565b6020604051808303815f875af11580156120ba573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120de91906152dc565b50806120f8576120f86001600160a01b038516845f6109b9565b505b6001600160a01b038616301480159061211b575061211881896152f3565b15155b1561212e5761212e86611dcd838b6152f3565b505050505050505050610a76565b600c81148061214b5750601781145b156123b9575f8080806121608688018861571b565b935093509350935061217181613327565b60405163c661065760e01b81525f600482018190529192506001600160a01b0386169063c661065790602401602060405180830381865afa1580156121b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121dc919061547b565b60405163c661065760e01b8152600160048201529091505f906001600160a01b0387169063c661065790602401602060405180830381865afa158015612224573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612248919061547b565b905061225b82865f5b602002015161336c565b855261226981866001612251565b60208601528451612286906001600160a01b0384169088906109b9565b60208501516122a1906001600160a01b0383169088906109b9565b600c871461231e5760405163030f92d560e21b81526001600160a01b03871690630c3e4b54906122d99088908890889060040161578c565b6020604051808303815f875af11580156122f5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061231991906152dc565b612390565b604051637328333b60e01b81526001600160a01b03871690637328333b9061235090889088905f9089906004016157b9565b6020604051808303815f875af115801561236c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061239091906152dc565b506123a56001600160a01b038316875f6109b9565b610c836001600160a01b038216875f6109b9565b600d8114806123c85750601881145b15612532575f8080806123dd868801886157eb565b93509350935093506123ee81613327565b90505f600d86146123ff578461245f565b846001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561243b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061245f919061547b565b905061246b818561336c565b9350600d86146124d757604051633eb1719f60e01b81526001600160a01b03861690633eb1719f906124a59087908790879060040161582f565b5f604051808303815f87803b1580156124bc575f80fd5b505af11580156124ce573d5f803e3d5ffd5b5050505061108d565b604051630c04742560e11b81526001600160a01b03861690631808e84a9061250990879087905f90889060040161585c565b5f604051808303815f87803b158015612520575f80fd5b505af115801561212e573d5f803e3d5ffd5b60198114806125415750600e81145b156126dd575f8080808061255787890189615890565b9450945094509450945061256a81613327565b90505f600e871461257b57856125db565b856001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125db919061547b565b90506125e7818661336c565b9450600e8714612661576040516307de773760e11b81526004810186905260248101859052604481018490526001600160a01b038381166064830152871690630fbcee6e906084015f604051808303815f87803b158015612646575f80fd5b505af1158015612658573d5f803e3d5ffd5b50505050610c83565b6040516307329bcd60e01b81526004810186905260248101859052604481018490525f60648201526001600160a01b0383811660848301528716906307329bcd9060a4015f604051808303815f87803b1580156126bc575f80fd5b505af11580156126ce573d5f803e3d5ffd5b50505050505050505050610a76565b601281036128fa576003546001600160a01b031661270e576040516327a8fdaf60e11b815260040160405180910390fd5b5f80808061271e868801886158e2565b94505093509350935073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316826001600160a01b03160361276d57604051630c59659760e31b815260040160405180910390fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b0385160161283c5782600454146127b457604051634ff64a9f60e01b815260040160405180910390fd5b6003546004546040515f926001600160a01b031691906127d5908590615952565b5f6040518083038185875af1925050503d805f811461280f576040519150601f19603f3d011682016040523d82523d5f602084013e612814565b606091505b505090508061283657604051633204506f60e01b815260040160405180910390fd5b50611271565b612846848461336c565b600354909350612863906001600160a01b038681169116856109b9565b6003546040515f916001600160a01b031690612880908490615952565b5f604051808303815f865af19150503d805f81146128b9576040519150601f19603f3d011682016040523d82523d5f602084013e6128be565b606091505b50509050806128e057604051633204506f60e01b815260040160405180910390fd5b60035461108d906001600160a01b0387811691165f6109b9565b600f81036129d1575f8080612911858701876153e3565b92509250925061292082613327565b6040516370a0823160e01b81526001600160a01b0380831660048301529193505f918516906370a0823190602401602060405180830381865afa158015612969573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061298d91906152dc565b9050818110156112715760405163b250459b60e01b81526001600160a01b0380861660048301528416602482015260448101839052606481018290526084016106e0565b601b8103612be9575f8080806129e9868801886159d0565b93509350935093506129fa81613327565b60405163c661065760e01b81525f600482018190529192506001600160a01b0386169063c661065790602401602060405180830381865afa158015612a41573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a65919061547b565b60405163c661065760e01b8152600160048201529091505f906001600160a01b0387169063c661065790602401602060405180830381865afa158015612aad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ad1919061547b565b9050612af682865f81518110612ae957612ae9615306565b602002602001015161336c565b855f81518110612b0857612b08615306565b602002602001018181525050612b2b8186600181518110612ae957612ae9615306565b85600181518110612b3e57612b3e615306565b602002602001018181525050612b8186865f81518110612b6057612b60615306565b6020026020010151846001600160a01b03166109b99092919063ffffffff16565b612bb98686600181518110612b9857612b98615306565b6020026020010151836001600160a01b03166109b99092919063ffffffff16565b60405163a7256d0960e01b81526001600160a01b0387169063a7256d099061235090889088908890600401615a65565b601c8103612c93575f808080612c0186880188615a97565b9350935093509350612c1281613327565b9050612c1e848461336c565b604051632f30266960e11b81529093506001600160a01b03851690635e604cd290612c5190869086908690600401615af3565b5f604051808303815f875af1158015612c6c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261108d9190810190615b23565b601d8103612d15575f80808080612cac87890189615bae565b94509450945094509450612cbf81613327565b9050612ccb858561336c565b60405163081579a560e01b815260048101829052600f85900b6024820152604481018490526001600160a01b0383811660648301529195509086169063081579a5906084016118d7565b60228103612d7a575f80612d2b8486018661535c565b91509150816001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b158015612d68575f80fd5b505af1158015610f47573d5f803e3d5ffd5b60238103612de6575f80612d908486018661535c565b604051632e1a7d4d60e01b81526004810182905291935091506001600160a01b03831690632e1a7d4d906024015f604051808303815f87803b158015612dd4575f80fd5b505af1158015610c83573d5f803e3d5ffd5b60248103612e70575f80612dfc8486018661535c565b915091505f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612e49576040519150601f19603f3d011682016040523d82523d5f602084013e612e4e565b606091505b5050905080610cdc57604051633204506f60e01b815260040160405180910390fd5b604051636bb50f4f60e11b8152600481018290526024016106e0565b5f612e95610ab5565b84838114612eb9576040516001621398b960e31b0319815260040160405180910390fd5b60408051601e8082526103e082019092525f91816020015b604080518082019091525f8082526020820152815260200190600190039081612ed1579050509050676765c793fa10079d601b1b5f5b83811015612fa3575f8a8a83818110612f2257612f22615306565b9050013560f81c60f81b9050365f8a8a85818110612f4257612f42615306565b9050602002810190612f54919061531a565b915091505f612f668484848d8b6134c1565b9050676765c793fa10079d601b1b8114612f9357612f908682676765c793fa10079d601b1b614782565b95505b505060019092019150612f079050565b5098975050505050505050565b5f80516020615e3183398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b5f80516020615e318339815191525f8061304861302b610875565b873061303a60045f8a8c615c01565b61304391615c28565b614841565b91509150816106535763ffffffff8116156130e357825460ff60a01b1916600160a01b178355613076610875565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b81526004016130a593929190615c58565b5f604051808303815f87803b1580156130bc575f80fd5b505af11580156130ce573d5f803e3d5ffd5b5050845460ff60a01b19168555506106539050565b60405162d1953b60e31b81526001600160a01b03871660048201526024016106e0565b61310e610ab5565b5f80516020615e51833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b6040516001600160a01b03909116815260200160405180910390a150565b613170614949565b6001600160a01b03821661319757604051630c59659760e31b815260040160405180910390fd5b600280546001600160a01b039384166001600160a01b03199182161790915560038054929093169116179055565b6131cd614949565b6131d681614992565b50565b6131e16149a3565b5f80516020615e51833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa3361314a565b5f805f846001600160a01b0316846040516132399190615952565b5f604051808303815f865af19150503d805f8114613272576040519150601f19603f3d011682016040523d82523d5f602084013e613277565b606091505b50915091508180156132a15750805115806132a15750808060200190518101906132a1919061559a565b80156132b657505f856001600160a01b03163b115b925050505b92915050565b5f6132d56001600160a01b038416836149d2565b905080515f141580156132f95750808060200190518101906132f7919061559a565b155b1561332257604051635274afe760e01b81526001600160a01b03841660048201526024016106e0565b505050565b5f60df196001600160a01b03831601613341575030919050565b60bf196001600160a01b038316016133635750505f546001600160a01b031690565b5090565b919050565b5f600160ff1b821461337e57816133e4565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa1580156133c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133e491906152dc565b9392505050565b6040516001600160a01b0383811660248301526044820183905261332291859182169063a9059cbb90606401610a3a565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa158015613469573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061348d91906152dc565b905081811015610a7657610a766001600160a01b038516845f196109b9565b5f8183106134ba57816133e4565b5090919050565b5f60f886901c603f168015806134d75750600181145b156135165783613502575f806134ef8789018961535c565b915091506134fe8183876149df565b5050505b676765c793fa10079d601b1b915050610697565b600281036135765783613502575f8080613532888a018a6153e3565b92509250925061354182613327565b91506001600160a01b03821630146134fe5761355e818488614b43565b50505050676765c793fa10079d601b1b915050610697565b60038114806135855750601581145b806135905750601e81145b1561390c575f808080806135a68a8c018c615421565b95505094509450945094505f89156136de575f60038814806135c85750601588145b61364f5760025460405163028c676d60e31b81526001600160a01b038981166004830152600f89810b602484015288900b6044830152909116906314633b6890606401602060405180830381865afa158015613626573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061364a91906152dc565b6136c9565b60025460405163044e3c3f60e31b81526001600160a01b038981166004830152602482018990526044820188905290911690632271e1f890606401602060405180830381865afa1580156136a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136c991906152dc565b90506136d6816012614cc0565b9150506138fe565b60405163c661065760e01b8152600481018690526137519084906001600160a01b0389169063c661065790602401602060405180830381865afa158015613727573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061374b919061547b565b8b614b43565b92505f601e88036137dc57604051635e0d443f60e01b8152600f87810b600483015286900b6024820152604481018590526001600160a01b03881690635e0d443f90606401602060405180830381865afa1580156137b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137d591906152dc565b9050613854565b60405163556d6e9f60e01b81526004810187905260248101869052604481018590526001600160a01b0388169063556d6e9f90606401602060405180830381865afa15801561382d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061385191906152dc565b90505b61385d83613327565b9250306001600160a01b038416036138e45760405163c661065760e01b8152600481018690526138e29082906001600160a01b038a169063c661065790602401602060405180830381865afa1580156138b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138dc919061547b565b8c6149df565b505b6138fa81676765c793fa10079d601b1b86614782565b9150505b965061069795505050505050565b60108103613aca575f8080613923888a018a615500565b9250925092505f836001600160a01b031663732e86fe6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613966573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061398a919061547b565b90508715613a0557600254604051635fa5a49760e01b81526001600160a01b03838116600483015290911690635fa5a49790602401602060405180830381865afa1580156139da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139fe91906152dc565b9250613a13565b613a10838289614b43565b92505b60405163404b9d8160e01b8152600481018490525f906001600160a01b0386169063404b9d81906024015b602060405180830381865afa158015613a59573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a7d91906152dc565b9050613a8883613327565b9250306001600160a01b03841603613aa757613aa581868a6149df565b505b613abd81676765c793fa10079d601b1b86614782565b9650505050505050610697565b60118103613c82575f8080613ae1888a018a615500565b9250925092508615613b6057600254604051635fa5a49760e01b81526001600160a01b03858116600483015290911690635fa5a49790602401602060405180830381865afa158015613b35573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b5991906152dc565b9150613b6e565b613b6b828488614b43565b91505b60405163554d83a760e11b8152600481018390525f906001600160a01b0385169063aa9b074e90602401602060405180830381865afa158015613bb3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613bd791906152dc565b9050613be282613327565b9150306001600160a01b03831603613c6057613c5e81856001600160a01b031663732e86fe6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c34573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c58919061547b565b896149df565b505b613c7681676765c793fa10079d601b1b85614782565b95505050505050610697565b60048103613db8575f8080613c99888a018a615500565b9250925092505f836001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cdc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d00919061547b565b90508715613d7b57600254604051635fa5a49760e01b81526001600160a01b03838116600483015290911690635fa5a49790602401602060405180830381865afa158015613d50573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d7491906152dc565b9250613d89565b613d86838289614b43565b92505b60405163ef8b30f760e01b8152600481018490525f906001600160a01b0386169063ef8b30f790602401613a3e565b60058103613fd7575f808080613dd0898b018b615c97565b93509350935093508715613e5157600254604051633e3f205760e21b81526001600160a01b0386811660048301529091169063f8fc815c90602401602060405180830381865afa158015613e26573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e4a91906152dc565b9250613ebe565b613ebb83856001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e91573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613eb5919061547b565b89614b43565b92505b60405163ef8b30f760e01b8152600481018490525f906001600160a01b0386169063ef8b30f7906024015b602060405180830381865afa158015613f04573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f2891906152dc565b9050613f3383613327565b9250306001600160a01b03841603613f5257613f5081868a6149df565b505b613f5b82613327565b9150306001600160a01b03831603613aa757613aa581866001600160a01b03166304aa50ad6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613fad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613fd1919061547b565b8a6149df565b600681036140e2575f808080613fef898b018b615c97565b9350935093509350871561407057600254604051635fa5a49760e01b81526001600160a01b03868116600483015290911690635fa5a49790602401602060405180830381865afa158015614045573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061406991906152dc565b92506140b3565b6140b083856001600160a01b031663c644fe946040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e91573d5f803e3d5ffd5b92505b6040516302f6fa9560e11b8152600481018490525f906001600160a01b038616906305edf52a90602401613ee9565b6007810361424c575f80806140f9888a018a615500565b925092509250861561417857600254604051635fa5a49760e01b81526001600160a01b03858116600483015290911690635fa5a49790602401602060405180830381865afa15801561414d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061417191906152dc565b9150614186565b614183828488614b43565b91505b60405163266d6a8360e11b8152600481018390525f906001600160a01b03851690634cdad50690602401602060405180830381865afa1580156141cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141ef91906152dc565b90506141fa82613327565b9150306001600160a01b03831603613c6057613c5e81856001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c34573d5f803e3d5ffd5b60088103614488575f8080614263888a018a615500565b92509250925086156142e257600254604051635fa5a49760e01b81526001600160a01b03858116600483015290911690635fa5a49790602401602060405180830381865afa1580156142b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906142db91906152dc565b91506143c2565b6142ed828488614b43565b9150826001600160a01b031663204f83f96040518163ffffffff1660e01b8152600401602060405180830381865afa15801561432b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061434f91906152dc565b4210156143c2576143c082846001600160a01b03166304aa50ad6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614396573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143ba919061547b565b88614b43565b505b60405163266d6a8360e11b8152600481018390525f906001600160a01b03851690634cdad50690602401602060405180830381865afa158015614407573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061442b91906152dc565b905061443682613327565b9150306001600160a01b03831603613c6057613c5e81856001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c34573d5f803e3d5ffd5b6009810361469a575f808061449f888a018a615500565b925092509250861561451e57600254604051635fa5a49760e01b81526001600160a01b03858116600483015290911690635fa5a49790602401602060405180830381865afa1580156144f3573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061451791906152dc565b91506145d4565b614529828488614b43565b9150826001600160a01b031663204f83f96040518163ffffffff1660e01b8152600401602060405180830381865afa158015614567573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061458b91906152dc565b4210156145d4576145d282846001600160a01b03166304aa50ad6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614396573d5f803e3d5ffd5b505b604051633460fbfb60e11b8152600481018390525f906001600160a01b038516906368c1f7f690602401602060405180830381865afa158015614619573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061463d91906152dc565b905061464882613327565b9150306001600160a01b03831603613c6057613c5e81856001600160a01b031663c644fe946040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c34573d5f803e3d5ffd5b60128103614766576003546001600160a01b03166146cb576040516327a8fdaf60e11b815260040160405180910390fd5b5f8080806146db898b018b615496565b935093509350935073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316826001600160a01b03160361472957604051630c59659760e31b815260040160405180910390fd5b6001600160a01b03841673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1461475b57614758838589614b43565b92505b613c5e8183896149df565b600f8103612e7057676765c793fa10079d601b1b915050610697565b5f838302815f1985870982811083820303915050805f036147b6578382816147ac576147ac615cdc565b04925050506133e4565b8084116147d65760405163227bc15360e01b815260040160405180910390fd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516148af9190615952565b5f60405180830381855afa9150503d805f81146148e7576040519150601f19603f3d011682016040523d82523d5f602084013e6148ec565b606091505b5091509150811561493e57604081511061491e57808060200190518101906149149190615cf0565b909450925061493e565b602081511061493e578080602001905181019061493b919061559a565b93505b505094509492505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661073f57604051631afcd79f60e31b815260040160405180910390fd5b61499a614949565b6131d681612fb0565b5f80516020615e518339815191525460ff1661073f57604051638dfc202b60e01b815260040160405180910390fd5b60606133e483835f614cf3565b5f6001600160a01b038316614a0757604051630c59659760e31b815260040160405180910390fd5b81515f5b81811015614b29575f6001600160a01b0316848281518110614a2f57614a2f615306565b60200260200101515f01516001600160a01b031603614a8d576040518060400160405280866001600160a01b0316815260200187815250848281518110614a7857614a78615306565b602002602001018190525085925050506133e4565b846001600160a01b0316848281518110614aa957614aa9615306565b60200260200101515f01516001600160a01b031603614b195785848281518110614ad557614ad5615306565b6020026020010151602001818151614aed91906152c9565b9052508351849082908110614b0457614b04615306565b602002602001015160200151925050506133e4565b614b2281615d2d565b9050614a0b565b50604051638b48412160e01b815260040160405180910390fd5b5f6001600160a01b038316614b6b57604051630c59659760e31b815260040160405180910390fd5b81515f5b81811015614ca6575f6001600160a01b0316848281518110614b9357614b93615306565b60200260200101515f01516001600160a01b03160315614ca657846001600160a01b0316848281518110614bc957614bc9615306565b60200260200101515f01516001600160a01b031603614c9657600160ff1b8603614c39575f848281518110614c0057614c00615306565b60200260200101516020015190505f858381518110614c2157614c21615306565b602090810291909101810151015292506133e4915050565b85848281518110614c4c57614c4c615306565b60200260200101516020015110614ca65785848281518110614c7057614c70615306565b6020026020010151602001818151614c8891906152f3565b9052508592506133e4915050565b614c9f81615d2d565b9050614b6f565b506040516305e72d3960e11b815260040160405180910390fd5b5f80614ccd83601b6152f3565b614cd890600a615e25565b905080840291508381830414614cec575f80fd5b5092915050565b606081471015614d185760405163cd78605960e01b81523060048201526024016106e0565b5f80856001600160a01b03168486604051614d339190615952565b5f6040518083038185875af1925050503d805f8114614d6d576040519150601f19603f3d011682016040523d82523d5f602084013e614d72565b606091505b5091509150614d82868383614d8c565b9695505050505050565b606082614da157614d9c82614de8565b6133e4565b8151158015614db857506001600160a01b0384163b155b15614de157604051639996b31560e01b81526001600160a01b03851660048201526024016106e0565b50806133e4565b805115614df85780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b03811681146131d6575f80fd5b5f8083601f840112614e35575f80fd5b5081356001600160401b03811115614e4b575f80fd5b602083019150836020828501011115614e62575f80fd5b9250929050565b5f805f805f8060a08789031215614e7e575f80fd5b8635614e8981614e11565b95506020870135614e9981614e11565b9450604087013593506060870135925060808701356001600160401b03811115614ec1575f80fd5b614ecd89828a01614e25565b979a9699509497509295939492505050565b5f8083601f840112614eef575f80fd5b5081356001600160401b03811115614f05575f80fd5b6020830191508360208260051b8501011115614e62575f80fd5b5f805f8060408587031215614f32575f80fd5b84356001600160401b0380821115614f48575f80fd5b614f5488838901614e25565b90965094506020870135915080821115614f6c575f80fd5b50614f7987828801614edf565b95989497509550505050565b5f805f805f60608688031215614f99575f80fd5b85356001600160401b0380821115614faf575f80fd5b614fbb89838a01614e25565b90975095506020880135915080821115614fd3575f80fd5b50614fe088828901614edf565b96999598509660400135949350505050565b5f60208284031215615002575f80fd5b81356133e481614e11565b5f805f6060848603121561501f575f80fd5b833561502a81614e11565b9250602084013561503a81614e11565b9150604084013561504a81614e11565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561509157615091615055565b604052919050565b5f82601f8301126150a8575f80fd5b81356001600160401b038111156150c1576150c1615055565b6150d4601f8201601f1916602001615069565b8181528460208386010111156150e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f6001600160401b0382111561511c5761511c615055565b5060051b60200190565b5f8060408385031215615137575f80fd5b82356001600160401b038082111561514d575f80fd5b61515986838701615099565b935060209150818501358181111561516f575f80fd5b8501601f8101871361517f575f80fd5b803561519261518d82615104565b615069565b81815260059190911b820184019084810190898311156151b0575f80fd5b8584015b838110156151e7578035868111156151cb575f8081fd5b6151d98c8983890101615099565b8452509186019186016151b4565b508096505050505050509250929050565b5f5b838110156152125781810151838201526020016151fa565b50505f910152565b5f81518084526152318160208601602086016151f8565b601f01601f19169290920160200192915050565b604081525f615257604083018561521a565b6020838203818501528185518084528284019150828160051b8501018388015f5b838110156152a657601f1987840301855261529483835161521a565b94860194925090850190600101615278565b50909998505050505050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156132bb576132bb6152b5565b5f602082840312156152ec575f80fd5b5051919050565b818103818111156132bb576132bb6152b5565b634e487b7160e01b5f52603260045260245ffd5b5f808335601e1984360301811261532f575f80fd5b8301803591506001600160401b03821115615348575f80fd5b602001915036819003821315614e62575f80fd5b5f806040838503121561536d575f80fd5b823561537881614e11565b946020939093013593505050565b5f805f805f8060c0878903121561539b575f80fd5b86356153a681614e11565b95506020870135945060408701359350606087013560ff811681146153c9575f80fd5b9598949750929560808101359460a0909101359350915050565b5f805f606084860312156153f5575f80fd5b833561540081614e11565b9250602084013561541081614e11565b929592945050506040919091013590565b5f805f805f8060c08789031215615436575f80fd5b863561544181614e11565b95506020870135945060408701359350606087013592506080870135915060a087013561546d81614e11565b809150509295509295509295565b5f6020828403121561548b575f80fd5b81516133e481614e11565b5f805f80608085870312156154a9575f80fd5b84356154b481614e11565b93506020850135925060408501356154cb81614e11565b9396929550929360600135925050565b9384526001600160a01b03928316602085015291166040830152606082015260800190565b5f805f60608486031215615512575f80fd5b833561551d81614e11565b925060208401359150604084013561504a81614e11565b5f805f805f60a08688031215615548575f80fd5b853561555381614e11565b945060208601359350604086013561556a81614e11565b9250606086013561557a81614e11565b949793965091946080013592915050565b80518015158114613367575f80fd5b5f602082840312156155aa575f80fd5b6133e48261558b565b5f805f80608085870312156155c6575f80fd5b84356155d181614e11565b935060208501356155e181614e11565b92506040850135915060608501356001600160401b03811115615602575f80fd5b61560e87828801615099565b91505092959194509250565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90614d829083018461521a565b5f805f805f8060c08789031215615661575f80fd5b863561566c81614e11565b95506020870135945060408701359350606087013561568a81614e11565b9250608087013561569a81614e11565b8092505060a087013590509295509295509295565b5f82601f8301126156be575f80fd5b604051604081018181106001600160401b03821117156156e0576156e0615055565b80604052508060408401858111156156f6575f80fd5b845b818110156157105780358352602092830192016156f8565b509195945050505050565b5f805f8060a0858703121561572e575f80fd5b843561573981614e11565b935061574886602087016156af565b925060608501359150608085013561575f81614e11565b939692955090935050565b805f5b6002811015610a7657815184526020938401939091019060010161576d565b6080810161579a828661576a565b60408201939093526001600160a01b0391909116606090910152919050565b60a081016157c7828761576a565b604082019490945291151560608301526001600160a01b0316608090910152919050565b5f805f8060a085870312156157fe575f80fd5b843561580981614e11565b93506020850135925061581f86604087016156af565b9150608085013561575f81614e11565b83815260808101615843602083018561576a565b6001600160a01b03929092166060919091015292915050565b84815260a08101615870602083018661576a565b92151560608201526001600160a01b039190911660809091015292915050565b5f805f805f60a086880312156158a4575f80fd5b85356158af81614e11565b945060208601359350604086013592506060860135915060808601356158d481614e11565b809150509295509295909350565b5f805f805f60a086880312156158f6575f80fd5b853561590181614e11565b945060208601359350604086013561591881614e11565b92506060860135915060808601356001600160401b03811115615939575f80fd5b61594588828901615099565b9150509295509295909350565b5f82516159638184602087016151f8565b9190910192915050565b5f82601f83011261597c575f80fd5b8135602061598c61518d83615104565b82815260059290921b840181019181810190868411156159aa575f80fd5b8286015b848110156159c557803583529183019183016159ae565b509695505050505050565b5f805f80608085870312156159e3575f80fd5b84356159ee81614e11565b935060208501356001600160401b03811115615a08575f80fd5b615a148782880161596d565b93505060408501359150606085013561575f81614e11565b5f8151808452602080850194508084015f5b83811015615a5a57815187529582019590820190600101615a3e565b509495945050505050565b606081525f615a776060830186615a2c565b6020830194909452506001600160a01b0391909116604090910152919050565b5f805f8060808587031215615aaa575f80fd5b8435615ab581614e11565b93506020850135925060408501356001600160401b03811115615ad6575f80fd5b615ae28782880161596d565b925050606085013561575f81614e11565b838152606060208201525f615b0b6060830185615a2c565b905060018060a01b0383166040830152949350505050565b5f6020808385031215615b34575f80fd5b82516001600160401b03811115615b49575f80fd5b8301601f81018513615b59575f80fd5b8051615b6761518d82615104565b81815260059190911b82018301908381019087831115615b85575f80fd5b928401925b82841015615ba357835182529284019290840190615b8a565b979650505050505050565b5f805f805f60a08688031215615bc2575f80fd5b8535615bcd81614e11565b9450602086013593506040860135600f81900b8114615bea575f80fd5b92506060860135915060808601356158d481614e11565b5f8085851115615c0f575f80fd5b83861115615c1b575f80fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015615c505780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b5f805f8060808587031215615caa575f80fd5b8435615cb581614e11565b9350602085013592506040850135615ccc81614e11565b9150606085013561575f81614e11565b634e487b7160e01b5f52601260045260245ffd5b5f8060408385031215615d01575f80fd5b615d0a8361558b565b9150602083015163ffffffff81168114615d22575f80fd5b809150509250929050565b5f60018201615d3e57615d3e6152b5565b5060010190565b600181815b80851115615d7f57815f1904821115615d6557615d656152b5565b80851615615d7257918102915b93841c9390800290615d4a565b509250929050565b5f82615d95575060016132bb565b81615da157505f6132bb565b8160018114615db75760028114615dc157615ddd565b60019150506132bb565b60ff841115615dd257615dd26152b5565b50506001821b6132bb565b5060208310610133831016604e8410600b8410161715615e00575081810a6132bb565b615e0a8383615d45565b805f1904821115615e1d57615e1d6152b5565b029392505050565b5f6133e48383615d8756fef3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a2646970667358221220169caefbd2bd92269b7158256b298d9b4a1dab12a4388c04abbdc44f24aaf1e364736f6c63430008140033000000000000000000000000786da12e9836a9ff9b7d92e8bac1c849e2ace378