18k txs
124.3k calls
constructor
constructor(address liquidity_, address lendingFactory_, address asset_)
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
asset
viewfunction asset() view returns (address)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
convertToAssets
viewfunction convertToAssets(uint256 shares_) view returns (uint256)
convertToShares
viewfunction convertToShares(uint256 assets_) view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
DOMAIN_SEPARATOR
viewfunction DOMAIN_SEPARATOR() view returns (bytes32)
getData
viewfunction getData() view returns (address liquidity_, address lendingFactory_, address lendingRewardsRateModel_, address permit2_, address rebalancer_, bool rewardsActive_, uint256 liquidityBalance_, uint256 liquidityExchangePrice_, uint256 tokenExchangePrice_)
maxDeposit
viewfunction maxDeposit(address) view returns (uint256)
maxMint
viewfunction maxMint(address) view returns (uint256)
maxRedeem
viewfunction maxRedeem(address owner_) view returns (uint256)
maxWithdraw
viewfunction maxWithdraw(address owner_) view returns (uint256)
minDeposit
viewfunction minDeposit() view returns (uint256)
name
viewfunction name() view returns (string)
nonces
viewfunction nonces(address owner) view returns (uint256)
previewDeposit
viewfunction previewDeposit(uint256 assets_) view returns (uint256)
previewMint
viewfunction previewMint(uint256 shares_) view returns (uint256)
previewRedeem
viewfunction previewRedeem(uint256 shares_) view returns (uint256)
previewWithdraw
viewfunction previewWithdraw(uint256 assets_) view returns (uint256)
symbol
viewfunction symbol() view returns (string)
totalAssets
viewfunction totalAssets() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
decreaseAllowance
nonpayablefunction decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)
deposit
nonpayablefunction deposit(uint256 assets_, address receiver_, uint256 minAmountOut_) returns (uint256 shares_)
deposit
nonpayablefunction deposit(uint256 assets_, address receiver_) returns (uint256 shares_)
depositWithSignature
nonpayablefunction depositWithSignature(uint256 assets_, address receiver_, uint256 minAmountOut_, tuple permit_, bytes signature_) returns (uint256 shares_)
depositWithSignatureEIP2612
nonpayablefunction depositWithSignatureEIP2612(uint256 assets_, address receiver_, uint256 minAmountOut_, uint256 deadline_, bytes signature_) returns (uint256 shares_)
increaseAllowance
nonpayablefunction increaseAllowance(address spender, uint256 addedValue) returns (bool)
liquidityCallback
nonpayablefunction liquidityCallback(address token_, uint256 amount_, bytes data_)
mint
nonpayablefunction mint(uint256 shares_, address receiver_, uint256 maxAssets_) returns (uint256 assets_)
mint
nonpayablefunction mint(uint256 shares_, address receiver_) returns (uint256 assets_)
mintWithSignature
nonpayablefunction mintWithSignature(uint256 shares_, address receiver_, uint256 maxAssets_, tuple permit_, bytes signature_) returns (uint256 assets_)
mintWithSignatureEIP2612
nonpayablefunction mintWithSignatureEIP2612(uint256 shares_, address receiver_, uint256 maxAssets_, uint256 deadline_, bytes signature_) returns (uint256 assets_)
permit
nonpayablefunction permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
rebalance
payablefunction rebalance() payable returns (uint256 assets_)
redeem
nonpayablefunction redeem(uint256 shares_, address receiver_, address owner_, uint256 minAmountOut_) returns (uint256 assets_)
redeem
nonpayablefunction redeem(uint256 shares_, address receiver_, address owner_) returns (uint256 assets_)
redeemWithSignature
nonpayablefunction redeemWithSignature(uint256 shares_, address receiver_, address owner_, uint256 minAmountOut_, uint256 deadline_, bytes signature_) returns (uint256 assets_)
rescueFunds
nonpayablefunction rescueFunds(address token_)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
updateRates
nonpayablefunction updateRates() returns (uint256 tokenExchangePrice_, uint256 liquidityExchangePrice_)
updateRebalancer
nonpayablefunction updateRebalancer(address newRebalancer_)
updateRewards
nonpayablefunction updateRewards(address rewardsRateModel_)
withdraw
nonpayablefunction withdraw(uint256 assets_, address receiver_, address owner_, uint256 maxSharesBurn_) returns (uint256 shares_)
withdraw
nonpayablefunction withdraw(uint256 assets_, address receiver_, address owner_) returns (uint256 shares_)
withdrawWithSignature
nonpayablefunction withdrawWithSignature(uint256 sharesToPermit_, uint256 assets_, address receiver_, address owner_, uint256 maxSharesBurn_, uint256 deadline_, bytes signature_) returns (uint256 shares_)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
Deposit
event Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares)
LogRebalance
event LogRebalance(uint256 assets)
LogRescueFunds
event LogRescueFunds(address indexed token)
LogUpdateRates
event LogUpdateRates(uint256 tokenExchangePrice, uint256 liquidityExchangePrice)
LogUpdateRebalancer
event LogUpdateRebalancer(address indexed rebalancer)
LogUpdateRewards
event LogUpdateRewards(address indexed rewardsRateModel)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Withdraw
event Withdraw(address indexed sender, address indexed receiver, address indexed owner, uint256 assets, uint256 shares)
errors
FluidLendingError
error FluidLendingError(uint256 errorId_)
FluidLiquidityCalcsError
error FluidLiquidityCalcsError(uint256 errorId_)
FluidSafeTransferError
error FluidSafeTransferError(uint256 errorId_)
creation bytecode
0x6102206040523480156200001257600080fd5b5060405162005905380380620059058339810160408190526200003591620007ec565b82828282828260405180604001604052806006815260200165023363ab4b2160d51b815250846001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000099573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620000c391908101906200087c565b604051602001620000d692919062000934565b60405160208183030381529060405280604051806040016040528060018152602001603160f81b81525060405180604001604052806006815260200165023363ab4b2160d51b815250876001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200015e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200018891908101906200087c565b6040516020016200019b92919062000934565b604051602081830303815290604052604051806040016040528060018152602001603360f91b815250886001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000203573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200022d91908101906200087c565b6040516020016200024092919062000934565b60408051601f1981840301815291905260036200025e8382620009f0565b5060046200026d8282620009f0565b5050825160208085019190912083518483012060e08290526101008190524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81880181905281830187905260608201869052608082019490945230818401528151808203909301835260c0019052805194019390932091935091906080523060c0526101205250506040805163313ce56760e01b815290516001600160a01b038616945063313ce5679350600480830193506020928290030181865afa15801562000346573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036c919062000abc565b60ff166101a0526001600160a01b038082166101805283811661014052821661016052620003dd6005620003a06101805190565b604080516001600160a01b038316602082015290810183905260009060600160405160208183030381529060405280519060200120905092915050565b6101c052620003f26007620003a06101805190565b6101e05262000468600830620004086101805190565b604080516001600160a01b039384166020808301919091528183019590955281518082038301815260608201835280519086012092909316608084015260a0808401929092528051808403909201825260c0909201909152805191012090565b61020052508491506200047d9050816200050f565b8262000489816200050f565b8262000495816200050f565b50506008805460ff60a81b1916600160a81b17905550620004ba925050620005439050565b600880546001600160401b03929092166001600160801b0319909216919091176ce8d4a5100000000000000000001764ffffffffff60801b1916600160801b4264ffffffffff16021790555062000b18915050565b6001600160a01b038116620005405760405163694bda1d60e01b8152614e2460048201526024015b60405180910390fd5b50565b6000620005c8610140516001600160a01b031663b5c736e46101c0516040518263ffffffff1660e01b81526004016200057e91815260200190565b602060405180830381865afa1580156200059c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005c2919062000ae8565b620005ce565b50919050565b6001600160401b03605b82901c811690609b83901c16811580620005f0575080155b156200061557604051636a86ba8960e11b815262011171600482015260240162000537565b61ffff8316603a84901c6401ffffffff16428181039160ea87901c617fff1691148062000640575082155b806200064c5750806001145b156200065a57505050915091565b64496cebb80084840283020484019350617fff60db87901c169250826001036200068657505050915091565b82600116600103620006e05760019290921c91826c7e37be2022c0914b268000000081620006b857620006b862000b02565b049250612710601e87901c613fff166b033b2e3c9fd0803ce80000008501020492506200070d565b60019290921c916305f5e100601e87901c613fff166127108501026b033b2e3c9fd0803ce8000000020492505b80600116600103620007495760011c61271081016b033b2e3c9fd0803ce800000082028162000740576200074062000b02565b04905062000782565b60011c61271081016b033b2e3c9fd0803ce800000082028162000770576200077062000b02565b046b033b2e3c9fd0803ce80000000390505b760a70c3c40a64e6c51999090b65f67d92400000000000008382026127100261ffff881691900402601087901c613fff16612710030292506801b5a660ea44b8000085840283020485019450505050915091565b6001600160a01b03811681146200054057600080fd5b6000806000606084860312156200080257600080fd5b83516200080f81620007d6565b60208501519093506200082281620007d6565b60408501519092506200083581620007d6565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200087357818101518382015260200162000859565b50506000910152565b6000602082840312156200088f57600080fd5b81516001600160401b0380821115620008a757600080fd5b818401915084601f830112620008bc57600080fd5b815181811115620008d157620008d162000840565b604051601f8201601f19908116603f01168101908382118183101715620008fc57620008fc62000840565b816040528281528760208487010111156200091657600080fd5b6200092983602083016020880162000856565b979650505050505050565b600083516200094881846020880162000856565b8351908301906200095e81836020880162000856565b01949350505050565b600181811c908216806200097c57607f821691505b602082108103620005c857634e487b7160e01b600052602260045260246000fd5b601f821115620009eb57600081815260208120601f850160051c81016020861015620009c65750805b601f850160051c820191505b81811015620009e757828155600101620009d2565b5050505b505050565b81516001600160401b0381111562000a0c5762000a0c62000840565b62000a248162000a1d845462000967565b846200099d565b602080601f83116001811462000a5c576000841562000a435750858301515b600019600386901b1c1916600185901b178555620009e7565b600085815260208120601f198616915b8281101562000a8d5788860151825594840194600190910190840162000a6c565b508582101562000aac5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000acf57600080fd5b815160ff8116811462000ae157600080fd5b9392505050565b60006020828403121562000afb57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e05161020051614ca162000c6460003960008181612de8015261365a015260008181610e290152610f6d0152600061245a0152600061041b01526000818161048101528181610d82015281816113690152818161184701528181611aa301528181611b7501528181611c85015281816122660152818161347e01528181613d000152614025015260008181610c07015261325d015260008181610be501528181610e7301528181610fb001528181611a7901528181611b9701528181611c550152818161231c0152818161249c01528181612dac015281816134420152818161369a01528181613cc40152613ffa01526000612cfc01526000612d4b01526000612d2601526000612c7f01526000612ca901526000612cd30152614ca16000f3fe6080604052600436106103135760003560e01c80637ecebe001161019a578063b460af94116100e1578063d505accf1161008a578063e083be2211610064578063e083be221461099e578063e53b2017146109be578063ef8b30f7146109de57600080fd5b8063d505accf1461090b578063d905777e1461092b578063dd62ed3e1461094b57600080fd5b8063c63d75b6116100bb578063c63d75b6146108ab578063c6e6f592146108cb578063ce96cb77146108eb57600080fd5b8063b460af941461084b578063ba0876521461086b578063bc157ac11461088b57600080fd5b8063a318c1a411610143578063ad2075011161011d578063ad207501146107eb578063b046a4491461080b578063b3d7f6b91461082b57600080fd5b8063a318c1a41461078b578063a457c2d7146107ab578063a9059cbb146107cb57600080fd5b806394bf804d1161017457806394bf804d1461073657806395d89b41146107565780639f40a7b31461076b57600080fd5b80637ecebe00146106d6578063836a1040146106f65780638c87483a1461071657600080fd5b80633c3821f41161025e5780635fd619651161020757806370a08231116101e157806370a082311461066b578063740c955e146106ae5780637d7c2a1c146106ce57600080fd5b80635fd6196514610609578063635c31c21461062b5780636e553f651461064b57600080fd5b806341b3d1851161023857806341b3d185146105b45780634cdad506146105c957806350cc0f8f146105e957600080fd5b80633c3821f41461054a5780633f4c093014610574578063402d267d1461059457600080fd5b806323b872dd116102c057806338d52e0f1161029a57806338d52e0f1461045a57806339509351146104ab5780633bc5de30146104cb57600080fd5b806323b872dd146103e7578063313ce567146104075780633644e5151461044557600080fd5b8063095ea7b3116102f1578063095ea7b3146103825780630a28a477146103b257806318160ddd146103d257600080fd5b806301e1d1141461031857806306fdde031461034057806307a2d13a14610362575b600080fd5b34801561032457600080fd5b5061032d6109fe565b6040519081526020015b60405180910390f35b34801561034c57600080fd5b50610355610a3d565b6040516103379190614398565b34801561036e57600080fd5b5061032d61037d3660046143ab565b610acf565b34801561038e57600080fd5b506103a261039d3660046143e6565b610af7565b6040519015158152602001610337565b3480156103be57600080fd5b5061032d6103cd3660046143ab565b610b11565b3480156103de57600080fd5b5060025461032d565b3480156103f357600080fd5b506103a2610402366004614412565b610b32565b34801561041357600080fd5b5060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610337565b34801561045157600080fd5b5061032d610b56565b34801561046657600080fd5b5060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610337565b3480156104b757600080fd5b506103a26104c63660046143e6565b610b65565b3480156104d757600080fd5b506104e0610bb1565b6040805173ffffffffffffffffffffffffffffffffffffffff9a8b168152988a1660208a0152968916968801969096529387166060870152959091166080850152151560a084015260c083019390935260e082019290925261010081019190915261012001610337565b34801561055657600080fd5b5061055f610c9d565b60408051928352602083019190915201610337565b34801561058057600080fd5b5061032d61058f36600461449c565b610cbb565b3480156105a057600080fd5b5061032d6105af36600461450f565b610e01565b3480156105c057600080fd5b5061032d610f45565b3480156105d557600080fd5b5061032d6105e43660046143ab565b611046565b3480156105f557600080fd5b5061032d61060436600461452c565b611051565b34801561061557600080fd5b5061062961062436600461450f565b61112e565b005b34801561063757600080fd5b5061032d6106463660046145bb565b6111f4565b34801561065757600080fd5b5061032d610666366004614643565b61130a565b34801561067757600080fd5b5061032d61068636600461450f565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b3480156106ba57600080fd5b5061032d6106c9366004614673565b61144b565b61032d611530565b3480156106e257600080fd5b5061032d6106f136600461450f565b611695565b34801561070257600080fd5b5061032d6107113660046146f9565b6116c0565b34801561072257600080fd5b5061032d6107313660046145bb565b6116d8565b34801561074257600080fd5b5061032d610751366004614643565b6117e8565b34801561076257600080fd5b50610355611939565b34801561077757600080fd5b5061032d610786366004614720565b611948565b34801561079757600080fd5b5061032d6107a6366004614720565b611969565b3480156107b757600080fd5b506103a26107c63660046143e6565b611982565b3480156107d757600080fd5b506103a26107e63660046143e6565b611a53565b3480156107f757600080fd5b50610629610806366004614768565b611a61565b34801561081757600080fd5b5061062961082636600461450f565b611cff565b34801561083757600080fd5b5061032d6108463660046143ab565b611d81565b34801561085757600080fd5b5061032d6108663660046147c4565b611da2565b34801561087757600080fd5b5061032d6108863660046147c4565b611e3a565b34801561089757600080fd5b5061032d6108a63660046146f9565b611f1e565b3480156108b757600080fd5b5061032d6108c636600461450f565b611f36565b3480156108d757600080fd5b5061032d6108e63660046143ab565b611f45565b3480156108f757600080fd5b5061032d61090636600461450f565b611f66565b34801561091757600080fd5b50610629610926366004614806565b611fba565b34801561093757600080fd5b5061032d61094636600461450f565b61216d565b34801561095757600080fd5b5061032d61096636600461487d565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3480156109aa57600080fd5b5061032d6109b936600461449c565b6121ab565b3480156109ca57600080fd5b506106296109d936600461450f565b6122d8565b3480156109ea57600080fd5b5061032d6109f93660046143ab565b612427565b600080610a11610a0c612432565b612512565b50905064e8d4a51000610a2360025490565b610a2d90836148da565b610a379190614920565b91505090565b606060038054610a4c9061495b565b80601f0160208091040260200160405190810160405280929190818152602001828054610a789061495b565b8015610ac55780601f10610a9a57610100808354040283529160200191610ac5565b820191906000526020600020905b815481529060010190602001808311610aa857829003601f168201915b5050505050905090565b600080610add610a0c612432565b509050610af0838264e8d4a510006126f2565b9392505050565b600033610b0581858561272e565b60019150505b92915050565b600080610b1f610a0c612432565b509050610af08364e8d4a51000836128e1565b600033610b40858285612925565b610b4b8585856129f6565b506001949350505050565b6000610b60612c65565b905090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190610b059082908690610bac9087906149a8565b61272e565b6000806000806000806000806000610bc7612432565b91506000610bd483612512565b6007546009546008549395509193507f0000000000000000000000000000000000000000000000000000000000000000927f00000000000000000000000000000000000000000000000000000000000000009273ffffffffffffffffffffffffffffffffffffffff928316926e22d473030f116ddee9f6b43ac78ba392911690760100000000000000000000000000000000000000000000900460ff168015610c7b575085155b610c83612d99565b995099509950995099509950995050909192939495969798565b600080610ca8612432565b9050610cb5816001612e9d565b91509091565b6000610cc687611d81565b90506000806000610d0c86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061301792505050565b6040517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101889052606481018b905260ff8416608482015260a4810183905260c48101829052929550909350915073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d505accf9060e401600060405180830381600087803b158015610dc657600080fd5b505af1158015610dda573d6000803e3d6000fd5b50505050610de88a8a6117e8565b9350610df48489613046565b5050509695505050505050565b6040517fb5c736e40000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006004820152600090819067ffffffffffffffff9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b5c736e490602401602060405180830381865afa158015610eba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ede91906149bb565b16600881901c60ff9091161b905064e8d4a51000610efa612432565b820281610f0957610f096148f1565b0490506f7fffffffffffff7fffffffffffffffff811115610f2d5750600092915050565b6f7fffffffffffffffffffffffffffffff0392915050565b6040517fb5c736e40000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006004820152600090819060ff9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b5c736e490602401602060405180830381865afa158015610ff7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101b91906149bb565b166001901b9050600061102e6001611d81565b905080821161103d578061103f565b815b9250505090565b6000610b0b82610acf565b600061105b613088565b73ffffffffffffffffffffffffffffffffffffffff861633036110b3576040517f694bda1d000000000000000000000000000000000000000000000000000000008152614e2660048201526024015b60405180910390fd5b6110c0868a868686613126565b6110cb888888613189565b90506110d78186613046565b6110e2863383612925565b600880547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16750100000000000000000000000000000000000000000017905598975050505050505050565b61113661322f565b61113e610c9d565b5050600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155600880547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff16821515760100000000000000000000000000000000000000000000021790556040517fd14b198a72267efb36b8bbc193eb6d52a00d1f61799029250f6a520ad47be82d90600090a250565b60006111fe613088565b6040517f2b67b5700000000000000000000000000000000000000000000000000000000081526e22d473030f116ddee9f6b43ac78ba390632b67b5709061124f903390889088908890600401614a38565b600060405180830381600087803b15801561126957600080fd5b505af115801561127d573d6000803e3d6000fd5b5050604080516001602082015233918101919091526112b4925089915088906060015b604051602081830303815290604052613319565b90506112c08186613400565b600880547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790559695505050505050565b6000611314613088565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83036113ec576040517f70a082310000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156113c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e991906149bb565b92505b604080513360208201526114049185918591016112a0565b600880547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790559392505050565b6000611455613088565b73ffffffffffffffffffffffffffffffffffffffff861633036114a8576040517f694bda1d000000000000000000000000000000000000000000000000000000008152614e2660048201526024016110aa565b6114b188611046565b90506114bd8186613400565b6114ca8689868686613126565b60006114d7828989613189565b90506114e4873383612925565b50600880547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000179055979650505050505050565b600061153a613088565b60095473ffffffffffffffffffffffffffffffffffffffff16331461158f576040517f694bda1d000000000000000000000000000000000000000000000000000000008152614e2960048201526024016110aa565b34156115cb576040517f694bda1d000000000000000000000000000000000000000000000000000000008152614e2a60048201526024016110aa565b6115d3612d99565b6115db6109fe565b6115e59190614af2565b604080513360208201529192506000916116109184910160405160208183030381529060405261343e565b905061161d816001612e9d565b506040518281527fe97ad8b810ae9d9e29aa69dc04d4ac2e3e71d65307830ccb97c8f876dfc439319060200160405180910390a150600880547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16750100000000000000000000000000000000000000000017905590565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260056020526040812054610b0b565b60006116cc84846117e8565b9050610af08183613046565b60006116e2613088565b6116eb87611d81565b90506116f78186613046565b6040517f2b67b5700000000000000000000000000000000000000000000000000000000081526e22d473030f116ddee9f6b43ac78ba390632b67b57090611748903390889088908890600401614a38565b600060405180830381600087803b15801561176257600080fd5b505af1158015611776573d6000803e3d6000fd5b50506040805160016020820152339181019190915261179d925083915088906060016112a0565b50600880547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790559695505050505050565b60006117f2613088565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83036118ce576040517f70a082310000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156118a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c791906149bb565b90506118da565b6118d783611d81565b90505b604080513360208201526118f29183918591016112a0565b50600880547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16750100000000000000000000000000000000000000000017905592915050565b606060048054610a4c9061495b565b6000611955858585611e3a565b90506119618183613400565b949350505050565b6000611976858585611da2565b90506119618183613046565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015611a46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016110aa565b610b4b828686840361272e565b600033610b058185856129f6565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016141580611af257507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80611b1c57506008547501000000000000000000000000000000000000000000900460ff16600214155b15611b57576040517f694bda1d000000000000000000000000000000000000000000000000000000008152614e2560048201526024016110aa565b6020819003611bc2576000611b6e8284018461450f565b9050611bbc7f0000000000000000000000000000000000000000000000000000000000000000827f000000000000000000000000000000000000000000000000000000000000000087613517565b50611cf9565b600080611bd183850185614b13565b9150915081611c10576040517f694bda1d000000000000000000000000000000000000000000000000000000008152614e2460048201526024016110aa565b6040517f36c7851600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80831660048301527f00000000000000000000000000000000000000000000000000000000000000008116602483015280871660448301527f00000000000000000000000000000000000000000000000000000000000000001660648201526e22d473030f116ddee9f6b43ac78ba3906336c7851690608401600060405180830381600087803b158015611cde57600080fd5b505af1158015611cf2573d6000803e3d6000fd5b5050505050505b50505050565b80611d09816135de565b611d1161322f565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fdb94ee7fd8b5bbf8f6d59e76731ff4b4f5a02ab3af1d3e0c774862cf96ff613b90600090a25050565b600080611d8f610a0c612432565b509050610af0838264e8d4a510006128e1565b6000611dac613088565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8403611e0557611e026105e48373ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b93505b611e10848484613189565b90503373ffffffffffffffffffffffffffffffffffffffff83161461140457611404823383612925565b6000611e44613088565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8403611e945773ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205493505b611e9d84611046565b90506000611eac828585613189565b90503373ffffffffffffffffffffffffffffffffffffffff841614611ed657611ed6833383612925565b50600880547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790559392505050565b6000611f2a848461130a565b9050610af08183613400565b6000610b0b6108e66000610e01565b600080611f53610a0c612432565b509050610af08364e8d4a51000836126f2565b600080611f71613632565b90506000611fa461037d8573ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b9050808210611fb35780611961565b5092915050565b83421115612024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016110aa565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886120538c613786565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006120bb826137b9565b905060006120cb82878787613822565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612162576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016110aa565b611cf28a8a8a61272e565b60008061217b6108e6613632565b90506000611fa48473ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6000806000806121f086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061301792505050565b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018e9052606481018b905260ff8416608482015260a4810183905260c48101829052929550909350915073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d505accf9060e401600060405180830381600087803b1580156122aa57600080fd5b505af11580156122be573d6000803e3d6000fd5b505050506122cc8a8a61130a565b9350610df48489613400565b6122e0613088565b6122e861322f565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526123a39082907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa15801561237a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239e91906149bb565b61384a565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fdff2a3947bcf9fc0807b142e7c8497066db9183428b7bdbfb1fcd0f55c27a3df90600090a250600880547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000179055565b6000610b0b82611f45565b6040517fb5c736e40000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015260009061250c9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b5c736e490602401602060405180830381865afa1580156124e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250791906149bb565b6138ee565b50919050565b600854600090819067ffffffffffffffff6801000000000000000082048116911680851015612571576040517f694bda1d000000000000000000000000000000000000000000000000000000008152614e2b60048201526024016110aa565b600854600090760100000000000000000000000000000000000000000000900460ff16156126a857600754600090819073ffffffffffffffffffffffffffffffffffffffff16635776409464e8d4a510006125cb60025490565b6125d590896148da565b6125df9190614920565b6040518263ffffffff1660e01b81526004016125fd91815260200190565b606060405180830381865afa15801561261a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263e9190614b31565b9097509092509050652d79883d20008211806126575750855b1561266157600091505b600854700100000000000000000000000000000000900464ffffffffff168181101561268a5750805b6301e133808142038402816126a1576126a16148f1565b0493505050505b81828703655af3107a400002816126c1576126c16148f1565b0401655af3107a40006126d482856148da565b6126de9190614920565b6126e890846149a8565b9450505050915091565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261272757600080fd5b5091020490565b73ffffffffffffffffffffffffffffffffffffffff83166127d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016110aa565b73ffffffffffffffffffffffffffffffffffffffff8216612873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016110aa565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261291657600080fd5b50910281810615159190040190565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611cf957818110156129e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016110aa565b611cf9848484840361272e565b73ffffffffffffffffffffffffffffffffffffffff8316612a99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016110aa565b73ffffffffffffffffffffffffffffffffffffffff8216612b3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016110aa565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015612bf2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016110aa565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611cf9565b60003073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016148015612ccb57507f000000000000000000000000000000000000000000000000000000000000000046145b15612cf557507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b600080612e7767ffffffffffffffff60017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b5c736e47f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401612e2591815260200190565b602060405180830381865afa158015612e42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e6691906149bb565b901c16600860ff9082901c91161b90565b905064e8d4a51000612e87612432565b820281612e9657612e966148f1565b0491505090565b600080612ea984612512565b6008549193509150760100000000000000000000000000000000000000000000900460ff1680612ed65750825b15612fe25767ffffffffffffffff821115612f21576040517f694bda1d000000000000000000000000000000000000000000000000000000008152614e2860048201526024016110aa565b6008805467ffffffffffffffff8681167fffffffffffffffffffffff00000000000000000000000000000000000000000090921668010000000000000000918616919091027fffffffffffffffffffffff0000000000ffffffffffffffff00000000000000001617177001000000000000000000000000000000004264ffffffffff160217905560408051838152602081018690527f9dd85e9767d796973b86c6ccf3a294429cfd5e3e93fa23ac388b9277bb8283fd910160405180910390a15b8015611fb357600880547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff1690555092915050565b6000806000835160411461302a57600080fd5b5050506020810151604082015160609092015160001a92909190565b80821115613084576040517f694bda1d000000000000000000000000000000000000000000000000000000008152614e2360048201526024016110aa565b5050565b6008547501000000000000000000000000000000000000000000900460ff166001146130e4576040517f694bda1d000000000000000000000000000000000000000000000000000000008152614e2760048201526024016110aa565b600880547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167502000000000000000000000000000000000000000000179055565b600080600061316a85858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061301792505050565b92509250925061317f88338989878787611fba565b5050505050505050565b600082613195816135de565b6131b864e8d4a510006131b06131a9612432565b6000612e9d565b8791906128e1565b91506131c48383613afc565b6131ce8585613cc0565b50604080518681526020810184905273ffffffffffffffffffffffffffffffffffffffff808616929087169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a4509392505050565b6040517f2520e7ff0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632520e7ff90602401602060405180830381865afa1580156132b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132dd9190614b6a565b613317576040517f694bda1d000000000000000000000000000000000000000000000000000000008152614e2560048201526024016110aa565b565b600082613325816135de565b6000613331868561343e565b905061333e816000612e9d565b90508061335064e8d4a51000886148da565b61335a9190614920565b92508260000361339a576040517f694bda1d000000000000000000000000000000000000000000000000000000008152614e2160048201526024016110aa565b6133a48584613d80565b604080518781526020810185905273ffffffffffffffffffffffffffffffffffffffff87169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7910160405180910390a350509392505050565b80821015613084576040517f694bda1d000000000000000000000000000000000000000000000000000000008152614e2260048201526024016110aa565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad967e157f00000000000000000000000000000000000000000000000000000000000000006134a686613e73565b6000806000886040518763ffffffff1660e01b81526004016134cd96959493929190614b87565b60408051808303816000875af11580156134eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061350f9190614be0565b509392505050565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d11600160005114161716915050806135d7576040517fdee51a8a0000000000000000000000000000000000000000000000000000000081526201155960048201526024016110aa565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff811661362f576040517f694bda1d000000000000000000000000000000000000000000000000000000008152614e2460048201526024016110aa565b50565b6040517fb5c736e40000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006004820152600090819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b5c736e490602401602060405180830381865afa1580156136e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061370591906149bb565b9050600981901c66ffffffffffffff16600182901c60ff161b6137288282613f29565b92506000613734612432565b64e8d4a51000948102859004949202919091049050828111613757576000613761565b6137618382614af2565b9250600061376d613fbd565b905083811161377c578061377e565b835b935050505090565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260056020526040902080546001810182559061250c565b6000610b0b6137c6612c65565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b600080600061383387878787614092565b9150915061384081614181565b5095945050505050565b60006040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080611cf9576040517fdee51a8a0000000000000000000000000000000000000000000000000000000081526201155a60048201526024016110aa565b67ffffffffffffffff605b82901c811690609b83901c16811580613910575080155b1561394c576040517fd50d75120000000000000000000000000000000000000000000000000000000081526201117160048201526024016110aa565b61ffff8316603a84901c6401ffffffff16428181039160ea87901c617fff16911480613976575082155b806139815750806001145b1561398e57505050915091565b64496cebb80084840283020484019350617fff60db87901c169250826001036139b957505050915091565b82600116600103613a0e5760019290921c91826c7e37be2022c0914b2680000000816139e7576139e76148f1565b049250612710601e87901c613fff166b033b2e3c9fd0803ce8000000850102049250613a3b565b60019290921c916305f5e100601e87901c613fff166127108501026b033b2e3c9fd0803ce8000000020492505b80600116600103613a725760011c61271081016b033b2e3c9fd0803ce8000000820281613a6a57613a6a6148f1565b049050613aa8565b60011c61271081016b033b2e3c9fd0803ce8000000820281613a9657613a966148f1565b046b033b2e3c9fd0803ce80000000390505b760a70c3c40a64e6c51999090b65f67d92400000000000008382026127100261ffff881691900402601087901c613fff16612710030292506801b5a660ea44b8000085840283020485019450505050915091565b73ffffffffffffffffffffffffffffffffffffffff8216613b9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016110aa565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015613c55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016110aa565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad967e157f0000000000000000000000000000000000000000000000000000000000000000613d2886613e73565b613d3190614c04565b60408051600080825260208201928390527fffffffff0000000000000000000000000000000000000000000000000000000060e087901b169092526134cd939291908890829060248101614b87565b73ffffffffffffffffffffffffffffffffffffffff8216613dfd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016110aa565b8060026000828254613e0f91906149a8565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115613f25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e206160448201527f6e20696e7432353600000000000000000000000000000000000000000000000060648201526084016110aa565b5090565b600066ffffffffffffff604984901c1660ff604185901c161b808203613f53576000915050610b0b565b612710613fff60a286901c168402046401ffffffff608186901c16420362ffffff60b087901c16613f8482846148da565b613f8e9190614920565b9050808311613f9e576000613fa2565b8083035b93505080840383811115613fb4578093505b50505092915050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526000917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa15801561406e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6091906149bb565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156140c95750600090506003614178565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561411d573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661417157600060019250925050614178565b9150600090505b94509492505050565b600081600481111561419557614195614c3c565b0361419d5750565b60018160048111156141b1576141b1614c3c565b03614218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016110aa565b600281600481111561422c5761422c614c3c565b03614293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016110aa565b60038160048111156142a7576142a7614c3c565b0361362f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016110aa565b6000815180845260005b8181101561435a5760208185018101518683018201520161433e565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610af06020830184614334565b6000602082840312156143bd57600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461362f57600080fd5b600080604083850312156143f957600080fd5b8235614404816143c4565b946020939093013593505050565b60008060006060848603121561442757600080fd5b8335614432816143c4565b92506020840135614442816143c4565b929592945050506040919091013590565b60008083601f84011261446557600080fd5b50813567ffffffffffffffff81111561447d57600080fd5b60208301915083602082850101111561449557600080fd5b9250929050565b60008060008060008060a087890312156144b557600080fd5b8635955060208701356144c7816143c4565b94506040870135935060608701359250608087013567ffffffffffffffff8111156144f157600080fd5b6144fd89828a01614453565b979a9699509497509295939492505050565b60006020828403121561452157600080fd5b8135610af0816143c4565b60008060008060008060008060e0898b03121561454857600080fd5b88359750602089013596506040890135614561816143c4565b95506060890135614571816143c4565b94506080890135935060a0890135925060c089013567ffffffffffffffff81111561459b57600080fd5b6145a78b828c01614453565b999c989b5096995094979396929594505050565b6000806000806000808688036101408112156145d657600080fd5b8735965060208801356145e8816143c4565b95506040880135945060c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08201121561462157600080fd5b5060608701925061012087013567ffffffffffffffff8111156144f157600080fd5b6000806040838503121561465657600080fd5b823591506020830135614668816143c4565b809150509250929050565b600080600080600080600060c0888a03121561468e57600080fd5b8735965060208801356146a0816143c4565b955060408801356146b0816143c4565b9450606088013593506080880135925060a088013567ffffffffffffffff8111156146da57600080fd5b6146e68a828b01614453565b989b979a50959850939692959293505050565b60008060006060848603121561470e57600080fd5b833592506020840135614442816143c4565b6000806000806080858703121561473657600080fd5b843593506020850135614748816143c4565b92506040850135614758816143c4565b9396929550929360600135925050565b6000806000806060858703121561477e57600080fd5b8435614789816143c4565b935060208501359250604085013567ffffffffffffffff8111156147ac57600080fd5b6147b887828801614453565b95989497509550505050565b6000806000606084860312156147d957600080fd5b8335925060208401356147eb816143c4565b915060408401356147fb816143c4565b809150509250925092565b600080600080600080600060e0888a03121561482157600080fd5b873561482c816143c4565b9650602088013561483c816143c4565b95506040880135945060608801359350608088013560ff8116811461486057600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561489057600080fd5b823561489b816143c4565b91506020830135614668816143c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610b0b57610b0b6148ab565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614956577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600181811c9082168061496f57607f821691505b60208210810361250c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b80820180821115610b0b57610b0b6148ab565b6000602082840312156149cd57600080fd5b5051919050565b803565ffffffffffff811681146149ea57600080fd5b919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600061010073ffffffffffffffffffffffffffffffffffffffff80881684528635614a62816143c4565b8181166020860152506020870135614a79816143c4565b818116604086015250614a8e604088016149d4565b65ffffffffffff808216606087015280614aaa60608b016149d4565b16608087015250506080870135614ac0816143c4565b81811660a0860152505060a086013560c08401528060e0840152614ae781840185876149ef565b979650505050505050565b81810381811115610b0b57610b0b6148ab565b801515811461362f57600080fd5b60008060408385031215614b2657600080fd5b823561489b81614b05565b600080600060608486031215614b4657600080fd5b835192506020840151614b5881614b05565b80925050604084015190509250925092565b600060208284031215614b7c57600080fd5b8151610af081614b05565b600073ffffffffffffffffffffffffffffffffffffffff8089168352876020840152866040840152808616606084015280851660808401525060c060a0830152614bd460c0830184614334565b98975050505050505050565b60008060408385031215614bf357600080fd5b505080516020909101519092909150565b60007f80000000000000000000000000000000000000000000000000000000000000008203614c3557614c356148ab565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea2646970667358221220dc2bfae06ad921069351d56bdcb5f130055a166516a80e2117e6d9b030e689d064736f6c6343000815003300000000000000000000000052aa899454998be5b000ad077a46bbe360f4e49700000000000000000000000054b91a0d94cb471f37f949c60f7fa7935b551d03000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48