3 txs
9 calls
constructor
constructor(address _undyHq, address _tempGov, uint256 _minConfigTimeLock, uint256 _maxConfigTimeLock)
functions
actionId
viewfunction actionId() view returns (uint256)
actionTimeLock
viewfunction actionTimeLock() view returns (uint256)
actionType
viewfunction actionType(uint256 arg0) view returns (uint256)
canConfirmAction
viewfunction canConfirmAction(uint256 _actionId) view returns (bool)
canGovern
viewfunction canGovern(address _addr) view returns (bool)
expiration
viewfunction expiration() view returns (uint256)
getActionConfirmationBlock
viewfunction getActionConfirmationBlock(uint256 _actionId) view returns (uint256)
getAddys
viewfunction getAddys() view returns (tuple)
getGovernors
viewfunction getGovernors() view returns (address[])
getUndyHq
viewfunction getUndyHq() view returns (address)
getUndyHqFromGov
viewfunction getUndyHqFromGov() view returns (address)
govChangeTimeLock
viewfunction govChangeTimeLock() view returns (uint256)
governance
viewfunction governance() view returns (address)
hasPendingAction
viewfunction hasPendingAction(uint256 _actionId) view returns (bool)
hasPendingGovChange
viewfunction hasPendingGovChange() view returns (bool)
isExpired
viewfunction isExpired(uint256 _actionId) view returns (bool)
isValidActionTimeLock
viewfunction isValidActionTimeLock(uint256 _newTimeLock) view returns (bool)
isValidGovTimeLock
viewfunction isValidGovTimeLock(uint256 _newTimeLock) view returns (bool)
maxActionTimeLock
viewfunction maxActionTimeLock() view returns (uint256)
maxGovChangeTimeLock
viewfunction maxGovChangeTimeLock() view returns (uint256)
minActionTimeLock
viewfunction minActionTimeLock() view returns (uint256)
minGovChangeTimeLock
viewfunction minGovChangeTimeLock() view returns (uint256)
numGovChanges
viewfunction numGovChanges() view returns (uint256)
pendingActions
viewfunction pendingActions(uint256 arg0) view returns (tuple)
pendingAddrToBool
viewfunction pendingAddrToBool(uint256 arg0) view returns (tuple)
pendingAgentConfig
viewfunction pendingAgentConfig(uint256 arg0) view returns (tuple)
pendingAssetConfig
viewfunction pendingAssetConfig(uint256 arg0) view returns (tuple)
pendingGov
viewfunction pendingGov() view returns (tuple)
pendingManagerConfig
viewfunction pendingManagerConfig(uint256 arg0) view returns (tuple)
pendingPayeeConfig
viewfunction pendingPayeeConfig(uint256 arg0) view returns (tuple)
pendingUserWalletConfig
viewfunction pendingUserWalletConfig(uint256 arg0) view returns (tuple)
cancelGovernanceChange
nonpayablefunction cancelGovernanceChange()
cancelPendingAction
nonpayablefunction cancelPendingAction(uint256 _aid) returns (bool)
confirmGovernanceChange
nonpayablefunction confirmGovernanceChange()
executePendingAction
nonpayablefunction executePendingAction(uint256 _aid) returns (bool)
finishUndyHqSetup
nonpayablefunction finishUndyHqSetup(address _newGov, uint256 _timeLock) returns (bool)
finishUndyHqSetup
nonpayablefunction finishUndyHqSetup(address _newGov) returns (bool)
relinquishGov
nonpayablefunction relinquishGov()
setActionTimeLock
nonpayablefunction setActionTimeLock(uint256 _newTimeLock) returns (bool)
setActionTimeLockAfterSetup
nonpayablefunction setActionTimeLockAfterSetup() returns (bool)
setActionTimeLockAfterSetup
nonpayablefunction setActionTimeLockAfterSetup(uint256 _newTimeLock) returns (bool)
setAgentCreationLimits
nonpayablefunction setAgentCreationLimits(uint256 _numAgentsAllowed, bool _enforceCreatorWhitelist) returns (uint256)
setAgentTemplate
nonpayablefunction setAgentTemplate(address _agentTemplate) returns (uint256)
setAmbassadorRevShare
nonpayablefunction setAmbassadorRevShare(uint256 _swapRatio, uint256 _rewardsRatio, uint256 _yieldRatio) returns (uint256)
setAssetConfig
nonpayablefunction setAssetConfig(address _asset, uint256 _legoId, uint256 _staleBlocks, uint256 _txFeesSwapFee, uint256 _txFeesStableSwapFee, uint256 _txFeesRewardsFee, uint256 _ambassadorRevShareSwapRatio, uint256 _ambassadorRevShareRewardsRatio, uint256 _ambassadorRevShareYieldRatio, bool _isYieldAsset, bool _isRebasing, address _underlyingAsset, uint256 _maxYieldIncrease, uint256 _performanceFee, uint256 _ambassadorBonusRatio, uint256 _bonusRatio, address _altBonusAsset) returns (uint256)
setCanPerformSecurityAction
nonpayablefunction setCanPerformSecurityAction(address _signer, bool _canPerform) returns (uint256)
setCreatorWhitelist
nonpayablefunction setCreatorWhitelist(address _creator, bool _isWhitelisted)
setDefaultStaleBlocks
nonpayablefunction setDefaultStaleBlocks(uint256 _defaultStaleBlocks) returns (uint256)
setDefaultYieldParams
nonpayablefunction setDefaultYieldParams(uint256 _defaultYieldMaxIncrease, uint256 _defaultYieldPerformanceFee, uint256 _defaultYieldAmbassadorBonusRatio, uint256 _defaultYieldBonusRatio, address _defaultYieldAltBonusAsset) returns (uint256)
setExpiration
nonpayablefunction setExpiration(uint256 _expiration) returns (bool)
setGovTimeLock
nonpayablefunction setGovTimeLock(uint256 _numBlocks) returns (bool)
setIsStablecoin
nonpayablefunction setIsStablecoin(address _asset, bool _isStablecoin) returns (uint256)
setKeyActionTimelockBounds
nonpayablefunction setKeyActionTimelockBounds(uint256 _minKeyActionTimeLock, uint256 _maxKeyActionTimeLock) returns (uint256)
setLockedSigner
nonpayablefunction setLockedSigner(address _signer, bool _isLocked)
setLootParams
nonpayablefunction setLootParams(address _depositRewardsAsset, uint256 _lootClaimCoolOffPeriod) returns (uint256)
setManagerConfig
nonpayablefunction setManagerConfig(uint256 _managerPeriod, uint256 _managerActivationLength) returns (uint256)
setPayeeConfig
nonpayablefunction setPayeeConfig(uint256 _payeePeriod, uint256 _payeeActivationLength) returns (uint256)
setRipeLockDuration
nonpayablefunction setRipeLockDuration(uint256 _ripeLockDuration)
setStarterAgentParams
nonpayablefunction setStarterAgentParams(address _startingAgent, uint256 _startingAgentActivationLength) returns (uint256)
setTrialFunds
nonpayablefunction setTrialFunds(address _trialAsset, uint256 _trialAmount) returns (uint256)
setTxFees
nonpayablefunction setTxFees(uint256 _swapFee, uint256 _stableSwapFee, uint256 _rewardsFee) returns (uint256)
setUserWalletTemplates
nonpayablefunction setUserWalletTemplates(address _walletTemplate, address _configTemplate) returns (uint256)
setWalletCreationLimits
nonpayablefunction setWalletCreationLimits(uint256 _numUserWalletsAllowed, bool _enforceCreatorWhitelist) returns (uint256)
startGovernanceChange
nonpayablefunction startGovernanceChange(address _newGov)
events
ActionTimeLockSet
event ActionTimeLockSet(uint256 newTimeLock, uint256 prevTimeLock)
AgentCreationLimitsSet
event AgentCreationLimitsSet(uint256 numAgentsAllowed, bool enforceCreatorWhitelist)
AgentTemplateSet
event AgentTemplateSet(address agentTemplate)
AmbassadorRevShareSet
event AmbassadorRevShareSet(uint256 swapRatio, uint256 rewardsRatio, uint256 yieldRatio)
AssetConfigSet
event AssetConfigSet(address asset, uint256 legoId, uint256 staleBlocks, uint256 txFeesSwapFee, uint256 txFeesStableSwapFee, uint256 txFeesRewardsFee, uint256 ambassadorRevShareSwapRatio, uint256 ambassadorRevShareRewardsRatio, uint256 ambassadorRevShareYieldRatio, bool isYieldAsset, bool isRebasing, address underlyingAsset, uint256 maxYieldIncrease, uint256 performanceFee, uint256 ambassadorBonusRatio, uint256 bonusRatio, address altBonusAsset)
CanPerformSecurityAction
event CanPerformSecurityAction(address signer, bool canPerform)
CreatorWhitelistSet
event CreatorWhitelistSet(address creator, bool isWhitelisted, address caller)
DefaultStaleBlocksSet
event DefaultStaleBlocksSet(uint256 defaultStaleBlocks)
DefaultYieldParamsSet
event DefaultYieldParamsSet(uint256 defaultYieldMaxIncrease, uint256 defaultYieldPerformanceFee, uint256 defaultYieldAmbassadorBonusRatio, uint256 defaultYieldBonusRatio, address defaultYieldAltBonusAsset)
ExpirationSet
event ExpirationSet(uint256 expiration)
GovChangeCancelled
event GovChangeCancelled(address indexed cancelledGov, uint256 initiatedBlock, uint256 confirmBlock)
GovChangeConfirmed
event GovChangeConfirmed(address indexed prevGov, address indexed newGov, uint256 initiatedBlock, uint256 confirmBlock)
GovChangeStarted
event GovChangeStarted(address indexed prevGov, address indexed newGov, uint256 confirmBlock)
GovChangeTimeLockModified
event GovChangeTimeLockModified(uint256 prevTimeLock, uint256 newTimeLock)
GovRelinquished
event GovRelinquished(address indexed prevGov)
IsStablecoinSet
event IsStablecoinSet(address asset, bool isStablecoin)
KeyActionTimelockBoundsSet
event KeyActionTimelockBoundsSet(uint256 minKeyActionTimeLock, uint256 maxKeyActionTimeLock)
LockedSignerSet
event LockedSignerSet(address signer, bool isLocked, address caller)
LootParamsSet
event LootParamsSet(address depositRewardsAsset, uint256 lootClaimCoolOffPeriod)
ManagerConfigSet
event ManagerConfigSet(uint256 managerPeriod, uint256 managerActivationLength)
PayeeConfigSet
event PayeeConfigSet(uint256 payeePeriod, uint256 payeeActivationLength)
PendingAgentCreationLimitsChange
event PendingAgentCreationLimitsChange(uint256 numAgentsAllowed, bool enforceCreatorWhitelist, uint256 confirmationBlock, uint256 actionId)
PendingAgentTemplateChange
event PendingAgentTemplateChange(address agentTemplate, uint256 confirmationBlock, uint256 actionId)
PendingAmbassadorRevShareChange
event PendingAmbassadorRevShareChange(uint256 swapRatio, uint256 rewardsRatio, uint256 yieldRatio, uint256 confirmationBlock, uint256 actionId)
PendingAssetConfigChange
event PendingAssetConfigChange(address asset, uint256 legoId, uint256 staleBlocks, uint256 txFeesSwapFee, uint256 txFeesStableSwapFee, uint256 txFeesRewardsFee, uint256 ambassadorRevShareSwapRatio, uint256 ambassadorRevShareRewardsRatio, uint256 ambassadorRevShareYieldRatio, bool isYieldAsset, bool isRebasing, address underlyingAsset, uint256 maxYieldIncrease, uint256 performanceFee, uint256 ambassadorBonusRatio, uint256 bonusRatio, address altBonusAsset, uint256 confirmationBlock, uint256 actionId)
PendingCanPerformSecurityAction
event PendingCanPerformSecurityAction(address signer, bool canPerform, uint256 confirmationBlock, uint256 actionId)
PendingDefaultStaleBlocksChange
event PendingDefaultStaleBlocksChange(uint256 defaultStaleBlocks, uint256 confirmationBlock, uint256 actionId)
PendingDefaultYieldParamsChange
event PendingDefaultYieldParamsChange(uint256 defaultYieldMaxIncrease, uint256 defaultYieldPerformanceFee, uint256 defaultYieldAmbassadorBonusRatio, uint256 defaultYieldBonusRatio, address defaultYieldAltBonusAsset, uint256 confirmationBlock, uint256 actionId)
PendingIsStablecoinChange
event PendingIsStablecoinChange(address asset, bool isStablecoin, uint256 confirmationBlock, uint256 actionId)
PendingKeyActionTimelockBoundsChange
event PendingKeyActionTimelockBoundsChange(uint256 minKeyActionTimeLock, uint256 maxKeyActionTimeLock, uint256 confirmationBlock, uint256 actionId)
PendingLootParamsChange
event PendingLootParamsChange(address depositRewardsAsset, uint256 lootClaimCoolOffPeriod, uint256 confirmationBlock, uint256 actionId)
PendingManagerConfigChange
event PendingManagerConfigChange(uint256 managerPeriod, uint256 managerActivationLength, uint256 confirmationBlock, uint256 actionId)
PendingPayeeConfigChange
event PendingPayeeConfigChange(uint256 payeePeriod, uint256 payeeActivationLength, uint256 confirmationBlock, uint256 actionId)
PendingStarterAgentParamsChange
event PendingStarterAgentParamsChange(address startingAgent, uint256 startingAgentActivationLength, uint256 confirmationBlock, uint256 actionId)
PendingTrialFundsChange
event PendingTrialFundsChange(address trialAsset, uint256 trialAmount, uint256 confirmationBlock, uint256 actionId)
PendingTxFeesChange
event PendingTxFeesChange(uint256 swapFee, uint256 stableSwapFee, uint256 rewardsFee, uint256 confirmationBlock, uint256 actionId)
PendingUserWalletTemplatesChange
event PendingUserWalletTemplatesChange(address walletTemplate, address configTemplate, uint256 confirmationBlock, uint256 actionId)
PendingWalletCreationLimitsChange
event PendingWalletCreationLimitsChange(uint256 numUserWalletsAllowed, bool enforceCreatorWhitelist, uint256 confirmationBlock, uint256 actionId)
RipeLockDurationSetFromSwitchboard
event RipeLockDurationSetFromSwitchboard(uint256 ripeLockDuration)
StarterAgentParamsSet
event StarterAgentParamsSet(address startingAgent, uint256 startingAgentActivationLength)
TrialFundsSet
event TrialFundsSet(address trialAsset, uint256 trialAmount)
TxFeesSet
event TxFeesSet(uint256 swapFee, uint256 stableSwapFee, uint256 rewardsFee)
UndyHqSetupFinished
event UndyHqSetupFinished(address indexed prevGov, address indexed newGov, uint256 timeLock)
UserWalletTemplatesSet
event UserWalletTemplatesSet(address walletTemplate, address configTemplate)
WalletCreationLimitsSet
event WalletCreationLimitsSet(uint256 numUserWalletsAllowed, bool enforceCreatorWhitelist)
errors
No errors.
creation bytecode
0x61481b5150346104cf576020614c865f395f518060a01c6104cf57610220526020614ca65f395f518060a01c6104cf57610240526102205160405261004261008b565b60406102206101005e6060366101403761005a610142565b6040614cc6610100395f610140526020614ce661016039610079610428565b61477b6104d36100003961483b610000f35b604051156104cf5760405161477b52565b606051604051186100b0575f8152506100e2565b600354156100c1575f8152506100e2565b6147bb5160405110156100d4575f6100de565b6147db5160405111155b8152505b565b60055460a0526040608060405e6100fb60c061009c565b60c051156104cf576080516005557f4b3e7f19d082240a63463e663b322c1a929de8e5ab00ba8ce719ec5be511f36f60a05160c05260805160e052604060c0a16001815250565b6101005161479b52610120515f55610100516101665761012051156104cf576101d6565b61010051635aa6e6756101c05260206101c060046101dc845afa61018c573d5f5f3e3d5ffd5b3d602081183d6020100218806101c0016101e0116104cf576101c0518060a01c6104cf5761020052506102009050516101a0526101a051156104cf576101a05161012051146104cf575b60406101406101a05e6101a0516101ee5760016101f4565b6101c051155b156102735761010051156104cf576101005163dc590aae6101e05260206101e060046101fc845afa610228573d5f5f3e3d5ffd5b60203d106104cf576101e09050516101a0526101005163c41c05646101e05260206101e060046101fc845afa610260573d5f5f3e3d5ffd5b60203d106104cf576101e09050516101c0525b6101c0516101a05110156104cf576101a051156102b6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101c05114156102b8565b5f5b156104cf576101a0516147bb526101c0516147db52610100511561030b576101a05161018051808281188284110218905090506101e0526101e0516080526103016102006100e4565b61020051156104cf575b565b60405161031b576001610321565b60405119155b1561032f575f81525061034a565b6060516040511015610344575f81525061034a565b60018152505b565b6040608060405e61035d60c061030d565b60c051156104cf576080516009557f645593ca25d75b795c1ee548367f7aef4ed419bce4ccd5e2a6d19fd296010b6c60805160c052602060c0a16001815250565b606051604051186103b2575f8152506103d3565b6147fb5160405110156103c5575f6103cf565b61481b5160405111155b8152505b565b6040608060405e6103e660c061039e565b60c051156104cf576080516008557f494182dce7963f8f20b15adc110fe2d6659b940b8a162088a01fba3fba125e046040608060c05e604060c0a16001815250565b6001600755610120516101005110156104cf576101005115610470577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610120511415610472565b5f5b156104cf57610100516147fb526101205161481b52610160516080526101405160a0526104a061018061034c565b6101805061014051156104cd57610140516080525f60a0526104c36101806103d5565b61018051156104cf575b565b5f80fd5f3560e01c60026037820660011b61470d01601e395f51565b63a5c7434a811861003b573461470957610160610036610420613322565b610420f35b63c2c95dcf81186100555734614709575f61026052610a5b565b637ef123da811861331e5760243610341761470957600d6004356020525f5260405f20805460405260018101546060526002810154608052600381015460a052600481015460c0525060a06040f35b6392975f0a81186100c457346147095760206100c060406136d6565b6040f35b6353aa4307811861331e57602436103417614709576004358060a01c6147095761026052602061026051610160526100fd6102806137c5565b610280f35b63d65e3a63811861331e573461470957602061011e60406136e0565b6040f35b63f80b5352811861019e5734614709576020806101c0526101446101606136ea565b610160816101c0015f82518083528060051b5f826002811161470957801561018757905b8060051b6020880101518160051b602088010152600101818118610168575b5050820160200191505090509050810190506101c0f35b634665096d81186101ba57346147095760095460405260206040f35b6336cd9ec0811861331e5760243610341761470957600e6004356020525f5260405f20805460405260018101546060525060406040f35b633f561eff811861020f573461470957600354151560405260206040f35b63fd3e0923811861331e57604436103417614709576004358060a01c61470957610320526024358060011c61470957610340523361026052610340516102805261025a61036061453e565b6103605115614709576103205115614709576102776103806144e2565b61038051610360526103605163fd3e09236103805260406103206103a05e803b15614709575f610380604461039c5f855af16102b5573d5f5f3e3d5ffd5b507f77ff6303f8edea5960786624d0f066007eb2e2489d1685b7503ad6204791bcc160406103206103805e336103c0526060610380a1005b63f8008776811861045257602436103417614709576004358060a01c614709576101605261031c6101e06136ea565b6101e080516060826101805e5050335f6101e0525f610180516002811161470957801561036a57905b8060051b6101a00151831861035f5760016101e05261036a565b600101818118610345575b50506101e0519050156147095761016051156103df576101605160016101e0525f61018051600281116147095780156103c357905b8060051b6101a0015183186103b8575f6101e0526103c3565b60010181811861039f575b50506101e05190501561470957610160513b15614709576103f3565b6103ea6101e0613836565b6101e051614709575b4360055480820182811061470957905090506101e05261016051600155436002556101e051600355610160515f547f7fb6016b2b884e772c96a12e25faa01c5ff3e751853d21661e136c2e54c0e6d66101e051610200526020610200a3005b6369709398811861331e5760243610341761470957602060043560405261047960c06138f5565b60c0f35b636e4fd9c8811861056857346147095760015461026052600254610280526003546102a0526102a051156104b7576102a0514310156104b9565b5f5b156147095761026051156104d65761026051331861470957610503565b33610160526104e66102c06137c5565b6102c05115614709576104fa6102c0613836565b6102c051614709575b5f546102c052610260515f55600454600181018181106147095790506004555f6001555f6002555f600355610260516102c0517fb5dfe18540f75a87f8c7963e7f4942e9392be572b787d486d7868ac53a5bdf5b60406102806102e05e60406102e0a3005b63528bfc3a81186105de5760643610341761470957336101605261058d6104806137c5565b610480511561470957606060046040376105a861048061407f565b610480511561470957602060406080526101a03660a037606060046102403760c0366102a0376105d9610480613ba5565b610480f35b63f130bdee811861331e5760243610341761470957600c6004356020525f5260405f205f6012905b808301548160051b60400152600101818118610606575050506102406040f35b63366836cc81186106af57346147095733610160526106466102606137c5565b61026051156147095760015461026052600254610280526003546102a0526102a05115614709575f6001555f6002555f600355610260517f4301277e72c59c5071608882749a82a210817721ba94066744cea89211d3838060406102806102c05e60406102c0a2005b63a4d0e7e981186106fb576024361034176147095733610160526106d46102606137c5565b610260511561470957602060043560805260085460a0526106f6610260613a0c565b610260f35b63ee5e7179811861331e57346147095760206147fb60403960206040f35b63f066c94381186107805734614709575f5433186147095761073b6040613836565b604051614709575f5f5560045460018101818110614709579050600455337f94e8bbf01ace7483683c4a928531a179ff8d772f04fc3ce622bc4619aded5c685f6040a2005b63dc8a0c87811861331e5760243610341761470957600a6004356020525f5260405f205460405260206040f35b63d7c46d36811861331e576024361034176147095733610160526107d26102606137c5565b61026051156147095760206004356080526107ee610260613897565b610260f35b632581b4bd811861331e576024361034176147095760206004356040526005546060526108206080613845565b6080f35b63dc590aae811861084257346147095760206147bb60403960206040f35b63e8d179f1811861331e5760243610341761470957602060043560405261086960606139b1565b6060f35b63c41c0564811861088b57346147095760206147db60403960206040f35b63c3901d01811861331e57346147095760085460405260206040f35b63fce2f1e181186108c657602436103417614709575f61012052610958565b638f9bce28811861331e576024361034176147095733610160526108eb6104806137c5565b610480511561470957600435604052610905610480614013565b610480511561470957602060106080526101003660a0376004356101a0526101a0366101c037610936610480613ba5565b610480f35b63f35dfa988118610a3e5760443610341761470957602435610120525b6004358060a01c6147095761010052610972610140613836565b6101405115614709575f5433186147095760045461470957610100511561099f57610100513b15156109a1565b5f5b15614709575f5461014052610100515f55600454600181018181106147095790506004556101205161016052610160516109df5760206147bb610160395b610160516080526109f1610180613897565b61018051156147095761010051610140517f2f06285116f9a48be99fb621e14fa8bbf9afe00f058b14588ce791bc63890d8c61016051610180526020610180a36001610180526020610180f35b63c98de903811861331e5760243610341761470957600435610260525b3361016052610a6b6102806137c5565b610280511561470957600854610280526102805161470957610260516102a0526102a051610a9d5760206147fb6102a0395b60206102a0516080526102805160a052610ab86102c0613a0c565b6102c0f35b635aa6e675811861331e5734614709575f5460405260206040f35b6325240810811861331e57346147095760015460405260025460605260035460805260606040f35b63faef978b811861331e57346147095760045460405260206040f35b6346700ace811861331e57346147095760055460405260206040f35b63d9548e538118610b6357602436103417614709576020600435604052610b5f60c0613955565b60c0f35b6336b6e82b811861331e57346147095760075460405260206040f35b63948b4734811861331e57602436103417614709576020600435604052610ba66060613995565b6060f35b63c9336f13811861331e57602436103417614709576020600435604052600854606052610bd760806139cb565b6080f35b63724bd5318118610bf9573461470957602061481b60403960206040f35b63c5d6009b811861331e57602436103417614709573361016052610c1e6102606137c5565b61026051156147095760043560c052610c3861026061463f565b61026051610c7757600435604052610c51610280613955565b6102805115610c685760043560c052610c686146df565b5f6102805260206102806123b0565b600a6004356020525f5260405f205461026052610c956102a06144e2565b6102a0516102805260016102605118610e60576102805163c1ae586e610560526102c0610560600461057c845afa610ccf573d5f5f3e3d5ffd5b3d6102c081183d6102c01002188061056001610820116147095780610560016108201161470957610560518060a01c6147095761084052610580518060a01c61470957610860526105a0518060a01c614709576108805260406105c06108a05e610600518060011c614709576108e052610620516109005260406106406109205e610680518060a01c61470957610960528061056001610700116147095760606106a06109805e8061056001610760116147095760606107006109e05e6080610760610a405e6107e0518060a01c61470957610ac05261080051610ae0525061084090506102c0816102a05e50600b6004356020525f5260405f205f6016905b808301548160051b6105600152600101818118610dcf5750505060406105606102a05e6102805163046f61b5610820526102c06102a06108405e803b15614709575f6108206102c461083c5f855af1610e2a573d5f5f3e3d5ffd5b507f0663cda43b5504bfba9df47e6b791490e55132ec0a4dff0f26f346bfe75fa59c60406105606108205e6040610820a1612394565b60026102605118611023576102805163c1ae586e610560526102c0610560600461057c845afa610e92573d5f5f3e3d5ffd5b3d6102c081183d6102c01002188061056001610820116147095780610560016108201161470957610560518060a01c6147095761084052610580518060a01c61470957610860526105a0518060a01c614709576108805260406105c06108a05e610600518060011c614709576108e052610620516109005260406106406109205e610680518060a01c61470957610960528061056001610700116147095760606106a06109805e8061056001610760116147095760606107006109e05e6080610760610a405e6107e0518060a01c61470957610ac05261080051610ae0525061084090506102c0816102a05e50600b6004356020525f5260405f205f6016905b808301548160051b6105600152600101818118610f925750505060406105a06102e05e6102805163046f61b5610820526102c06102a06108405e803b15614709575f6108206102c461083c5f855af1610fed573d5f5f3e3d5ffd5b507fa1d5f5ac8f5e9a7a607eca00877c75987bfc9e4e5662f25eaf86085b7a0bf8bf60406105a06108205e6040610820a1612394565b600461026051186111e6576102805163c1ae586e610560526102c0610560600461057c845afa611055573d5f5f3e3d5ffd5b3d6102c081183d6102c01002188061056001610820116147095780610560016108201161470957610560518060a01c6147095761084052610580518060a01c61470957610860526105a0518060a01c614709576108805260406105c06108a05e610600518060011c614709576108e052610620516109005260406106406109205e610680518060a01c61470957610960528061056001610700116147095760606106a06109805e8061056001610760116147095760606107006109e05e6080610760610a405e6107e0518060a01c61470957610ac05261080051610ae0525061084090506102c0816102a05e50600b6004356020525f5260405f205f6016905b808301548160051b61056001526001018181186111555750505060406105e06103205e6102805163046f61b5610820526102c06102a06108405e803b15614709575f6108206102c461083c5f855af16111b0573d5f5f3e3d5ffd5b507f7d280acc9c384e8facc5efe2bd10b7b170b194e5ca54eab8f32f4604b5be439d60406105e06108205e6040610820a1612394565b600861026051186113a9576102805163c1ae586e610560526102c0610560600461057c845afa611218573d5f5f3e3d5ffd5b3d6102c081183d6102c01002188061056001610820116147095780610560016108201161470957610560518060a01c6147095761084052610580518060a01c61470957610860526105a0518060a01c614709576108805260406105c06108a05e610600518060011c614709576108e052610620516109005260406106406109205e610680518060a01c61470957610960528061056001610700116147095760606106a06109805e8061056001610760116147095760606107006109e05e6080610760610a405e6107e0518060a01c61470957610ac05261080051610ae0525061084090506102c0816102a05e50600b6004356020525f5260405f205f6016905b808301548160051b61056001526001018181186113185750505060406106206103605e6102805163046f61b5610820526102c06102a06108405e803b15614709575f6108206102c461083c5f855af1611373573d5f5f3e3d5ffd5b507f597588ef2397d916f20af663ea82eb1a6c066e31282ff246e9d3cf04d64b6e5560406106206108205e6040610820a1612394565b6010610260511861156a576102805163c1ae586e610560526102c0610560600461057c845afa6113db573d5f5f3e3d5ffd5b3d6102c081183d6102c01002188061056001610820116147095780610560016108201161470957610560518060a01c6147095761084052610580518060a01c61470957610860526105a0518060a01c614709576108805260406105c06108a05e610600518060011c614709576108e052610620516109005260406106406109205e610680518060a01c61470957610960528061056001610700116147095760606106a06109805e8061056001610760116147095760606107006109e05e6080610760610a405e6107e0518060a01c61470957610ac05261080051610ae0525061084090506102c0816102a05e50600b6004356020525f5260405f205f6016905b808301548160051b61056001526001018181186114db57505050610660516103a0526102805163046f61b5610820526102c06102a06108405e803b15614709575f6108206102c461083c5f855af1611535573d5f5f3e3d5ffd5b507fe627697600454d463cecf2fd45cc4928c7cd1e36f5c7f10b6de7f3e333edfb2961066051610820526020610820a1612394565b6020610260511861172d576102805163c1ae586e610560526102c0610560600461057c845afa61159c573d5f5f3e3d5ffd5b3d6102c081183d6102c01002188061056001610820116147095780610560016108201161470957610560518060a01c6147095761084052610580518060a01c61470957610860526105a0518060a01c614709576108805260406105c06108a05e610600518060011c614709576108e052610620516109005260406106406109205e610680518060a01c61470957610960528061056001610700116147095760606106a06109805e8061056001610760116147095760606107006109e05e6080610760610a405e6107e0518060a01c61470957610ac05261080051610ae0525061084090506102c0816102a05e50600b6004356020525f5260405f205f6016905b808301548160051b610560015260010181811861169c5750505060606106a06103e05e6102805163046f61b5610820526102c06102a06108405e803b15614709575f6108206102c461083c5f855af16116f7573d5f5f3e3d5ffd5b507f109b31ec79d88125a6fee92a606c2741a1aa53ac608893ab2988aa175886a86960606106a06108205e6060610820a1612394565b604061026051186118f0576102805163c1ae586e610560526102c0610560600461057c845afa61175f573d5f5f3e3d5ffd5b3d6102c081183d6102c01002188061056001610820116147095780610560016108201161470957610560518060a01c6147095761084052610580518060a01c61470957610860526105a0518060a01c614709576108805260406105c06108a05e610600518060011c614709576108e052610620516109005260406106406109205e610680518060a01c61470957610960528061056001610700116147095760606106a06109805e8061056001610760116147095760606107006109e05e6080610760610a405e6107e0518060a01c61470957610ac05261080051610ae0525061084090506102c0816102a05e50600b6004356020525f5260405f205f6016905b808301548160051b610560015260010181811861185f5750505060606107006104405e6102805163046f61b5610820526102c06102a06108405e803b15614709575f6108206102c461083c5f855af16118ba573d5f5f3e3d5ffd5b507f35e2350a0b9b5a16bba603406a8a2d407a255be23b9ff76cc64868e629c56adb60606107006108205e6060610820a1612394565b60806102605118611ab3576102805163c1ae586e610560526102c0610560600461057c845afa611922573d5f5f3e3d5ffd5b3d6102c081183d6102c01002188061056001610820116147095780610560016108201161470957610560518060a01c6147095761084052610580518060a01c61470957610860526105a0518060a01c614709576108805260406105c06108a05e610600518060011c614709576108e052610620516109005260406106406109205e610680518060a01c61470957610960528061056001610700116147095760606106a06109805e8061056001610760116147095760606107006109e05e6080610760610a405e6107e0518060a01c61470957610ac05261080051610ae0525061084090506102c0816102a05e50600b6004356020525f5260405f205f6016905b808301548160051b6105600152600101818118611a225750505060a06107606104a05e6102805163046f61b5610820526102c06102a06108405e803b15614709575f6108206102c461083c5f855af1611a7d573d5f5f3e3d5ffd5b507f8593a1a1c4c4e9eaf7ed96831feecb1042b5fbf06871b3a2957fe7a41325990660a06107606108205e60a0610820a1612394565b6101006102605118611c85576102805163c1ae586e610560526102c0610560600461057c845afa611ae6573d5f5f3e3d5ffd5b3d6102c081183d6102c01002188061056001610820116147095780610560016108201161470957610560518060a01c6147095761084052610580518060a01c61470957610860526105a0518060a01c614709576108805260406105c06108a05e610600518060011c614709576108e052610620516109005260406106406109205e610680518060a01c61470957610960528061056001610700116147095760606106a06109805e8061056001610760116147095760606107006109e05e6080610760610a405e6107e0518060a01c61470957610ac05261080051610ae0525061084090506102c0816102a05e50600b6004356020525f5260405f205f6016905b808301548160051b6105600152600101818118611be657505050610680516103c05261080051610540526102805163046f61b5610820526102c06102a06108405e803b15614709575f6108206102c461083c5f855af1611c48573d5f5f3e3d5ffd5b507fd9cf919628235a757ecee29788961d9b7e8abb9c1dc1bc4147d8aa005f18e8e3610680516108205261080051610840526040610820a1612394565b6180006102605118611d4857600c6004356020525f5260405f205f6012905b808301548160051b6102a00152600101818118611ca457505050610280516332b739f06104e0526102a051610500526102206102c06105205e803b15614709575f6104e06102446104fc5f855af1611cfe573d5f5f3e3d5ffd5b507ff9ca9e7a4f27ac539dcb3a631f238dbca639533f0f2053d3cf56d19759eb5a1260406102a06104e05e60406103006105205e6101a06103406105605e6102206104e0a1612394565b620100006102605118611ddf5760106004356020525f5260405f2080546102a05260018101546102c052506102805163638ee6016102e05260406102a06103005e803b15614709575f6102e060446102fc5f855af1611da9573d5f5f3e3d5ffd5b507ffd0c4e884947c1a8990a13380b90b18577cad00b9093a41a5f6d4090116c972b60406102a06102e05e60406102e0a1612394565b6102006102605118611f305761028051635e6b04f36103405260a0610340600461035c845afa611e11573d5f5f3e3d5ffd5b3d60a081183d60a010021880610340016103e0116147095780610340016103e01161470957610340518060a01c61470957610400526103605161042052610380518060011c61470957610440526103a0518060a01c61470957610460526103c0516104805250610400905060a0816102a05e50600d6004356020525f5260405f2080546103405260018101546103605260028101546103805260038101546103a05260048101546103c05250610340516102a05261028051638ddd19306103e05260a06102a06104005e803b15614709575f6103e060a46103fc5f855af1611efb573d5f5f3e3d5ffd5b507f763909aa0e10a2b35fdf5471dc42599f20f84049f178a0879b3e5bad060c29ae610340516103e05260206103e0a1612394565b61040061026051186120835761028051635e6b04f36103405260a0610340600461035c845afa611f62573d5f5f3e3d5ffd5b3d60a081183d60a010021880610340016103e0116147095780610340016103e01161470957610340518060a01c61470957610400526103605161042052610380518060011c61470957610440526103a0518060a01c61470957610460526103c0516104805250610400905060a0816102a05e50600d6004356020525f5260405f2080546103405260018101546103605260028101546103805260038101546103a05260048101546103c0525060406103606102c05e61028051638ddd19306103e05260a06102a06104005e803b15614709575f6103e060a46103fc5f855af161204d573d5f5f3e3d5ffd5b507fde3ec727ba967367b92c97f502b1d16d6e94fb5c21ebc05db8dbc6df86297dfa60406103606103e05e60406103e0a1612394565b61080061026051186121d65761028051635e6b04f36103405260a0610340600461035c845afa6120b5573d5f5f3e3d5ffd5b3d60a081183d60a010021880610340016103e0116147095780610340016103e01161470957610340518060a01c61470957610400526103605161042052610380518060011c61470957610440526103a0518060a01c61470957610460526103c0516104805250610400905060a0816102a05e50600d6004356020525f5260405f2080546103405260018101546103605260028101546103805260038101546103a05260048101546103c0525060406103a06103005e61028051638ddd19306103e05260a06102a06104005e803b15614709575f6103e060a46103fc5f855af16121a0573d5f5f3e3d5ffd5b507f1b9dacdef91371067f3d8bc9ad18f74aa43492e7431e1e393882bbc2f19c39f560406103a06103e05e60406103e0a1612394565b611000610260511861226c57600e6004356020525f5260405f2080546102a05260018101546102c052506102805163e8235f506102e05260406102a06103005e803b15614709575f6102e060446102fc5f855af1612236573d5f5f3e3d5ffd5b507f563ffcc839967553dc77badbf1cafea3ec661e640e3674c1f81addb068bfacf160406102a06102e05e60406102e0a1612394565b612000610260511861230257600f6004356020525f5260405f2080546102a05260018101546102c0525061028051638994e6236102e05260406102a06103005e803b15614709575f6102e060446102fc5f855af16122cc573d5f5f3e3d5ffd5b507f9b6340916d4b70292eacfb04e7d646ad4afff6e0fc6ad2e9718f73e31b75bb6e60406102a06102e05e60406102e0a1612394565b61400061026051186123945760106004356020525f5260405f2080546102a05260018101546102c052506102805163fe9f6d266102e05260406102a06103005e803b15614709575f6102e060446102fc5f855af1612362573d5f5f3e3d5ffd5b507f8243f4cff328d6eb5d34e2fc748559d3e06b4a2ae8a90544bc84bc928443f72260406102a06102e05e60406102e0a15b5f600a6004356020525f5260405f205560016102a05260206102a05bf35b63515a20ba81186123fe576024361034176147095733610160526123d76102606137c5565b610260511561470957602060043560805260085460a0526123f9610260613a9e565b610260f35b63d66a6db481186126465761022436103417614709576004358060a01c6147095761036052610124358060011c6147095761038052610144358060011c614709576103a052610164358060a01c614709576103c052610204358060a01c614709576103e05233610160526124736104006137c5565b6104005115614709576103605160c052610100602460e03760606103806101e05e6080610184610240376103e0516102c0526124b06104006141a0565b610400511561470957610100366104003761038051156124e55760606103806104005e6080610184610460376103e0516104e0525b6124f0610520613b3c565b6105205161050052618000600a610500516020525f5260405f205561036051610580526024356105a0526103605163313ce567610520526020610520600461053c845afa612540573d5f5f3e3d5ffd5b3d602081183d602010021880610520016105401161470957610520518060081c6147095761056052506105609050516105c0526044356105e0526060606461060037606060c4610660376101006104006106c05e600c610500516020525f5260405f205f6012905b8060051b6105800151818401556001018181186125a857505050610500516040526125d46105406139b1565b61054051610520527fb5625aa38fc4d2fd84dc64ecd3d1941128efac04ed861d9ccc3379033e3b9295610360516105405261010060246105603760606103806106605e60806101846106c0376103e0516107405261052051610760526105005161078052610260610540a16020610500f35b63cf8f1dd2811861331e5760243610341761470957336101605261266b6102606137c5565b61026051156147095760043560c0526126826146df565b6001610260526020610260f35b6303117ba281186126ce576024361034176147095760066004356020525f5260405f208054604052600181015460605260028101546080525060606040f35b631ea4410b811861331e5760a436103417614709576084358060a01c614709576104805233610160526127026104a06137c5565b6104a05115614709576080600460403761271d6104a06140c3565b6104a0511561470957602060806080526102003660a037608060046102a03761048051610320525f610340526127546104a0613ba5565b6104a0f35b631683c792811861331e57604436103417614709576004358060a01c61470957610480526024358060a01c614709576104a052336101605261279c6104c06137c5565b6104c0511561470957604061048060405e6127b86104c0613af0565b6104c051156147095760206001608052604061048060a05e6102803660e0376127e26104c0613ba5565b6104c0f35b633f127d9b811861331e57604436103417614709576004358060a01c6147095761048052336101605261281b6104a06137c5565b6104a05115614709576020600260805260403660a0376104805160e0526024356101005261024036610120376128526104a0613ba5565b6104a0f35b634826980f811861331e57604436103417614709576024358060011c6147095761048052336101605261288b6104a06137c5565b6104a05115614709576004356040526128a56104a0613f8a565b6104a05115614709576020600460805260803660a03760043561012052610480516101405261020036610160376128dd6104a0613ba5565b6104a0f35b636670f6f08118612958576044361034176147095733610160526129076104806137c5565b61048051156147095760406004604037612922610480613fb3565b6104805115614709576020600860805260c03660a03760406004610160376101c0366101a037612953610480613ba5565b610480f35b633be6d26a81186129e357604436103417614709576004358060a01c6147095761026052336101605261298c6102806137c5565b610280511561470957610260516040526024356060526129ad610280614487565b610280511561470957602061080060805260603660a0376102605161010052602435610120526129de6102806142f5565b610280f35b63179aecb1811861331e57604436103417614709576004358060a01c61470957610320526024358060011c614709576103405233610260526103405161028052612a2e61036061453e565b610360511561470957610320511561470957612a4b6103806144e2565b61038051610360526103605163179aecb16103805260406103206103a05e803b15614709575f610380604461039c5f855af1612a89573d5f5f3e3d5ffd5b507f0cd7daee9ed7bb2c9758fff21fc190a6a8b6bf60ef02f05cac625ad83d3f79b560406103206103805e336103c0526060610380a1005b63e821432a8118612b3857606436103417614709573361016052612ae66104806137c5565b61048051156147095760606004604037612b0161048061403c565b610480511561470957602060206080526101403660a037606060046101e0376101203661024037612b33610480613ba5565b610480f35b635e8115d7811861331e57604436103417614709573361016052612b5d6102606137c5565b61026051156147095760043515612b78576024351515612b7a565b5f5b15614709576004357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14612bd3576024357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1415612bd5565b5f5b1561470957612be5610280613b3c565b6102805161026052611000600a610260516020525f5260405f2055600e610260516020525f5260405f20600435815560243560018201555061026051604052612c2f6102a06139b1565b6102a051610280527f974992268e5480de41564139842f1eaf5161a02d1026192614ab3c231e597371604060046102a037610280516102e052610260516103005260806102a0a16020610260f35b63b0217938811861331e57604436103417614709576004358060a01c61470957610480523361016052612cb16104a06137c5565b6104a0511561470957602435604052612ccb6104a061411b565b6104a051156147095760206101006080526101203660a037610480516101c052610160366101e03760243561034052612d056104a0613ba5565b6104a0f35b63638ee601811861331e57604436103417614709576004358060a01c61470957610260526024358060011c61470957610280523361016052612d4d6102a06137c5565b6102a0511561470957612d616102c0613b3c565b6102c0516102a05262010000600a6102a0516020525f5260405f205560106102a0516020525f5260405f20610260518155610280516001820155506102a051604052612dae6102e06139b1565b6102e0516102c0527f020c711fddf97c02451dc8c11fa1d55317b2ad784ea7d30447afc61a98647d7460406102606102e05e6102c051610320526102a0516103405260806102e0a160206102a0f35b631c7961278118612e7a57602436103417614709576004358060a01c61470957610260523361016052612e316102806137c5565b61028051156147095761026051604052612e4c6102806142cc565b61028051156147095760206102006080526102605160a05260803660c037612e756102806142f5565b610280f35b63fe9f6d26811861331e57604436103417614709576004358060a01c61470957610260526024358060011c61470957610280523361016052612ebd6102a06137c5565b6102a051156147095761028051612f4f57612ed96102a06144e2565b6102a05163fe9f6d266102c05260406102606102e05e803b15614709575f6102c060446102dc5f855af1612f0f573d5f5f3e3d5ffd5b507f8243f4cff328d6eb5d34e2fc748559d3e06b4a2ae8a90544bc84bc928443f72260406102606102a05e60406102a0a15f6102a05260206102a0612ff4565b612f5a6102c0613b3c565b6102c0516102a052614000600a6102a0516020525f5260405f205560106102a0516020525f5260405f20610260518155610280516001820155506102a051604052612fa66102e06139b1565b6102e0516102c0527f2609e399535bd004cb1ef98473bf287bc8b53da332cbd934d23c884654e5008c60406102606102e05e6102c051610320526102a0516103405260806102e0a160206102a05bf35b63e0333829811861331e57604436103417614709576024358060011c6147095761026052336101605261302a6102806137c5565b61028051156147095760043560405261304461028061445e565b61028051156147095760206104006080525f60a05260043560c0526102605160e052604036610100376130786102806142f5565b610280f35b63878315c6811861331e576044361034176147095733610160526130a26102606137c5565b610260511561470957600435156130bd5760243515156130bf565b5f5b15614709576004357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14613118576024357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff141561311a565b5f5b156147095761312a610280613b3c565b6102805161026052612000600a610260516020525f5260405f2055600f610260516020525f5260405f206004358155602435600182015550610260516040526131746102a06139b1565b6102a051610280527f7b176779c4669da53c5b1f0723bf480797346df06f259fff58b866f41f321b36604060046102a037610280516102e052610260516103005260806102a0a16020610260f35b639df2d03a811861331e576024361034176147095733610160526131e76102606137c5565b6102605115614709576131fb6102806145e3565b610280516102605261026051639df2d03a610280526004356102a052803b15614709575f610280602461029c5f855af1613237573d5f5f3e3d5ffd5b507f9e77f7c7c0dc2e1609fbf93fbe6d0ccc15cfbd84d6a9196574fed2d186b467b7600435610280526020610280a1005b6345049e66811861331e5760243610341761470957600b6004356020525f5260405f205f6016905b808301548160051b60400152600101818118613290575050506102c06040f35b63b4fec844811861331e5760243610341761470957600f6004356020525f5260405f20805460405260018101546060525060406040f35b631ed5e8dc811861331e576024361034176147095760106004356020525f5260405f20805460405260018101546060525060406040f35b5f5ffd5b602061477b604039604051815260405163e40fe496606052602060606004607c845afa613351573d5f5f3e3d5ffd5b3d602081183d602010021880606001608011614709576060518060a01c6147095760a0525060a0905051602082015260405163d81f84b760c052600160e052602060c0602460dc845afa6133a7573d5f5f3e3d5ffd5b3d602081183d60201002188060c00160e0116147095760c0518060a01c614709576101005250610100905051604082015260405163d81f84b7610120526002610140526020610120602461013c845afa613403573d5f5f3e3d5ffd5b3d602081183d602010021880610120016101401161470957610120518060a01c614709576101605250610160905051606082015260405163d81f84b76101805260036101a0526020610180602461019c845afa613462573d5f5f3e3d5ffd5b3d602081183d602010021880610180016101a01161470957610180518060a01c614709576101c052506101c0905051608082015260405163d81f84b76101e05260046102005260206101e060246101fc845afa6134c1573d5f5f3e3d5ffd5b3d602081183d6020100218806101e00161020011614709576101e0518060a01c61470957610220525061022090505160a082015260405163d81f84b7610240526005610260526020610240602461025c845afa613520573d5f5f3e3d5ffd5b3d602081183d602010021880610240016102601161470957610240518060a01c61470957610280525061028090505160c082015260405163d81f84b76102a05260066102c05260206102a060246102bc845afa61357f573d5f5f3e3d5ffd5b3d602081183d6020100218806102a0016102c011614709576102a0518060a01c614709576102e052506102e090505160e082015260405163d81f84b7610300526007610320526020610300602461031c845afa6135de573d5f5f3e3d5ffd5b3d602081183d602010021880610300016103201161470957610300518060a01c61470957610340525061034090505161010082015260405163d81f84b7610360526008610380526020610360602461037c845afa61363e573d5f5f3e3d5ffd5b3d602081183d602010021880610360016103801161470957610360518060a01c614709576103a052506103a090505161012082015260405163d81f84b76103c05260096103e05260206103c060246103dc845afa61369e573d5f5f3e3d5ffd5b3d602081183d6020100218806103c0016103e011614709576103c0518060a01c61470957610400525061040090505161014082015250565b602061477b823950565b602061479b823950565b5f6040525f5460a05260a0511561371a57604051600181116147095760a0518160051b6060015260018101604052505b602061479b60c03960c0516137395760405160606040835e50506137c3565b60c051635aa6e675610100526020610100600461011c845afa61375e573d5f5f3e3d5ffd5b3d602081183d602010021880610100016101201161470957610100518060a01c61470957610140525061014090505160e05260e051156137b757604051600181116147095760e0518160051b6060015260018101604052505b60405160606040835e50505b565b610160516137d6575f815250613834565b610160516137e56101e06136ea565b6101e05f610240525f81516002811161470957801561382657905b8060051b602084010151841861381b57600161024052613826565b600101818118613800575b505061024051905090508152505b565b602061479b5f395f5115815250565b60605160405118613859575f815250613895565b6003541561386a575f815250613895565b60206147bb5f395f516040511015613882575f613891565b60206147db5f395f5160405111155b8152505b565b60055460a0526040608060405e6138ae60c0613845565b60c05115614709576080516005557f4b3e7f19d082240a63463e663b322c1a929de8e5ab00ba8ce719ec5be511f36f60a05160c05260805160e052604060c0a16001815250565b60066040516020525f5260405f2080546060526001810154608052600281015460a0525060805161392757600161392d565b60805143105b1561393b575f815250613953565b60a051431061394d575f815250613953565b60018152505b565b60066040516020525f5260405f2080546060526001810154608052600281015460a05250608051613989575f815250613993565b60a0514310158152505b565b60066040516020525f5260405f20600181019050541515815250565b60066040516020525f5260405f2060018101905054815250565b606051604051186139df575f815250613a0a565b60206147fb5f395f5160405110156139f7575f613a06565b602061481b5f395f5160405111155b8152505b565b6040608060405e613a1d60c06139cb565b60c05115614709576080516008557f494182dce7963f8f20b15adc110fe2d6659b940b8a162088a01fba3fba125e046040608060c05e604060c0a16001815250565b604051613a6d576001613a73565b60405119155b15613a81575f815250613a9c565b6060516040511015613a96575f815250613a9c565b60018152505b565b6040608060405e613aaf60c0613a5f565b60c05115614709576080516009557f645593ca25d75b795c1ee548367f7aef4ed419bce4ccd5e2a6d19fd296010b6c60805160c052602060c0a16001815250565b604051613afe576001613b03565b606051155b15613b11575f815250613b3a565b6040513b613b20576001613b26565b6060513b155b15613b34575f815250613b3a565b60018152505b565b60075460405243600854808201828110614709579050905060605260066040516020525f5260405f204381556060516001820155606051600954808201828110614709579050905060028201555060075460018101818110614709579050600755604051815250565b613bb0610380613b3c565b6103805161036052608051600a610360516020525f5260405f2055600b610360516020525f5260405f2060a051815560c051600182015560e05160028201556101005160038201556101205160048201556101405160058201556101605160068201556101805160078201556101a05160088201556101c0516009820155600a81016101e051815561020051600182015561022051600282015550600d8101610240518155610260516001820155610280516002820155506102a05160108201556102c05160118201556102e05160128201556103005160138201556103205160148201556103405160158201555061036051604052613cb16103a06139b1565b6103a05161038052600160805118613d07577fa4f21df372030794b2db10f27662b64911f342d25ad3eadf7f9c992c7cc92551604060a06103a05e610380516103e052610360516104005260806103a0a1613f81565b600260805118613d55577fe99112dadd1d9a81aac7858c70a66462066f173f3c6ecab253f093be41b47558604060e06103a05e610380516103e052610360516104005260806103a0a1613f81565b600460805118613da4577f88a12635ab960645d393d589b64754ba5ffc337f4c3c9804852c51b8e8f472ea60406101206103a05e610380516103e052610360516104005260806103a0a1613f81565b600860805118613df3577f8767be3db044ed1701474563c45739f4d4239e2e328f7ddb3a513fd9ebd0a19a60406101606103a05e610380516103e052610360516104005260806103a0a1613f81565b601060805118613e41577f63a285455dfc29d2492e4845e849c8126fc9ad5589f0243bf1945e7f4dceed1e6101a0516103a052610380516103c052610360516103e05260606103a0a1613f81565b602060805118613e90577f0c33b770c8c81ac2618172050a273534fc253c10aba55bcde2c53cb345375ae460606101e06103a05e6103805161040052610360516104205260a06103a0a1613f81565b604060805118613edf577ffe7bf174bf6c0f894550f45737ab474b8acb547fa54ce467bab47932cff9643b60606102406103a05e6103805161040052610360516104205260a06103a0a1613f81565b608060805118613f2e577fd5a7a84b96245cb3acdd72a343a2c1b27aff1074355e3c57d4038a4fe6b7372160a06102a06103a05e6103805161044052610360516104605260e06103a0a1613f81565b61010060805118613f81577f670c85abeb4a6a43870373a2e376ac997b79dd1ffe95ed3cc4465176a6a8738c6101c0516103a052610340516103c052610380516103e052610360516104005260806103a0a15b61036051815250565b604051613f9a575f815250613fb1565b60405119613fab575f815250613fb1565b60018152505b565b604051613fc1576001613fc6565b606051155b15613fd4575f815250614011565b60405119613fe3576001613fe9565b60605119155b15613ff7575f815250614011565b6060516040511061400b575f815250614011565b60018152505b565b604051614023575f81525061403a565b60405119614034575f81525061403a565b60018152505b565b6101f560405110614050575f81525061407d565b60c960605110614063575f81525061407d565b6109c560805110614077575f81525061407d565b60018152505b565b61271160405110614093575f8152506140c1565b612711606051106140a7575f8152506140c1565b612711608051106140bb575f8152506140c1565b60018152505b565b6103e9604051106140d7575f815250614119565b6109c5606051106140eb575f815250614119565b612711608051106140ff575f815250614119565b61271160a05110614113575f815250614119565b60018152505b565b60405161412b575f815250614142565b6040511961413c575f815250614142565b60018152505b565b602061477b5f395f5163d81f84b76040526003606052602060406024605c845afa614171573d5f5f3e3d5ffd5b3d602081183d602010021880604001606011614709576040518060a01c61470957608052506080905051815250565b60c0516141b0575f8152506142ca565b6141bb6102e0614144565b6102e0516306eb8e856103005260e051610320526020610300602461031c845afa6141e8573d5f5f3e3d5ffd5b3d602081183d602010021880610300016103201161470957610300518060011c614709576103405250610340905051614224575f8152506142ca565b610100516040526142366102e0614013565b6102e051614247575f8152506142ca565b606061012060405e61425a6102e061403c565b6102e05161426b575f8152506142ca565b606061018060405e61427e6102e061407f565b6102e05161428f575f8152506142ca565b6101e05161429d575f6142b6565b608061024060405e6142b06102e06140c3565b6102e051155b156142c4575f8152506142ca565b60018152505b565b6040516142dc575f8152506142f3565b6040513b6142ed575f8152506142f3565b60018152505b565b614300610160613b3c565b6101605161014052608051600a610140516020525f5260405f2055600d610140516020525f5260405f2060a051815560c051600182015560e051600282015561010051600382015561012051600482015550610140516040526143646101806139b1565b6101805161016052610200608051186143ba577fdcd5e116ad6dafcdcebf9f635dc106c6b6c7539a4a3c7592103c87b9c10b6fc160a05161018052610160516101a052610140516101c0526060610180a1614455565b61040060805118614409577f313cef8e890567065851849a1ebdcb071453de90763dfd75a24d3d81a424df71604060c06101805e610160516101c052610140516101e0526080610180a1614455565b61080060805118614455577fba6bbbbed3fbb8100d3bb95069d5df25fb9f51685bfc80afeeb5d6642ce4842860406101006101805e610160516101c052610140516101e0526080610180a15b61014051815250565b60405161446e575f815250614485565b6040511961447f575f815250614485565b60018152505b565b60405115614498576060511561449a565b5f5b156144a8575f8152506144e0565b6040516144b95760605115156144bb565b5f5b156144c9575f8152506144e0565b606051196144da575f8152506144e0565b60018152505b565b602061477b5f395f5163d81f84b76040526002606052602060406024605c845afa61450f573d5f5f3e3d5ffd5b3d602081183d602010021880604001606011614709576040518060a01c61470957608052506080905051815250565b61026051610160526145516102a06137c5565b6102a051156145645760018152506145e1565b610280516145dc576145776102a06144e2565b6102a05163c0e9b9916102c052610260516102e05260206102c060246102dc845afa6145a5573d5f5f3e3d5ffd5b3d602081183d6020100218806102c0016102e011614709576102c0518060011c6147095761030052506103009050518152506145e1565b5f8152505b565b602061477b5f395f5163d81f84b76040526006606052602060406024605c845afa614610573d5f5f3e3d5ffd5b3d602081183d602010021880604001606011614709576040518060a01c61470957608052506080905051815250565b60c05160405261464f60e06138f5565b60e05161465f575f815250614683565b600660c0516020525f5260405f205f81555f60018201555f60028201555060018152505b565b60066040516020525f5260405f2080546060526001810154608052600281015460a052506080516146b9575f8152506146dd565b60066040516020525f5260405f205f81555f60018201555f60028201555060018152505b565b60c0516040526146ef60e0614685565b60e05115614709575f600a60c0516020525f5260405f2055565b5f80fd01022c7d331e331e01f1071927e728572759012228e2047d0baa331e331e31c2331e2ff6331e07ad001806262d0a0abd331e307d331e331e093b08a72dfd331e0ad8326823b232e702ed32b0331e2ac107f30bdb331e0b1c0b000b7f331e331e0824086d268f0b3800a4331e331e855820032d957e7b7be20e250bab35f821784784b91ac1947133cc4890f2e4dab8d88319477b81186e18c0a165767970657283000403003800000000000000000000000044cf3c4f000dfd76a35d03298049d37be688d6f90000000000000000000000003ed8174065c00fe511a91850cf8f45d161e8ee150000000000000000000000000000000000000000000000000000000000000e10000000000000000000000000000000000000000000000000000000000013c680