0 txs
1 call
constructor
constructor(address _fToken)
functions
accruedRewards
viewfunction accruedRewards(address user) view returns (uint256[] rewardAmounts)
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
asset
viewfunction asset() view returns (address)
assetInfo
viewfunction assetInfo() view returns (uint8 assetType, address assetAddress, uint8 assetDecimals)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
DOMAIN_SEPARATOR
viewfunction DOMAIN_SEPARATOR() view returns (bytes32)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
exchangeRate
viewfunction exchangeRate() view returns (uint256)
getRewardTokens
viewfunction getRewardTokens() view returns (address[] rewardTokens)
getTokensIn
viewfunction getTokensIn() view returns (address[] res)
getTokensOut
viewfunction getTokensOut() view returns (address[] res)
INST
viewfunction INST() view returns (address)
INSTA_MERKLE
viewfunction INSTA_MERKLE() view returns (address)
isValidTokenIn
viewfunction isValidTokenIn(address token) view returns (bool)
isValidTokenOut
viewfunction isValidTokenOut(address token) view returns (bool)
lastRewardBlock
viewfunction lastRewardBlock() view returns (uint256)
LIQUIDITY
viewfunction LIQUIDITY() view returns (address)
name
viewfunction name() view returns (string)
nonces
viewfunction nonces(address owner) view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
pendingOwner
viewfunction pendingOwner() view returns (address)
previewDeposit
viewfunction previewDeposit(address tokenIn, uint256 amountTokenToDeposit) view returns (uint256 amountSharesOut)
previewRedeem
viewfunction previewRedeem(address tokenOut, uint256 amountSharesToRedeem) view returns (uint256 amountTokenOut)
rewardIndexesStored
viewfunction rewardIndexesStored() view returns (uint256[] indexes)
rewardState
viewfunction rewardState(address) view returns (uint128 index, uint128 lastBalance)
stakingRewards
viewfunction stakingRewards() view returns (address)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
userReward
viewfunction userReward(address, address) view returns (uint128 index, uint128 accrued)
yieldToken
viewfunction yieldToken() view returns (address)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
claimMerkle
nonpayablefunction claimMerkle(address recipient_, uint256 cumulativeAmount_, uint8 positionType_, bytes32 positionId_, uint256 cycle_, bytes32[] merkleProof_, bytes metadata_)
claimOwnership
nonpayablefunction claimOwnership()
claimRewards
nonpayablefunction claimRewards(address user) returns (uint256[] rewardAmounts)
deposit
payablefunction deposit(address receiver, address tokenIn, uint256 amountTokenToDeposit, uint256 minSharesOut) payable returns (uint256 amountSharesOut)
initialize
nonpayablefunction initialize(string _name, string _symbol)
pause
nonpayablefunction pause()
permit
nonpayablefunction permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
redeem
nonpayablefunction redeem(address receiver, uint256 amountSharesToRedeem, address tokenOut, uint256 minTokenOut, bool burnFromInternalBalance) returns (uint256 amountTokenOut)
rewardIndexesCurrent
nonpayablefunction rewardIndexesCurrent() returns (uint256[] indexes)
setStakingRewards
nonpayablefunction setStakingRewards(address _newStakingRewards)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner, bool direct, bool renounce)
unpause
nonpayablefunction unpause()
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
ClaimRewards
event ClaimRewards(address indexed user, address[] rewardTokens, uint256[] rewardAmounts)
Deposit
event Deposit(address indexed caller, address indexed receiver, address indexed tokenIn, uint256 amountDeposited, uint256 amountSyOut)
EIP712DomainChanged
event EIP712DomainChanged()
Initialized
event Initialized(uint8 version)
NewStakingRewards
event NewStakingRewards(address newStakingRewards)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
Redeem
event Redeem(address indexed caller, address indexed receiver, address indexed tokenOut, uint256 amountSyToRedeem, uint256 amountTokenOut)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Unpaused
event Unpaused(address account)
errors
SYInsufficientSharesOut
error SYInsufficientSharesOut(uint256 actualSharesOut, uint256 requiredSharesOut)
SYInsufficientTokenOut
error SYInsufficientTokenOut(uint256 actualTokenOut, uint256 requiredTokenOut)
SYInvalidTokenIn
error SYInvalidTokenIn(address token)
SYInvalidTokenOut
error SYInvalidTokenOut(address token)
SYZeroDeposit
error SYZeroDeposit()
SYZeroRedeem
error SYZeroRedeem()
creation bytecode
0x60e06040908082523462000272576200003290620057a1803803809162000027828562000288565b8339810190620002c0565b815163313ce56760e01b81526020916001600160a01b038116918381600481865afa9081156200027e575f916200023c575b5060805261013460ff19815416905560a05260015460ff8160a81c16620001e85760ff808260a01c1603620001a6575b50600146036200019257816004918451928380926338d52e0f60e01b82525afa91821562000188575f9262000154575b505060c052516154bf9081620002e28239608051816128a3015260a0518181816112a6015281816113c70152818161175e0152818161183b01528181611e740152818161275601528181612bbc0152818161369d01528181613c1e01528181614700015261478c015260c051818181610dde01528181611e950152818161280e0152818161366b0152613c4e0152f35b620001789250803d1062000180575b6200016f818362000288565b810190620002c0565b5f80620000c4565b503d62000163565b83513d5f823e3d90fd5b634e487b7160e01b5f52600160045260245ffd5b60ff60a01b191660ff60a01b17600155825160ff81527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498908390a15f62000094565b835162461bcd60e51b815260048101849052602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b90508381813d831162000276575b62000256818362000288565b8101031262000272575160ff8116810362000272575f62000064565b5f80fd5b503d6200024a565b85513d5f823e3d90fd5b601f909101601f19168101906001600160401b03821190821017620002ac57604052565b634e487b7160e01b5f52604160045260245ffd5b908160209103126200027257516001600160a01b038116810362000272579056fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f9060e05f35811c91826306fdde031461348857508163071bc3c914612ad8578163078dfbe714613307578163095ea7b3146132b8578163128fced11461320e578163155449a71461304e57816318160ddd14612ff157816320e8c56514612add578163213cae6314612ad857816323b872dd146129145781632861c7d1146128c7578163313ce5671461286b5781633644e5151461283257816338d52e0f146127c35781633ba0b9a9146126d55781633f4ba83a146125c75781634cd88b7614611ada5781634e71e0c8146119d25781635c975abb146119905781635cbadbe4146118d757816364b87a70146118845781636fb83a571461168957816370a0823114611627578163769f8e5d146112ca57816376d5de851461125b578163784367d61461027a5781637ecebe00146111f85781638456cb591461114657816384b0196e14610ffe5781638da5cb5b14610fad57816395d89b4114610e92578163a40bee5014610d87578163a9059cbb14610cb2578163a9f8d18114610c75578163b8f82b2614610bd9578163c4f59f9b14610b8b578163cbe52ae314610ae7578163d505accf1461089b57508063d95bd6921461084e578063da88ecb414610797578063dd62ed3e1461071e578063e30c3978146106cc578063ea64a8201461063c578063ef5cfb8c14610360578063f8b2f9911461027f578063fa5a4f061461027a5763fc21baa10361000f573461027757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610277576020604051737060fe0dd3e31be01efac6b28c8d38018fd163b08152f35b80fd5b613897565b503461027757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102775761035c6004546102c460028260f81c1415613b9e565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80921617600455610314614801565b7f010000000000000000000000000000000000000000000000000000000000000061033d614879565b9290506004541617600455604051918291602083526020830190613749565b0390f35b5034610277576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610638579061039a613703565b600454916103ae60028460f81c1415613b9e565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff809416176004556103fe614801565b61040782614f7a565b61040f614bbf565b6104198151613b4f565b94829073ffffffffffffffffffffffffffffffffffffffff93848616925b84518110156105a4578561044b8287613ad6565b5116825261019980845260408320855f52845260405f205490608091821c610473848d613ad6565b5261047e838c613ad6565b5161048e575b5050600101610437565b876104998489613ad6565b51168452845260408320855f52845260405f20906fffffffffffffffffffffffffffffffff918281541690556104cf838c613ad6565b51908282116105a057886104e3858a613ad6565b5116855261019b865282604086209216908254901c03918211610573576001929161054991906fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffff0000000000000000000000000000000083549260801b169116179055565b61056c8a89610565848b61055d828d613ad6565b511693613ad6565b5191614c6e565b905f610484565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b5f80fd5b88837f01000000000000000000000000000000000000000000000000000000000000008a877f2193aa20a3717f5f4ac79482f4f553e5f0afe8f4e6ec3e3d1aa2e138adc4763f61060c6105f5614bbf565b6106196040519283926040845260408401906135a8565b8281038984015289613749565b0390a2600454161760045561035c604051928284938452830190613749565b5080fd5b50346102775760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261027757604061035c9173ffffffffffffffffffffffffffffffffffffffff61068f613703565b16815261019b602090815291902054604080516fffffffffffffffffffffffffffffffff8316815260809290921c92820192909252918291820190565b503461027757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261027757602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b50346102775760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261027757610756613703565b6040610760613726565b9273ffffffffffffffffffffffffffffffffffffffff809316815260036020522091165f52602052602060405f2054604051908152f35b503461027757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610277576107ce614bbf565b6107d88151613b4f565b91805b8251811015610838578073ffffffffffffffffffffffffffffffffffffffff61080660019386613ad6565b5116835261019b6020526fffffffffffffffffffffffffffffffff6040842054166108318287613ad6565b52016107db565b6040516020808252819061035c90820187613749565b503461027757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610277576020604051736f40d4a6237c257fff2db00fa0510deeecd303eb8152f35b90503461063857807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610638576108d3613703565b906108dc613726565b604435916084359060643560ff831683036105a057804211610a895773ffffffffffffffffffffffffffffffffffffffff9182871693848952609f60205260408920918254926001840190556040519360208501937f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98552876040870152868916606087015289608087015260a086015260c085015260c0845283019183831067ffffffffffffffff841117610a5c576109ec936109e4936040525190206109a2614bf8565b90604051917f190100000000000000000000000000000000000000000000000000000000000083526002830152602282015260c43591604260a4359220614d5b565b919091614de3565b16036109fe576109fb92613c74565b80f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152fd5b82346102775760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261027757610b1f613703565b610b2881613c03565b15610b4457610b3c60209160243590614775565b604051908152f35b60249073ffffffffffffffffffffffffffffffffffffffff604051917f88a50561000000000000000000000000000000000000000000000000000000008352166004820152fd5b823461027757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102775761035c610bc5614bbf565b6040519182916020835260208301906135a8565b82346102775760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261027757610c11613703565b610c1a81613c03565b15610c2e57610b3c602091602435906146e9565b60249073ffffffffffffffffffffffffffffffffffffffff604051917faeabe718000000000000000000000000000000000000000000000000000000008352166004820152fd5b823461027757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261027757602061019a54604051908152f35b82346102775760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610277577f0100000000000000000000000000000000000000000000000000000000000000610d0b613703565b610d7460045491610d2260028460f81c1415613b9e565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff809416176004556024359033613e1f565b6004541617600455602060405160018152f35b823461027757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610277576040517f313ce5670000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16602082600481845afa918215610e87578392610e44575b60608460ff85856040519384526020840152166040820152f35b9091506020813d602011610e7f575b81610e60602093836137c8565b81010312610e7b575160ff81168103610e7b579060ff610e2a565b8280fd5b3d9150610e53565b6040513d85823e3d90fd5b823461027757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610277576040516006545f82610ed2836138e2565b91828252602093600190856001821691825f14610f6f575050600114610f14575b50610f00925003836137c8565b61035c60405192828493845283019061354c565b84915060065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f905f915b858310610f57575050610f00935082010185610ef3565b80548389018501528794508693909201918101610f40565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685820152610f0095151560051b8501019250879150610ef39050565b823461027757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102775773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b90503461063857817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261063857606b54158061113c575b156110de57611045613933565b9161104e613a15565b906040516020810181811067ffffffffffffffff821117610a5c5761035c936110bf916040528383526110b16040519788977f0f0000000000000000000000000000000000000000000000000000000000000089528060208a015288019061354c565b90868203604088015261354c565b9146606086015230608086015260a085015283820360c0850152613749565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152fd5b50606c5415611038565b823461027757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102775761119773ffffffffffffffffffffffffffffffffffffffff8254163314613aea565b61119f614801565b61013460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a180f35b82346102775760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261027757604060209173ffffffffffffffffffffffffffffffffffffffff61124a613703565b168152609f83522054604051908152f35b823461027757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261027757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b82346102775760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261027757611302613703565b90602435916044359273ffffffffffffffffffffffffffffffffffffffff808516928386036105a05760643560843580151581036105a05761139e6004549861135160028b60f81c1415613b9e565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff809b1617600455613c03565b156115f65784156115cc57156115bd576113b88430614500565b82610200541680611544575b507f0000000000000000000000000000000000000000000000000000000000000000958387168681036114a95750506113ff84838198614c6e565b8086106114725750917f0100000000000000000000000000000000000000000000000000000000000000939160209693604051928352868884015216907faee47cdf925cf525fdae94f9777ee5a06cac37e1c41220d0a8a89ed154f62d1c60403392a46004541617600455604051908152f35b85604491604051917fbfee4ca000000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b819297506020906064604051809481937fba0876520000000000000000000000000000000000000000000000000000000083528a600484015289891660248401523060448401525af19182156115385791611506575b50946113ff565b90506020813d602011611530575b81611521602093836137c8565b810103126105a05751876114ff565b3d9150611514565b604051903d90823e3d90fd5b803b156115b9578680916024604051809481937f2e1a7d4d0000000000000000000000000000000000000000000000000000000083528a60048401525af180156115ae57908791611596575b506113c4565b61159f9061377c565b6115aa578588611590565b8580fd5b6040513d89823e3d90fd5b8680fd5b6115c78433614500565b6113b8565b60046040517fc3d83b07000000000000000000000000000000000000000000000000000000008152fd5b602486604051907f88a505610000000000000000000000000000000000000000000000000000000082526004820152fd5b82346102775760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610277576020610b3c611664613703565b73ffffffffffffffffffffffffffffffffffffffff165f52600260205260405f205490565b82346102775760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610277576116c1613703565b73ffffffffffffffffffffffffffffffffffffffff6116e4818454163314613aea565b826102009180835416806117ef575b5083169283611755575b507f360f044f758e336e2b8b966565ece96a2a9f3160d0cb68e5d9c2b9fb5f346b0a60208484817fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055604051908152a180f35b611789906117847f0000000000000000000000000000000000000000000000000000000000000000918261413b565b614468565b833b1561063857604051907fa694fc3a0000000000000000000000000000000000000000000000000000000082526004820152818160248183885af180156117e457156116fd576117d99061377c565b610e7b5782846116fd565b6040513d84823e3d90fd5b803b15610e7b576040517fe9fad8ee000000000000000000000000000000000000000000000000000000008152838160048183865af1908115611879578491611865575b505061185f907f0000000000000000000000000000000000000000000000000000000000000000614362565b856116f3565b61186e9061377c565b610e7b578287611833565b6040513d86823e3d90fd5b823461027757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261027757602073ffffffffffffffffffffffffffffffffffffffff6102005416604051908152f35b82346102775760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102775761190f613703565b6040611919613726565b9273ffffffffffffffffffffffffffffffffffffffff80931681526101996020522091165f5260205261035c60405f205460405191816fffffffffffffffffffffffffffffffff849360801c9116839060209093929360408301946fffffffffffffffffffffffffffffffff809216845216910152565b823461027757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261027757602060ff61013454166040519015158152f35b823461027757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102775760015473ffffffffffffffffffffffffffffffffffffffff90818116803303611a7c578084549384167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a37fffffffffffffffffffffffff00000000000000000000000000000000000000008093161783551660015580f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152fd5b82346102775760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102775760043567ffffffffffffffff811161063857611b2a903690600401613879565b60243567ffffffffffffffff8111610e7b57611b4a903690600401613879565b916001549060ff8260a81c1615918280936125b7575b801561259d575b156125195782740100000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff8316176001556124d6575b50611bd360ff60015460a81c16611bc5816140b0565b611bce816140b0565b6140b0565b825167ffffffffffffffff811161234257611bef6005546138e2565b601f8111612435575b50806020601f821160011461237a57839161236f575b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916176005555b835167ffffffffffffffff811161234257611c5c6006546138e2565b601f81116122a1575b50602094601f82116001146121e35794829394958293926121d8575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916176006555b7f01000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600454161760045560405191611d0a83613790565b600183527f31000000000000000000000000000000000000000000000000000000000000006020840152611d4960ff60015460a81c16611bce816140b0565b835167ffffffffffffffff811161204157611d65606d546138e2565b601f8111612137575b50602094601f821160011461207957948394958293949261206e575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c191617606d555b825167ffffffffffffffff811161204157611dd9606e546138e2565b601f8111611fde575b506020601f8211600114611f2157839482939492611f16575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c191617606e555b81606b5581606c55611e4760ff60015460a81c166140b0565b337fffffffffffffffffffffffff0000000000000000000000000000000000000000835416178255611eb97f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061413b565b611ec05780f35b7fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff600154166001557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b015190508480611dfb565b606e84527f9930d9ff0dee0ef5ca2f7710ea66b8f84dd0f5f5351ecffe72b952cd9db7142a907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08316855b818110611fc657509583600195969710611f8f575b505050811b01606e55611e2e565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c19169055848080611f81565b9192602060018192868b015181550194019201611f6c565b606e84527f9930d9ff0dee0ef5ca2f7710ea66b8f84dd0f5f5351ecffe72b952cd9db7142a601f830160051c81019160208410612037575b601f0160051c01905b81811061202c5750611de2565b84815560010161201f565b9091508190612016565b6024837f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b015190508580611d8a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0821695606d85527f5006b838207c6a9ae9b84d68f467dd4bb5c305fbfb6b04eab8faaabeec1e18d891855b88811061211f575083600195969798106120e8575b505050811b01606d55611dbd565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c191690558580806120da565b919260206001819286850151815501940192016120c5565b606d8452601f820160051c7f5006b838207c6a9ae9b84d68f467dd4bb5c305fbfb6b04eab8faaabeec1e18d80190602083106121b0575b601f0160051c7f5006b838207c6a9ae9b84d68f467dd4bb5c305fbfb6b04eab8faaabeec1e18d801905b8181106121a55750611d6e565b848155600101612198565b7f5006b838207c6a9ae9b84d68f467dd4bb5c305fbfb6b04eab8faaabeec1e18d8915061216e565b015190508580611c81565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0821695600684527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f91845b88811061228957508360019596979810612252575b505050811b01600655611cb4565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c19169055858080612244565b9192602060018192868501518155019401920161222f565b60068352601f820160051c7ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f01906020831061231a575b601f0160051c7ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f01905b81811061230f5750611c65565b838155600101612302565b7ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f91506122d8565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b905084015186611c0e565b600584527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016845b81811061241d575090836001949392106123e6575b5050811b01600555611c40565b8601517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c1916905586806123d9565b9192602060018192868b0151815501940192016123c4565b60058352601f820160051c7f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00190602083106124ae575b601f0160051c7f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001905b8181106124a35750611bf8565b838155600101612496565b7f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0915061246c565b7fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001760015584611baf565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b50303b158015611b675750600160ff8260a01c1614611b67565b50600160ff8260a01c1610611b60565b823461027757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102775761261873ffffffffffffffffffffffffffffffffffffffff8254163314613aea565b610134805460ff811615612677577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a180f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152fd5b823461027757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261027757604051907f07a2d13a000000000000000000000000000000000000000000000000000000008252670de0b6b3a7640000600483015260208260248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156115385790612790575b602090604051908152f35b506020813d6020116127bb575b816127aa602093836137c8565b810103126105a05760209051612785565b3d915061279d565b823461027757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261027757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b823461027757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610277576020610b3c614bf8565b823461027757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261027757602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b823461027757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102775760206040517352aa899454998be5b000ad077a46bbe360f4e4978152f35b82346102775760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102775761294c613703565b90612955613726565b6044359060406004549361296f60028660f81c1415613b9e565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8096161760045573ffffffffffffffffffffffffffffffffffffffff86168152600360205220335f5260205260405f20547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8103612a36575b5090610d74917f010000000000000000000000000000000000000000000000000000000000000094613e1f565b9190818310612a7a577f010000000000000000000000000000000000000000000000000000000000000094612a7183610d7495033383613c74565b94509091612a09565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152fd5b6135f1565b8260807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261027757612b10613703565b612b18613726565b906044918235926064359360045493612b3760028660f81c1415613b9e565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80961617600455612b8884613c03565b15612faa578115612f805773ffffffffffffffffffffffffffffffffffffffff9384169384612f1857823403612eba575b877f00000000000000000000000000000000000000000000000000000000000000008216868103612e2c57505082965b8882610200541680612dca575b5050808810612d9457508116928315612d365750612c1b90612c16614801565b614f7a565b8385116105a05760045484861685821601858111612d0957926020978193927fff00000000000000000000000000000000000000000000000000000000000000887f0100000000000000000000000000000000000000000000000000000000000000999897169116176004558181526002895260408120612c9d898254613de5565b90557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef896040518a8152a360405190815285878201527f5fe47ed6d4225326d3303476197d782ded5a4e9c14f479dc9ec4992af4e85d5960403392a46004541617600455604051908152f35b6024887f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6064907f45524332303a206d696e7420746f20746865207a65726f206164647265737300604051917f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152601f6024840152820152fd5b878591604051917fbc71f2ba00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b803b156106385781809160248c60405194859384927fa694fc3a00000000000000000000000000000000000000000000000000000000845260048401525af180156117e45715612bf657612e1d9061377c565b612e2857888a612bf6565b8880fd5b60209086604051809481937f6e553f650000000000000000000000000000000000000000000000000000000083528960048401523060248401525af1908115612eaf578991612e7d575b5096612be9565b90506020813d602011612ea7575b81612e98602093836137c8565b810103126105a0575189612e76565b3d9150612e8b565b6040513d8b823e3d90fd5b6064847f657468206d69736d617463680000000000000000000000000000000000000000604051917f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152600c6024840152820152fd5b6040517f23b872dd00000000000000000000000000000000000000000000000000000000602082015233602482015230858201528360648201526064815260a081019080821067ffffffffffffffff831117610a5c57612f7b9160405286615038565b612bb9565b60046040517fa907f2f0000000000000000000000000000000000000000000000000000000008152fd5b60248473ffffffffffffffffffffffffffffffffffffffff604051917faeabe718000000000000000000000000000000000000000000000000000000008352166004820152fd5b823461027757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102775760207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60045416604051908152f35b9050346105a057807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a057613086613703565b9060443560ff81168091036105a05760a4359067ffffffffffffffff928383116105a057366023840112156105a05782600401358481116105a0578060051b9436602487870101116105a05760c4359081116105a057366023820112156105a0576130fb903690602481600401359101613843565b9173ffffffffffffffffffffffffffffffffffffffff93613120855f54163314613aea565b737060fe0dd3e31be01efac6b28c8d38018fd163b094853b156105a057604051987fbe5013dc000000000000000000000000000000000000000000000000000000008a52166004890152602435602489015260448801526064356064880152608435608488015260a48701528060e48701527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010491116105a057856131e78195935f979384899560248698018387013784016101008582030160c4860152019061354c565b03925af18015613203576131f9575080f35b61001a915061377c565b6040513d5f823e3d90fd5b346105a0576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a057613246613703565b61324e614bbf565b916132598351613b4f565b905f9073ffffffffffffffffffffffffffffffffffffffff809416915b855181101561083857808561328d60019389613ad6565b51165f52610199835260405f20845f52835260405f205460801c6132b18287613ad6565b5201613276565b346105a05760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a0576132fc6132f2613703565b6024359033613c74565b602060405160018152f35b346105a05760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a05761333e613703565b60243580151581036105a0576044359081151582036105a05773ffffffffffffffffffffffffffffffffffffffff92839161337d835f54163314613aea565b1561345757169081159081159161344f575b50156133f157805f549283167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a37fffffffffffffffffffffffff0000000000000000000000000000000000000000809216175f55600154166001555f80f35b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4f776e61626c653a207a65726f206164647265737300000000000000000000006044820152fd5b90508361338f565b915050167fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001555f80f35b346105a0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a0576005545f826134c4836138e2565b91828252602093600190856001821691825f14610f6f5750506001146134f15750610f00925003836137c8565b84915060055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0905f915b858310613534575050610f00935082010185610ef3565b8054838901850152879450869390920191810161351d565b91908251928382525f5b8481106135945750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f845f6020809697860101520116010190565b602081830181015184830182015201613556565b9081518082526020808093019301915f5b8281106135c7575050505090565b835173ffffffffffffffffffffffffffffffffffffffff16855293810193928101926001016135b9565b346105a0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a0576040516060810181811067ffffffffffffffff821117610a5c5760405260028152604036602083013761365181613ac9565b9073ffffffffffffffffffffffffffffffffffffffff91827f00000000000000000000000000000000000000000000000000000000000000001690528051600110156136d65761035c917f00000000000000000000000000000000000000000000000000000000000000001660408201526040519182916020835260208301906135a8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6004359073ffffffffffffffffffffffffffffffffffffffff821682036105a057565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036105a057565b9081518082526020808093019301915f5b828110613768575050505090565b83518552938101939281019260010161375a565b67ffffffffffffffff8111610a5c57604052565b6040810190811067ffffffffffffffff821117610a5c57604052565b6080810190811067ffffffffffffffff821117610a5c57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610a5c57604052565b67ffffffffffffffff8111610a5c57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b92919261384f82613809565b9161385d60405193846137c8565b8294818452818301116105a0578281602093845f960137010152565b9080601f830112156105a05781602061389493359101613843565b90565b346105a05760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126105a05760206138d86138d3613703565b613c03565b6040519015158152f35b90600182811c92168015613929575b60208310146138fc57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916138f1565b604051905f82606d5491613946836138e2565b808352926020906001908181169081156139d25750600114613973575b5050613971925003836137c8565b565b915092606d5f527f5006b838207c6a9ae9b84d68f467dd4bb5c305fbfb6b04eab8faaabeec1e18d8935f925b8284106139ba57506139719450505081016020015f80613963565b8554888501830152948501948794509281019261399f565b9050602093506139719592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f80613963565b604051905f82606e5491613a28836138e2565b808352926020906001908181169081156139d25750600114613a52575050613971925003836137c8565b915092606e5f527f9930d9ff0dee0ef5ca2f7710ea66b8f84dd0f5f5351ecffe72b952cd9db7142a935f925b828410613a9957506139719450505081016020015f80613963565b85548885018301529485019487945092810192613a7e565b67ffffffffffffffff8111610a5c5760051b60200190565b8051156136d65760200190565b80518210156136d65760209160051b010190565b15613af157565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b90613b5982613ab1565b613b6660405191826137c8565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0613b948294613ab1565b0190602036910137565b15613ba557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff809116817f0000000000000000000000000000000000000000000000000000000000000000168114918215613c4c57505090565b7f00000000000000000000000000000000000000000000000000000000000000001614919050565b73ffffffffffffffffffffffffffffffffffffffff809116918215613d625716918215613cde5760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591835f526003825260405f20855f5282528060405f2055604051908152a3565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b91908201809211613df257565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b909173ffffffffffffffffffffffffffffffffffffffff9182811692831561402c578416938415613fa857848414613f4a57613e6291613e5d614801565b614fc9565b815f52600260205260405f2054818110613ec657817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f52600284520360405f2055845f5260405f20613ebb828254613de5565b9055604051908152a3565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f45524332303a207472616e7366657220746f2073656c660000000000000000006044820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b156140b757565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b73ffffffffffffffffffffffffffffffffffffffff918282169182156141be5760405180947fdd62ed3e00000000000000000000000000000000000000000000000000000000825230600483015283169384602483015281604460209788935afa8015613203575f906142e2575b6b7fffffffffffffffffffffff9150106141c4575b50505050565b5f926141d1849383614362565b82604051868101927f095ea7b300000000000000000000000000000000000000000000000000000000845260248201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604482015260448152614234816137ac565b51925af161424061431b565b816142b2575b5015614254578080806141be565b606490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152600c60248201527f5361666520417070726f766500000000000000000000000000000000000000006044820152fd5b805180159250839083156142ca575b5050505f614246565b6142da935082018101910161434a565b5f82816142c1565b508481813d8311614314575b6142f881836137c8565b810103126105a0576b7fffffffffffffffffffffff90516141a9565b503d6142ee565b3d15614345573d9061432c82613809565b9161433a60405193846137c8565b82523d5f602084013e565b606090565b908160209103126105a0575180151581036105a05790565b5f919082918260405173ffffffffffffffffffffffffffffffffffffffff60208201937f095ea7b3000000000000000000000000000000000000000000000000000000008552166024820152816044820152604481526143c1816137ac565b51925af16143cd61431b565b81614439575b50156143db57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5361666520417070726f766500000000000000000000000000000000000000006044820152fd5b805180159250821561444e575b50505f6143d3565b614461925060208091830101910161434a565b5f80614446565b73ffffffffffffffffffffffffffffffffffffffff168061448857504790565b6020602491604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa908115613203575f916144d1575b5090565b90506020813d6020116144f8575b816144ec602093836137c8565b810103126105a0575190565b3d91506144df565b73ffffffffffffffffffffffffffffffffffffffff81169081156146655761452a90612c16614801565b805f52600260205260405f20548281106145e1578290825f5260026020520360405f20557effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff918281116105a057600454928082168185160391818311613df2575f947fff000000000000000000000000000000000000000000000000000000000000006020937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9516911617600455604051908152a3565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152fd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081169116810361472d575090565b906020906024604051809481937fef8b30f700000000000000000000000000000000000000000000000000000000835260048301525afa908115613203575f916144d1575090565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116911681036147b9575090565b906020906024604051809481937f4cdad50600000000000000000000000000000000000000000000000000000000835260048301525afa908115613203575f916144d1575090565b60ff610134541661480e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152fd5b91908203918211613df257565b614881614bbf565b9061488c8251613b4f565b9082515f9015614bbc5761019a80544314614b5a5743905560047effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600454169373ffffffffffffffffffffffffffffffffffffffff610200541680614b04575b50825b8651811015614afd5773ffffffffffffffffffffffffffffffffffffffff6149168289613ad6565b51169081855261019b91826020526040908187209180519261493784613790565b546fffffffffffffffffffffffffffffffff81169384815260208260801c9101528361498f8d61498a73ffffffffffffffffffffffffffffffffffffffff6149838a8760801c94613ad6565b5116614468565b61486c565b9015614af4575b8b614a68575b6fffffffffffffffffffffffffffffffff85116105a0576149bf9160801c613de5565b906fffffffffffffffffffffffffffffffff82116105a057600195614a57936fffffffffffffffffffffffffffffffff8351946149fb86613790565b81881686521660208501528a526020528820815160209092015160801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b614a618285613ad6565b52016148ee565b93670de0b6b3a76400008581810204811486151715614ac8578c15614a9c57908c614a969287020490613de5565b9361499c565b60128a7f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b60118a7f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b60019450614996565b5093505050565b803b156105a0575f80916004604051809481937f3d18b9120000000000000000000000000000000000000000000000000000000083525af1801561320357156148eb57614b5291935061377c565b5f915f6148eb565b5050905f5b83518110156144cd578073ffffffffffffffffffffffffffffffffffffffff614b8a60019387613ad6565b51165f5261019b6020526fffffffffffffffffffffffffffffffff60405f205416614bb58285613ad6565b5201614b5f565b50565b60405190614bcc82613790565b6001825260203681840137736f40d4a6237c257fff2db00fa0510deeecd303eb614bf583613ac9565b52565b614c00615157565b614c086151a2565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff821117610a5c5760405251902090565b8215614d565773ffffffffffffffffffffffffffffffffffffffff9081169081614d0a5750505f80809381935af1614ca461431b565b5015614cac57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6574682073656e64206661696c656400000000000000000000000000000000006044820152fd5b9261397193604051937fa9059cbb000000000000000000000000000000000000000000000000000000006020860152166024840152604483015260448252614d51826137ac565b615038565b505050565b7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411614dd8576020935f9360ff60809460405194855216868401526040830152606082015282805260015afa15613203575f5173ffffffffffffffffffffffffffffffffffffffff811615614dd057905f90565b505f90600190565b505050505f90600390565b6005811015614f4d5780614df45750565b60018103614e5a5760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152fd5b60028103614ec05760646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152fd5b600314614ec957565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b614f82614879565b90805115614d565773ffffffffffffffffffffffffffffffffffffffff83168015159081614fbe575b50614fb557505050565b613971926151c8565b90503014155f614fab565b614fd1614879565b918151156141be5773ffffffffffffffffffffffffffffffffffffffff908383838316801515908161502d575b5061501c575b50505083168015159081614fbe5750614fb557505050565b615025926151c8565b5f8383615004565b90503014155f614ffe565b6040516150a29173ffffffffffffffffffffffffffffffffffffffff1661505e82613790565b5f806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af161509c61431b565b916153b9565b80519082821592831561513f575b505050156150bb5750565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b61514f935082018101910161434a565b5f82816150b0565b61515f613933565b805190811561516f576020012090565b5050606b54801561517d5790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b6151aa613a15565b80519081156151ba576020012090565b5050606c54801561517d5790565b91909173ffffffffffffffffffffffffffffffffffffffff80821691821515806153af575b156153825761521e9095949573ffffffffffffffffffffffffffffffffffffffff165f52600260205260405f205490565b905f958215965b815181101561537857826152398284613ad6565b5116906152468188613ad6565b5191805f52610199926020848152604090815f208a5f5281526fffffffffffffffffffffffffffffffff958d87845f2054168015615370575b8581148015615368575b61535857615297908661486c565b90818c02918c8304141715613df257670de0b6b3a76400006152cf91875f528385528d865f20905f52855204845f205460801c613de5565b948785116105a0578786116105a05787615352966001998651976152f289613790565b16875216838601525f528152815f20908a5f52525f20815160209092015160801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b01615225565b5050505050505060019150615352565b508515615289565b50600161527f565b5050505050509050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b50308314156151ed565b9192901561543457508151156153cd575090565b3b156153d65790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b8251909150156154475750805190602001fd5b615485906040519182917f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152602483019061354c565b0390fdfea26469706673582212204814a7d57d5387a60e5439200f2a5b76992ed0aa7ad085689dc77316d922488c64736f6c63430008180033000000000000000000000000ff11b91362b1949890ea653011728976ea5f6fe8