0 txs
360 calls
constructor
No constructor.
functions
balancerUnlockCallback
nonpayablefunction balancerUnlockCallback(bytes)
deltaCompose
payablefunction deltaCompose(bytes) payable
executeOperation
nonpayablefunction executeOperation(address, uint256, uint256, address initiator, bytes params) returns (bool)
executeOperation
nonpayablefunction executeOperation(address[], uint256[], uint256[], address initiator, bytes params) returns (bool)
onMorphoFlashLoan
nonpayablefunction onMorphoFlashLoan(uint256, bytes)
onMorphoRepay
nonpayablefunction onMorphoRepay(uint256, bytes)
onMorphoSupply
nonpayablefunction onMorphoSupply(uint256, bytes)
onMorphoSupplyCollateral
nonpayablefunction onMorphoSupplyCollateral(uint256, bytes)
receiveFlashLoan
nonpayablefunction receiveFlashLoan(address[], uint256[], uint256[], bytes params)
unlockCallback
nonpayablefunction unlockCallback(bytes)
events
No events.
errors
BadPool
error BadPool()
BridgeFailed
error BridgeFailed()
InsufficientValue
error InsufficientValue()
InvalidAssetId
error InvalidAssetId(uint16 assetId)
InvalidCalldata
error InvalidCalldata()
InvalidCaller
error InvalidCaller()
InvalidDex
error InvalidDex()
InvalidDexId
error InvalidDexId()
InvalidFlashLoan
error InvalidFlashLoan()
InvalidInitiator
error InvalidInitiator()
InvalidOperation
error InvalidOperation()
NativeTransferFailed
error NativeTransferFailed()
SafePermitBadLength
error SafePermitBadLength()
Slippage
error Slippage()
SlippageTooHigh
error SlippageTooHigh(uint256 expected, uint256 actual)
Target
error Target()
WrapFailed
error WrapFailed()
ZeroBalance
error ZeroBalance()
creation bytecode
0x6080604052348015600e575f5ffd5b50615f598061001c5f395ff3fe6080604052600436106100b4575f3560e01c8063480cf7ef11610068578063920f5c841161004d578063920f5c84146101af578063b1022fdf1461010a578063f04f2707146101ce576100bb565b8063480cf7ef1461017157806391dd734614610190576100bb565b80631b11d0ff116100995780631b11d0ff1461013e5780632075be031461010a57806331f570721461010a576100bb565b806305b4591c1461010a57806317d730911461012b576100bb565b366100bb57005b3480156100c6575f5ffd5b507fffffffff000000000000000000000000000000000000000000000000000000005f35166100f4816101ed565b6100fd816104bc565b61010681610791565b5f5ffd5b348015610115575f5ffd5b50610129610124366004615c11565b610875565b005b610129610139366004615c59565b610882565b348015610149575f5ffd5b5061015d610158366004615cc0565b610899565b604051901515815260200160405180910390f35b34801561017c575f5ffd5b5061012961018b366004615c59565b610964565b34801561019b575f5ffd5b506101296101aa366004615c59565b6109a7565b3480156101ba575f5ffd5b5061015d6101c9366004615d74565b610a14565b3480156101d9575f5ffd5b506101296101e8366004615e55565b610ac1565b5f5f5f837ffa461e33000000000000000000000000000000000000000000000000000000008114610244577f2c8958f6000000000000000000000000000000000000000000000000000000008114610368576103cd565b60ff60ac3560581c16801561026757600181146102b257601381146102fd575f5ffd5b7fff1f98431c8ad98523631ae4a59f267346ea31f984000000000000000000000093507fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b549450610344565b7fff9c6522117e2ed1fe5bdb72bb0ed5e3f2bde7dbe0000000000000000000000093507fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b549450610344565b7fffcc0bddb707055e04e497ab22a59c2af4391cd12f000000000000000000000093507f339492e30b7a68609e535da9b0773082bfe60230ca47639ee5566007d525f5a794505b506024355f81136001811461035d576004359350610361565b8193505b50506103cd565b7fffc0d4323426c709e8d04b5b130e7f059523464a91ffffffffffffffffffffff92507fbce37a54eab2fcd71913a0d40723e04238970e7fc1159bfd58ad5b79531697e793506024355f8113600181146103c65760043593506103ca565b8193505b50505b5081156104b6575f5f5f60983560601c905060ac358060601c604051878152601581018285105f811461040857858252836020830152610412565b8382528560208301525b506affffffffffffffffffffff8916801561043257604082208252610446565b8460481c61ffff1660408301526060822082525b506020018990526055812073ffffffffffffffffffffffffffffffffffffffff163314610495577fb2c02722000000000000000000000000000000000000000000000000000000005f5260045ffd5b50508060381c61ffff1693505060843560601c915061012984828486610bb9565b50505050565b5f8060cc3581847f10d1e85c000000000000000000000000000000000000000000000000000000008114610516577f9a7bff790000000000000000000000000000000000000000000000000000000081146105cb5761068f565b8260581c60ff169150815f8114610533576001811461057e575f5ffd5b7fff0c3c1c532f1e39edf36be9fe0be1410313e074bf000000000000000000000094507f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f95506105c5565b7ffffbc12984689e5f15626bad03ad60160fe98b303c000000000000000000000094507f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f95505b5061068f565b8260581c60ff16915060c982146089831417600181146106465760ca8314608a841417600181146105fa575f5ffd5b7ffff1046053aa5682b4f9a81b5481394da16be5ff5a000000000000000000000095507fc0629f1c7daa09624e54d4f711ba99922a844907cce02997176399e4cc7e8fcf96505061068d565b7fff25cbddb98b35ab1ff77413456b31ec81a6b6b746000000000000000000000094507fc1ac28b1c4ebe53c0cff67bab5878c4eb68759bb1e9f73977cd266b247d149f095505b505b50821561078a575f8060043530146106b0576348f5c3ed60e01b5f5260045ffd5b60b83560601c8460601c6040518183105f81146106d5578260148301528382526106df565b8360148301528282525b505f925060828611600181146106fd576028600c8301209350610710565b60bf871160348301536029600c83012093505b50878152826015820152886035820152336055822073ffffffffffffffffffffffffffffffffffffffff161815610769577fb2c02722000000000000000000000000000000000000000000000000000000005f5260045ffd5b5050508360481c61ffff16915060a43560601c90506101298160e384610c42565b5050505050565b5f817feb2021c300000000000000000000000000000000000000000000000000000000811461080d577fd5b99797000000000000000000000000000000000000000000000000000000008114610829577f7ed1f1dd0000000000000000000000000000000000000000000000000000000081146108455761085d565b732b800dc6270726f7e2266ce8cd5a3f8436fe0b40915061085d565b731f83858cd6d0ae7a08ab1fd977c06dabece6d711915061085d565b73db9c53f2ced34875685b607c97a61a65da2f30a891505b508015610871576004356101298183610c4d565b5050565b61087d610d02565b505050565b60243561089133604483610c42565b61087d610d68565b5f808260c4358260ff605883901c1680156108c557605581146108e15763bafe1c5360e01b5f5260045ffd5b73794a61358d6845594f94dc1db02a252b5b4814ad91506108f9565b73345d2827f36621b02b783f7d5004b4a2fec0018691505b50338114610910576348f5c3ed60e01b5f5260045ffd5b50308714610940577fbfda1f28000000000000000000000000000000000000000000000000000000005f5260045ffd5b60601c9150601419016109558260d983610c42565b50600198975050505050505050565b60443560601c601419602435013373ba1333333333a1ba1108e8412f11850a5c319ba91461099b576348f5c3ed60e01b5f5260045ffd5b6104b682605983610c42565b60883560601c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa76024350133739a13f98cb987694c9f086b1f5eb990eea8264ec3146109fc576348f5c3ed60e01b5f5260045ffd5b610a0882609d83610c42565b5f5f525f60205260405ff35b5f808383813560ff605882901c1660078114610a395763bafe1c5360e01b5f5260045ffd5b33738fd4af47e4e63d1d2d45582c3286b4bd9bb95dfe14610a63576348f5c3ed60e01b5f5260045ffd5b50308814610a93577fbfda1f28000000000000000000000000000000000000000000000000000000005f5260045ffd5b60601c92506015919091019060141901610aae838383610c42565b5060019c9b505050505050505050505050565b5f828181358160ff605883901c168015610aec5760028114610b085763bafe1c5360e01b5f5260045ffd5b73ba12222222228d8ba445958a75a0704d566bf2c89150610b20565b73d315a9c38ec871068fec378e4ce78af528c7629391505b50338114610b37576348f5c3ed60e01b5f5260045ffd5b507f9fc772e484014aadda1a3916bdcbf34dd65a99500e92cb6faae6cb2496083ccb5c600114610b70576348f5c3ed60e01b5f5260045ffd5b5f7f9fc772e484014aadda1a3916bdcbf34dd65a99500e92cb6faae6cb2496083ccb5d60601c9250506015016014198301610bac838383610c42565b5050505050505050505050565b6002811015610c3a576040515f828015610bf45763a9059cbb60e01b83523360048401528660248401526020836044855f8a5af19150610c1d565b6323b872dd60e01b83528460048401523360248401528660448401526020836064855f8a5af191505b503d6001835114601f821116811517821661012957805f5f3e805ffd5b6104b68260c5835b61087d838383610d6d565b5f80308414610c65576348f5c3ed60e01b5f5260045ffd5b60a43560601c915060b83560601c60cc356040517fbdeb0a910000000000000000000000000000000000000000000000000000000081528260048201528160401c61ffff1693508160501c61ffff1660448201528160601c915081602482015260208160648389612710fa610cdc573d5f5f3e3d5ffd5b80513314610cf35763bafe1c5360e01b5f5260045ffd5b5050506104b68260e483610c42565b5f5f6064358060581c60ff165f8114610d245763bafe1c5360e01b5f5260045ffd5b3373ce95afbb8ea029495c66020883f87aae8864af9214610d4e576348f5c3ed60e01b5f5260045ffd5b5060601c9150506014196044350161087182607983610c42565b5f5fa0565b8181015b60018301923560f81c6050811015610dde5760108103610d9c57610d958486610e7b565b9350610e2e565b60208103610dad57610d9584610efd565b60308103610dbf57610d958585610fa6565b60408103610dd157610d95848661113b565b610dd96111b1565b610e2e565b60508103610df057610d9584866111d9565b60608103610e0257610d958486611271565b60708103610e1457610d958486611283565b60808103610e2657610d9584866112c5565b610e2e6111b1565b818410610e3b5750610e41565b50610d71565b808311156104b6576040517f8129bbcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60348201915f908035608081901c916fffffffffffffffffffffffffffffffff909116906020013560601c82610ec8576370a0823160e01b5f523060045260205f60245f845afa505f5192505b610ed48382878961134a565b509650925082821115610ef0576307dd37f760e41b5f5260045ffd5b8593505050505b92915050565b60268101905f90803560601c90601481013560801c906024013560f01c6f8000000000000000000000000000000082168015610f3b57479250610f48565b6001600160781b03831692505b506040517f6a0c90ff00000000000000000000000000000000000000000000000000000000815260206004820152816024820152818660448301375f5f836044018386885af1610f9a573d5f5f3e3d5ffd5b50939093019392505050565b60038101905f903560f881901c9060e81c61ffff168161101f576103e8811015610fdc57610fd3846113de565b92505050610ef7565b6107d0811015610fef57610fd38461148e565b610bb881101561100257610fd384611533565b610fa081101561101557610fd3846115d2565b610fd38486611732565b6001820361106d576107d081101561103b57610fd38486611843565b610bb881101561104f57610fd38486611985565b610fa081101561106357610fd38486611a14565b610fd38486611af0565b600282036110b9576107d081101561108957610fd38486611be4565b610bb881101561109c57610fd384611d5b565b610fa08110156110af57610fd384611e79565b610fd3848661205a565b60038203611107576107d08110156110d557610fd384866122cc565b610bb88110156110e957610fd384866123cf565b610fa08110156110fd57610fd384866124e9565b610fd3848661268b565b6004820361111957610fd384866127b0565b6005820361112b57610fd38486612903565b6111336111b1565b505092915050565b60018201915f903560f81c8061115d576111558484612a45565b915050610ef7565b6001810361116e5761115584612ad5565b6003810361117f5761115584612bfb565b60048103611191576111558484612ce0565b600581036111a25761115584612d79565b6111aa6111b1565b5092915050565b7f398d4d32000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f5f5f5f5f86358060f81c94508060581c73ffffffffffffffffffffffffffffffffffffffff1693508060481c61ffff1692505060178701905081810196505f84036112375761122b83828489612dfb565b86945050505050610ef7565b6001840361124b5761122b83828489613086565b6002840361125f5761122b8382848961315b565b6112676111b1565b5050505092915050565b5f61127c83836132d1565b9392505050565b60018201915f903560f81c806112a35761129c84613321565b93506112bd565b600181036112b55761129c8484613408565b6112bd6111b1565b509192915050565b60018201915f903560f81c600481101561132857806112e85761115584846134c2565b600181036112f9576111558461356c565b6003810361130a57611155846135f0565b6002810361131b5761115584613646565b6113236111b1565b6111aa565b600481036113395761115584613692565b600581036111a25761115584613706565b60028101905f90819081903560f881901c9060f01c60ff168183036113b957805f0361139f5760288601958035606090811c9450601490910135901c6113948a8a868b858c613798565b975095506113cf9050565b6113ac89828a8a8a613959565b90975090955092506113cf565b6113c689838a8a8a6139ff565b90975090955092505b50849250509450945094915050565b5f813560601c601483013560801c602484013560601c603885013560601c604c86019550826001600160781b0316925082611430576370a0823160e01b5f523060045260205f60245f875afa505f5192505b6040517f617ba0370000000000000000000000000000000000000000000000000000000081528460048201528360248201528260448201525f60648201525f5f6084835f865af1611483573d5f5f3e3d5ffd5b509495945050505050565b5f813560601c601483013560801c602484013560601c603885013560601c604c86019550826001600160781b03169250826114e0576370a0823160e01b5f523060045260205f60245f875afa505f5192505b6040517fe8eda9df0000000000000000000000000000000000000000000000000000000081528460048201528360248201528260448201525f60648201525f5f6084835f865af1611483573d5f5f3e3d5ffd5b5f813560601c601483013560801c602484013560601c603885013560601c604c86019550826001600160781b0316925082611585576370a0823160e01b5f523060045260205f60245f875afa505f5192505b6040517f4232cd630000000000000000000000000000000000000000000000000000000081528260048201528460248201528360448201525f5f6064835f865af1611483573d5f5f3e3d5ffd5b5f813560601c601483013560801c602484013560601c603885013560601c604c86019550835f8114611677576001600160781b03841680611629576370a0823160e01b5f523060045260205f60245f895afa50505f515b6040517f23323e030000000000000000000000000000000000000000000000000000000081528460048201528160248201525f5f6044835f885af1611670573d5f5f3e3d5ffd5b5050611483565b6001600160781b038416806116895750475b7f1249c58b000000000000000000000000000000000000000000000000000000005f525f5f60045f84875af16116c1573d5f5f3e3d5ffd5b50308314611483576370a0823160e01b5f523060045260205f60245f855afa505f5160405163a9059cbb60e01b81528460048201528160248201526020816044835f885af191503d6001825114601f821116811517831661172457805f5f3e805ffd5b505050509495945050505050565b5f604051806101000190507f238d6579000000000000000000000000000000000000000000000000000000008152833560601c6004820152601484013560601c806024830152602885013560601c6044830152603c85013560601c606483015260508501358060801c6084840152806001600160781b03169050806117cd576370a0823160e01b5f523060045260205f60245f855afa50505f515b60a4830152506070840135606090811c60c483015261010060e4830152609a850194608481013590911c906098013560f01c80801561182157606086901b6101248501526014018187610138860137958101955b806101048501525f5f6101248301865f875af1611483573d9150815f5f3e815ffd5b5f823560601c601484013560801c60248501358060601c8160581c60ff169150603987013560601c604d88019750836001600160781b03169350604051835f81146118e3577fa415bcad0000000000000000000000000000000000000000000000000000000082528660048301528560248301528460448301525f60648301528860848301525f5f60a4845f875af16118de573d5f5f3e3d5ffd5b611933565b7f1d5d72370000000000000000000000000000000000000000000000000000000082528660048301528560248301525f60448301528860648301525f5f6084845f875af1611933573d5f5f3e3d5ffd5b503083146119785763a9059cbb60e01b81528260048201526020816044835f8a5af194503d93506001815114601f851116841517851694508461197857835f5f3e835ffd5b5096979650505050505050565b5f604051833560601c601485013560801c602486013560601c603887013560601c604c88019750826001600160781b031692507f264413180000000000000000000000000000000000000000000000000000000085528660048601528160248601528360448601528260648601525f5f6084875f855af1611a08573d5f5f3e3d5ffd5b50959695505050505050565b5f604051833560601c601485013560801c602486013560601c603887013560601c604c88019750826001600160781b031692507f856e5bb30000000000000000000000000000000000000000000000000000000085528660048601528260248601525f856044875f855af1611a8b573d5f5f3e3d5ffd5b5030811461148357828015611ae05763a9059cbb60e01b85528160048601528260248601526020856044875f885af13d6001875114601f8211168115178216915081611ad957805f5f3e805ffd5b5050611a08565b5f5f5f5f86865af1611a08575f5ffd5b5f6040517f50d8cd4b000000000000000000000000000000000000000000000000000000008152833560601c6004820152601484013560601c6024820152602884013560601c6044820152603c84013560601c606482015260508401358060801c6084830152806dffffffffffffffffffffffffffff16816f40000000000000000000000000000000165f8114611b92575f60a48501528160c4850152611b9f565b8160a48501525f60c48501525b50505060e481018390526070840135606090811c610104830152609885019460840135901c5f806101248482855af1611bdb573d805f5f3e805ffd5b50929392505050565b5f823560601c601484013560801c60248501358060601c8160581c60ff169150826001600160781b03169250825f8114611c32576dffffffffffffffffffffffffffff8114611c5357611c96565b6370a0823160e01b5f523060045260205f60245f885afa505f519350611c96565b6370a0823160e01b5f52306004526020600460245f885afa5060045193508660045260205f60245f60398c013560601c5afa505f5184811015611c94578094505b505b506040516061880197604d013560601c90838015611d03577f573ade810000000000000000000000000000000000000000000000000000000082528660048301528560248301528460448301528360648301525f5f6084845f875af1611cfe573d5f5f3e3d5ffd5b611d4d565b7f5ceae9c40000000000000000000000000000000000000000000000000000000082528660048301528560248301528360448301525f5f6064845f875af1611d4d573d5f5f3e3d5ffd5b509798975050505050505050565b5f813560601c601483013560801c602484013560601c603885013560601c604c86019550826001600160781b03169250825f8114611dad576dffffffffffffffffffffffffffff8114611dce57611e2b565b6370a0823160e01b5f523060045260205f60245f885afa505f519350611e2b565b6370a0823160e01b5f523060045260205f60245f885afa505f5193507f374c49b4000000000000000000000000000000000000000000000000000000005f528260045260205f60245f855afa505f5180851115611e29578094505b505b506040517f4232cd630000000000000000000000000000000000000000000000000000000081528260048201528460248201528360448201525f5f6064835f865af1611483573d5f5f3e3d5ffd5b5f813560601c601483013560801c602484013560601c603885013560601c604c86019550604051845f8114611f9a576001600160781b038516808015611ed3576dffffffffffffffffffffffffffff8114611ef457611f50565b6370a0823160e01b5f523060045260205f60245f8b5afa505f519150611f50565b6370a0823160e01b5f523060045260205f60245f8b5afa505f5191507f17bfdfbc000000000000000000000000000000000000000000000000000000005f528560045260205f60245f5f895af150815f511015611f50575f1991505b507f2608f8180000000000000000000000000000000000000000000000000000000083526004830185905260248301525f8260448183875af1611f95573d5f5f3e3d5ffd5b611a08565b6001600160781b038516808015611fc5576dffffffffffffffffffffffffffff8114611fcd57612010565b479150612010565b4791507f17bfdfbc000000000000000000000000000000000000000000000000000000005f528560045260205f60245f5f895af150815f511015612010575f1991505b507fe5974619000000000000000000000000000000000000000000000000000000005f52846004525f5f60245f84885af161204d573d5f5f3e3d5ffd5b5050959695505050505050565b5f6040516101008101843560601c806004830152601486013560601c6024830152602886013560601c6044830152603c86013560601c6064830152605086013593508360801c6084830152836001600160781b0316607087013560601c608488013560601c826dffffffffffffffffffffffffffff811461211857801561222e576f4000000000000000000000000000000088168015612105575f60a48801528460c4880152612112565b8460a48801525f60c48801525b5061225b565b6370a0823160e01b5f523060045260205f60245f885afa612137575f5ffd5b5f51935063151c1ade601c8703525f5f60a4885f865af1612156575f5ffd5b60a060048701207f5c60e39a000000000000000000000000000000000000000000000000000000005f528060045260808860245f865afa612195575f5ffd5b604088015160608901517f93c52062000000000000000000000000000000000000000000000000000000008a528260048b01528560248b015260408a60448c885afa6121df575f5ffd5b60208a01519250620f4240810160018381018502909201620f423f010490878211908114612218575f60a48b01528360c48b0152612225565b8760a48b01525f60c48b01525b5050505061225b565b6370a0823160e01b5f523060045260205f60245f885afa61224d575f5ffd5b5f5160a48701525f60c48701525b5060e48501829052610120610104860152609a8901986098013560f01c955085935083156122a0576014840193508760601b6101448601528589610158870137978501975b6320b76e81601c860352836101248601525f5f6101448601875f855af1611978573d9550855f5f3e855ffd5b5f604051833560601c601485013560801c602486013560601c816001600160781b03169150603887013560601c604c88019750826dffffffffffffffffffffffffffff8103612332576370a0823160e01b5f528760045260205f60245f855afa505f5193505b506323b872dd60e01b855286600486015230602486015282604486015260205f6064875f855af190503d60015f5114601f821116811517821691508161237a57805f5f3e805ffd5b50507f69328dec00000000000000000000000000000000000000000000000000000000845260048401929092526024830152604482015260148401933560601c5f8060648482855af1611bdb573d5f5f3e3d5ffd5b5f604051833560601c601485013560801c60248601358060601c603988013560601c604d89019850836001600160781b031693506dffffffffffffffffffffffffffff8403612499578260581c60ff165f8114612447576370a0823160e01b5f528860045260205f60245f855afa505f519450612497565b7f2b92a07d000000000000000000000000000000000000000000000000000000008752886004880152856024880152602087604489855afa5086516fffffffffffffffffffffffffffffffff1694505b505b7f264413180000000000000000000000000000000000000000000000000000000086528760048701528160248701528460448701528360648701525f5f6084885f855af1611978573d5f5f3e3d5ffd5b5f604051833560601c601485013560801c602486013560601c603887013560601c604c88019750826001600160781b031692506dffffffffffffffffffffffffffff8303612568577f3af9e669000000000000000000000000000000000000000000000000000000005f528660045260205f60245f5f855af1505f5192505b7fbd6d894d000000000000000000000000000000000000000000000000000000005f5260205f60245f5f855af1505f51600181670de0b6b3a7640000860204016370a0823160e01b5f528860045260205f60245f865afa505f519150818111156125cf5750805b6323b872dd60e01b87528860048801523060248801528060448801526020876064895f875af1915081612604573d5f5f3e3d5ffd5b7fdb006a75000000000000000000000000000000000000000000000000000000005f5280600452505f5f60245f5f865af1612641573d5f5f3e3d5ffd5b3083146119785763a9059cbb60e01b86528260048701528360248701526020866044885f895af190503d91506001865114601f831116821517811690508061197857815f5f3e815ffd5b5f6040517f8720316d000000000000000000000000000000000000000000000000000000008152833560601c6004820152601484013560601c6024820152602884013560601c6044820152603c84013560601c606482015260508401358060801c60848301528360c4830152607085013560601c60e4830152608485013560601c816001600160781b031691506dffffffffffffffffffffffffffff820361278157610118830160a060048501207f93c5206200000000000000000000000000000000000000000000000000000000825280600483015250856024820152606081604483855afa61277a575f5ffd5b6040015191505b8160a48401526098860195505f5f610104855f855af16127a6573d9150815f5f3e815ffd5b5093949350505050565b5f604051806080019050833560601c7fa99aad89000000000000000000000000000000000000000000000000000000008252806004830152601485013560601c6024830152602885013560601c6044830152603c85013560601c606483015260508501358060801c6084840152806dffffffffffffffffffffffffffff16816f40000000000000000000000000000000165f8114612859575f60a48601528160c4860152612888565b8161287b576370a0823160e01b5f523060045260205f60245f875afa505f5191505b8160a48601525f60c48601525b50505050607084013560601c608485013560601c609886013560f01c61ffff1680609a880197508360e4860152610120610104860152805f18156128e157606087901b6101448601526014018188610158870137968101965b806101248601525f5f6101448301875f875af1611a08573d9350835f5f3e835ffd5b5f6040516101008101843560601c6004820152601485013560601c6024820152602885013560601c6044820152603c85013560601c606482015260508501358060801c6084830152806001600160781b03168560e4840152607087013560601c610104840152608487013560601c609888019750826f40000000000000000000000000000000165f81146129a2575f60a48601528260c4860152612a21565b826dffffffffffffffffffffffffffff81146129c9578360a48701525f60c4870152612a1f565b60a060048701207f93c5206200000000000000000000000000000000000000000000000000000000885280600489015250886024880152602087604489865afa612a11575f5ffd5b5f60a4870152865160c48701525b505b50635c2bea49601c8503525f5f610124865f855af1611a08573d9450845f5f3e845ffd5b5f823560601c601484013560601c602885013560801c80612a7c576370a0823160e01b5f528460045260205f60245f865afa50505f515b6040516323b872dd60e01b81528560048201528260248201528160448201526020816064835f885af193503d92506001815114601f8411168315178416612ac557825f5f3e825ffd5b5050506038939093019392505050565b5f813560601c601483013560601c60198401358060801c60ff16816fffffffffffffffffffffffffffffffff1691505f84155f8114612b5e57828015612b1d57849250612b37565b47925084831015612b37576307dd37f760e41b5f5260045ffd5b508115612b59575f5f5f5f85895af1612b5957633d2cec6f60e21b5f5260045ffd5b612bea565b828015612b6d57849250612ba0565b6370a0823160e01b5f523060045260205f60245f8a5afa505f51925084831015612ba0576307dd37f760e41b5f5260045ffd5b508115612bea5760405163a9059cbb60e01b81528560048201528260248201526020816044835f8b5af13d6001835114601f8211168115178216612be657805f5f3e805ffd5b5050505b505050603994909401949350505050565b5f8135606090811c906014840135901c60198401356001600160781b0381169060801c60ff1684818015612c3157839150612c64565b6370a0823160e01b5f523060045260205f60245f895afa505f51915083821015612c64576307dd37f760e41b5f5260045ffd5b508015612cd0577f2e1a7d4d000000000000000000000000000000000000000000000000000000005f52806004525f5f60245f5f895af1612cae57633d2cec6f60e21b5f5260045ffd5b308414612cd0575f5f5f5f84885af1612cd057633d2cec6f60e21b5f5260045ffd5b5050506039939093019392505050565b5f823560601c601484013560601c602885013560801c80612d17576370a0823160e01b5f528460045260205f60245f865afa50505f515b6040517f36c785160000000000000000000000000000000000000000000000000000000081528560048201528260248201528160448201528360648201525f5f6084835f6e22d473030f116ddee9f6b43ac78ba35af1612ac5573d5f5f3e3d5ffd5b5f813560601c601483013560601c815f527f1aae13105d9b6581c36534caba5708726e5ea1e03175e823c989a5756966d1f360205260405f20602052805f5260405f208054612ded5760405163095ea7b360e01b81528260048201525f1960248201526020816044835f885af15050600181555b505050602891909101919050565b6040515f8360648114612e405760488114612edc5760608114612f82577f68275857000000000000000000000000000000000000000000000000000000008352600483fd5b7fd505accf000000000000000000000000000000000000000000000000000000008352836004840152306024840152602086013560e01c604487013560208860448701376001820360648601528060ff1c601b01608486015260206024890160a48701377f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660c4850152505f8060e485828b5af19150613070565b7f8fcbaf0c000000000000000000000000000000000000000000000000000000008352836004840152306024840152600486013560e01c6028870135873560e01c6044860152600182036064860152600160848601528060ff1c601b0160a486015260206008890160c48701377f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e4850152505f8061010485828b5af19150613070565b7f2b67b57000000000000000000000000000000000000000000000000000000000835283600484015286602484015260148660508501376001601487013560e01c0365ffffffffffff166064840152601886013560e01c60848401523060a48401526001601c87013560e01c0365ffffffffffff1660c484015261010060e48401526041610104840152604086013560208088016101248601377f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8116610144850152601b60ff82901c01610164850153505f5f610165855f6e22d473030f116ddee9f6b43ac78ba35af191505b508061307e573d5f5f3e3d5ffd5b505050505050565b60405182606481146130ba577f68275857000000000000000000000000000000000000000000000000000000008252600482fd5b7f0b52d558000000000000000000000000000000000000000000000000000000008252826004830152306024830152602085013560e01c604486013560208760448601376001820360648501528060ff1c601b01608485015260206024880160a48601377f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660c4840152505f8060e484828a5af161307e573d5f5f3e3d5ffd5b604051826064811461318f577f68275857000000000000000000000000000000000000000000000000000000008252600482fd5b84357f4000000000000000000000000000000000000000000000000000000000000000811680156131e2577f8069218f000000000000000000000000000000000000000000000000000000008452613206565b7fbb24d9940000000000000000000000000000000000000000000000000000000084525b50836004840152306024840152602086013560e01c6044870135827f80000000000000000000000000000000000000000000000000000000000000001615156044860152827effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660648601526001820360848601528060ff1c601b0160a486015260206024890160c48701377f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660e4850152505f90508061010484828a5af161307e573d5f5f3e3d5ffd5b60018201915f903560f81c806132eb576111558484613a36565b600281036132fd576111558484613ad4565b6003810361330f576111558484613b70565b600181036111a2576111558484613c4e565b60405160388201915f91908035606090811c91601481013590911c906028013560801c6001600160781b0381166f400000000000000000000000000000008216801561338f577f94bf804d0000000000000000000000000000000000000000000000000000000086526133d4565b7f6e553f65000000000000000000000000000000000000000000000000000000008652816133d4576370a0823160e01b5f523060045260205f60245f885afa505f5191505b50600485015250843560601c60248401525f8060448582855af16133fa573d5f5f3e3d5ffd5b505050601491909101919050565b60405160248301925f9190803560601c906014013560801c6001600160781b0381166f400000000000000000000000000000008216801561346b577fba08765200000000000000000000000000000000000000000000000000000000855261348f565b7fb460af940000000000000000000000000000000000000000000000000000000085525b50600484015250843560601c6024830152604482018490526014909401935f8060648482855af1611bdb573d5f5f3e3d5ffd5b5f82358060501c61ffff168160601c91506040517f48c89491000000000000000000000000000000000000000000000000000000008152602060048201526058820160248201527f480cf7ef000000000000000000000000000000000000000000000000000000006044820152602060488201526014820160688201528460601b60888201526016860195508186609c8301375f5f609c8401835f875af1610f9a573d5f5f3e3d5ffd5b5f813560601c826014019250823560601c836014019350833560601c846014019450843560801c6040517f0b0d9c090000000000000000000000000000000000000000000000000000000081528360048201528260248201528160448201525f5f6064835f895af16135e0573d5f5f3e3d5ffd5b5050506010939093019392505050565b7fa5841194000000000000000000000000000000000000000000000000000000005f9081526014820135606090811c600452602883019235901c818060248180855af161363f573d5f5f3e3d5ffd5b5090919050565b7f11da60b4000000000000000000000000000000000000000000000000000000005f9081526024820191803560601c906014013560801c828060048184865af16112bd573d5f5f3e3d5ffd5b5f813560601c826014019250823560601c836014019350833560601c846014019450843560801c6040517fae6393290000000000000000000000000000000000000000000000000000000081528360048201528260248201528160448201525f5f6064835f895af16135e0573d5f5f3e3d5ffd5b60288101905f908035606090811c9160140135901c833560801c7fffffffffffffffffffffffffffffffff00000000000000000000000000000001810161374b57505f195b8460100194506040517f15afd4090000000000000000000000000000000000000000000000000000000081528260048201528160248201525f5f6044835f885af16127a6573d5f5f3e3d5ffd5b60018101905f9081903560f81c603f811161382757806137ca576137c089898988888b613d82565b925092505061394e565b600281036137e0576137c089898988888b613eb2565b600181036137f6576137c089898988888b6141e3565b6005810361380c576137c089898988888b61446c565b60038103613822576137c089898988888b6145cb565b613926565b607f811161389c5760408103613845576137c088888b888a896147ce565b6041810361385a576137c0888a878988614b3c565b60428103613870576137c088888b888a89614c9d565b60508103613886576137c0898989888a89614dd8565b605a8103613822576137c0898989888a89614ef2565b60bf811161391057608081036138ba576137c088888b888a89615002565b608181036138d0576137c089898988888b615173565b608c81036138e5576137c0898987898861536b565b609681036138fb576137c0898989888a8961549b565b60a08103613822576137c089898789886156ad565b60fe8103613926576137c088888b888a896157dd565b7f7948739e000000000000000000000000000000000000000000000000000000005f5260045ffd5b965096945050505050565b5f5f5f865f0361397b5761396f8887878761134a565b919950945090506139f1565b600287028401933560801c5f808a5b5f8b8314600181146139b05761ffff8e87601087026070031c61ffff16020491506139b4565b8291505b506001830192505f6139c8828d8d8d61134a565b909b5097509485019490508c8411156139e25750506139ea565b50900361398a565b5090995050505b969792969550919350505050565b845f84815b613a108483888861134a565b9096509094509150808814613a2757600101613a04565b50839150955095509592505050565b5f823560601c601484013560601c60288501358060801c8160701c61ffff169150603a870196506040517fe0232b42000000000000000000000000000000000000000000000000000000008152846004820152816024820152606060448201528260140160648201528660601b6084820152828860988301375f5f60988501835f885af1613ac6573d5f5f3e3d5ffd5b505094909401949350505050565b5f823560601c601484013560601c60288501358060801c8160701c61ffff169150603a870196506040517f42b0b77c00000000000000000000000000000000000000000000000000000000815230600482015284602482015281604482015260a060648201525f60848201528260140160a48201528660601b60c4820152828860d88301375f5f60d88501835f885af1613ac6573d5f5f3e3d5ffd5b5f823560601c601484013560601c60288501358060801c8160701c61ffff169150603a870196506040517fab9c4b5d00000000000000000000000000000000000000000000000000000000815230600482015260e06024820152610120604482015261016060648201525f60848201526101a060a48201525f60c4820152600160e48201528461010482015260016101248201528161014482015260016101648201525f610184820152826014016101a48201528660601b6101c482015282886101d88301375f5f6101d88501835f885af1613ac6573d5f5f3e3d5ffd5b5f823560601c60148401358060801c8160701c61ffff165f8360681c60ff165f8114613c805760028114613c9c575f5ffd5b73ba12222222228d8ba445958a75a0704d566bf2c89150613cb4565b73d315a9c38ec871068fec378e4ce78af528c7629391505b5060268801975060405193507f5c38449e0000000000000000000000000000000000000000000000000000000084523060048501526080602485015260c060448501526101006064850152600160848501528460a4850152600160c48501528260e4850152816014016101048501528660601b610124850152818861013886013760017f9fc772e484014aadda1a3916bdcbf34dd65a99500e92cb6faae6cb2496083ccb5d5f5f6101388401865f855af1613d74573d9450845f5f3e845ffd5b509590950195945050505050565b5f5f60405184356014860195508060381c61ffff168160601c9150888a107f128acb080000000000000000000000000000000000000000000000000000000084528860048501528060248501528b604485015260a06084850152604182018060a48601528760601b60c48601528b60601b60d88601528a60601b60ec8601526005830189610100870137818015613e42576401000276a460648701526040868360e401885f895af1613e36573d5f5f3e3d5ffd5b60208601519750613e79565b73fffd8963efd1fc6a506488495d951d5263988d2560648701526020868360e401885f895af1613e74573d5f5f3e3d5ffd5b855197505b505050845f0394506002811060018114613e995796810160050196613ea0565b6005880197505b50869350505050965096945050505050565b5f5f60405160148501358060281c60ff1692508060181c61ffff167ff3cd914c0000000000000000000000000000000000000000000000000000000083528160481c62ffffff1660448401528160301c62ffffff166064840152863560601c8060848501528260601c9250610120610104850152816101248501528b5f0360c4850152603188019750815f1815613f4c5781886101448601375b898b1095508560a48501528560018114613f8b578a60048601528b602486015273fffd8963efd1fc6a506488495d951d5263988d2560e4860152613fa3565b8b60048601528a60248601526401000276a460e48601525b5060205f8361014401865f875af1613fbd573d5f5f3e3d5ffd5b801560018114614034577f9bf6645f0000000000000000000000000000000000000000000000000000000085526020600486015260026024860152305f528b60205260405f2060448601528a60205260405f206064860152608085608487875afa5060408501515f039c5060608501519650614072565b5f519c50866001811461405357600f8e900b5f039d60801c9750614070565b60808e901d5f039d6fffffffffffffffffffffffffffffffff1697505b505b5050507f0b0d9c090000000000000000000000000000000000000000000000000000000082528760048301528660248301528360448301525f5f6064845f855af16140bf573d5f5f3e3d5ffd5b60028310156141d357881580156140d8578a935061419a565b7fa5841194000000000000000000000000000000000000000000000000000000005f52896004525f5f60245f5f865af1614114573d5f5f3e3d5ffd5b838015614128576001811461415557614178565b6323b872dd60e01b84528660048501528260248501528b604485015260205f6064865f8f5af19450614178565b63a9059cbb60e01b84528260048501528b602485015260205f6044865f8f5af194505b503d60015f5114601f821116811517851661419557805f5f3e805ffd5b505f93505b507f11da60b4000000000000000000000000000000000000000000000000000000005f525f5f60045f86855af16141d3573d5f5f3e3d5ffd5b5084915050965096945050505050565b5f5f60405184358060381c61ffff16925087891060808260481c60ff16106001811461425c578260601c92507ff140a35a0000000000000000000000000000000000000000000000000000000084528b60048501528a602485015260205f604486865afa614253573d5f5f3e3d5ffd5b5f5195506142d7565b61ffff8360501c168360601c93507f0902f1ac000000000000000000000000000000000000000000000000000000005f5260405f60045f875afa6142a2573d5f5f3e3d5ffd5b5f83600181146142ba5760205191505f5198506142c4565b60205198505f5191505b5061271002908d02908101960295909504945b507f022c0d9f000000000000000000000000000000000000000000000000000000008352808015614313575f6004850152856024850152614320565b8560048501525f60248501525b505086604483015260806064830152600383105f811461440b5783801561434e576001811461439e576143e4565b60c4840194506323b872dd60e01b85528660048601528260248601528b604486015260205f6064875f8f5af194503d60015f5114601f821116811517861661439857805f5f3e805ffd5b506143e4565b60c48401945063a9059cbb60e01b85528260048601528b602486015260205f6044875f8f5af194503d60015f5114601f82111681151786166143e257805f5f3e805ffd5b505b505f60848401525f5f60a4855f865af1614400573d5f5f3e3d5ffd5b60198701935061445e565b603f840160848401528560601b60a48401528960601b60b88401528860601b60cc840152866016019650600384019350838760e08501375f5f8560e001855f865af1614459573d5f5f3e3d5ffd5b928601925b505050965096945050505050565b5f5f60405184356014860195508060381c61ffff168160601c9150888a105f8114614526577f857f812f0000000000000000000000000000000000000000000000000000000084528860048501528b6024850152620c34ff5f03604485015260806064850152604182018060848601528760601b60a48601528b60601b60b88601528a60601b60cc860152600583018960e08701376040858260c401875f885af1614519573d5f5f3e3d5ffd5b50602084015195506145b2565b7f2c4812520000000000000000000000000000000000000000000000000000000084528860048501528b6024850152620c34ff604485015260806064850152604182018060848601528760601b60a48601528b60601b60b88601528a60601b60cc860152600583018960e08701376020858260c401875f885af16145ac573d5f5f3e3d5ffd5b50835195505b506002811060018114613e995796810160050196613ea0565b5f5f604051843561ffff8160501c168160381c61ffff165f81146145f55760018114614644575f5ffd5b8260601c92506323b872dd60e01b84528660048501528260248501528b604485015260205f6064865f8f5af13d60015f5114601f821116811517821661463d57805f5f3e805ffd5b50506146a9565b8260601c92507f36c785160000000000000000000000000000000000000000000000000000000084528660048501528260248501528b60448501528a60648501525f5f6084865f6e22d473030f116ddee9f6b43ac78ba35af16146a9573d5f5f3e3d5ffd5b50888a107f0902f1ac000000000000000000000000000000000000000000000000000000005f5260405f60045f865afa6146e5573d5f5f3e3d5ffd5b60403d10156146f2575f5ffd5b5f816001811461470a5760205191505f519750614714565b5f51915060205197505b506370a0823160e01b5f528360045260205f60245f8f5afa505f517f022c0d9f0000000000000000000000000000000000000000000000000000000086528190039c5061271002918c029182019582029590950494808015614781575f600486015286602486015261478e565b8660048601525f60248601525b5050876044840152608060648401525f60848401525f5f60a4855f865af16147b8573d5f5f3e3d5ffd5b5092996019959095019850939650505050505050565b5f8135816147de858a8985615a56565b905060405160ff8360501c1660248201528760448201525f60648201525f60ff8460481c165f811461484e576001811461489757600281146148db5760038114614924576004811461496857600581146149b157600681146149f55760078114614a3e5760c88114614a82575f5ffd5b7fddc1f59d00000000000000000000000000000000000000000000000000000000835260ff8560581c16600484015288608484015260208360a4855f885af191505f9450614ac9565b7f3df0212400000000000000000000000000000000000000000000000000000000835260ff8560581c1660048401526020836084855f885af191505f199450614ac9565b7fa64833a000000000000000000000000000000000000000000000000000000000835260ff8560581c16600484015288608484015260208360a4855f885af191505f9450614ac9565b7f5b41b90800000000000000000000000000000000000000000000000000000000835260ff8560581c1660048401526020836084855f885af191505f199450614ac9565b7f44ee198600000000000000000000000000000000000000000000000000000000835260ff8560581c16600484015288608484015260208360a4855f885af191505f9450614ac9565b7fa6417ed600000000000000000000000000000000000000000000000000000000835260ff8560581c1660048401526020836084855f885af191505f199450614ac9565b7fe2ad025a00000000000000000000000000000000000000000000000000000000835260ff8560581c16600484015288608484015260208360a4855f885af191505f9450614ac9565b7f65b2489b00000000000000000000000000000000000000000000000000000000835260ff8560581c1660048401526020836084855f885af191505f199450614ac9565b7f9169558600000000000000000000000000000000000000000000000000000000835260ff8560581c1660048401525f19608484015260208360a4855f885af191505f1994505b5080614ad7573d5f5f3e3d5ffd5b81519450308818841615614b285763a9059cbb60e01b825287600483015284602483015260205f6044845f8e5af190503d60015f5114601f8211168115178216915081614b2657805f5f3e805ffd5b505b505060198401915050965096945050505050565b5f5f604051833591508160601c8260381c61ffff1693506002841015614be1575f848015614b715760018114614b9e57614bc1565b6323b872dd60e01b845287600485015282602485015289604485015260205f6064865f8f5af19150614bc1565b63a9059cbb60e01b845282600485015289602485015260205f6044865f8f5af191505b503d60015f5114601f8211168115178216614bde57805f5f3e805ffd5b50505b60ff8360481c165f8114614bfb5760028114614c23575f5ffd5b7fafb43012000000000000000000000000000000000000000000000000000000008352614c47565b7f767691e70000000000000000000000000000000000000000000000000000000083525b5060ff8360581c16600483015260ff8360501c1660248301528760448301525f606483015286608483015260205f60a4845f855af1614c88573d5f5f3e3d5ffd5b50505f51915050601982019550959350505050565b5f813581614cad858a8985615a56565b90506040516370a0823160e01b5f523060045260208160245f8c5afa508051935060ff8360481c1660038114614ce95760058114614d11575f5ffd5b7f5b41b908000000000000000000000000000000000000000000000000000000008252614d35565b7f65b2489b0000000000000000000000000000000000000000000000000000000082525b5060ff8360581c16600482015260ff8360501c1660248201528760448201525f60648201525f5f6084835f865af1614d6f573d5f5f3e3d5ffd5b60205f60245f8c5afa50835f5103935030871815614dc65763a9059cbb60e01b81528660048201528360248201526020816044835f8d5af13d6001835114601f8211168115178216915081614b2657805f5f3e805ffd5b50505060198201965096945050505050565b5f5f604051833592508260581c60ff1691508260601c92506002821060018103614e81575f838015614e115760018114614e3e57614e61565b6323b872dd60e01b84528760048501528560248501528b604485015260205f6064865f8f5af19150614e61565b63a9059cbb60e01b84528560048501528b602485015260205f6044865f8f5af191505b503d60015f5114601f8211168115178216614e7e57805f5f3e805ffd5b50505b507f7dc203820000000000000000000000000000000000000000000000000000000081528760048201528660248201528860448201525f60648201528560848201525f60a482015260208160c4835f875af1614edf573d5f5f3e3d5ffd5b5191505060158201965096945050505050565b5f5f60405183358060601c8160581c60ff165f8114614f185760018114614f6157614fa0565b6323b872dd60e01b84528760048501528160248501528b604485015260205f6064865f8f5af13d60015f5114601f8211168115178216614f5a57805f5f3e805ffd5b5050614fa0565b63a9059cbb60e01b84528160048501528b602485015260205f6044865f8f5af13d60015f5114601f8211168115178216614f9d57805f5f3e805ffd5b50505b507f933162120000000000000000000000000000000000000000000000000000000083528960048401528860248401528760448401526020836064855f855af1614fec573d5f5f3e3d5ffd5b5050519860159390930197509195505050505050565b5f5f826020013590506040518160581c60ff1661505e576323b872dd60e01b815284600482015230602482015286604482015260205f6064835f8d5af13d60015f5114601f821116811517821661505b57805f5f3e805ffd5b50505b8160601c895f527f1aae13105d9b6581c36534caba5708726e5ea1e03175e823c989a5756966d1f360205260405f20602052805f5260405f2080546150c45763095ea7b360e01b83528160048401525f1960248401526020836044855f8f5af150600181555b507f52bbbe2900000000000000000000000000000000000000000000000000000000825260e060048301523060248301525f60448301528660648301525f60848301525f60a48301525f1960c4830152843560e48301525f61010483015289610124830152886101448301528761016483015260c06101848301525f6101a483015260205f6101c4845f855af161515d573d5f5f3e3d5ffd5b50505f5191505060358201965096945050505050565b5f5f604051843560601c6084820152843560601c60148601955085356017870196508060581c60ff1693508060481c61ffff168160601c91507f2bfb780c0000000000000000000000000000000000000000000000000000000084525f60048501528260248501528a60448501528960648501528b6084850152600160a485015260e060c48501528060e4850152805f1815615216578088610104860137968701965b6060848261010401865f865af161522f573d5f5f3e3d5ffd5b5060208301519a50604083015194507fae6393290000000000000000000000000000000000000000000000000000000083528860048401528760248401528460448401525f5f6064855f855af1615288573d5f5f3e3d5ffd5b600284101561535a575f91508380156152a857600181146152d5576152f8565b6323b872dd60e01b84528660048501528160248501528b604485015260205f6064865f8f5af192506152f8565b63a9059cbb60e01b84528160048501528b602485015260205f6044865f8f5af192505b503d60015f5114601f821116811517831661531557805f5f3e805ffd5b507f15afd4090000000000000000000000000000000000000000000000000000000083528960048401528a60248401525f5f6044855f855af161535a573d5f5f3e3d5ffd5b508592505050965096945050505050565b5f5f60405183358060601c8160501c60ff169350600284101561540d575f84801561539d57600181146153ca576153ed565b6323b872dd60e01b85528860048601528260248601528b604486015260205f6064875f8f5af191506153ed565b63a9059cbb60e01b85528260048601528b602486015260205f6044875f8f5af191505b503d60015f5114601f821116811517821661540a57805f5f3e805ffd5b50505b8160581c60ff1691507f53c059a00000000000000000000000000000000000000000000000000000000083528160048401528760248401526020836044855f855af161545b573d5f5f3e3d5ffd5b5080801561546f57825160801c9450615486565b6fffffffffffffffffffffffffffffffff83511694505b50929860169490940197509295505050505050565b5f5f5f6154aa89898787615b1d565b60405192955093509150600383106001811461561c5761010082017fd0a494e40000000000000000000000000000000000000000000000000000000081528b60248401528560581c60ff165f811461556a577f66410a210000000000000000000000000000000000000000000000000000000084525f600485015260205f604486885afa61553a573d5f5f3e3d5ffd5b5f5196508660048301525f60248301528860601b60a48301528a60601b60b88301528b60601b60cc8301526155d4565b7f79a048760000000000000000000000000000000000000000000000000000000084525f600485015260205f604486885afa6155a8573d5f5f3e3d5ffd5b5f5196505f60048301528660248301528860601b60a48301528b60601b60b88301528a60601b60cc8301525b5088604482015260806064820152846040016084820152600485018760150160e08301375f5f8660e401835f885af161560f573d5f5f3e3d5ffd5b509483016019019461569c565b8460581c60ff165f8114615652577fdd93f59a000000000000000000000000000000000000000000000000000000005f52615676565b7fbd6015b4000000000000000000000000000000000000000000000000000000005f525b508760045260205f60245f5f875af1615691573d5f5f3e3d5ffd5b5f5194508560190195505b508492505050965096945050505050565b5f5f82356040518160581c60ff1692508160601c91506002831015615751575f8380156156e1576001811461570e57615731565b6323b872dd60e01b83528760048401528360248401528a604484015260205f6064855f8e5af19150615731565b63a9059cbb60e01b83528360048401528a602484015260205f6044855f8e5af191505b503d60015f5114601f821116811517821661574e57805f5f3e805ffd5b50505b7f7132bb7f000000000000000000000000000000000000000000000000000000008152608060048201525f60248201525f60448201526101006064820152606060848201528760a48201528660c48201525f60e48201525f610104820152604081610124835f865af16157c6573d5f5f3e3d5ffd5b602001519860159490940197509295505050505050565b5f5f8235905060405160ff8260f01c16615836576323b872dd60e01b815284600482015230602482015286604482015260205f6064835f8d5af13d60015f5114601f821116811517821661583357805f5f3e805ffd5b50505b8160f81c5f811461589d5760018114615997577fba08765200000000000000000000000000000000000000000000000000000000825287600483015286602483015230604483015260205f6064845f8e5af1615894573d5f5f3e3d5ffd5b5f519350615a44565b87935089156001811461592d577f2e1a7d4d000000000000000000000000000000000000000000000000000000005f52886004525f5f60245f5f8f5af1615906577fc30d93ce000000000000000000000000000000000000000000000000000000005f5260045ffd5b308814615928575f5f5f5f8c8c5af161592857633d2cec6f60e21b5f5260045ffd5b615991565b5f5f5f5f8c8e5af161594857633d2cec6f60e21b5f5260045ffd5b3088146159915763a9059cbb60e01b835287600484015288602484015260205f6044855f8e5af13d60015f5114601f821116811517821691508161598e57805f5f3e805ffd5b50505b50615a44565b895f527f1aae13105d9b6581c36534caba5708726e5ea1e03175e823c989a5756966d1f360205260405f20602052885f5260405f2080546159f95763095ea7b360e01b83528960048401525f1960248401526020836044855f8f5af150600181555b507f6e553f6500000000000000000000000000000000000000000000000000000000825287600483015286602483015260205f6044845f8d5af1615a3f573d5f5f3e3d5ffd5b5f5193505b50505060028201965096945050505050565b5f6040518260601c9150845f527f1aae13105d9b6581c36534caba5708726e5ea1e03175e823c989a5756966d1f360205260405f20602052815f5260405f208054615ac25763095ea7b360e01b82528260048301525f1960248301526020826044845f8a5af150600181555b508260381c61ffff16615b14576323b872dd60e01b815285600482015230602482015283604482015260205f6064835f895af13d60015f5114601f8211168115178216615b1157805f5f3e805ffd5b50505b50949350505050565b604051813590606082901c9061ffff603884901c16906002821015615bc1575f828015615b515760018114615b7e57615ba1565b6323b872dd60e01b835287600484015284602484015289604484015260205f6064855f8d5af19150615ba1565b63a9059cbb60e01b835284600484015289602484015260205f6044855f8d5af191505b503d60015f5114601f8211168115178216615bbe57805f5f3e805ffd5b50505b509450945094915050565b5f5f83601f840112615bdc575f5ffd5b50813567ffffffffffffffff811115615bf3575f5ffd5b602083019150836020828501011115615c0a575f5ffd5b9250929050565b5f5f5f60408486031215615c23575f5ffd5b83359250602084013567ffffffffffffffff811115615c40575f5ffd5b615c4c86828701615bcc565b9497909650939450505050565b5f5f60208385031215615c6a575f5ffd5b823567ffffffffffffffff811115615c80575f5ffd5b615c8c85828601615bcc565b90969095509350505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114615cbb575f5ffd5b919050565b5f5f5f5f5f5f60a08789031215615cd5575f5ffd5b615cde87615c98565b95506020870135945060408701359350615cfa60608801615c98565b9250608087013567ffffffffffffffff811115615d15575f5ffd5b615d2189828a01615bcc565b979a9699509497509295939492505050565b5f5f83601f840112615d43575f5ffd5b50813567ffffffffffffffff811115615d5a575f5ffd5b6020830191508360208260051b8501011115615c0a575f5ffd5b5f5f5f5f5f5f5f5f5f60a08a8c031215615d8c575f5ffd5b893567ffffffffffffffff811115615da2575f5ffd5b615dae8c828d01615d33565b909a5098505060208a013567ffffffffffffffff811115615dcd575f5ffd5b615dd98c828d01615d33565b90985096505060408a013567ffffffffffffffff811115615df8575f5ffd5b615e048c828d01615d33565b9096509450615e17905060608b01615c98565b925060808a013567ffffffffffffffff811115615e32575f5ffd5b615e3e8c828d01615bcc565b915080935050809150509295985092959850929598565b5f5f5f5f5f5f5f5f6080898b031215615e6c575f5ffd5b883567ffffffffffffffff811115615e82575f5ffd5b615e8e8b828c01615d33565b909950975050602089013567ffffffffffffffff811115615ead575f5ffd5b615eb98b828c01615d33565b909750955050604089013567ffffffffffffffff811115615ed8575f5ffd5b615ee48b828c01615d33565b909550935050606089013567ffffffffffffffff811115615f03575f5ffd5b615f0f8b828c01615bcc565b999c989b509699509497939692959450505056fea2646970667358221220d06fb55a49c42064cf92c6df176a74154574c8fbe0657b0c32a9ee99e35a0d4864736f6c634300081c0033