1 tx
4 calls
constructor
constructor(address _algebraFactory, address _farmingCenter)
functions
afterCreatePoolHook
viewfunction afterCreatePoolHook(address, address, address) view
ALGEBRA_BASE_PLUGIN_FACTORY_ADMINISTRATOR
viewfunction ALGEBRA_BASE_PLUGIN_FACTORY_ADMINISTRATOR() view returns (bytes32)
algebraFactory
viewfunction algebraFactory() view returns (address)
defaultCommunityFeeForCustomPool
viewfunction defaultCommunityFeeForCustomPool() view returns (uint16)
defaultFeeConfiguration
viewfunction defaultFeeConfiguration() view returns (uint16 alpha1, uint16 alpha2, uint32 beta1, uint32 beta2, uint16 gamma1, uint16 gamma2, uint16 baseFee)
farmingAddress
viewfunction farmingAddress() view returns (address)
pluginByPool
viewfunction pluginByPool(address poolAddress) view returns (address pluginAddress)
beforeCreatePoolHook
nonpayablefunction beforeCreatePoolHook(address pool, address, address, address, address, bytes) returns (address)
createCustomPoolAndInitialize
nonpayablefunction createCustomPoolAndInitialize(uint160 sqrtX96price, address token0, address token1) returns (address)
createPlugin
nonpayablefunction createPlugin(address pool, address, address) returns (address)
pausePlugin
nonpayablefunction pausePlugin(address[] plugins)
setDefaultCommunityFeeForCustomPool
nonpayablefunction setDefaultCommunityFeeForCustomPool(uint16 _defaultCommunityFeeForCustomPool)
setDefaultFeeConfiguration
nonpayablefunction setDefaultFeeConfiguration(tuple newConfig)
setFeeType
nonpayablefunction setFeeType(address[] plugins, bool feeType)
unpausePlugin
nonpayablefunction unpausePlugin(address[] plugins)
updatePluginForPool
nonpayablefunction updatePluginForPool(address[] _pools)
events
DefaultFeeConfiguration
event DefaultFeeConfiguration((uint16 alpha1, uint16 alpha2, uint32 beta1, uint32 beta2, uint16 gamma1, uint16 gamma2, uint16 baseFee) newConfig)
errors
CommunityFeeAmount
error CommunityFeeAmount()
NotAdministrator
error NotAdministrator()
NotFactory
error NotFactory()
PluginExists
error PluginExists()
ZeroAddress
error ZeroAddress()
creation bytecode
0x60806040526001805461ffff191660c81790553480156200001f57600080fd5b5060405162005f8d38038062005f8d8339810160408190526200004291620002ea565b6200004d8262000218565b620000588162000218565b6001805462010000600160b01b031916620100006001600160a01b038581169190910291909117909155600280546001600160a01b031916918316919091179055620000a362000243565b80516000805460208401516040808601516060870151608088015160a089015160c09099015161ffff908116600160801b0261ffff60801b199a8216600160701b0261ffff60701b199383166c01000000000000000000000000029390931663ffffffff60601b1963ffffffff958616680100000000000000000263ffffffff60401b19969097166401000000000295909516600160201b600160601b0319988416620100000263ffffffff19909a1693909b16929092179790971795909516979097179190911716919091179390931793909316929092178255517fe04232512a5cb82c08e0f9b1f51432930cd7a0b7ea9f9f916f080cb0b4ac644b916200020891600060e082019050825461ffff8082168452808260101c16602085015263ffffffff808360201c166040860152808360401c16606086015250808260601c166080850152808260701c1660a0850152808260801c1660c0850152505092915050565b60405180910390a1505062000353565b6001600160a01b038116620002405760405163d92e233d60e01b815260040160405180910390fd5b50565b6040805160e08082018352600080835260208301819052828401819052606083018190526080830181905260a0830181905260c083015282519081019092529080620002936064610bb862000322565b61ffff168152612ee06020820152610168604082015261ea606060820152603b608082015261213460a0820152606460c090910152919050565b80516001600160a01b0381168114620002e557600080fd5b919050565b60008060408385031215620002fe57600080fd5b6200030983620002cd565b91506200031960208401620002cd565b90509250929050565b61ffff8281168282160390808211156200034c57634e487b7160e01b600052601160045260246000fd5b5092915050565b615c2a80620003636000396000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c80639533ff1011620000a3578063cdef16f6116200006e578063cdef16f61462000324578063f34440131462000350578063f44b9f4f1462000367578063f718949a146200037e57600080fd5b80639533ff1014620002a5578063a7b64b0414620002bc578063c95a261814620002d6578063cddff26914620002ed57600080fd5b80634e09a96a11620000e45780634e09a96a146200019557806375831f5014620002575780638a2ade58146200027a5780638d5ef8d1146200028e57600080fd5b806308633f91146200011a5780631d0338d914620001335780632616d17314620001675780633f56325d146200017e575b600080fd5b620001316200012b36600462000d36565b62000395565b005b6200014a6200014436600462000da9565b62000452565b6040516001600160a01b0390911681526020015b60405180910390f35b620001316200017836600462000e88565b62000475565b620001316200018f36600462000e88565b620005a3565b6000546200020e9061ffff8082169162010000810482169163ffffffff6401000000008304811692680100000000000000008104909116916c0100000000000000000000000082048116916e01000000000000000000000000000081048216917001000000000000000000000000000000009091041687565b6040805161ffff9889168152968816602088015263ffffffff9586169087015293909216606085015284166080840152831660a08301529190911660c082015260e0016200015e565b600154620002669061ffff1681565b60405161ffff90911681526020016200015e565b6002546200014a906001600160a01b031681565b620001316200029f36600462000ece565b6200064f565b6200014a620002b636600462000ece565b62000659565b6001546200014a906201000090046001600160a01b031681565b62000131620002e736600462000f38565b620006a1565b620003157f267da724c255813ae00f4522fe843cb70148a4b8099cbc5af64f9a4151e55ed681565b6040519081526020016200015e565b6200014a6200033536600462000f5f565b6003602052600090815260409020546001600160a01b031681565b620001316200036136600462000e88565b620006eb565b6200014a6200037836600462000ece565b62000797565b620001316200038f36600462000f7f565b62000914565b6200039f62000987565b60005b828110156200044c57838382818110620003c057620003c062000f98565b9050602002016020810190620003d7919062000f5f565b604051630e81171760e11b815283151560048201526001600160a01b039190911690631d022e2e90602401600060405180830381600087803b1580156200041d57600080fd5b505af115801562000432573d6000803e3d6000fd5b505050508080620004439062000fc4565b915050620003a2565b50505050565b60006200045e62000987565b620004698862000a41565b98975050505050505050565b6200047f62000987565b60005b818110156200059e57828282818110620004a057620004a062000f98565b9050602002016020810190620004b7919062000f5f565b6001600160a01b031663ef01df4f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200051b919062000fe0565b6003600085858581811062000534576200053462000f98565b90506020020160208101906200054b919062000f5f565b6001600160a01b0390811682526020820192909252604001600020805473ffffffffffffffffffffffffffffffffffffffff19169290911691909117905580620005958162000fc4565b91505062000482565b505050565b620005ad62000987565b60005b818110156200059e57828282818110620005ce57620005ce62000f98565b9050602002016020810190620005e5919062000f5f565b6001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200062057600080fd5b505af115801562000635573d6000803e3d6000fd5b505050508080620006469062000fc4565b915050620005b0565b6200059e62000987565b6001546000906201000090046001600160a01b031633146200068e57604051631966391b60e11b815260040160405180910390fd5b620006998462000a41565b949350505050565b620006ab62000987565b6103e88161ffff161115620006d357604051635f0b514d60e11b815260040160405180910390fd5b6001805461ffff191661ffff92909216919091179055565b620006f562000987565b60005b818110156200059e5782828281811062000716576200071662000f98565b90506020020160208101906200072d919062000f5f565b6001600160a01b0316633f4ba83a6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200076857600080fd5b505af11580156200077d573d6000803e3d6000fd5b5050505080806200078e9062000fc4565b915050620006f8565b6001546040516336efcf6d60e21b81523060048201523360248201526001600160a01b038481166044830152838116606483015260a06084830152600060a48301819052928392620100009091049091169063dbbf3db49060c4016020604051808303816000875af115801562000812573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000838919062000fe0565b90506001600160a01b03851615620008a85760405163f637731d60e01b81526001600160a01b03868116600483015282169063f637731d90602401600060405180830381600087803b1580156200088e57600080fd5b505af1158015620008a3573d6000803e3d6000fd5b505050505b60015460405163120543ad60e11b815261ffff90911660048201526001600160a01b0382169063240a875a90602401600060405180830381600087803b158015620008f257600080fd5b505af115801562000907573d6000803e3d6000fd5b5092979650505050505050565b6200091e62000987565b62000939620009333683900383018362001020565b62000bd6565b80600062000948828262001112565b9050507fe04232512a5cb82c08e0f9b1f51432930cd7a0b7ea9f9f916f080cb0b4ac644b816040516200097c91906200129d565b60405180910390a150565b60015460405163e8ae2b6960e01b81527f267da724c255813ae00f4522fe843cb70148a4b8099cbc5af64f9a4151e55ed66004820152336024820152620100009091046001600160a01b03169063e8ae2b6990604401602060405180830381865afa158015620009fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a21919062001354565b62000a3f5760405163e85bbb2160e01b815260040160405180910390fd5b565b6001600160a01b038181166000908152600360205260408120549091161562000a7d5760405163d8c7ab2b60e01b815260040160405180910390fd5b600082600160029054906101000a90046001600160a01b03163060405162000aa59062000cca565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f08015801562000ae2573d6000803e3d6000fd5b5060408051630e9c90af60e11b815260005461ffff8082166004840152601082901c8116602484015263ffffffff602083901c811660448501529382901c9093166064830152606081901c83166084830152607081901c831660a483015260801c90911660c48201529091506001600160a01b03821690631d39215e9060e401600060405180830381600087803b15801562000b7d57600080fd5b505af115801562000b92573d6000803e3d6000fd5b505050506001600160a01b039283166000908152600360205260409020805473ffffffffffffffffffffffffffffffffffffffff1916938216939093179092555090565b60c08101516020820151825161ffff9283169162000bfa9190841690841662001374565b62000c06919062001374565b111562000c5a5760405162461bcd60e51b815260206004820152601060248201527f4d6178206665652065786365656465640000000000000000000000000000000060448201526064015b60405180910390fd5b608081015161ffff161580159062000c79575060a081015161ffff1615155b62000cc75760405162461bcd60e51b815260206004820152601260248201527f47616d6d6173206d757374206265203e20300000000000000000000000000000604482015260640162000c51565b50565b61486a806200138b83390190565b60008083601f84011262000ceb57600080fd5b50813567ffffffffffffffff81111562000d0457600080fd5b6020830191508360208260051b850101111562000d2057600080fd5b9250929050565b801515811462000cc757600080fd5b60008060006040848603121562000d4c57600080fd5b833567ffffffffffffffff81111562000d6457600080fd5b62000d728682870162000cd8565b909450925050602084013562000d888162000d27565b809150509250925092565b6001600160a01b038116811462000cc757600080fd5b600080600080600080600060c0888a03121562000dc557600080fd5b873562000dd28162000d93565b9650602088013562000de48162000d93565b9550604088013562000df68162000d93565b9450606088013562000e088162000d93565b9350608088013562000e1a8162000d93565b925060a088013567ffffffffffffffff8082111562000e3857600080fd5b818a0191508a601f83011262000e4d57600080fd5b81358181111562000e5d57600080fd5b8b602082850101111562000e7057600080fd5b60208301945080935050505092959891949750929550565b6000806020838503121562000e9c57600080fd5b823567ffffffffffffffff81111562000eb457600080fd5b62000ec28582860162000cd8565b90969095509350505050565b60008060006060848603121562000ee457600080fd5b833562000ef18162000d93565b9250602084013562000f038162000d93565b9150604084013562000d888162000d93565b61ffff8116811462000cc757600080fd5b803562000f338162000f15565b919050565b60006020828403121562000f4b57600080fd5b813562000f588162000f15565b9392505050565b60006020828403121562000f7257600080fd5b813562000f588162000d93565b600060e0828403121562000f9257600080fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820162000fd95762000fd962000fae565b5060010190565b60006020828403121562000ff357600080fd5b815162000f588162000d93565b63ffffffff8116811462000cc757600080fd5b803562000f338162001000565b600060e082840312156200103357600080fd5b60405160e0810181811067ffffffffffffffff821117156200106557634e487b7160e01b600052604160045260246000fd5b604052620010738362000f26565b8152620010836020840162000f26565b6020820152620010966040840162001013565b6040820152620010a96060840162001013565b6060820152620010bc6080840162000f26565b6080820152620010cf60a0840162000f26565b60a0820152620010e260c0840162000f26565b60c08201529392505050565b60008135620010fd8162000f15565b92915050565b60008135620010fd8162001000565b81356200111f8162000f15565b61ffff8116905081548161ffff1982161783556020840135620011428162000f15565b63ffff00008160101b169050808363ffffffff1984161717845560408501356200116c8162001000565b67ffffffff000000008160201b168467ffffffffffffffff19851617831717855550505050620011cd620011a36060840162001103565b82546bffffffff0000000000000000191660409190911b6bffffffff000000000000000016178255565b6200120d620011df60808401620010ee565b82546dffff000000000000000000000000191660609190911b6dffff00000000000000000000000016178255565b620012516200121f60a08401620010ee565b82546fffff0000000000000000000000000000191660709190911b6fffff000000000000000000000000000016178255565b620012996200126360c08401620010ee565b825471ffff00000000000000000000000000000000191660809190911b71ffff0000000000000000000000000000000016178255565b5050565b60e081018235620012ae8162000f15565b61ffff9081168352602084013590620012c78262000f15565b9081166020840152604084013590620012e08262001000565b63ffffffff9182166040850152606085013591620012fe8362001000565b919091166060840152608084013590620013188262000f15565b1660808301526200132c60a0840162000f26565b61ffff1660a08301526200134360c0840162000f26565b61ffff811660c08401525092915050565b6000602082840312156200136757600080fd5b815162000f588162000d27565b80820180821115620010fd57620010fd62000fae56fe60e060405262010002805463ffffffff1916630bb803e81790553480156200002657600080fd5b506040516200486a3803806200486a8339810160408190526200004991620000c9565b6001600160a01b0390811660c0529182166080521660a052604080518082019091526c01000000000000000000000000808252602091909101527c0100000000000000000000000000000001000000000000000000000000620100015562000113565b80516001600160a01b0381168114620000c457600080fd5b919050565b600080600060608486031215620000df57600080fd5b620000ea84620000ac565b9250620000fa60208501620000ac565b91506200010a60408501620000ac565b90509250925092565b60805160a05160c0516146a9620001c16000396000818161087e0152818161091d01528181610c7101528181610dbd01528181610e84015281816112d701526116cf01526000818161097f01528181610b860152818161147d01526117310152600081816102b40152818161037301528181611230015281816117f70152818161186801528181611c7a01528181611e0001528181611e6c01528181611f24015261300a01526146a96000f3fe608060405234801561001057600080fd5b50600436106102ad5760003560e01c8063689ea3701161017b5780639d3a5241116100d8578063e63015f01161008c578063f5985d3511610071578063f5985d35146107a6578063f70d9362146107d2578063fb8dc179146107da57600080fd5b8063e63015f014610780578063e72c652d1461079357600080fd5b8063aa6b14bb116100bd578063aa6b14bb1461073e578063d68520101461075a578063da7052351461076d57600080fd5b80639d3a52411461070a578063a37a84561461072b57600080fd5b806382dd65221161012f57806388f2e8621161011457806388f2e862146106af5780638de0a8ee146106e45780639cb5a963146106f757600080fd5b806382dd6522146106945780638456cb59146106a757600080fd5b80637b3de5c6116101605780637b3de5c6146106695780637c1fe0c8146106795780638129fc1c1461068c57600080fd5b8063689ea370146105e557806374eceae6146105ff57600080fd5b8063217ac237116102295780633f4ba83a116101dd5780635c975abb116101c25780635c975abb146105895780635e2411b21461059b578063636fd804146105d257600080fd5b80633f4ba83a1461054157806358e31bfd1461054957600080fd5b8063343d37ff1161020e578063343d37ff146104df578063392e53cd1461050b5780633b586c7f1461052e57600080fd5b8063217ac2371461046957806331b25d1a146104aa57600080fd5b806316f0115b116102805780631d39215e116102655780631d39215e146103aa5780631d4632ac146103bd5780631e5eb1d0146103da57600080fd5b806316f0115b1461036e5780631d022e2e1461039557600080fd5b8063026b1d5f146102b2578063029c1cb7146102f15780630786feb61461033057806308cd197514610358575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6103046102ff366004613bfd565b6107e7565b604080516001600160e01b0319909416845262ffffff92831660208501529116908201526060016102e8565b600054610345906301000000900461ffff1681565b60405161ffff90911681526020016102e8565b62010002546103459062010000900461ffff1681565b6102d47f000000000000000000000000000000000000000000000000000000000000000081565b6103a86103a3366004613ca7565b610873565b005b6103a86103b8366004613cc4565b610912565b62010002546102d49064010000000090046001600160a01b031681565b610421620100045461ffff80821692601083901c82169263ffffffff602082901c811693604083901c90911692606083901c821692607081901c83169260809190911c1690565b6040805161ffff9889168152968816602088015263ffffffff9586169087015293909216606085015284166080840152831660a08301529190911660c082015260e0016102e8565b610471610b06565b604080516001600160a01b03909516855260029390930b602085015261ffff9091169183019190915260ff1660608201526080016102e8565b6104d17f8e8000aba5b365c0be9685da1153f7f096e76d1ecfb42c050ae1e387aa65b4f581565b6040519081526020016102e8565b6104f26104ed366004613cdc565b610b22565b6040516001600160e01b031990911681526020016102e8565b60005461051e9062010000900460ff1681565b60405190151581526020016102e8565b6103a861053c366004613d6b565b610b4b565b6103a8610c66565b6201000154610569906001600160801b0380821691600160801b90041682565b604080516001600160801b039384168152929091166020830152016102e8565b60005461051e90610100900460ff1681565b6105ae6105a9366004613da9565b610ce3565b604080516001600160e01b0319909316835262ffffff9091166020830152016102e8565b6104f26105e0366004613e48565b610d1a565b6105ed60c381565b60405160ff90911681526020016102e8565b61061261060d366004613e81565b610d3e565b60408051971515885263ffffffff909616602088015260069490940b948601949094526001600160581b039091166060850152600290810b60808501529190910b60a083015261ffff1660c082015260e0016102e8565b62010002546103459061ffff1681565b6103a8610687366004613e9a565b610da6565b6103a8611175565b6104f26106a2366004613eb7565b611216565b6103a86112cc565b6106c26106bd366004613f16565b61134d565b6040805160069390930b83526001600160581b039091166020830152016102e8565b6104f26106f2366004613f31565b6113a8565b6104f2610705366004613fad565b6113d8565b61071d6107183660046140a2565b611401565b6040516102e892919061414f565b6103a8610739366004613d6b565b611442565b6104f261074c3660046141d6565b63aa6b14bb60e01b92915050565b6104f26107683660046141f8565b611553565b6103a861077b366004614260565b61157d565b61051e61078e366004613e9a565b611652565b6103a86107a136600461428e565b6116c4565b6000546107bd90600160281b900463ffffffff1681565b60405163ffffffff90911681526020016102e8565b6103456117b8565b60005461051e9060ff1681565b60008060006107f46117ec565b6107fc611837565b6000805460ff1615610839576000610812611860565b50509150506108298b826108246118f8565b6119a5565b9150610833611ab4565b50610851565b610841611ab4565b61085161084c611baa565b611bf1565b63029c1cb760e01b935061ffff16915060009050985098509895505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108bc57604051631eb49d6d60e11b815260040160405180910390fd5b6000805482151560ff19821681179092556040805160ff909216801515835260208301939093527f4c178ce4718c9cd3c1e46dc348c68224830b3a6f5b945c37f46d93ca8b65bb89910160405180910390a15050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806109f2575060405163e8ae2b6960e01b81527f8e8000aba5b365c0be9685da1153f7f096e76d1ecfb42c050ae1e387aa65b4f560048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e8ae2b6990604401602060405180830381865afa1580156109ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f291906142c5565b6109fb57600080fd5b610a12610a0d368390038301836142e2565b611ce5565b610a93610a24368390038301836142e2565b600080826000015161ffff166010846020015161ffff16901b6020856040015163ffffffff16901b6040866060015163ffffffff16901b6060876080015161ffff16901b60708860a0015161ffff16901b60808960c0015161ffff16901b171717171717905080915050919050565b62010004805471ffffffffffffffffffffffffffffffffffff191671ffffffffffffffffffffffffffffffffffff929092169190911790556040517f348d1d6a31fa4a2a3ef887c493549a9500fbb77b5218be0c81a71c553364305a90610afb90839061439a565b60405180910390a150565b600080600080610b14611860565b935093509350935090919293565b6000610b2c6117ec565b610b3660c3611dcc565b5063343d37ff60e01b98975050505050505050565b60405163e8ae2b6960e01b81527f8e8000aba5b365c0be9685da1153f7f096e76d1ecfb42c050ae1e387aa65b4f560048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e8ae2b6990604401602060405180830381865afa158015610bd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf991906142c5565b610c1657604051631eb49d6d60e11b815260040160405180910390fd5b62010002805463ffff000019166201000061ffff8416908102919091179091556040519081527fc91eb493942701aff5078930c9629ab20229818e33e54743671490dcf57a7b1090602001610afb565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610caf57604051631eb49d6d60e11b815260040160405180910390fd5b6000805461ff00191681556040517f92c934cce17dcaca1e7daa742325ef019e216ef8f9625e01cb1e3ffc3b43fcde9190a1565b600080610cee6117ec565b610cf6611837565b610d0060c3611dcc565b50632f1208d960e11b905060005b97509795505050505050565b6000610d246117ec565b610d2e60c3611dcc565b506318dbf60160e21b5b92915050565b600181620100008110610d5057600080fd5b015460ff81169150610100810463ffffffff1690600160281b810460060b90600160601b81046001600160581b031690600160b81b8104600290810b91600160d01b810490910b90600160e81b900461ffff1687565b6001600160a01b03811615801590600090610e58577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638a2ade586040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3d919061443f565b6001600160a01b0316336001600160a01b0316149050610f1b565b62010003546001600160a01b031615610e7d575062010003546001600160a01b031633145b80610f1b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638a2ade586040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ee0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f04919061443f565b6001600160a01b0316336001600160a01b03161490505b80610f6d5760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420616c6c6f77656420746f2073657420696e63656e746976650000000060448201526064015b60405180910390fd5b600030610f78611e68565b6001600160a01b03161490508215610fd75780610fd75760405162461bcd60e51b815260206004820152601360248201527f506c7567696e206e6f74206174746163686564000000000000000000000000006044820152606401610f64565b62010002546001600160a01b03640100000000909104811690851681036110405760405162461bcd60e51b815260206004820152600e60248201527f416c7265616479206163746976650000000000000000000000000000000000006044820152606401610f64565b831561109d576001600160a01b0381161561109d5760405162461bcd60e51b815260206004820152601460248201527f4861732061637469766520696e63656e746976650000000000000000000000006044820152606401610f64565b6201000280547fffffffffffffffff0000000000000000000000000000000000000000ffffffff166401000000006001600160a01b038816908102919091179091556040519081527f915c5369e6580733735d1c2e30ca20dcaa395697a041033c9f35f80f53525e849060200160405180910390a1831561113e5762010003805473ffffffffffffffffffffffffffffffffffffffff19163317905561115e565b62010003805473ffffffffffffffffffffffffffffffffffffffff191690555b811561116e5761116e6002611eec565b5050505050565b60005462010000900460ff161561119e5760405162dc149f60e41b815260040160405180910390fd5b306111a7611e68565b6001600160a01b0316146111ce5760405163a909652b60e01b815260040160405180910390fd5b6000806111d9611860565b505091509150816001600160a01b031660000361120957604051636fdc2d5b60e01b815260040160405180910390fd5b61121281611f8e565b5050565b60006112206117ec565b61122982611f8e565b62010004547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638e0055539060801c61ffff166040516001600160e01b031960e084901b16815261ffff9091166004820152602401600060405180830381600087803b1580156112a257600080fd5b505af11580156112b6573d6000803e3d6000fd5b5063416eb29160e11b93505050505b9392505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461131557604051631eb49d6d60e11b815260040160405180910390fd5b6000805461ff0019166101001781556040517f7927ef12e918a193ce943702d9620c7e6823bf81bbc8574572756d40719518629190a1565b600080600061135a611860565b505060008054919350630100000090910461ffff16915061137c600183611fd2565b9050600061138f60014289878787612005565b6040810151606090910151909890975095505050505050565b60006113b26117ec565b6113ba611837565b6113c460c3611dcc565b506346f0547760e11b5b9695505050505050565b60006113e26117ec565b6113eb88612280565b50639cb5a96360e01b9998505050505050505050565b606080600061140e611860565b505091505061143861141d4290565b60005460019190879085906301000000900461ffff1661232c565b9250925050915091565b60405163e8ae2b6960e01b81527f8e8000aba5b365c0be9685da1153f7f096e76d1ecfb42c050ae1e387aa65b4f560048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e8ae2b6990604401602060405180830381865afa1580156114cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f091906142c5565b61150d57604051631eb49d6d60e11b815260040160405180910390fd5b62010002805461ffff191661ffff83169081179091556040519081527f1011f83fc34609d67eda9d83258819bf0713ae683f06389bbd69417645eed04690602001610afb565b600061155d6117ec565b61156760c3611dcc565b50630d68520160e41b9998505050505050505050565b60018261ffff166201000081106115965761159661445c565b015460ff16156115b85760405162dc149f60e41b815260040160405180910390fd5b61ffff811615806115dd57508061ffff168261ffff6115d79190614488565b61ffff16105b156115fb5760405163162908e360e11b815260040160405180910390fd5b61ffff82165b81830161ffff1681101561164d57600180826201000081106116255761162561445c565b01805463ffffffff929092166101000264ffffffff0019909216919091179055600101611601565b505050565b62010002546000906001600160a01b03838116640100000000909204161461167c57506000919050565b30611685611e68565b6001600160a01b03161461169b57506000919050565b60006116a5611860565b9350505050600281166116bb5750600092915050565b50600192915050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806117a4575060405163e8ae2b6960e01b81527f8e8000aba5b365c0be9685da1153f7f096e76d1ecfb42c050ae1e387aa65b4f560048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e8ae2b6990604401602060405180830381865afa158015611780573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a491906142c5565b6117ad57600080fd5b61164d8382846124ad565b6000805460ff16156117d75750620100025462010000900461ffff1690565b6117e76117e2611baa565b612511565b905090565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461183557604051636f61f64160e01b815260040160405180910390fd5b565b600054610100900460ff16156118355760405163f935472560e01b815260040160405180910390fd5b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e76c01e46040518163ffffffff1660e01b815260040160c060405180830381865afa1580156118c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e891906144a3565b5093989297509095509350915050565b6000805481906001906301000000900461ffff1662010000811061191e5761191e61445c565b6040805160e081018252919092015460ff811615158252610100810463ffffffff166020830152600160281b810460060b92820192909252600160601b82046001600160581b03166060820152600160b81b8204600290810b60808301819052600160d01b840490910b60a0830152600160e81b90920461ffff1660c09091015292915050565b6040805180820190915260008082526020820181905290620100025461ffff8082169162010000900416600286810b9086900b14611a0f576119e886868461255f565b805160208201516001600160801b03908116600160801b0291161762010001559250611a3c565b6040805180820190915262010001546001600160801b038082168352600160801b90910416602082015292505b600087611a69576020840151606090611a62906001600160801b031661ffff8516614530565b901c611a88565b8351606090611a85906001600160801b031661ffff8516614530565b901c5b905061ffff811115611a9d575061ffff611aa9565b80600003611aa9575060015b979650505050505050565b6000546301000000810461ffff1690600160281b810463ffffffff169062010000900460ff1680611b275760405162461bcd60e51b815260206004820152600f60248201527f4e6f7420696e697469616c697a656400000000000000000000000000000000006044820152606401610f64565b4263ffffffff80821690841603611b3e5750505050565b6000611b48611860565b5090925060009150611b5f90506001878585612701565b506000805463ffffffff909516600160281b0268ffffffff00000000001961ffff9093166301000000029290921668ffffffffffff0000001990951694909417179092555050505050565b60004281611bb6611860565b505060008054919350630100000090910461ffff169150611bd8600183611fd2565b9050611be8600185858585612996565b94505050505090565b620100045460009071ffffffffffffffffffffffffffffffffffff1681611c16611860565b5092505050601082901c61ffff1661ffff83161761ffff16600003611c4557608082901c61ffff169250611c52565b611c4f8483612bf8565b92505b8061ffff168361ffff1614611cdf57604051638e00555360e01b815261ffff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638e00555390602401600060405180830381600087803b158015611cc657600080fd5b505af1158015611cda573d6000803e3d6000fd5b505050505b50505050565b60c08101516020820151825161ffff92831691611d0791908416908416614547565b611d119190614547565b1115611d5f5760405162461bcd60e51b815260206004820152601060248201527f4d617820666565206578636565646564000000000000000000000000000000006044820152606401610f64565b608081015161ffff1615801590611d7d575060a081015161ffff1615155b611dc95760405162461bcd60e51b815260206004820152601260248201527f47616d6d6173206d757374206265203e203000000000000000000000000000006044820152606401610f64565b50565b6000611dd6611860565b93505050508160ff168160ff16146112125760405163bca57f8160e01b815260ff831660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063bca57f8190602401600060405180830381600087803b158015611e4c57600080fd5b505af1158015611e60573d6000803e3d6000fd5b505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ef01df4f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ec8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e7919061443f565b6000611ef6611860565b93505050828217905060ff8083169082161461164d5760405163bca57f8160e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063bca57f81906024015b600060405180830381600087803b158015611f7157600080fd5b505af1158015611f85573d6000803e3d6000fd5b50505050505050565b42611f9b60018284612c93565b6000805462ff00001963ffffffff8416600160281b021668ffffffff0000ff00001990911617620100001790556112126041611eec565b6000600182018361ffff8216620100008110611ff057611ff061445c565b015460ff1615611ffe578091505b5092915050565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152848603600080806120528b8b868a8a612d30565b506040805160e081018252845460ff811615158252610100810463ffffffff90811660208401819052600160281b830460060b94840194909452600160601b82046001600160581b03166060840152600160b81b8204600290810b6080850152600160d01b8304900b60a0840152600160e81b90910461ffff1660c08301529099509396509194509250908516036120ed57505050506113ce565b801561212b5760008061210d8d878c8c8c8c602001518d60400151612ef2565b9150915061211e87878c8585612f19565b96505050505050506113ce565b815463ffffffff6101008204811691600160281b900460060b9086168290036121d45750506040805160e081018252925460ff811615158452610100810463ffffffff166020850152600160281b810460060b91840191909152600160601b81046001600160581b03166060840152600160b81b8104600290810b6080850152600160d01b8204900b60a0840152600160e81b900461ffff1660c08301525092506113ce915050565b602087015160408801518184039188039063ffffffff80831691908416600690810b918603900b816122085761220861455a565b60408c01805192909105929092020160060b90526060890151865463ffffffff80841692908516916001600160581b03600160601b90910481169190910316816122545761225461455a565b60608c0180516001600160581b0393909204939093020116905250505050505050509695505050505050565b620100025464010000000090046001600160a01b031680156123225760006122a6611860565b505060405163034d335960e41b8152600282900b600482015285151560248201529092506001600160a01b03841691506334d33590906044016020604051808303816000875af11580156122fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cdf91906142c5565b6112126002612fd1565b825160609081908067ffffffffffffffff81111561234c5761234c61405b565b604051908082528060200260200182016040528015612375578160200160208202803683370190505b5092508067ffffffffffffffff8111156123915761239161405b565b6040519080825280602002602001820160405280156123ba578160200160208202803683370190505b50915060006123c98986611fd2565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081018290529192505b8381101561249f576124348b8b8b84815181106124245761242461445c565b60200260200101518b8b88612005565b9150816040015182606001518783815181106124525761245261445c565b6020026020010187848151811061246b5761246b61445c565b60200260200101826001600160581b03166001600160581b03168152508260060b60060b8152505050806001019050612405565b505050509550959350505050565b600060405163a9059cbb60e01b6000526001600160a01b03841660045282602452602060006044600080895af19150813d1560203d146001600051141617169150806040525080611cdf57604051637232c81f60e11b815260040160405180910390fd5b620100045460009071ffffffffffffffffffffffffffffffffffff81169060101c61ffff1661ffff82161761ffff1660000361255557608081901c61ffff166112c5565b6112c58382612bf8565b604080518082019091526000808252602082015260008360020b8560020b6125879190614570565b9050612596620d89e719614590565b60020b8113156125b7576125ad620d89e719614590565b60020b90506125ca565b620d89e7198112156125ca5750620d89e7195b60006125d582613041565b6001600160a01b031690506000600160601b6125f283808361331c565b6125fc9190614570565b905060006103e861261161ffff8816846145b2565b61261b91906145e2565b6040805180820190915262010001546001600160801b03808216808452600160801b90920416602083015290965090915060009061265d908390600f0b614570565b90508060001280156126725750600160611b81125b156126b3576040518060400160405280826001600160801b031681526020018388602001516126a1919061461e565b6001600160801b0316905295506126f5565b600081136126da576040805180820190915260008152600160611b602082015295506126f5565b60408051808201909152600160611b81526000602082015295505b50505050509392505050565b6000806000868661ffff1662010000811061271e5761271e61445c565b6040805160e081018252919092015460ff811615158252610100810463ffffffff90811660208401819052600160281b830460060b94840194909452600160601b82046001600160581b03166060840152600160b81b8204600290810b6080850152600160d01b8304900b60a0840152600160e81b90910461ffff1660c0830152909250861690036127b757856000925092505061298d565b856001019250868361ffff166201000081106127d5576127d561445c565b015460ff16156127e3578291505b6000806127fd8988888b8888602001518960400151612ef2565b915091508461ffff168161ffff1603612814576001015b6128218388888585612f19565b898661ffff166201000081106128395761283961445c565b825191018054602084015160408501516060860151608087015160a088015160c09098015164ffffffffff1990951696151564ffffffff0019169690961761010063ffffffff90941693909302929092177fffffffffffffffffff000000000000000000000000000000000000ffffffffff16600160281b66ffffffffffffff909216919091027fffffffffffffffffff0000000000000000000000ffffffffffffffffffffffff1617600160601b6001600160581b03909216919091021765ffffffffffff60b81b1916600160b81b62ffffff948516027fffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff1617600160d01b9390941692909202929092177fff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e81b61ffff928316021790915585811690851603612989576001909301925b5050505b94509492505050565b600080868461ffff166201000081106129b1576129b161445c565b018054909150610100810463ffffffff90811690881614906001600160581b03600160601b8204169061ffff600160e81b90910416826129fd576129fa8a8a60008b8b8b6133b5565b91505b60008a8761ffff16620100008110612a1757612a1761445c565b0154610100900463ffffffff169050612a37816201517f198c018c6134ee565b15612b625760008415612b30578b8361ffff16620100008110612a5c57612a5c61445c565b0154610100900463ffffffff168c61ffff8516620100008110612a8157612a8161445c565b0154909250600160601b90046001600160581b031690506000828d6001860161ffff16620100008110612ab657612ab661445c565b015463ffffffff610100909104811691909103915081811690848e036201517f190116838f61ffff6001890116620100008110612af557612af561445c565b01600001600c9054906101000a90046001600160581b031603026001600160581b031681612b2557612b2561455a565b048201915050612b44565b612b418c8c620151808d8d8d6133b5565b90505b620151806001600160581b0382860316049650505050505050612bef565b8063ffffffff168a63ffffffff1614612be95760008b8861ffff16620100008110612b8f57612b8f61445c565b0154600160601b90046001600160581b03169050818b03600163ffffffff82161115612bba57600019015b8063ffffffff168286036001600160581b031681612bda57612bda61455a565b04975050505050505050612bef565b50505050505b95945050505050565b6000600f6001600160581b0384160492506000612c416001600160581b038516607085901c61ffff16601086901c61ffff16604087901c63ffffffff165b63ffffffff16613516565b612c6c6001600160581b038616606086901c61ffff1661ffff8716602088901c63ffffffff16612c36565b01905061ffff608084901c8116820190811115612c8b57612c8b61465d565b949350505050565b8254839060ff1615612cb8576040516308ab11a360e11b815260040160405180910390fd5b8054600165ffffffffffff60b81b19909116600160d01b62ffffff949094169384027fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff1617600160b81b939093029290921764ffffffffff191661010063ffffffff949094169390930260ff19169290921717905550565b6000806000806000898761ffff16620100008110612d5057612d5061445c565b01805490915063ffffffff610100820481169161ffff600160e81b90910416908a8116908c161480612d885750612d88828b8d6134ee565b15612da4575090945084935060019250505061ffff8516612ee6565b6000620151808b840363ffffffff1611612dd257819850620151808c0363ffffffff168b63ffffffff161490505b60008d8a61ffff16620100008110612dec57612dec61445c565b0154610100900463ffffffff169050612e06818d8f6134ee565b612e225760405162bc60f160e41b815260040160405180910390fd5b8b63ffffffff168163ffffffff1603612e82578d8a61ffff16620100008110612e4d57612e4d61445c565b018e8b61ffff16620100008110612e6657612e6661445c565b919a50019750600196505061ffff89169450612ee69350505050565b8960010161ffff168b61ffff1603612ec7578d8a61ffff16620100008110612eac57612eac61445c565b019850939650600095505061ffff88169350612ee692505050565b50612ed68d8d8d8d8d866135ca565b9199509750600096509450505050505b95509550955095915050565b600080600080612f078b8b8b8b8b8b8b613618565b909c909b509950505050505050505050565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c08101919091526020860180516001885263ffffffff878116909252604088018051918803928316600288810b82810290940160060b90925260a08a0151612f9c9391928291810b9089900b613750565b606088018051919091016001600160581b031690525050600292830b6080860152910b60a084015261ffff1660c08301525090565b6000612fdb611860565b9350505082198216905060ff8083169082161461164d5760405163bca57f8160e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063bca57f8190602401611f57565b6000600282900b60171d62ffffff818401821816620d89e881111561307957604051633c10250f60e01b815260040160405180910390fd5b600160801b600182161561309a57506ffffcb933bd6fad37aa2d162d1a5940015b60028216156130b9576ffff97272373d413259a46990580e213a0260801c5b60048216156130d8576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156130f7576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613116576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613135576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613154576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613173576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615613193576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156131b3576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156131d3576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156131f3576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615613213576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615613233576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615613253576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615613273576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615613294576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156132b4576e5d6af8dedb81196699c329225ee6040260801c5b6204000082106132fa57620400008216156132dd576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156132fa576b048a170391f7dc42444e8fa20260801c5b60008560020b131561330b57600019045b63ffffffff0160201c949350505050565b6000838302816000198587098281108382030391505080841161333e57600080fd5b80600003613351575082900490506112c5565b8385870960008581038616958690049560026003880281188089028203028089028203028089028203028089028203028089028203028089029091030291819003819004600101858411909403939093029190930391909104170290509392505050565b60008486038180806133ca8b8b868a8a612d30565b508254929550909350915063ffffffff61010082048116916001600160581b03600160601b9091041690861682900361340a5795506113ce945050505050565b82156134715760006134328e888d8d8d888c60000160059054906101000a900460060b612ef2565b5086549091506134619063ffffffff858a03169060028e810b918291600160d01b909104810b9086900b613750565b82019750505050505050506113ce565b835463ffffffff61010082048116916001600160581b03600160601b909104169088168290036134aa5797506113ce9650505050505050565b83820384890363ffffffff8082169083166001600160581b0387860316816134d4576134d461455a565b040285019a50505050505050505050509695505050505050565b63ffffffff80821684821681109184161181036112c557505063ffffffff9081169116111590565b6000818511156135765781850394508361ffff16600602851061353e575061ffff8216612c8b565b600461ffff85160a60006135538787846137ab565b9050808201818661ffff16028161356c5761356c61455a565b0492505050612c8b565b93810393600661ffff851602851061359057506000612c8b565b600461ffff85160a60006135a58787846137ab565b8201905080828661ffff1602816135be576135be61455a565b04979650505050505050565b6000808061ffff808616908290881682116135e9578761ffff166135f4565b620100008861ffff16015b90506136048b8b8b85858b613921565b919d909c50909a5098505050505050505050565b6000806000808a8761ffff166201000081106136365761363661445c565b0154610100900463ffffffff168b61ffff891662010000811061365b5761365b61445c565b0154909250600160281b900460060b9050600289900b63ffffffff878c031602850161368e836201517f198d018d6134ee565b6136ef578263ffffffff168b63ffffffff16036136ba57505050600287900b91505061ffff8416610d0e565b828b0363ffffffff1660060b82820360060b816136d9576136d961455a565b0560060b94505061ffff87169250610d0e915050565b6136ff87620151808d038d6134ee565b1561371957505050600287900b91505061ffff8516610d0e565b600061372c8d8d620151808e8e8e613a92565b955090506201518081830360060b0560060b95505050505097509795505050505050565b600082820385850303838603870260018089018902906002808b029091018202906006818c0a81029180870a8402868802860283020190860a8d02909102018161379c5761379c61455a565b059a9950505050505050505050565b6000808385048080156137ea57600181146137fb576002811461380c576003811461381d576004811461382e576903248ca20bb7b5032f5f925061383c565b68056bc75e2d63100000925061383c565b680ebc5fb41746121110925061383c565b68280e60114edb805d03925061383c565b686ce2482d63ef54b74c925061383c565b690127fa27722cc06cc5e392505b50509383900693600261ffff85160461ffff16851061388c57600261ffff85160461ffff168503945068056bc75e2d63100000816808f00f760a4b2db55c02816138885761388861455a565b0490505b8291508461ffff851683816138a3576138a361455a565b049350838102830192508461ffff1684816138c0576138c061455a565b0493508502600281850204830192508461ffff1684816138e2576138e261455a565b04935085026018600461ffff871683020282880201048301925068056bc75e2d63100000828402816139165761391661455a565b049695505050505050565b600080600083801561393557506002868603115b1561394457506001850161394c565b5084840160011c5b888161ffff166201000081106139645761396461445c565b01925082915060015b835460ff811690610100900463ffffffff168115613a1157613990818b8d6134ee565b15613a06578b8460010161ffff166201000081106139b0576139b061445c565b01805490955060ff811690610100900463ffffffff1681156139f1576139d78c828f6134ee565b156139e6575050505050613a86565b856001019a506139ff565b50869550613a869350505050565b5050613a18565b600184039750613a18565b8360010198505b6000838015613a245750875b8015613a325750846001018a145b9050808015613a43575060108a8a03115b15613a5357896008019450613a5c565b89890160011c94505b8c8561ffff16620100008110613a7457613a7461445c565b01965060009350505050600161396d57505b96509650969350505050565b60008085870381808080613aa98d8d878c8c612d30565b83549397509195509350915063ffffffff6101008204811691600160281b900460060b908716829003613ae6579750909550613b86945050505050565b8315613b0d5781870363ffffffff168c60020b028101839850985050505050505050613b86565b845463ffffffff6101008204811691600160281b900460060b908916829003613b4857995050505060010161ffff169450613b869350505050565b838203848a0363ffffffff808216908316600690810b90878603900b81613b7157613b7161455a565b05028501879c509c5050505050505050505050505b965096945050505050565b6001600160a01b0381168114611dc957600080fd5b8015158114611dc957600080fd5b60008083601f840112613bc657600080fd5b50813567ffffffffffffffff811115613bde57600080fd5b602083019150836020828501011115613bf657600080fd5b9250929050565b60008060008060008060008060e0898b031215613c1957600080fd5b8835613c2481613b91565b97506020890135613c3481613b91565b96506040890135613c4481613ba6565b9550606089013594506080890135613c5b81613b91565b935060a0890135613c6b81613ba6565b925060c089013567ffffffffffffffff811115613c8757600080fd5b613c938b828c01613bb4565b999c989b5096995094979396929594505050565b600060208284031215613cb957600080fd5b81356112c581613ba6565b600060e08284031215613cd657600080fd5b50919050565b60008060008060008060008060e0898b031215613cf857600080fd5b8835613d0381613b91565b97506020890135613d1381613b91565b965060408901359550606089013594506080890135935060a0890135925060c089013567ffffffffffffffff811115613c8757600080fd5b61ffff81168114611dc957600080fd5b8035613d6681613d4b565b919050565b600060208284031215613d7d57600080fd5b81356112c581613d4b565b8060020b8114611dc957600080fd5b8035600f81900b8114613d6657600080fd5b600080600080600080600060c0888a031215613dc457600080fd5b8735613dcf81613b91565b96506020880135613ddf81613b91565b95506040880135613def81613d88565b94506060880135613dff81613d88565b9350613e0d60808901613d97565b925060a088013567ffffffffffffffff811115613e2957600080fd5b613e358a828b01613bb4565b989b979a50959850939692959293505050565b60008060408385031215613e5b57600080fd5b8235613e6681613b91565b91506020830135613e7681613b91565b809150509250929050565b600060208284031215613e9357600080fd5b5035919050565b600060208284031215613eac57600080fd5b81356112c581613b91565b600080600060608486031215613ecc57600080fd5b8335613ed781613b91565b92506020840135613ee781613b91565b91506040840135613ef781613d88565b809150509250925092565b803563ffffffff81168114613d6657600080fd5b600060208284031215613f2857600080fd5b6112c582613f02565b60008060008060008060a08789031215613f4a57600080fd5b8635613f5581613b91565b95506020870135613f6581613b91565b94506040870135935060608701359250608087013567ffffffffffffffff811115613f8f57600080fd5b613f9b89828a01613bb4565b979a9699509497509295939492505050565b60008060008060008060008060006101008a8c031215613fcc57600080fd5b8935613fd781613b91565b985060208a0135613fe781613b91565b975060408a0135613ff781613ba6565b965060608a0135955060808a013561400e81613b91565b945060a08a0135935060c08a0135925060e08a013567ffffffffffffffff81111561403857600080fd5b6140448c828d01613bb4565b915080935050809150509295985092959850929598565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561409a5761409a61405b565b604052919050565b600060208083850312156140b557600080fd5b823567ffffffffffffffff808211156140cd57600080fd5b818501915085601f8301126140e157600080fd5b8135818111156140f3576140f361405b565b8060051b9150614104848301614071565b818152918301840191848101908884111561411e57600080fd5b938501935b838510156141435761413485613f02565b82529385019390850190614123565b98975050505050505050565b604080825283519082018190526000906020906060840190828701845b8281101561418b57815160060b8452928401929084019060010161416c565b5050508381038285015284518082528583019183019060005b818110156141c95783516001600160581b0316835292840192918401916001016141a4565b5090979650505050505050565b600080604083850312156141e957600080fd5b50508035926020909101359150565b60008060008060008060008060006101008a8c03121561421757600080fd5b893561422281613b91565b985060208a013561423281613b91565b975060408a013561424281613d88565b965060608a013561425281613d88565b955061400e60808b01613d97565b6000806040838503121561427357600080fd5b823561427e81613d4b565b91506020830135613e7681613d4b565b6000806000606084860312156142a357600080fd5b83356142ae81613b91565b9250602084013591506040840135613ef781613b91565b6000602082840312156142d757600080fd5b81516112c581613ba6565b600060e082840312156142f457600080fd5b60405160e0810181811067ffffffffffffffff821117156143175761431761405b565b604052823561432581613d4b565b8152602083013561433581613d4b565b602082015261434660408401613f02565b604082015261435760608401613f02565b6060820152608083013561436a81613d4b565b608082015260a083013561437d81613d4b565b60a082015261438e60c08401613d5b565b60c08201529392505050565b60e0810182356143a981613d4b565b61ffff90811683526020840135906143c082613d4b565b80821660208501526143d460408601613f02565b915063ffffffff8083166040860152806143f060608801613f02565b166060860152506080850135915061440782613d4b565b908116608084015260a08401359061441e82613d4b565b1660a083015261443060c08401613d5b565b61ffff811660c0840152611ffe565b60006020828403121561445157600080fd5b81516112c581613b91565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b61ffff828116828216039080821115611ffe57611ffe614472565b60008060008060008060c087890312156144bc57600080fd5b86516144c781613b91565b60208801519096506144d881613d88565b60408801519095506144e981613d4b565b606088015190945060ff8116811461450057600080fd5b608088015190935061451181613d4b565b60a088015190925061452281613ba6565b809150509295509295509295565b8082028115828204841417610d3857610d38614472565b80820180821115610d3857610d38614472565b634e487b7160e01b600052601260045260246000fd5b8181036000831280158383131683831282161715611ffe57611ffe614472565b60008160020b627fffff1981036145a9576145a9614472565b60000392915050565b80820260008212600160ff1b841416156145ce576145ce614472565b8181058314821517610d3857610d38614472565b6000826145ff57634e487b7160e01b600052601260045260246000fd5b600160ff1b82146000198414161561461957614619614472565b500590565b600f81810b9083900b016f7fffffffffffffffffffffffffffffff81136f7fffffffffffffffffffffffffffffff1982121715610d3857610d38614472565b634e487b7160e01b600052600160045260246000fdfea264697066735822122057d42f5c24d68cafca8ad81464b466cbb672df9816401d3aaf197414999d03a364736f6c63430008140033a2646970667358221220559767bb5e5c79059703f63db15242be6fd990304c4426a4eb9ed4cd0c41d90e64736f6c6343000814003300000000000000000000000030055f87716d3dfd0e5198c27024481099fb4a980000000000000000000000000cd53eeb75d72ee0e3e64206b63d7204351d08bf