0 txs
0 calls
constructor
constructor(address _daoFeeRegistry, address _versionRegistry, address _trustedFillerRegistry, address _governanceDeployer)
functions
daoFeeRegistry
viewfunction daoFeeRegistry() view returns (address)
folioImplementation
viewfunction folioImplementation() view returns (address)
governanceDeployer
viewfunction governanceDeployer() view returns (address)
trustedFillerRegistry
viewfunction trustedFillerRegistry() view returns (address)
version
purefunction version() pure returns (string)
versionRegistry
viewfunction versionRegistry() view returns (address)
deployFolio
nonpayablefunction deployFolio(tuple basicDetails, tuple additionalDetails, tuple folioFlags, address owner, address[] basketManagers, address[] auctionLaunchers, address[] brandManagers, bytes32 deploymentNonce) returns (address folio, address proxyAdmin)
deployGovernedFolio
nonpayablefunction deployGovernedFolio(address stToken, tuple basicDetails, tuple additionalDetails, tuple folioFlags, tuple ownerGovParams, tuple tradingGovParams, tuple govRoles, bytes32 deploymentNonce) returns (address folio, address proxyAdmin)
events
FolioDeployed
event FolioDeployed(address indexed folioOwner, address indexed folio, address folioAdmin)
GovernedFolioDeployed
event GovernedFolioDeployed(address indexed stToken, address indexed folio, address ownerGovernor, address ownerTimelock, address tradingGovernor, address tradingTimelock)
errors
FolioDeployer__LengthMismatch
error FolioDeployer__LengthMismatch()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x61012060405234801561001157600080fd5b50604051618582380380618582833981016040819052610030916100b3565b6001600160a01b0380851660a052838116608052821660c0526040516100559061008e565b604051809103906000f080158015610071573d6000803e3d6000fd5b506001600160a01b0390811660e052166101005250610112915050565b615d4b8061283783390190565b6001600160a01b03811681146100b057600080fd5b50565b600080600080608085870312156100c957600080fd5b84516100d48161009b565b60208601519094506100e58161009b565b60408601519093506100f68161009b565b60608601519092506101078161009b565b939692955090935050565b60805160a05160c05160e051610100516126b961017e6000396000818160920152818161024e015261037a0152600081816101a501526107ad01526000818160d601526108d001526000818161017e01526108ab015260008181610124015261074501526126b96000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80637ba8e8351161005b5780637ba8e835146101465780639980cb2314610179578063c42f3d1b146101a0578063fb4bb479146101c757600080fd5b806305111eb91461008d57806321903d79146100d157806354fd4d50146100f8578063608935151461011f575b600080fd5b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b60408051808201825260058152640342e302e360dc1b602082015290516100c89190610e78565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b610159610154366004610f2a565b6101da565b604080516001600160a01b039384168152929091166020830152016100c8565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6101596101d53660046110fb565b610695565b604080513360208201529081018290526000908190819060600160408051808303601f190181528282528051602090910120600280845260608401909252925060009190816020015b60408051808201909152600080825260208201528152602001906001900390816102235790505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a7f52023898e856040518463ffffffff1660e01b815260040161029c93929190611291565b60408051808303816000875af11580156102ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102de9190611344565b826000815181106102f1576102f161137e565b60200260200101516000018360008151811061030f5761030f61137e565b6020908102919091018101516001600160a01b039384169101529116905260006103398780611394565b80806020026020016040519081016040528093929190818152602001838360200280828437600092018290525084519495509390930392506104cf915050577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a7f52023898f86196040518463ffffffff1660e01b81526004016103c993929190611291565b60408051808303816000875af11580156103e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061040b9190611344565b8360018151811061041e5761041e61137e565b60200260200101516000018460018151811061043c5761043c61137e565b6020908102919091018101516001600160a01b0393841691015291169052604080516001808252818301909252908160200160208202803683370190505090508160018151811061048f5761048f61137e565b602002602001015160200151816000815181106104ae576104ae61137e565b60200260200101906001600160a01b031690816001600160a01b0316815250505b61058e8c8c8c856000815181106104e8576104e861137e565b602002602001015160200151858c80602001906105059190611394565b80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508d80604001906105559190611394565b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508d9250610695915050565b8095508196505050846001600160a01b03168d6001600160a01b03167f08af36628654870563f8102f737700df4046cdfaef3ff1a7a48253d07e9e1a6b846000815181106105de576105de61137e565b602002602001015160000151856000815181106105fd576105fd61137e565b6020026020010151602001518660018151811061061c5761061c61137e565b6020026020010151600001518760018151811061063b5761063b61137e565b60200260200101516020015160405161067d94939291906001600160a01b03948516815292841660208401529083166040830152909116606082015260800190565b60405180910390a35050509850989650505050505050565b6000806106a560608b018b611394565b90506106b460408c018c611394565b9050146106d457604051632692258760e11b815260040160405180910390fd5b6000338b8b8a8a8a8a6040516020016106f296959493929190611648565b60408051601f1981840301815282825280516020918201206001600160a01b03909416908301528101919091526060810185905260800160405160208183030381529060405280519060200120905080887f000000000000000000000000000000000000000000000000000000000000000060405161077090610e5e565b6001600160a01b039283168152911660208201526040018190604051809103906000f59050801580156107a7573d6000803e3d6000fd5b509150807f0000000000000000000000000000000000000000000000000000000000000000836040516107d990610e6b565b6001600160a01b039283168152911660208201526040018190604051809103906000f5905080158015610810573d6000803e3d6000fd5b50925060005b61082360408d018d611394565b90508110156108975761088f61083c60408e018e611394565b8381811061084c5761084c61137e565b905060200201602081019061086191906116c5565b33868f80606001906108739190611394565b868181106108835761088361137e565b90506020020135610d89565b600101610816565b506040805180820182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f0000000000000000000000000000000000000000000000000000000000000000811660208301529151634d5369db60e01b815291851691634d5369db91610920918f918f918f9033906004016116f9565b600060405180830381600087803b15801561093a57600080fd5b505af115801561094e573d6000803e3d6000fd5b50505050826001600160a01b0316632f2ff15d846001600160a01b031663a217fddf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561099f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c39190611793565b6040516001600160e01b031960e084901b16815260048101919091526001600160a01b038b166024820152604401600060405180830381600087803b158015610a0b57600080fd5b505af1158015610a1f573d6000803e3d6000fd5b5050505060005b8751811015610ae657836001600160a01b0316632f2ff15d7f4ff6ae4d6a29e79ca45c6441bdc89b93878ac6118485b33c8baa3749fc3cb1308a8481518110610a7157610a7161137e565b60200260200101516040518363ffffffff1660e01b8152600401610aa89291909182526001600160a01b0316602082015260400190565b600060405180830381600087803b158015610ac257600080fd5b505af1158015610ad6573d6000803e3d6000fd5b505060019092019150610a269050565b5060005b8651811015610baa57836001600160a01b0316632f2ff15d7f13ff1b2625181b311f257c723b5e6d366eb318b212d9dd694c48fcf227659df5898481518110610b3557610b3561137e565b60200260200101516040518363ffffffff1660e01b8152600401610b6c9291909182526001600160a01b0316602082015260400190565b600060405180830381600087803b158015610b8657600080fd5b505af1158015610b9a573d6000803e3d6000fd5b505060019092019150610aea9050565b5060005b8551811015610c6e57836001600160a01b0316632f2ff15d7f2d8e650da9bd8c373ab2450d770f2ed39549bfc28d3630025cecc51511bcd374888481518110610bf957610bf961137e565b60200260200101516040518363ffffffff1660e01b8152600401610c309291909182526001600160a01b0316602082015260400190565b600060405180830381600087803b158015610c4a57600080fd5b505af1158015610c5e573d6000803e3d6000fd5b505060019092019150610bae9050565b50826001600160a01b03166336568abe846001600160a01b031663a217fddf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce09190611793565b6040516001600160e01b031960e084901b1681526004810191909152306024820152604401600060405180830381600087803b158015610d1f57600080fd5b505af1158015610d33573d6000803e3d6000fd5b50506040516001600160a01b03858116825280871693508b1691507f017464e04c545b4f5c5e32a4c60ce4ff586eef58fdda661784f9905bcd764fda9060200160405180910390a3509850989650505050505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610de3908590610de9565b50505050565b600080602060008451602086016000885af180610e0c576040513d6000823e3d81fd5b50506000513d91508115610e24578060011415610e31565b6001600160a01b0384163b155b15610de357604051635274afe760e01b81526001600160a01b038516600482015260240160405180910390fd5b6106d4806117ad83390190565b61082c80611e8183390190565b602081526000825180602084015260005b81811015610ea65760208186018101516040868401015201610e89565b506000604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610edb57600080fd5b50565b8035610ee981610ec6565b919050565b600060a08284031215610f0057600080fd5b50919050565b600060608284031215610f0057600080fd5b600060c08284031215610f0057600080fd5b600080600080600080600080610140898b031215610f4757600080fd5b610f5089610ede565b975060208901356001600160401b03811115610f6b57600080fd5b610f778b828c01610eee565b97505060408901356001600160401b03811115610f9357600080fd5b610f9f8b828c01610eee565b965050610faf8a60608b01610f06565b945060c08901356001600160401b03811115610fca57600080fd5b610fd68b828c01610f18565b94505060e08901356001600160401b03811115610ff257600080fd5b610ffe8b828c01610f18565b9350506101008901356001600160401b0381111561101b57600080fd5b6110278b828c01610f06565b989b979a5095989497939692955092936101200135925050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261106857600080fd5b81356001600160401b0381111561108157611081611041565b8060051b604051601f19603f83011681018181106001600160401b03821117156110ad576110ad611041565b6040529182526020818501810192908101868411156110cb57600080fd5b6020860192505b838310156110f1576110e383610ede565b8152602092830192016110d2565b5095945050505050565b600080600080600080600080610140898b03121561111857600080fd5b88356001600160401b0381111561112e57600080fd5b61113a8b828c01610eee565b98505060208901356001600160401b0381111561115657600080fd5b6111628b828c01610eee565b9750506111728a60408b01610f06565b955061118060a08a01610ede565b945060c08901356001600160401b0381111561119b57600080fd5b6111a78b828c01611057565b94505060e08901356001600160401b038111156111c357600080fd5b6111cf8b828c01611057565b9350506101008901356001600160401b038111156111ec57600080fd5b6110278b828c01611057565b6000808335601e1984360301811261120f57600080fd5b83016020810192503590506001600160401b0381111561122e57600080fd5b8060051b360382131561124057600080fd5b9250929050565b81835260208301925060008160005b8481101561128757813561126981610ec6565b6001600160a01b031686526020958601959190910190600101611256565b5093949350505050565b606081526000843565ffffffffffff81168082146112ae57600080fd5b606084015250602085013563ffffffff811681146112cb57600080fd5b63ffffffff8116608084015250604085013560a083810191909152606086013560c0840152608086013560e0840152611306908601866111f8565b60c061010085015261131d61012085018284611247565b9250505061133660208301856001600160a01b03169052565b826040830152949350505050565b6000806040838503121561135757600080fd5b825161136281610ec6565b602084015190925061137381610ec6565b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126113ab57600080fd5b8301803591506001600160401b038211156113c557600080fd5b6020019150600581901b360382131561124057600080fd5b6000808335601e198436030181126113f457600080fd5b83016020810192503590506001600160401b0381111561141357600080fd5b80360382131561124057600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600061145782836113dd565b60a0855261146960a086018284611422565b91505061147960208401846113dd565b858303602087015261148c838284611422565b9250505061149d60408401846111f8565b85830360408701526114b0838284611247565b925050506114c160608401846111f8565b85830360608701528083526001600160fb1b038111156114e057600080fd5b60051b80826020850137608094850135959094019490945290910160200192915050565b81835260208301925060008160005b8481101561128757813561152681610ec6565b6001600160a01b0316865260208201356bffffffffffffffffffffffff811680821461155157600080fd5b6020880152506040958601959190910190600101611513565b803582526000602082013536839003601e1901811261158857600080fd5b82016020810190356001600160401b038111156115a457600080fd5b8060061b36038213156115b657600080fd5b60a060208601526115cb60a086018284611504565b604085810135908701526060808601359087015291506115f0905060808401846113dd565b8583036080870152611603838284611422565b9695505050505050565b600081518084526020840193506020830160005b828110156112875781516001600160a01b0316865260209586019590910190600101611621565b60c08152600061165b60c083018961144b565b828103602084015261166d818961156a565b6001600160a01b038816604085015283810360608501529050611690818761160d565b905082810360808401526116a4818661160d565b905082810360a08401526116b8818561160d565b9998505050505050505050565b6000602082840312156116d757600080fd5b81356116e281610ec6565b9392505050565b80358015158114610ee957600080fd5b6101008152600061170e61010083018861144b565b8281036020840152611720818861156a565b86516001600160a01b0390811660408601526020880151166060850152915061174a9050846116e9565b1515608083015261175d602085016116e9565b151560a083015260408401356003811015801561177957600080fd5b5060c08301526001600160a01b03831660e0830152611603565b6000602082840312156117a557600080fd5b505191905056fe60a060405234801561001057600080fd5b506040516106d43803806106d483398101604081905261002f916100e6565b816001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161007a565b506001600160a01b031660805250610119565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146100e157600080fd5b919050565b600080604083850312156100f957600080fd5b610102836100ca565b9150610110602084016100ca565b90509250929050565b60805161059a61013a6000396000818160610152610111015261059a6000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063608935151461005c578063715018a61461009f57806386e5ab2e146100a95780638da5cb5b146100bc578063f2fde38b146100cd575b600080fd5b6100837f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b6100a76100e0565b005b6100a76100b73660046103f8565b6100f4565b6000546001600160a01b0316610083565b6100a76100db3660046104cd565b61030d565b6100e8610350565b6100f2600061037d565b565b6100fc610350565b6040516237935760e61b8152600481018390527f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03821690630de4d5c090602401602060405180830381865afa158015610162573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018691906104f1565b156101a45760405163639c421d60e01b815260040160405180910390fd5b604051633740401760e01b8152600481018490526000906001600160a01b03831690633740401790602401602060405180830381865afa1580156101ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102109190610513565b6001600160a01b0316036102375760405163a9146eeb60e01b815260040160405180910390fd5b604051632777202560e11b8152600481018490526000906001600160a01b03831690634eee404a90602401602060405180830381865afa15801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a39190610513565b60405163278f794360e11b81529091506001600160a01b03861690634f1ef286906102d49084908790600401610530565b600060405180830381600087803b1580156102ee57600080fd5b505af1158015610302573d6000803e3d6000fd5b505050505050505050565b610315610350565b6001600160a01b03811661034457604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b61034d8161037d565b50565b6000546001600160a01b031633146100f25760405163118cdaa760e01b815233600482015260240161033b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461034d57600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561040d57600080fd5b8335610418816103cd565b925060208401359150604084013567ffffffffffffffff81111561043b57600080fd5b8401601f8101861361044c57600080fd5b803567ffffffffffffffff811115610466576104666103e2565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610495576104956103e2565b6040528181528282016020018810156104ad57600080fd5b816020840160208301376000602083830101528093505050509250925092565b6000602082840312156104df57600080fd5b81356104ea816103cd565b9392505050565b60006020828403121561050357600080fd5b815180151581146104ea57600080fd5b60006020828403121561052557600080fd5b81516104ea816103cd565b60018060a01b0383168152604060208201526000825180604084015260005b8181101561056c576020818601810151606086840101520161054f565b506000606082850101526060601f19601f830116840101915050939250505056fea164736f6c634300081c000a608060405234801561001057600080fd5b5060405161082c38038061082c83398101604081905261002f91610324565b604080516020810190915260008152829061004a828261005d565b506100569050816100bc565b5050610386565b6100668261012a565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156100b0576100ab82826101a9565b505050565b6100b8610220565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100fc60008051602061080c833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161012781610241565b50565b806001600160a01b03163b60000361016557604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080846001600160a01b0316846040516101c69190610357565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b509092509050610217858383610280565b95945050505050565b341561023f5760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661026b57604051633173bdd160e11b81526000600482015260240161015c565b8060008051602061080c833981519152610188565b60608261029557610290826102df565b6102d8565b81511580156102ac57506001600160a01b0384163b155b156102d557604051639996b31560e01b81526001600160a01b038516600482015260240161015c565b50805b9392505050565b8051156102ef5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b80516001600160a01b038116811461031f57600080fd5b919050565b6000806040838503121561033757600080fd5b61034083610308565b915061034e60208401610308565b90509250929050565b6000825160005b81811015610378576020818601810151858301520161035e565b506000920191825250919050565b610477806103956000396000f3fe608060405261000c61000e565b005b610016610091565b6001600160a01b03163303610087576000356001600160e01b03191663278f794360e11b14610058576040516334ad5dbb60e21b815260040160405180910390fd5b6000806100683660048184610323565b8101906100759190610363565b9150915061008382826100c4565b5050565b61008f61011f565b565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6100cd8261012f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156101175761011282826101ab565b505050565b610083610221565b61008f61012a610240565b61024f565b806001600160a01b03163b60000361016a57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516101c8919061043b565b600060405180830381855af49150503d8060008114610203576040519150601f19603f3d011682016040523d82523d6000602084013e610208565b606091505b5091509150610218858383610273565b95945050505050565b341561008f5760405163b398979f60e01b815260040160405180910390fd5b600061024a6102d2565b905090565b3660008037600080366000845af43d6000803e80801561026e573d6000f35b3d6000fd5b60608261028857610283826102fa565b6102cb565b815115801561029f57506001600160a01b0384163b155b156102c857604051639996b31560e01b81526001600160a01b0385166004820152602401610161565b50805b9392505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6100b5565b80511561030a5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6000808585111561033357600080fd5b8386111561034057600080fd5b5050820193919092039150565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561037657600080fd5b82356001600160a01b038116811461038d57600080fd5b9150602083013567ffffffffffffffff8111156103a957600080fd5b8301601f810185136103ba57600080fd5b803567ffffffffffffffff8111156103d4576103d461034d565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156104035761040361034d565b60405281815282820160200187101561041b57600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000825160005b8181101561045c5760208186018101518583015201610442565b50600092019182525091905056fea164736f6c634300081c000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103a164736f6c634300081c000a6080604052348015600f57600080fd5b506016601a565b60ca565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560695760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b615c72806100d96000396000f3fe608060405234801561001057600080fd5b50600436106103c35760003560e01c8063783e93f0116101ff578063b0384a0b1161011a578063ce923605116100ad578063dd62ed3e1161007c578063dd62ed3e14610898578063e1e7bd59146108ab578063eddd0d9c146108be578063fc528482146108d157600080fd5b8063ce9236051461083b578063d17618bf1461084e578063d3ebe4ce14610861578063d547741f1461088557600080fd5b8063bd7379c7116100e9578063bd7379c7146107fe578063c4ec22ad14610812578063c71782301461081b578063ca15c8731461082857600080fd5b8063b0384a0b146107ba578063b200deda146107da578063b579605b146107e3578063bb57ad20146107f657600080fd5b8063979d509411610192578063a217fddf11610161578063a217fddf14610761578063a3246ad314610769578063a9059cbb14610789578063aa3b55681461079c57600080fd5b8063979d50941461071f5780639980cb23146107285780639f200bba1461073b5780639fa0bba41461074e57600080fd5b80638cdf1288116101ce5780638cdf1288146106de5780639010d07c146106f157806391d148541461070457806395d89b411461071757600080fd5b8063783e93f0146106b25780637aeaafb3146106bb578063834e630f146106c3578063836a1040146106cb57600080fd5b8063248a9ca3116102ef57806339b1b96d1161028257806351fe9eff1161025157806351fe9eff146105f257806354fd4d501461062c578063571a26a01461064d57806370a082311461067c57600080fd5b806339b1b96d146105a55780633c46570f146105ad5780634b61ffeb146105c05780634d5369db146105df57600080fd5b8063320736bf116102be578063320736bf14610563578063325c25a21461057657806336568abe1461057f578063374cbb2c1461059257600080fd5b8063248a9ca3146105005780632753dc80146105135780632f2ff15d14610541578063313ce5671461055457600080fd5b806313966db51161036757806321903d791161033657806321903d791461049c578063235d7142146104c7578063236ed8f3146104da57806323b872dd146104ed57600080fd5b806313966db51461047057806318160ddd1461047957806318178358146104815780631fffacd81461048957600080fd5b806301ffc9a7116103a357806301ffc9a71461040457806306fdde0314610427578063072c2f171461043c578063095ea7b31461045d57600080fd5b806240718e146103c85780624aaa39146103d257806301e1d114146103e5575b600080fd5b6103d06108da565b005b6103d06103e036600461485c565b6109ae565b6103ed6109d4565b6040516103fb9291906148ef565b60405180910390f35b610417610412366004614914565b6109e7565b60405190151581526020016103fb565b61042f610a12565b6040516103fb919061493e565b61044f61044a36600461498c565b610ad5565b6040519081526020016103fb565b61041761046b3660046149ba565b610d3b565b61044f60065481565b61044f610d53565b6103d0610daa565b6103d06104973660046149f4565b610dc2565b6012546104af906001600160a01b031681565b6040516001600160a01b0390911681526020016103fb565b6103d06104d5366004614b0b565b610ddc565b6103d06104e836600461498c565b610fa4565b6104176104fb366004614bd6565b611087565b61044f61050e36600461498c565b6110ad565b610526610521366004614c17565b6110cf565b604080519384526020840192909252908201526060016103fb565b6103d061054f366004614c69565b61111b565b604051601281526020016103fb565b6104af610571366004614c8e565b61113d565b61044f600f5481565b6103d061058d366004614c69565b61136a565b6103d06105a0366004614ce9565b61139d565b61042f6113df565b61044f6105bb366004614d06565b61146d565b6105c86116a4565b6040805192151583529015156020830152016103fb565b6103d06105ed366004614dd6565b611767565b61060561060036600461498c565b611c41565b604080516001600160a01b0390931683526001600160601b039091166020830152016103fb565b6040805180820190915260058152640342e302e360dc1b602082015261042f565b61052661065b36600461498c565b601e6020526000908152604090208054600282015460039092015490919083565b61044f61068a366004614ce9565b6001600160a01b03166000908152600080516020615c26833981519152602052604090205490565b61044f60095481565b6103d0611c7c565b61044f611cce565b6103ed6106d9366004614e76565b611ceb565b6103d06106ec366004614ce9565b611f96565b6104af6106ff366004614e9d565b612090565b610417610712366004614c69565b6120bf565b61042f6120f7565b61044f60085481565b6000546104af906001600160a01b031681565b6103d0610749366004614f00565b612136565b6103d061075c36600461498c565b612180565b61044f600081565b61077c61077736600461498c565b61219c565b6040516103fb9190614f41565b6104176107973660046149ba565b6121c7565b6107a46121d5565b6040516103fb9a99989796959493929190614ffe565b6107cd6107c83660046150ed565b61248a565b6040516103fb919061517c565b61044f60055481565b6103d06107f136600461498c565b612655565b6103d0612671565b60125461041790600160a01b900460ff1681565b61044f60075481565b600a546104179060ff1681565b61044f61083636600461498c565b612882565b61044f61084936600461518f565b6128a8565b6103ed61085c366004615226565b6129b3565b6014546108779060ff8082169161010090041682565b6040516103fb92919061524f565b6103d0610893366004614c69565b6129cc565b61044f6108a6366004615265565b6129e8565b6103d06108b936600461534f565b612a32565b6103d06108cc36600461498c565b612a4e565b61044f601f5481565b6108e2612a6a565b6108ed6000336120bf565b8061091d575061091d7f4ff6ae4d6a29e79ca45c6441bdc89b93878ac6118485b33c8baa3749fc3cb130336120bf565b8061094d575061094d7f13ff1b2625181b311f257c723b5e6d366eb318b212d9dd694c48fcf227659df5336120bf565b61096a57604051637bdeee5360e11b815260040160405180910390fd5b6015546040519081527f4413e35d9a55c68763294e889871b8e17c9650f0db8fcfaf50690b4b02c943709060200160405180910390a142601c556109ac612ab4565b565b60006109b981612ada565b6109d06109cb368490038401846153fe565b612ae4565b5050565b6060806109df612b67565b915091509091565b60006001600160e01b03198216635a05180f60e01b1480610a0c5750610a0c82612c15565b92915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace038054606091600080516020615c2683398151915291610a5190615445565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7d90615445565b8015610aca5780601f10610a9f57610100808354040283529160200191610aca565b820191906000526020600020905b815481529060010190602001808311610aad57829003601f168201915b505050505091505090565b6000610adf612a6a565b600a5460ff1615610b035760405163539409e360e11b815260040160405180910390fd5b610b0b612c4a565b601b54421015610b2e576040516346f80f1f60e01b815260040160405180910390fd5b6000610b3a6002612c7d565b80519091506000816001600160401b03811115610b5957610b59615293565b604051908082528060200260200182016040528015610bae57816020015b610b9b60405180606001604052806000815260200160008152602001600081525090565b815260200190600190039081610b775790505b5090506000826001600160401b03811115610bcb57610bcb615293565b604051908082528060200260200182016040528015610c1057816020015b6040805180820190915260008082526020820152815260200190600190039081610be95790505b50905060005b83811015610cf957600060156001016000878481518110610c3957610c39615479565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000209050604051806060016040528082600101600101548152602001826001016001015481526020018260010160010154815250848381518110610ca557610ca5615479565b60200260200101819052508060040160405180604001604052908160008201548152602001600182015481525050838381518110610ce557610ce5615479565b602090810291909101015250600101610c16565b50604080516060810182526018548082526020820181905291810191909152610d2787868585856078612c8a565b95505050505050610d36612ab4565b919050565b600033610d49818585612e37565b5060019392505050565b6000806000610d60612e44565b50915091508082610d8f7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025490565b610d9991906154a5565b610da391906154a5565b9250505090565b610db2612a6a565b610dba612c4a565b6109ac612ab4565b6000610dcd81612ada565b610dd783836131f8565b505050565b7f4ff6ae4d6a29e79ca45c6441bdc89b93878ac6118485b33c8baa3749fc3cb130610e0681612ada565b610e0e612a6a565b600a5460ff1615610e325760405163539409e360e11b815260040160405180910390fd5b610e3a612c4a565b6000610e466002612c7d565b805190915060005b81811015610ec85760156001016000848381518110610e6f57610e6f615479565b6020908102919091018101516001600160a01b031682528101919091526040016000908120805460ff19168155600180820183905560028201839055600382018390556004820183905560059091019190915501610e4e565b50732c0f9d9f110090d46a4544ba0f2664339877273b63f22836d6601460158f8f8f8f8f8f8f8f8f6040518c63ffffffff1660e01b8152600401610f169b9a99989796959493929190615530565b60006040518083038186803b158015610f2e57600080fd5b505af4158015610f42573d6000803e3d6000fd5b508d93506000925050505b81811015610f8d57610f848d8d83818110610f6a57610f6a615479565b9050602002016020810190610f7f9190614ce9565b6132d7565b50600101610f4d565b505050610f98612ab4565b50505050505050505050565b610fac612a6a565b610fb76000336120bf565b80610fe75750610fe77f4ff6ae4d6a29e79ca45c6441bdc89b93878ac6118485b33c8baa3749fc3cb130336120bf565b8061101757506110177f13ff1b2625181b311f257c723b5e6d366eb318b212d9dd694c48fcf227659df5336120bf565b61103457604051637bdeee5360e11b815260040160405180910390fd5b61103f6001426155ec565b6000828152601e602052604080822060030192909255905182917fac4a907ec29adcc56774b757ecb1e1b4d597374fc9386107d05e2670259df7d391a2611084612ab4565b50565b600033611095858285613356565b6110a08585856133b6565b60019150505b9392505050565b6000908152600080516020615c46833981519152602052604090206001015490565b6000858152601e602052604081208190819061110a9088886110ef610d53565b896000036110fd57426110ff565b895b60008a600019613415565b925092509250955095509592505050565b611124826110ad565b61112d81612ada565b611137838361356f565b50505050565b6000611147612a6a565b600a5460ff161561116b5760405163539409e360e11b815260040160405180910390fd5b611173612c4a565b6012546001600160a01b0316158015906111965750601254600160a01b900460ff165b6111b3576040516387db439760e01b815260040160405180910390fd5b6000868152601e6020526040812081906111dd9088886111d1610d53565b42600060001980613415565b50915091508060000361120357604051630ad5378760e01b815260040160405180910390fd5b6012546040516333f363a360e01b81523360048201526001600160a01b03878116602483015260448201879052909116906333f363a3906064016020604051808303816000875af115801561125c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128091906155ff565b925061128d8784846135b4565b6040516314d6c7d760e31b81523060048201526001600160a01b0388811660248301528781166044830152606482018490526084820183905284169063a6b63eb89060a401600060405180830381600087803b1580156112ec57600080fd5b505af1158015611300573d6000803e3d6000fd5b5050601380546001600160a01b0319166001600160a01b0387169081179091556040519081528a92507f7e8e2491200fd9e2cf2541c7229d5bf89f4da14659c18fc31054176c339e310b915060200160405180910390a25050611361612ab4565b95945050505050565b6001600160a01b03811633146113935760405163334bd91960e11b815260040160405180910390fd5b610dd78282613672565b6113a5612a6a565b60006113b081612ada565b6113b9826132d7565b6113d65760405163420aca6760e01b815260040160405180910390fd5b50611084612ab4565b600180546113ec90615445565b80601f016020809104026020016040519081016040528092919081815260200182805461141890615445565b80156114655780601f1061143a57610100808354040283529160200191611465565b820191906000526020600020905b81548152906001019060200180831161144857829003601f168201915b505050505081565b60007f13ff1b2625181b311f257c723b5e6d366eb318b212d9dd694c48fcf227659df561149981612ada565b6114a1612a6a565b600a5460ff16156114c55760405163539409e360e11b815260040160405180910390fd5b6114cd612c4a565b8760005b8181101561154657601660008c8c848181106114ef576114ef615479565b90506020020160208101906115049190614ce9565b6001600160a01b0316815260208101919091526040016000205460ff1661153e5760405163445e1f2b60e11b815260040160405180910390fd5b6001016114d1565b5061164a8b8b8b80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508a8a808060200260200160405190810160405280939291908181526020016000905b828210156115db576115cc60608302860136819003810190615674565b815260200190600101906115af565b50505050508989808060200260200160405190810160405280939291908181526020016000905b8282101561162e5761161f60408302860136819003810190615690565b81526020019060010190611602565b506116439350505050368a90038a018a615674565b6000612c8a565b925061168b6015600601546078601e600f544261166791906154a5565b61167191906154a5565b61167b91906154a5565b6116869060016154a5565b6136ae565b601b5550611697612ab4565b5098975050505050505050565b6000806116d27f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005460021490565b6013549092506001600160a01b0316158015906117615750601360009054906101000a90046001600160a01b03166001600160a01b031663d6dacb446040518163ffffffff1660e01b8152600401602060405180830381865afa15801561173d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176191906156c3565b90509091565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156117ac5750825b90506000826001600160401b031660011480156117c85750303b155b9050811580156117d6575080155b156117f45760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561181e57845460ff60401b1916600160401b1785555b6118a761182b8b806156e0565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061186d9250505060208d018d6156e0565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506136be92505050565b6118af6136d0565b6118b76136d0565b6118bf6136d8565b6119256118cf60208b018b615726565b808060200260200160405190810160405280939291908181526020016000905b8282101561191b5761190c6040830286013681900381019061576f565b815260200190600101906118ef565b50505050506136e8565b6119328960400135613912565b61193f8960600135613a4b565b6119498935613aa8565b61199361195960808b018b6156e0565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613b0e92505050565b6119a86109cb36899003890160208a016153fe565b6119cd6119bb60408a0160208b01614ce9565b6119c860208a018a61578b565b6131f8565b6119e26119dd60208a018a614ce9565b613b4a565b8960800135600003611a0757604051631f6d979160e11b815260040160405180910390fd5b6000611a1660408c018c6157a8565b9050905080600003611a3b5760405163e9eaf68960e01b815260040160405180910390fd5b60005b81811015611bd0576000611a5560408e018e6157a8565b83818110611a6557611a65615479565b9050602002016020810190611a7a9190614ce9565b6001600160a01b031603611aa15760405163445e1f2b60e11b815260040160405180910390fd5b6000611ab060408e018e6157a8565b83818110611ac057611ac0615479565b9050602002016020810190611ad59190614ce9565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015611b1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3f91906157f1565b9050801515611b5160408f018f6157a8565b84818110611b6157611b61615479565b9050602002016020810190611b769190614ce9565b90611ba557604051631b58637360e21b81526001600160a01b0390911660048201526024015b60405180910390fd5b50611bc6611bb660408f018f6157a8565b84818110610f6a57610f6a615479565b5050600101611a3e565b5042600755611be38760808d0135613b93565b611bee60003361356f565b50508315610f9857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050505050505050565b60048181548110611c5157600080fd5b6000918252602090912001546001600160a01b0381169150600160a01b90046001600160601b031682565b611c84612a6a565b6000611c8f81612ada565b600a805460ff191660011790556040517f0896631e72e873e636ab9ad7599a61ddc2f96c7961fa8e19e00a926e6512312390600090a1506109ac612ab4565b6000806000611cdb612e44565b509092509050610da381836154a5565b606080611cf6612a6a565b600a5460ff1615611d1a5760405163539409e360e11b815260040160405180910390fd5b611d22612c4a565b600080546040516311a04fa160e11b8152306004820152829182916001600160a01b03909116906323409f4290602401608060405180830381865afa158015611d6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d93919061580a565b93509350935050611dab81660110d9316ec0006136ae565b90506000670de0b6b3a76400006001670de0b6b3a76400006006548c611dd19190615849565b611ddb91906154a5565b611de591906155ec565b611def9190615876565b9050600083600181611e018886615849565b611e0b91906154a5565b611e1591906155ec565b611e1f9190615876565b90506000670de0b6b3a7640000600181611e39878f615849565b611e4391906154a5565b611e4d91906155ec565b611e579190615876565b9050808210611e665781611e68565b805b9150818310611e775782611e79565b815b92506000611e87848d6155ec565b90508015801590611e985750898110155b611eb557604051632cf5f58f60e21b815260040160405180910390fd5b611ec08c6001613bc9565b8151919a50985060005b81811015611f3957898181518110611ee457611ee4615479565b6020026020010151600014611f3157611f318b8281518110611f0857611f08615479565b602002602001015133308d8581518110611f2457611f24615479565b6020026020010151613c46565b600101611eca565b50611f448c83613b93565b8360086000828254611f5691906154a5565b90915550611f66905084866155ec565b60096000828254611f7791906154a5565b925050819055505050505050505050611f8e612ab4565b935093915050565b611f9e612a6a565b611fa6613c7f565b611fb16000336120bf565b8061204557506001600160a01b03811660009081526016602052604090206002015415801561204557506040516370a0823160e01b81523060048201526001600160a01b038216906370a0823190602401602060405180830381865afa15801561201f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204391906157f1565b155b6120625760405163019b497f60e51b815260040160405180910390fd5b61206b81613d0a565b6120885760405163420aca6760e01b815260040160405180910390fd5b611084612ab4565b6000828152600080516020615c068339815191526020819052604082206120b79084613d90565b949350505050565b6000918252600080516020615c46833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace048054606091600080516020615c2683398151915291610a5190615445565b600061214181612ada565b610dd783838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613b0e92505050565b600061218b81612ada565b612193612671565b6109d082613912565b6000818152600080516020615c0683398151915260208190526040909120606091906110a690612c7d565b600033610d498185856133b6565b600060608060608061220160405180606001604052806000815260200160008152602001600081525090565b6000806000806122116002612c7d565b8051909950806001600160401b0381111561222e5761222e615293565b60405190808252806020026020018201604052801561228357816020015b61227060405180606001604052806000815260200160008152602001600081525090565b81526020019060019003908161224c5790505b509850806001600160401b0381111561229e5761229e615293565b6040519080825280602002602001820160405280156122e357816020015b60408051808201909152600080825260208201528152602001906001900390816122bc5790505b509750806001600160401b038111156122fe576122fe615293565b604051908082528060200260200182016040528015612327578160200160208202803683370190505b50965060005b81811015612439576000601560010160008d848151811061235057612350615479565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002090508060010160405180606001604052908160008201548152602001600182015481526020016002820154815250508b83815181106123b9576123b9615479565b602002602001018190525080600401604051806040016040529081600082015481526020016001820154815250508a83815181106123f9576123f9615479565b60209081029190910101528054895160ff909116908a908490811061242057612420615479565b911515602092830291909101909101525060010161232d565b5050601554604080516060810182526017548152601854602082015260195491810191909152601a54601b54601c54601d54949f9d9e509b9c9a9b999a92999198509650945060ff90911692509050565b6060612494612a6a565b61249c612c4a565b60606124a9886000613bc9565b925090506124b73389613d9c565b805185811480156124c757508084145b6124e457604051635feae2b760e01b815260040160405180910390fd5b60005b818110156126405787878281811061250157612501615479565b90506020020160208101906125169190614ce9565b6001600160a01b031683828151811061253157612531615479565b60200260200101516001600160a01b0316146125605760405163445e1f2b60e11b815260040160405180910390fd5b85858281811061257257612572615479565b9050602002013584828151811061258b5761258b615479565b602002602001015110158382815181106125a7576125a7615479565b6020026020010151906125d957604051631b58637360e21b81526001600160a01b039091166004820152602401611b9c565b508381815181106125ec576125ec615479565b60200260200101516000146126385761263883828151811061261057612610615479565b60200260200101518a86848151811061262b5761262b615479565b6020026020010151613dd2565b6001016124e7565b50505061264b612ab4565b9695505050505050565b61265d612a6a565b600061266881612ada565b6113d682613aa8565b612679612a6a565b612681612c4a565b60098054600091829055600454909190815b8181101561278e576000670de0b6b3a7640000600483815481106126b9576126b9615479565b6000918252602090912001546126df90600160a01b90046001600160601b031687615849565b6126e99190615876565b90506126f581856154a5565b93506127286004838154811061270d5761270d615479565b6000918252602090912001546001600160a01b031682613b93565b6004828154811061273b5761273b615479565b600091825260209182902001546040518381526001600160a01b03909116917f168a65529db3a11aa555b702a0e4594e364bfeebed05918eeb405d36e744fa51910160405180910390a250600101612693565b50600082846008546127a091906154a5565b6127aa91906155ec565b600080546040516311a04fa160e11b815230600482015292935090916001600160a01b03909116906323409f4290602401608060405180830381865afa1580156127f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061281c919061580a565b505050905061282b8183613b93565b806001600160a01b03167fb87e607f6030a23ed9b7dac1a717610f3a3b07325269f18808ba763bdcefe7ae8360405161286691815260200190565b60405180910390a250506000600855506109ac9150612ab49050565b6000818152600080516020615c068339815191526020819052604082206110a690613e03565b60006128b2612a6a565b600a5460ff16156128d65760405163539409e360e11b815260040160405180910390fd5b6128de612c4a565b6000898152601e60205260409020612903818a8a6128fa610d53565b428c8d8d613415565b50604051630a99082360e11b8152909350732c0f9d9f110090d46a4544ba0f2664339877273b915063153210469061294d908d908d908d908d9089908d908d908d9060040161588a565b602060405180830381865af415801561296a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061298e91906156c3565b1561299e5761299c89613d0a565b505b506129a7612ab4565b98975050505050505050565b6060806129c08484613bc9565b915091505b9250929050565b6129d5826110ad565b6129de81612ada565b6111378383613672565b6001600160a01b0391821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6000612a3d81612ada565b612a45612671565b6109d0826136e8565b6000612a5981612ada565b612a61612671565b6109d082613a4b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805460011901612aae57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6110848133613e0d565b80516014805491151560ff19831681178255602084015184939091839161ff001990911661ffff1990911617610100836002811115612b2557612b25614fc6565b02179055509050507f0aab3571baa3ce57a744138e4bb529992ae0398bbfc12b2ae79ecf1cc94ec25a81604051612b5c91906158f5565b60405180910390a150565b606080612b746002612c7d565b8051909250806001600160401b03811115612b9157612b91615293565b604051908082528060200260200182016040528015612bba578160200160208202803683370190505b50915060005b81811015612c0f57612bea848281518110612bdd57612bdd615479565b6020026020010151613e46565b838281518110612bfc57612bfc615479565b6020908102919091010152600101612bc0565b50509091565b60006001600160e01b03198216637965db0b60e01b1480610a0c57506301ffc9a760e01b6001600160e01b0319831614610a0c565b612c52613c7f565b6000806000612c5f612e44565b925092509250600754811115610dd757600892909255600955600755565b606060006110a68361403f565b60155460009087148015612cab5750601a54612ca79083906154a5565b4210155b8015612cb85750601c5442105b612cd55760405163089b3fa160e31b815260040160405180910390fd5b601f54600003612ce757600b54612ceb565b601f545b601f80549192506000612cfd83615912565b90915550508015612db5576000601e81612d186001856155ec565b81526020019081526020016000209050878160000154148015612d4a575042838260030154612d4791906154a5565b10155b15612db3578215612d6e576040516346f80f1f60e01b815260040160405180910390fd5b612d796001426155ec565b6003820155612d896001836155ec565b6040517fac4a907ec29adcc56774b757ecb1e1b4d597374fc9386107d05e2670259df7d390600090a25b505b600f5460405163fba540c760e01b8152732c0f9d9f110090d46a4544ba0f2664339877273b9163fba540c791612dfd91601591601e9187918d918d918d918d9160040161597c565b60006040518083038186803b158015612e1557600080fd5b505af4158015612e29573d6000803e3d6000fd5b505050509695505050505050565b610dd7838383600161409b565b6000808062015180612e568142615876565b612e609190615849565b905060006007548211612e74576000612e81565b600754612e8190836155ec565b905080600003612ea05760085460095460075493509350935050909192565b6008549350600954925060008385612ed67f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025490565b612ee091906154a5565b612eea91906154a5565b600080546040516311a04fa160e11b81523060048201529293509091829182916001600160a01b03909116906323409f4290602401608060405180830381865afa158015612f3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f60919061580a565b935093509350506000731d84718cf856c82e71499ec02c8b52a392b8fce3632e4c697f83670de0b6b3a7640000612f9791906155ec565b6040516001600160e01b031960e084901b16815260048101919091526407620d06ef6024820152604401602060405180830381865af4158015612fde573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300291906157f1565b61301490670de0b6b3a76400006155ec565b9050600060055482116130295760055461302b565b815b9050600086731d84718cf856c82e71499ec02c8b52a392b8fce36399a04f2f61305c85670de0b6b3a76400006155ec565b8b6040518363ffffffff1660e01b8152600401613083929190918252602082015260400190565b602060405180830381865af41580156130a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130c491906157f1565b6130d6670de0b6b3a76400008a615849565b6130e09190615876565b6130ea91906155ec565b9050600082600181613104670de0b6b3a764000088615849565b61310e91906154a5565b61311891906155ec565b6131229190615876565b905060008660018161313c670de0b6b3a76400008c615849565b61314691906154a5565b61315091906155ec565b61315a9190615876565b8211613191578660018161316e8b87615849565b61317891906154a5565b61318291906155ec565b61318c9190615876565b6131c5565b670de0b6b3a76400006001816131a78587615849565b6131b191906154a5565b6131bb91906155ec565b6131c59190615876565b90506131d1818e6154a5565b9c506131dd81846155ec565b6131e7908d6154a5565b9b5050505050505050505050909192565b6012546001600160a01b03838116911614613253576012546001600160a01b031615613237576040516312794cc760e21b815260040160405180910390fd5b601280546001600160a01b0319166001600160a01b0384161790555b60125460ff600160a01b90910416151581151514613283576012805460ff60a01b1916600160a01b831515021790555b601254604080516001600160a01b0383168152600160a01b90920460ff16151560208301527f5806f7ef7f8d6bafce97caf329ff62db253b61c867a1b2c4da9e79dbc4ec2f22910160405180910390a15050565b60006001600160a01b038216158015906132fa57506001600160a01b0382163014155b6133175760405163445e1f2b60e11b815260040160405180910390fd5b6040516001600160a01b038316907f59b7c8b22741836fc393dc21baa2e8157e039b28c3ee59310f38b2847a2dd29c90600090a2610a0c600283614183565b600061336284846129e8565b9050600019811461113757818110156133a757604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401611b9c565b6111378484848403600061409b565b6001600160a01b0383166133e057604051634b637e8f60e11b815260006004820152602401611b9c565b6001600160a01b03821661340a5760405163ec442f0560e01b815260006004820152602401611b9c565b610dd7838383614198565b6000806000806040518060e001604052808a815260200189815260200161343b8d613e46565b81526020016134498c613e46565b8152602001888152602001878152602001868152509050732c0f9d9f110090d46a4544ba0f2664339877273b63ef27b38b60158e8e8e866040518663ffffffff1660e01b815260040161351995949392919060006101608201905086825285602083015260018060a01b038516604083015260018060a01b038416606083015282516080830152602083015160a0830152604083015160c0830152606083015160e0830152608083015161010083015260a083015161012083015260c08301516101408301529695505050505050565b606060405180830381865af4158015613536573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061355a9190615a39565b919e909d50909b509950505050505050505050565b6000600080516020615c068339815191528161358b85856141cc565b905080156120b75760008581526020839052604090206135ab9085614183565b50949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526136058482614278565b611137576040516001600160a01b0384811660248301526000604483015261366891869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506142c2565b61113784826142c2565b6000600080516020615c068339815191528161368e8585614333565b905080156120b75760008581526020839052604090206135ab90856143af565b60008282188284110282186110a6565b6136c66143c4565b6109d0828261440d565b6109ac6143c4565b6136e06143c4565b6109ac61445e565b7fb8dde4be9101cab9d9d994925b7817605b5ce5834e63618484b8b4e5bef6a548816040516137179190615a67565b60405180910390a160045460005b8181101561375e57600480548061373e5761373e615ac8565b600082815260208120820160001990810191909155019055600101613725565b50815190508060000361376f575050565b604081111561379157604051636516935760e11b815260040160405180910390fd5b60008060005b838110156138e957826001600160a01b03168582815181106137bb576137bb615479565b6020026020010151600001516001600160a01b0316116137ee576040516341dc215f60e11b815260040160405180910390fd5b84818151811061380057613800615479565b6020026020010151602001516001600160601b03166000036138355760405163011becf960e01b815260040160405180910390fd5b84818151811061384757613847615479565b6020026020010151602001516001600160601b03168261386791906154a5565b915084818151811061387b5761387b615479565b6020026020010151600001519250600485828151811061389d5761389d615479565b602090810291909101810151825460018181018555600094855293839020825192909301516001600160601b0316600160a01b026001600160a01b039092169190911791015501613797565b50670de0b6b3a764000081146111375760405163f79b6e4960e01b815260040160405180910390fd5b67016345785d8a000081111561393b576040516302aec4d160e11b815260040160405180910390fd5b731d84718cf856c82e71499ec02c8b52a392b8fce3632e4c697f61396783670de0b6b3a76400006155ec565b6040516001600160e01b031960e084901b16815260048101919091526407620d06ef6024820152604401602060405180830381865af41580156139ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139d291906157f1565b6139e490670de0b6b3a76400006155ec565b6005558015806139f5575060055415155b613a1257604051637c379aa760e11b815260040160405180910390fd5b60055460408051918252602082018390527f504285076b3e8a5b35bb309459af128be9f7cf48f7aab9e599332a1e79cb541e9101612b5c565b66b1a2bc2ec50000811115613a735760405163330e445d60e01b815260040160405180910390fd5b60068190556040518181527f97aee230ba41961438e908e115df76fa8113f85a0586d85b19ba5be50e6a227490602001612b5c565b603c8110158015613abc575062093a808111155b613ad95760405163bb80f28f60e01b815260040160405180910390fd5b600f8190556040518181527f99578d7fe3e20e279feceaa076eb8032d475ca1a49391ec0a740445152a5971390602001612b5c565b6001613b1a8282615b25565b507f7332b59e42a46838955f2abeac0a553dd3870441c46bbfb13728d9b2cc5fb6d481604051612b5c919061493e565b6001600160a01b038116613b7157604051635908381f60e11b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038216613bbd5760405163ec442f0560e01b815260006004820152602401611b9c565b6109d060008383614198565b6060806000613bd6610d53565b9050613be0612b67565b8151919450925060005b81811015613c3c57613c1787858381518110613c0857613c08615479565b60200260200101518589614466565b848281518110613c2957613c29615479565b6020908102919091010152600101613bea565b5050509250929050565b6040516001600160a01b0384811660248301528381166044830152606482018390526111379186918216906323b872dd90608401613636565b6013546001600160a01b0316156109ac57601360009054906101000a90046001600160a01b03166001600160a01b031663c8b58aab6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613ce057600080fd5b505af1158015613cf4573d6000803e3d6000fd5b5050601380546001600160a01b03191690555050565b6040516000906001600160a01b038316907f4e3a022fa7a66b1e055fe6b819a1afe69dc1d44c43de4af7b32f095e603884ae908390a26001600160a01b0382166000908152601660205260408120805460ff191681556001810182905560028082018390556003820183905560048201839055600590910191909155610a0c90836143af565b60006110a683836144aa565b6001600160a01b038216613dc657604051634b637e8f60e11b815260006004820152602401611b9c565b6109d082600083614198565b6040516001600160a01b03838116602483015260448201839052610dd791859182169063a9059cbb90606401613636565b6000610a0c825490565b613e1782826120bf565b6109d05760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401611b9c565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015613e8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eb191906157f1565b6013549091506001600160a01b031615801590613fc25750601354604080516309769f0b60e41b815290516001600160a01b03808616931691639769f0b09160048083019260209291908290030181865afa158015613f14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f3891906155ff565b6001600160a01b03161480613fc257506013546040805163a482171960e01b815290516001600160a01b0380861693169163a48217199160048083019260209291908290030181865afa158015613f93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fb791906155ff565b6001600160a01b0316145b15610d36576013546040516370a0823160e01b81526001600160a01b039182166004820152908316906370a0823190602401602060405180830381865afa158015614011573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061403591906157f1565b610a0c90826154a5565b60608160000180548060200260200160405190810160405280929190818152602001828054801561408f57602002820191906000526020600020905b81548152602001906001019080831161407b575b50505050509050919050565b600080516020615c268339815191526001600160a01b0385166140d45760405163e602df0560e01b815260006004820152602401611b9c565b6001600160a01b0384166140fe57604051634a1406b160e11b815260006004820152602401611b9c565b6001600160a01b0380861660009081526001830160209081526040808320938816835292905220839055811561417c57836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161417391815260200190565b60405180910390a35b5050505050565b60006110a6836001600160a01b0384166144d4565b306001600160a01b038316036141c157604051631df47fd760e11b815260040160405180910390fd5b610dd7838383614523565b6000600080516020615c468339815191526141e784846120bf565b614267576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561421d3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610a0c565b6000915050610a0c565b5092915050565b6000806000806020600086516020880160008a5af192503d9150600051905082801561264b575081156142ae578060011461264b565b50505050506001600160a01b03163b151590565b600080602060008451602086016000885af1806142e5576040513d6000823e3d81fd5b50506000513d915081156142fd57806001141561430a565b6001600160a01b0384163b155b1561113757604051635274afe760e01b81526001600160a01b0385166004820152602401611b9c565b6000600080516020615c4683398151915261434e84846120bf565b15614267576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610a0c565b60006110a6836001600160a01b038416614661565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166109ac57604051631afcd79f60e31b815260040160405180910390fd5b6144156143c4565b600080516020615c268339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0361444f8482615b25565b50600481016111378382615b25565b612ab46143c4565b60006144956144748361474a565b801561449057506000848061448b5761448b615860565b868809115b151590565b6144a0868686614777565b61136191906154a5565b60008260000182815481106144c1576144c1615479565b9060005260206000200154905092915050565b600081815260018301602052604081205461451b57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a0c565b506000610a0c565b600080516020615c268339815191526001600160a01b03841661455f578181600201600082825461455491906154a5565b909155506145d19050565b6001600160a01b038416600090815260208290526040902054828110156145b25760405163391434e360e21b81526001600160a01b03861660048201526024810182905260448101849052606401611b9c565b6001600160a01b03851660009081526020839052604090209083900390555b6001600160a01b0383166145ef57600281018054839003905561460e565b6001600160a01b03831660009081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161465391815260200190565b60405180910390a350505050565b600081815260018301602052604081205480156142675760006146856001836155ec565b8554909150600090614699906001906155ec565b90508082146146fe5760008660000182815481106146b9576146b9615479565b90600052602060002001549050808760000184815481106146dc576146dc615479565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061470f5761470f615ac8565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a0c565b6000600282600381111561476057614760614fc6565b61476a9190615be3565b60ff166001149050919050565b60008383028160001985870982811083820303915050806000036147ae578382816147a4576147a4615860565b04925050506110a6565b8084116147c5576147c56003851502601118614832565b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b634e487b71600052806020526024601cfd5b60006040828403121561485657600080fd5b50919050565b60006040828403121561486e57600080fd5b6110a68383614844565b600081518084526020840193506020830160005b828110156148b35781516001600160a01b031686526020958601959091019060010161488c565b5093949350505050565b600081518084526020840193506020830160005b828110156148b35781518652602095860195909101906001016148d1565b6040815260006149026040830185614878565b828103602084015261136181856148bd565b60006020828403121561492657600080fd5b81356001600160e01b0319811681146110a657600080fd5b602081526000825180602084015260005b8181101561496c576020818601810151604086840101520161494f565b506000604082850101526040601f19601f83011684010191505092915050565b60006020828403121561499e57600080fd5b5035919050565b6001600160a01b038116811461108457600080fd5b600080604083850312156149cd57600080fd5b82356149d8816149a5565b946020939093013593505050565b801515811461108457600080fd5b60008060408385031215614a0757600080fd5b8235614a12816149a5565b91506020830135614a22816149e6565b809150509250929050565b60008083601f840112614a3f57600080fd5b5081356001600160401b03811115614a5657600080fd5b6020830191508360208260051b85010111156129c557600080fd5b60008083601f840112614a8357600080fd5b5081356001600160401b03811115614a9a57600080fd5b6020830191508360206060830285010111156129c557600080fd5b60008083601f840112614ac757600080fd5b5081356001600160401b03811115614ade57600080fd5b6020830191508360208260061b85010111156129c557600080fd5b60006060828403121561485657600080fd5b60008060008060008060008060006101008a8c031215614b2a57600080fd5b89356001600160401b03811115614b4057600080fd5b614b4c8c828d01614a2d565b909a5098505060208a01356001600160401b03811115614b6b57600080fd5b614b778c828d01614a71565b90985096505060408a01356001600160401b03811115614b9657600080fd5b614ba28c828d01614ab5565b9096509450614bb690508b60608c01614af9565b989b979a50959894979396929550929360c0810135935060e00135919050565b600080600060608486031215614beb57600080fd5b8335614bf6816149a5565b92506020840135614c06816149a5565b929592945050506040919091013590565b600080600080600060a08688031215614c2f57600080fd5b853594506020860135614c41816149a5565b93506040860135614c51816149a5565b94979396509394606081013594506080013592915050565b60008060408385031215614c7c57600080fd5b823591506020830135614a22816149a5565b600080600080600060a08688031215614ca657600080fd5b853594506020860135614cb8816149a5565b93506040860135614cc8816149a5565b92506060860135614cd8816149a5565b949793965091946080013592915050565b600060208284031215614cfb57600080fd5b81356110a6816149a5565b60008060008060008060008060e0898b031215614d2257600080fd5b8835975060208901356001600160401b03811115614d3f57600080fd5b614d4b8b828c01614a2d565b90985096505060408901356001600160401b03811115614d6a57600080fd5b614d768b828c01614a71565b90965094505060608901356001600160401b03811115614d9557600080fd5b614da18b828c01614ab5565b9094509250614db590508a60808b01614af9565b90509295985092959890939650565b600060a0828403121561485657600080fd5b60008060008060006101008688031215614def57600080fd5b85356001600160401b03811115614e0557600080fd5b614e1188828901614dc4565b95505060208601356001600160401b03811115614e2d57600080fd5b614e3988828901614dc4565b945050614e498760408801614844565b9250614e588760808801614af9565b915060e0860135614e68816149a5565b809150509295509295909350565b600080600060608486031215614e8b57600080fd5b833592506020840135614c06816149a5565b60008060408385031215614eb057600080fd5b50508035926020909101359150565b60008083601f840112614ed157600080fd5b5081356001600160401b03811115614ee857600080fd5b6020830191508360208285010111156129c557600080fd5b60008060208385031215614f1357600080fd5b82356001600160401b03811115614f2957600080fd5b614f3585828601614ebf565b90969095509350505050565b6020815260006110a66020830184614878565b600081518084526020840193506020830160005b828110156148b3578151805187526020908101518188015260409096019590910190600101614f68565b600081518084526020840193506020830160005b828110156148b35781511515865260209586019590910190600101614fa6565b634e487b7160e01b600052602160045260246000fd5b60038110614ffa57634e487b7160e01b600052602160045260246000fd5b9052565b8a81526101806020820152600061501961018083018c614878565b82810360408401528a518082526020808d0192019060005b8181101561506e576150588385518051825260208082015190830152604090810151910152565b6020939093019260609290920191600101615031565b50508381036060850152615082818c614f54565b9150508281036080840152615097818a614f92565b885160a0850152602089015160c0850152604089015160e085015291506150bb9050565b8561010083015284610120830152836101408301526150de610160830184614fdc565b9b9a5050505050505050505050565b6000806000806000806080878903121561510657600080fd5b863595506020870135615118816149a5565b945060408701356001600160401b0381111561513357600080fd5b61513f89828a01614a2d565b90955093505060608701356001600160401b0381111561515e57600080fd5b61516a89828a01614a2d565b979a9699509497509295939492505050565b6020815260006110a660208301846148bd565b60008060008060008060008060e0898b0312156151ab57600080fd5b8835975060208901356151bd816149a5565b965060408901356151cd816149a5565b9550606089013594506080890135935060a08901356151eb816149e6565b925060c08901356001600160401b0381111561520657600080fd5b6152128b828c01614ebf565b999c989b5096995094979396929594505050565b6000806040838503121561523957600080fd5b82359150602083013560048110614a2257600080fd5b8215158152604081016110a66020830184614fdc565b6000806040838503121561527857600080fd5b8235615283816149a5565b91506020830135614a22816149a5565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156152cb576152cb615293565b60405290565b604051601f8201601f191681016001600160401b03811182821017156152f9576152f9615293565b604052919050565b60006040828403121561531357600080fd5b61531b6152a9565b90508135615328816149a5565b815260208201356001600160601b038116811461534457600080fd5b602082015292915050565b60006020828403121561536157600080fd5b81356001600160401b0381111561537757600080fd5b8201601f8101841361538857600080fd5b80356001600160401b038111156153a1576153a1615293565b6153b060208260051b016152d1565b8082825260208201915060208360061b8501019250868311156153d257600080fd5b6020840193505b8284101561264b576153eb8785615301565b82526020820191506040840193506153d9565b6000604082840312801561541157600080fd5b5061541a6152a9565b8235615425816149e6565b815260208301356003811061543957600080fd5b60208201529392505050565b600181811c9082168061545957607f821691505b60208210810361485657634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610a0c57610a0c61548f565b81835260208301925060008160005b848110156148b357813586526020808301359087015260408083013590870152606095860195909101906001016154c7565b81835260208301925060008160005b848110156148b357813586526020808301359087015260409586019590910190600101615508565b8b8152602081018b905261014060408201819052810189905260008a6101608301825b8c811015615583578235615566816149a5565b6001600160a01b0316825260209283019290910190600101615553565b508381036060850152615597818b8d6154b8565b91505082810360808401526155ad81888a6154f9565b863560a0850152602087013560c0850152604087013560e085015291506155d19050565b61010082019390935261012001529998505050505050505050565b81810381811115610a0c57610a0c61548f565b60006020828403121561561157600080fd5b81516110a6816149a5565b60006060828403121561562e57600080fd5b604051606081016001600160401b038111828210171561565057615650615293565b60409081528335825260208085013590830152928301359281019290925250919050565b60006060828403121561568657600080fd5b6110a6838361561c565b600060408284031280156156a357600080fd5b506156ac6152a9565b823581526020928301359281019290925250919050565b6000602082840312156156d557600080fd5b81516110a6816149e6565b6000808335601e198436030181126156f757600080fd5b8301803591506001600160401b0382111561571157600080fd5b6020019150368190038213156129c557600080fd5b6000808335601e1984360301811261573d57600080fd5b8301803591506001600160401b0382111561575757600080fd5b6020019150600681901b36038213156129c557600080fd5b60006040828403121561578157600080fd5b6110a68383615301565b60006020828403121561579d57600080fd5b81356110a6816149e6565b6000808335601e198436030181126157bf57600080fd5b8301803591506001600160401b038211156157d957600080fd5b6020019150600581901b36038213156129c557600080fd5b60006020828403121561580357600080fd5b5051919050565b6000806000806080858703121561582057600080fd5b845161582b816149a5565b60208601516040870151606090970151919890975090945092505050565b8082028115828204841417610a0c57610a0c61548f565b634e487b7160e01b600052601260045260246000fd5b60008261588557615885615860565b500490565b8881526001600160a01b03888116602083015287166040820152606081018690526080810185905283151560a082015260e060c0820181905281018290528183610100830137600081830161010090810191909152601f909201601f19160101979650505050505050565b815115158152602080830151604083019161427190840182614fdc565b6000600182016159245761592461548f565b5060010190565b600081518084526020840193506020830160005b828110156148b3576159668683518051825260208082015190830152604090810151910152565b606095909501946020919091019060010161593f565b600061014082018a835289602084015288604084015261014060608401528088518083526101608501915060208a01925060005b818110156159d75783516001600160a01b03168352602093840193909201916001016159b0565b505083810360808501526159eb818961592b565b91505082810360a0840152615a008187614f54565b855160c0850152602086015160e085015260408601516101008501529150615a259050565b826101208301529998505050505050505050565b600080600060608486031215615a4e57600080fd5b5050815160208301516040909301519094929350919050565b602080825282518282018190526000918401906040840190835b81811015615abd57835180516001600160a01b031684526020908101516001600160601b03168185015290930192604090920191600101615a81565b509095945050505050565b634e487b7160e01b600052603160045260246000fd5b601f821115610dd757806000526020600020601f840160051c81016020851015615b055750805b601f840160051c820191505b8181101561417c5760008155600101615b11565b81516001600160401b03811115615b3e57615b3e615293565b615b5281615b4c8454615445565b84615ade565b6020601f821160018114615b865760008315615b6e5750848201515b600019600385901b1c1916600184901b17845561417c565b600084815260208120601f198516915b82811015615bb65787850151825560209485019460019092019101615b96565b5084821015615bd45786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b600060ff831680615bf657615bf6615860565b8060ff8416069150509291505056fec1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a164736f6c634300081c000a00000000000000000000000043dca440bc160562173cb24e87f6fe39c62e9f0b0000000000000000000000008a01936b12bcbeec394ed497600ede41d409a83f000000000000000000000000bea06b57bfb769401407676e816f343761ee31d700000000000000000000000047df1465672bfc4dc83f712531f7eb1d658c0b66