0 txs
1 call
constructor
No constructor.
functions
activeBridge
viewfunction activeBridge() view returns (bytes32)
activeSwap
viewfunction activeSwap() view returns (bytes32)
bridgeParams
viewfunction bridgeParams() view returns (address bridge, bytes params)
bridgeToUse
viewfunction bridgeToUse(bytes32) view returns (string)
cowllector
viewfunction cowllector() view returns (bool sendFunds, address cowllector, uint256 amountCowllectorNeeds)
destinationAddress
viewfunction destinationAddress() view returns (address destination, bytes destinationBytes, string destinationString)
findHash
purefunction findHash(string _variable) pure returns (bytes32)
funds
viewfunction funds() view returns (address sender, bool fromInternalBalance, address recipient, bool toInternalBalance)
minBridgeAmount
viewfunction minBridgeAmount() view returns (uint256)
native
viewfunction native() view returns (address)
owner
viewfunction owner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
stable
viewfunction stable() view returns (address)
swapKind
viewfunction swapKind() view returns (uint8)
swapParams
viewfunction swapParams() view returns (address router, bytes params)
swapToUse
viewfunction swapToUse(bytes32) view returns (string)
bridgeAxelar
nonpayablefunction bridgeAxelar()
bridgeCircle
nonpayablefunction bridgeCircle()
bridgeStargate
nonpayablefunction bridgeStargate()
bridgeSynapse
nonpayablefunction bridgeSynapse()
bridgezkEVM
nonpayablefunction bridgezkEVM()
bridgezkSync
nonpayablefunction bridgezkSync()
harvest
nonpayablefunction harvest()
inCaseTokensGetStuck
nonpayablefunction inCaseTokensGetStuck(address _token, bool _native)
initialize
nonpayablefunction initialize()
renounceOwnership
nonpayablefunction renounceOwnership()
setActiveBridge
nonpayablefunction setActiveBridge(bytes32 _bridgeHash, tuple _params)
setActiveSwap
nonpayablefunction setActiveSwap(bytes32 _swapHash, tuple _params)
setCowllector
nonpayablefunction setCowllector(tuple _cowllector)
setDestinationAddress
nonpayablefunction setDestinationAddress(tuple _destination)
setMinBridgeAmount
nonpayablefunction setMinBridgeAmount(uint256 _amount)
setStable
nonpayablefunction setStable(address _stable, address _native)
setSwapHash
nonpayablefunction setSwapHash(string _hash, string _variable)
swapAlgebra
nonpayablefunction swapAlgebra()
swapBalancer
nonpayablefunction swapBalancer()
swapBeefy
nonpayablefunction swapBeefy()
swapSolidly
nonpayablefunction swapSolidly()
swapUniV2
nonpayablefunction swapUniV2()
swapUniV3
nonpayablefunction swapUniV3()
swapUniV3Deadline
nonpayablefunction swapUniV3Deadline()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
Bridged
event Bridged(address indexed stable, uint256 stableBridged)
CowllectorRefill
event CowllectorRefill(uint256 amount)
Initialized
event Initialized(uint8 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
SetBridge
event SetBridge(bytes32 bridge, (address bridge, bytes params) params)
SetDestinationAddress
event SetDestinationAddress((address destination, bytes destinationBytes, string destinationString) destinationAddress)
SetMinBridgeAmount
event SetMinBridgeAmount(uint256 amount)
SetStable
event SetStable(address oldStable, address newStable)
SetSwap
event SetSwap(bytes32 swap, (address router, bytes params) params)
Upgraded
event Upgraded(address indexed implementation)
errors
BridgeError
error BridgeError()
FailedToSendEther
error FailedToSendEther()
IncorrectRoute
error IncorrectRoute()
NotAuthorized
error NotAuthorized()
NotEnoughEth
error NotEnoughEth()
SwapError
error SwapError()
creation bytecode
0x60a06040523060805234801561001457600080fd5b50608051615e9e6200004d60003960008181610e2b01528181610e7401528181610f3d01528181610f7d01526112960152615e9e6000f3fe6080604052600436106102605760003560e01c80638129fc1c11610144578063c4b00c4f116100b6578063d7d66e711161007a578063d7d66e71146106fc578063ee63c1e51461071c578063f2fde38b14610731578063f3f1a71a14610751578063fe8d1ab014610771578063ff33d21f1461078657600080fd5b8063c4b00c4f1461061d578063c89f2ce41461063d578063ca325469146106ae578063cc5ea4ef146106d2578063d49b6408146106e757600080fd5b8063a5131aaa11610108578063a5131aaa14610554578063b54653fb14610569578063b9f39147146105bd578063bac86af5146105d2578063bce4547a146105f2578063c3c224751461060757600080fd5b80638129fc1c146104d2578063873d80ec146104e75780638da5cb5b1461050a578063943f8e96146105285780639c345b9f1461053e57600080fd5b80635066a747116101dd578063671f6a26116101a1578063671f6a261461041f5780636ae40711146104465780636d0a68911461045b57806370c7510714610488578063715018a6146104a8578063748b3c05146104bd57600080fd5b80635066a747146103925780635109d8b6146103b257806352d1902d146103c7578063530728d5146103ea57806364e510a1146103ff57600080fd5b806322be3de11161022457806322be3de11461030a578063284eb6631461032a5780633659cfe61461034a5780634641257d1461036a5780634f1ef2861461037f57600080fd5b80630278fb8a1461026c578063057d1ae3146102835780630d1f78331461029857806311b0b42d146102ad5780631610ee40146102ea57600080fd5b3661026757005b600080fd5b34801561027857600080fd5b506102816107a6565b005b34801561028f57600080fd5b50610281610938565b3480156102a457600080fd5b50610281610b99565b3480156102b957600080fd5b5060cd546102cd906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102f657600080fd5b506102816103053660046145c5565b610d7e565b34801561031657600080fd5b5060cc546102cd906001600160a01b031681565b34801561033657600080fd5b50610281610345366004614641565b610dcf565b34801561035657600080fd5b506102816103653660046146c1565b610e21565b34801561037657600080fd5b50610281610f09565b61028161038d366004614795565b610f33565b34801561039e57600080fd5b506102816103ad366004614839565b611003565b3480156103be57600080fd5b50610281611096565b3480156103d357600080fd5b506103dc611289565b6040519081526020016102e1565b3480156103f657600080fd5b5061028161133c565b34801561040b57600080fd5b5061028161041a366004614839565b611429565b34801561042b57600080fd5b5060c9546104399060ff1681565b6040516102e191906148a1565b34801561045257600080fd5b506102816114b7565b34801561046757600080fd5b5061047b6104763660046148af565b61169d565b6040516102e19190614918565b34801561049457600080fd5b506103dc6104a336600461492b565b611737565b3480156104b457600080fd5b5061028161176b565b3480156104c957600080fd5b5061028161177d565b3480156104de57600080fd5b506102816118ed565b3480156104f357600080fd5b506104fc611a65565b6040516102e192919061496c565b34801561051657600080fd5b506033546001600160a01b03166102cd565b34801561053457600080fd5b506103dc60cf5481565b34801561054a57600080fd5b506103dc60ce5481565b34801561056057600080fd5b50610281611b06565b34801561057557600080fd5b5060d05460d1546105989160ff8116916101009091046001600160a01b03169083565b6040805193151584526001600160a01b039092166020840152908201526060016102e1565b3480156105c957600080fd5b50610281611b72565b3480156105de57600080fd5b506102816105ed36600461499e565b611cfe565b3480156105fe57600080fd5b50610281611df8565b34801561061357600080fd5b506103dc60d95481565b34801561062957600080fd5b506102816106383660046149d7565b61200c565b34801561064957600080fd5b5060ca5460cb54610679916001600160a01b038082169260ff600160a01b93849004811693928216929091041684565b6040516102e194939291906001600160a01b039485168152921515602084015292166040820152901515606082015260800190565b3480156106ba57600080fd5b506106c3612021565b6040516102e1939291906149f3565b3480156106de57600080fd5b50610281612150565b3480156106f357600080fd5b506104fc6122eb565b34801561070857600080fd5b506102816107173660046148af565b612309565b34801561072857600080fd5b50610281612349565b34801561073d57600080fd5b5061028161074c3660046146c1565b6124d5565b34801561075d57600080fd5b5061047b61076c3660046148af565b61254b565b34801561077d57600080fd5b50610281612564565b34801561079257600080fd5b506102816107a1366004614a29565b6126ed565b6107ae6127c9565b600060d460010180546107c090614a57565b80601f01602080910402602001604051908101604052809291908181526020018280546107ec90614a57565b80156108395780601f1061080e57610100808354040283529160200191610839565b820191906000526020600020905b81548152906001019060200180831161081c57829003601f168201915b50505050508060200190518101906108519190614b1d565b60cd5481519192506001600160a01b031690829060009061087457610874614b51565b60200260200101516001600160a01b0316146108a3576040516376c252e160e11b815260040160405180910390fd5b60cc5481516001600160a01b039091169082906108c290600190614b7d565b815181106108d2576108d2614b51565b60200260200101516001600160a01b031614610901576040516376c252e160e11b815260040160405180910390fd5b600061090c826127e9565b905060006109186128a2565b60d454909150610932906001600160a01b03168383612915565b50505050565b6109406127c9565b600060d2600101805461095290614a57565b80601f016020809104026020016040519081016040528092919081815260200182805461097e90614a57565b80156109cb5780601f106109a0576101008083540402835291602001916109cb565b820191906000526020600020905b8154815290600101906020018083116109ae57829003601f168201915b50505050508060200190518101906109e39190614b90565b6040805160e081018252825161ffff16815260d6546001600160a01b0316602080830191909152633b9aca00828401819052606083015282516000808252818301855260808401919091528351818152808301855260a0840152835191820190935282815260c0820152919250610a59826129b4565b9050610a688160000151612a3b565b610a70612aae565b6000610a7a612b0f565b905060d954811115610b63576040805160e081018252855161ffff16815260d6546001600160a01b039081166020808401919091528284018590526000606084018190528451818152808301865260808501528451818152808301865260a085015284519182018552815260c083015260d2548551935163cbef2aa960e01b8152929650169163cbef2aa991610b1890879087903090600401614c7b565b60006040518083038185885af1158015610b36573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052610b5f9190810190614d4b565b5050505b60cc546040518281526001600160a01b0390911690600080516020615e028339815191529060200160405180910390a250505050565b610ba16127c9565b60008060d46001018054610bb490614a57565b80601f0160208091040260200160405190810160405280929190818152602001828054610be090614a57565b8015610c2d5780601f10610c0257610100808354040283529160200191610c2d565b820191906000526020600020905b815481529060010190602001808311610c1057829003601f168201915b5050505050806020019051810190610c459190614e32565b60cd5481519294509092506001600160a01b0316908290600090610c6b57610c6b614b51565b60200260200101516001600160a01b031614610c9a576040516376c252e160e11b815260040160405180910390fd5b60cc5481516001600160a01b03909116908290610cb990600190614b7d565b81518110610cc957610cc9614b51565b60200260200101516001600160a01b031614610cf8576040516376c252e160e11b815260040160405180910390fd5b6000610d026128a2565b90506000610d108483612b40565b60d45460c9546040805160808101825260ca546001600160a01b03808216835260ff600160a01b9283900481161515602085015260cb548083169585019590955291909304811615156060830152949550610d779491909316929116908490879087612d49565b5050505050565b610d86612e93565b7f518f47fcfba5d9b707c3387a7fa4301136192d8091a43ea13ae8db7275ab5d3a81604051610db59190614f7e565b60405180910390a18060d6610dca8282615163565b505050565b610dd7612e93565b818160dc60008787604051602001610df092919061525c565b6040516020818303038152906040528051906020012081526020019081526020016000209182610d779291906150aa565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610e725760405162461bcd60e51b8152600401610e6990615270565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610ebb600080516020615e22833981519152546001600160a01b031690565b6001600160a01b031614610ee15760405162461bcd60e51b8152600401610e69906152bc565b610eea81612eed565b60408051600080825260208201909252610f0691839190612ef5565b50565b610f11613060565b610f196130d1565b6000610f236128a2565b1115610f3157610f3161320a565b565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610f7b5760405162461bcd60e51b8152600401610e6990615270565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610fc4600080516020615e22833981519152546001600160a01b031690565b6001600160a01b031614610fea5760405162461bcd60e51b8152600401610e69906152bc565b610ff382612eed565b610fff82826001612ef5565b5050565b61100b612e93565b7f25f7dd6fc737add5174192a11292dfd270c1397f9c4f641fb6336a208b5efbed828260405161103c929190615342565b60405180910390a160cd5460d454611060916001600160a01b03908116911661323a565b60cf8290558060d46110728282615437565b505060cd54610fff906001600160a01b031661109160208401846146c1565b6132c9565b61109e6127c9565b600060d460010180546110b090614a57565b80601f01602080910402602001604051908101604052809291908181526020018280546110dc90614a57565b80156111295780601f106110fe57610100808354040283529160200191611129565b820191906000526020600020905b81548152906001019060200180831161110c57829003601f168201915b50505050508060200190518101906111419190615441565b9050600061114e82613356565b60cd5481519192506001600160a01b031690829060009061117157611171614b51565b60200260200101516001600160a01b0316146111a0576040516376c252e160e11b815260040160405180910390fd5b60cc5481516001600160a01b039091169082906111bf90600190614b7d565b815181106111cf576111cf614b51565b60200260200101516001600160a01b0316146111fe576040516376c252e160e11b815260040160405180910390fd5b60006112086128a2565b60d454604051631e82ecdb60e31b81529192506001600160a01b03169063f41766d890611242908490600090889030904290600401615519565b6000604051808303816000875af1158015611261573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261093291908101906155ae565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113295760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610e69565b50600080516020615e2283398151915290565b6113446127c9565b61134c612aae565b6000611356612b0f565b905060d9548111156113f65760d25460d65460cc5460405163cd58657960e01b81526000600482018190526001600160a01b0393841660248301526044820186905291831660648201526001608482015260c060a482015260c481019190915291169063cd5865799060e4015b600060405180830381600087803b1580156113dd57600080fd5b505af11580156113f1573d6000803e3d6000fd5b505050505b60cc546040518281526001600160a01b0390911690600080516020615e028339815191529060200160405180910390a250565b611431612e93565b7f5e355369ceaccb04ff615500f99b96912ce9f237ed35ae521487c19064e2318d8282604051611462929190615342565b60405180910390a160cc5460d254611486916001600160a01b03908116911661323a565b60ce8290558060d26114988282615437565b505060cc54610fff906001600160a01b031661109160208401846146c1565b6114bf6127c9565b600060d460010180546114d190614a57565b80601f01602080910402602001604051908101604052809291908181526020018280546114fd90614a57565b801561154a5780601f1061151f5761010080835404028352916020019161154a565b820191906000526020600020905b81548152906001019060200180831161152d57829003601f168201915b50505050508060200190518101906115629190614b1d565b60cd5481519192506001600160a01b031690829060009061158557611585614b51565b60200260200101516001600160a01b0316146115b4576040516376c252e160e11b815260040160405180910390fd5b60cc5481516001600160a01b039091169082906115d390600190614b7d565b815181106115e3576115e3614b51565b60200260200101516001600160a01b031614611612576040516376c252e160e11b815260040160405180910390fd5b600061161c6128a2565b60d4546040516338ed173960e01b81529192506001600160a01b0316906338ed173990611656908490600090879030904290600401615682565b6000604051808303816000875af1158015611675573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dca91908101906155ae565b60db60205260009081526040902080546116b690614a57565b80601f01602080910402602001604051908101604052809291908181526020018280546116e290614a57565b801561172f5780601f106117045761010080835404028352916020019161172f565b820191906000526020600020905b81548152906001019060200180831161171257829003601f168201915b505050505081565b6000828260405160200161174c92919061525c565b6040516020818303038152906040528051906020012090505b92915050565b611773612e93565b610f316000613474565b6117856127c9565b600060d2600101805461179790614a57565b80601f01602080910402602001604051908101604052809291908181526020018280546117c390614a57565b80156118105780601f106117e557610100808354040283529160200191611810565b820191906000526020600020905b8154815290600101906020018083116117f357829003601f168201915b505050505080602001905181019061182891906156be565b9050611832612aae565b600061183c612b0f565b905060d9548111156118b85760d254825160208401516040516326ef699d60e01b81526001600160a01b03909316926326ef699d9261188592909160d89190879060040161574e565b600060405180830381600087803b15801561189f57600080fd5b505af11580156118b3573d6000803e3d6000fd5b505050505b60cc546040518281526001600160a01b0390911690600080516020615e02833981519152906020015b60405180910390a25050565b600054610100900460ff161580801561190d5750600054600160ff909116105b806119275750303b158015611927575060005460ff166001145b61198a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610e69565b6000805460ff1916600117905580156119ad576000805461ff0019166101001790555b6119b56134c6565b6119bd6134f5565b6119c561381c565b604080516080810182523080825260006020830181905292820181905260609091019190915260ca805460ff60a01b199092166001600160a81b0319928316811790915560cb805490921617905560c9805460ff191690558015610f06576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b60d4805460d580546001600160a01b039092169291611a8390614a57565b80601f0160208091040260200160405190810160405280929190818152602001828054611aaf90614a57565b8015611afc5780601f10611ad157610100808354040283529160200191611afc565b820191906000526020600020905b815481529060010190602001808311611adf57829003601f168201915b5050505050905082565b611b0e6127c9565b611b16612aae565b6000611b20612b0f565b905060d9548111156113f65760d25460d65460cc54604051636ce5768960e11b81526001600160a01b03928316600482015290821660248201526044810184905291169063d9caed12906064016113c3565b611b7a6127c9565b600060d46001018054611b8c90614a57565b80601f0160208091040260200160405190810160405280929190818152602001828054611bb890614a57565b8015611c055780601f10611bda57610100808354040283529160200191611c05565b820191906000526020600020905b815481529060010190602001808311611be857829003601f168201915b5050505050806020019051810190611c1d9190615804565b90506000611c2a82613b25565b60cd5481519192506001600160a01b0316908290600090611c4d57611c4d614b51565b60200260200101516001600160a01b031614611c7c576040516376c252e160e11b815260040160405180910390fd5b60cc5481516001600160a01b03909116908290611c9b90600190614b7d565b81518110611cab57611cab614b51565b60200260200101516001600160a01b031614611cda576040516376c252e160e11b815260040160405180910390fd5b6000611ce46128a2565b60d454909150610932906001600160a01b03168483612915565b611d06612e93565b8015611d77576040514790600090339083908381818185875af1925050503d8060008114611d50576040519150601f19603f3d011682016040523d82523d6000602084013e611d55565b606091505b505090508061093257604051630dcf35db60e41b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015611dbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de29190615838565b9050610dca6001600160a01b0384163383613c28565b611e006127c9565b600060d46001018054611e1290614a57565b80601f0160208091040260200160405190810160405280929190818152602001828054611e3e90614a57565b8015611e8b5780601f10611e6057610100808354040283529160200191611e8b565b820191906000526020600020905b815481529060010190602001808311611e6e57829003601f168201915b5050505050806020019051810190611ea39190614b1d565b60cd5481519192506001600160a01b0316908290600090611ec657611ec6614b51565b60200260200101516001600160a01b031614611ef5576040516376c252e160e11b815260040160405180910390fd5b60cc5481516001600160a01b039091169082906001908110611f1957611f19614b51565b60200260200101516001600160a01b031614611f48576040516376c252e160e11b815260040160405180910390fd5b6000611f526128a2565b60d45483519192506001600160a01b03169063df791e50908490600090611f7b57611f7b614b51565b602002602001015184600181518110611f9657611f96614b51565b60209081029190910101516040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260448101849052606401600060405180830381600087803b158015611ff057600080fd5b505af1158015612004573d6000803e3d6000fd5b505050505050565b612014612e93565b8060d0610dca8282615851565b60d6805460d780546001600160a01b03909216929161203f90614a57565b80601f016020809104026020016040519081016040528092919081815260200182805461206b90614a57565b80156120b85780601f1061208d576101008083540402835291602001916120b8565b820191906000526020600020905b81548152906001019060200180831161209b57829003601f168201915b5050505050908060020180546120cd90614a57565b80601f01602080910402602001604051908101604052809291908181526020018280546120f990614a57565b80156121465780601f1061211b57610100808354040283529160200191612146565b820191906000526020600020905b81548152906001019060200180831161212957829003601f168201915b5050505050905083565b6121586127c9565b600060d2600101805461216a90614a57565b80601f016020809104026020016040519081016040528092919081815260200182805461219690614a57565b80156121e35780601f106121b8576101008083540402835291602001916121e3565b820191906000526020600020905b8154815290600101906020018083116121c657829003601f168201915b50505050508060200190518101906121fb91906158c0565b9050612205612aae565b600061220f612b0f565b905060d9548111156118b85760d25460d6548351606085015160208601516040870151608088015160a08901516001600160a01b0397881697639f33072797169594939291899160009142918361226884610e10615959565b6040516001600160e01b031960e08f901b1681526001600160a01b039c8d166004820152602481019b909b529a90981660448a015260ff96871660648a0152948616608489015260a488019390935260c487019190915260e486015282166101048501521661012483015261014482015261016481019190915261018401611885565b60d2805460d380546001600160a01b039092169291611a8390614a57565b612311612e93565b6040518181527ff4f47d85dc8207b9d9c6dfd289d4f5008b33df899eda3da90658d75c351e54759060200160405180910390a160d955565b6123516127c9565b600060d4600101805461236390614a57565b80601f016020809104026020016040519081016040528092919081815260200182805461238f90614a57565b80156123dc5780601f106123b1576101008083540402835291602001916123dc565b820191906000526020600020905b8154815290600101906020018083116123bf57829003601f168201915b50505050508060200190518101906123f49190615804565b9050600061240182613b25565b60cd5481519192506001600160a01b031690829060009061242457612424614b51565b60200260200101516001600160a01b031614612453576040516376c252e160e11b815260040160405180910390fd5b60cc5481516001600160a01b0390911690829061247290600190614b7d565b8151811061248257612482614b51565b60200260200101516001600160a01b0316146124b1576040516376c252e160e11b815260040160405180910390fd5b60006124bb6128a2565b60d454909150610932906001600160a01b03168483613c8b565b6124dd612e93565b6001600160a01b0381166125425760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610e69565b610f0681613474565b60dc60205260009081526040902080546116b690614a57565b61256c6127c9565b600060d2600101805461257e90614a57565b80601f01602080910402602001604051908101604052809291908181526020018280546125aa90614a57565b80156125f75780601f106125cc576101008083540402835291602001916125f7565b820191906000526020600020905b8154815290600101906020018083116125da57829003601f168201915b505050505080602001905181019061260f919061596c565b9050612619612aae565b6000612623612b0f565b905060d9548111156118b85760d25460d65460cc546040516337e9a82760e11b81526004810185905263ffffffff861660248201526001600160a01b0392831660448201529082166064820152911690636fd3504e906084016020604051808303816000875af115801561269b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126bf9190615992565b5060cc546040518281526001600160a01b0390911690600080516020615e02833981519152906020016118e1565b6126f5612e93565b60da5460ff1661273a5760cc80546001600160a01b039384166001600160a01b03199182161790915560cd805492909316911617905560da805460ff19166001179055565b60cc54604080516001600160a01b03928316815291841660208301527f4239efeca0761c0d170bd15a6e85542dbe0376ba0f5f1551b39c6045866ff735910160405180910390a160cc5460d25461279d916001600160a01b03908116911661323a565b60cc80546001600160a01b0319166001600160a01b0384811691821790925560d254610fff92166132c9565b333014610f315760405163ea8e4eb560e01b815260040160405180910390fd5b6060816000815181106127fe576127fe614b51565b602002602001015160405160200161282e919060609190911b6bffffffffffffffffffffffff1916815260140190565b60408051601f19818403018152919052905060015b825181101561289c578183828151811061285f5761285f614b51565b60200260200101516040516020016128789291906159ad565b60405160208183030381529060405291508080612894906159e4565b915050612843565b50919050565b60cd546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a08231906024015b602060405180830381865afa1580156128ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129109190615838565b905090565b6040805160a081018252838152306020820152428183015260608101839052600060808201819052915163c04b8d5960e01b81526001600160a01b0386169063c04b8d59906129689084906004016159fd565b6020604051808303816000875af1158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab9190615838565b95945050505050565b604080518082019091526000808252602082015260d254604051633b6f743b60e01b81526001600160a01b0390911690633b6f743b906129fb908590600090600401615a55565b6040805180830381865afa158015612a17573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117659190615a79565b6000612a456128a2565b9050818110610fff5760cd54604051632e1a7d4d60e01b8152600481018490526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015612a9457600080fd5b505af1925050508015612aa5575060015b15610fff575050565b60cf54600090815260dc6020526040908190208151600481526024810192839052610f06929091612ade91615a95565b6040519081900390206020820180516001600160e01b03166001600160e01b03199092169190911790523090613cd8565b60cc546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a08231906024016128cf565b6060600083516001600160401b03811115612b5d57612b5d6146de565b604051908082528060200260200182016040528015612bc357816020015b612bb06040518060a0016040528060008019168152602001600081526020016000815260200160008152602001606081525090565b815260200190600190039081612b7b5790505b50905060005b8451811015612d415780600003612c8d576040518060a0016040528086600081518110612bf857612bf8614b51565b602002602001015160000151815260200186600081518110612c1c57612c1c614b51565b602002602001015160200151815260200186600081518110612c4057612c40614b51565b60200260200101516040015181526020018581526020016040518060200160405280600081525081525082600081518110612c7d57612c7d614b51565b6020026020010181905250612d39565b6040518060a00160405280868381518110612caa57612caa614b51565b6020026020010151600001518152602001868381518110612ccd57612ccd614b51565b6020026020010151602001518152602001868381518110612cf057612cf0614b51565b60200260200101516040015181526020016000815260200160405180602001604052806000815250815250828281518110612d2d57612d2d614b51565b60200260200101819052505b600101612bc9565b509392505050565b6060600084516001600160401b03811115612d6657612d666146de565b604051908082528060200260200182016040528015612d8f578160200160208202803683370190505b50905060005b8551811015612e095780600003612dcb578382600081518110612dba57612dba614b51565b602002602001018181525050612e01565b60018651612dd99190614b7d565b8103612e0157600019828281518110612df457612df4614b51565b6020026020010181815250505b600101612d95565b5060405163945bcec960e01b81526001600160a01b0389169063945bcec990612e40908a908a908a908a9088904290600401615b3b565b6000604051808303816000875af1158015612e5f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612e8791908101906155ae565b98975050505050505050565b6033546001600160a01b03163314610f315760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e69565b610f06612e93565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612f2857610dca83613d23565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612f82575060408051601f3d908101601f19168201909252612f7f91810190615838565b60015b612fe55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610e69565b600080516020615e2283398151915281146130545760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610e69565b50610dca838383613dbf565b478015610f065760cd60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0476040518263ffffffff1660e01b81526004016000604051808303818588803b1580156130b757600080fd5b505af1935050505080156130c9575060015b15610f065750565b60d05460ff1615610f315760cd5460d0546040516370a0823160e01b81526101009091046001600160a01b03908116600483015260009216906370a0823190602401602060405180830381865afa158015613130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131549190615838565b60d054613170919061010090046001600160a01b031631615959565b60d154909150811015610f065760006131876128a2565b905060008260d06001015461319c9190614b7d565b90508181116131ab57806131ad565b815b60d05460cd549192506131d2916001600160a01b039081169161010090041683613c28565b6040518181527feb722ef3dbafc24e43f4627f9b306563a93d546865b49eb1e64fbaffdab73d5c9060200160405180910390a1505050565b60ce54600090815260db6020526040908190208151600481526024810192839052610f06929091612ade91615a95565b604051636eb1769f60e11b81523060048201526001600160a01b0382811660248301526000919084169063dd62ed3e90604401602060405180830381865afa15801561328a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132ae9190615838565b1115610fff57610fff6001600160a01b038316826000613de4565b604051636eb1769f60e11b81523060048201526001600160a01b03828116602483015283169063dd62ed3e90604401602060405180830381865afa158015613315573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133399190615838565b600003610fff57610fff6001600160a01b03831682600019613de4565b60606000825160016133689190615959565b6001600160401b0381111561337f5761337f6146de565b6040519080825280602002602001820160405280156133a8578160200160208202803683370190505b509050826000815181106133be576133be614b51565b602002602001015160000151816000815181106133dd576133dd614b51565b60200260200101906001600160a01b031690816001600160a01b03168152505060005b835181101561346d5783818151811061341b5761341b614b51565b602002602001015160200151828260016134359190615959565b8151811061344557613445614b51565b6001600160a01b0390921660209283029190910190910152613466816159e4565b9050613400565b5092915050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166134ed5760405162461bcd60e51b8152600401610e6990615c54565b610f31613ef9565b6040518060400160405280600e81526020016d627269646765436972636c65282960901b81525060db600060405160200161354a90602080825260069082015265434952434c4560d01b604082015260600190565b604051602081830303815290604052805190602001208152602001908152602001600020908161357a9190615c9f565b506040518060400160405280601081526020016f6272696467655374617267617465282960801b81525060db60006040516020016135d490602080825260089082015267535441524741544560c01b604082015260600190565b60405160208183030381529060405280519060200120815260200190815260200160002090816136049190615c9f565b506040518060400160405280600e81526020016d6272696467654178656c6172282960901b81525060db600060405160200161365a9060208082526006908201526520ac22a620a960d11b604082015260600190565b604051602081830303815290604052805190602001208152602001908152602001600020908161368a9190615c9f565b506040518060400160405280600f81526020016e62726964676553796e61707365282960881b81525060db60006040516020016136e29060208082526007908201526653594e4150534560c81b604082015260600190565b60405160208183030381529060405280519060200120815260200190815260200160002090816137129190615c9f565b506040518060400160405280600d81526020016c6272696467657a6b45564d282960981b81525060db6000604051602001613766906020808252600590820152647a6b45564d60d81b604082015260600190565b60405160208183030381529060405280519060200120815260200190815260200160002090816137969190615c9f565b506040518060400160405280600e81526020016d6272696467657a6b53796e63282960901b81525060db60006040516020016137ec906020808252600690820152657a6b53594e4360d01b604082015260600190565b6040516020818303038152906040528051906020012081526020019081526020016000209081610f069190615c9f565b6040518060400160405280600b81526020016a73776170556e695632282960a81b81525060dc6000604051602001613872906020808252600a90820152692aa724a9aba0a82fab1960b11b604082015260600190565b60405160208183030381529060405280519060200120815260200190815260200160002090816138a29190615c9f565b506040518060400160405280600d81526020016c73776170536f6c69646c79282960981b81525060dc60006040516020016138f890602080825260079082015266534f4c49444c5960c81b604082015260600190565b60405160208183030381529060405280519060200120815260200190815260200160002090816139289190615c9f565b506040518060400160405280600b81526020016a73776170556e695633282960a81b81525060dc600060405160200161397f906020808252600a9082015269554e49535741505f563360b01b604082015260600190565b60405160208183030381529060405280519060200120815260200190815260200160002090816139af9190615c9f565b506040518060400160405280601381526020017273776170556e695633446561646c696e65282960681b81525060dc6000604051602001613a1790602080825260139082015272554e49535741505f56335f444541444c494e4560681b604082015260600190565b6040516020818303038152906040528051906020012081526020019081526020016000209081613a479190615c9f565b506040518060400160405280600d81526020016c73776170416c6765627261282960981b81525060dc6000604051602001613a9d90602080825260079082015266414c474542524160c81b604082015260600190565b6040516020818303038152906040528051906020012081526020019081526020016000209081613acd9190615c9f565b506040518060400160405280600e81526020016d7377617042616c616e636572282960901b81525060dc60006040516020016137ec906020808252600890820152672120a620a721a2a960c11b604082015260600190565b60606000613b3283613f29565b90506000613b41826001615959565b6001600160401b03811115613b5857613b586146de565b604051908082528060200260200182016040528015613b81578160200160208202803683370190505b50905060005b82811015612d4157600080613b9b87613f4f565b509150915081848481518110613bb357613bb3614b51565b6001600160a01b03909216602092830291909101909101528084613bd8856001615959565b81518110613be857613be8614b51565b60200260200101906001600160a01b031690816001600160a01b031681525050613c1187613f8b565b965050508080613c20906159e4565b915050613b87565b6040516001600160a01b038316602482015260448101829052610dca90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613fbc565b60408051608081018252838152306020820152808201839052600060608201819052915163b858183f60e01b81526001600160a01b0386169063b858183f90612968908490600401615d58565b6060613d1c838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250614091565b9392505050565b6001600160a01b0381163b613d905760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610e69565b600080516020615e2283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b613dc88361416e565b600082511180613dd55750805b15610dca5761093283836141ae565b801580613e5e5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015613e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e5c9190615838565b155b613ec95760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610e69565b6040516001600160a01b038316602482015260448101829052610dca90849063095ea7b360e01b90606401613c54565b600054610100900460ff16613f205760405162461bcd60e51b8152600401610e6990615c54565b610f3133613474565b6000613f3760036014615959565b60148351613f459190614b7d565b6117659190615da6565b60008080613f5d84826141d3565b9250613f6a846014614287565b9050613f82613f7b60036014615959565b85906141d3565b91509193909250565b6060611765613f9c60036014615959565b613fa860036014615959565b8451613fb49190614b7d565b849190614332565b6000614011826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166144899092919063ffffffff16565b90508051600014806140325750808060200190518101906140329190615dc8565b610dca5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610e69565b6060824710156140f25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610e69565b600080866001600160a01b0316858760405161410e9190615de5565b60006040518083038185875af1925050503d806000811461414b576040519150601f19603f3d011682016040523d82523d6000602084013e614150565b606091505b509150915061416187838387614498565b925050505b949350505050565b61417781613d23565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060613d1c8383604051806060016040528060278152602001615e4260279139614511565b6000816141e1816014615959565b10156142245760405162461bcd60e51b8152602060048201526012602482015271746f416464726573735f6f766572666c6f7760701b6044820152606401610e69565b61422f826014615959565b835110156142775760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606401610e69565b500160200151600160601b900490565b600081614295816003615959565b10156142d75760405162461bcd60e51b8152602060048201526011602482015270746f55696e7432345f6f766572666c6f7760781b6044820152606401610e69565b6142e2826003615959565b835110156143295760405162461bcd60e51b8152602060048201526014602482015273746f55696e7432345f6f75744f66426f756e647360601b6044820152606401610e69565b50016003015190565b60608161434081601f615959565b101561437f5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610e69565b8261438a8382615959565b10156143c95760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610e69565b6143d38284615959565b845110156144175760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610e69565b6060821580156144365760405191506000825260208201604052614480565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561446f578051835260209283019201614457565b5050858452601f01601f1916604052505b50949350505050565b60606141668484600085614091565b60608315614507578251600003614500576001600160a01b0385163b6145005760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610e69565b5081614166565b6141668383614589565b6060600080856001600160a01b03168560405161452e9190615de5565b600060405180830381855af49150503d8060008114614569576040519150601f19603f3d011682016040523d82523d6000602084013e61456e565b606091505b509150915061457f86838387614498565b9695505050505050565b8151156145995781518083602001fd5b8060405162461bcd60e51b8152600401610e699190614918565b60006060828403121561289c57600080fd5b6000602082840312156145d757600080fd5b81356001600160401b038111156145ed57600080fd5b614166848285016145b3565b60008083601f84011261460b57600080fd5b5081356001600160401b0381111561462257600080fd5b60208301915083602082850101111561463a57600080fd5b9250929050565b6000806000806040858703121561465757600080fd5b84356001600160401b038082111561466e57600080fd5b61467a888389016145f9565b9096509450602087013591508082111561469357600080fd5b506146a0878288016145f9565b95989497509550505050565b6001600160a01b0381168114610f0657600080fd5b6000602082840312156146d357600080fd5b8135613d1c816146ac565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715614716576147166146de565b60405290565b604051606081016001600160401b0381118282101715614716576147166146de565b604051601f8201601f191681016001600160401b0381118282101715614766576147666146de565b604052919050565b60006001600160401b03821115614787576147876146de565b50601f01601f191660200190565b600080604083850312156147a857600080fd5b82356147b3816146ac565b915060208301356001600160401b038111156147ce57600080fd5b8301601f810185136147df57600080fd5b80356147f26147ed8261476e565b61473e565b81815286602083850101111561480757600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006040828403121561289c57600080fd5b6000806040838503121561484c57600080fd5b8235915060208301356001600160401b0381111561486957600080fd5b61487585828601614827565b9150509250929050565b6002811061489d57634e487b7160e01b600052602160045260246000fd5b9052565b60208101611765828461487f565b6000602082840312156148c157600080fd5b5035919050565b60005b838110156148e35781810151838201526020016148cb565b50506000910152565b600081518084526149048160208601602086016148c8565b601f01601f19169290920160200192915050565b602081526000613d1c60208301846148ec565b6000806020838503121561493e57600080fd5b82356001600160401b0381111561495457600080fd5b614960858286016145f9565b90969095509350505050565b6001600160a01b0383168152604060208201819052600090614166908301846148ec565b8015158114610f0657600080fd5b600080604083850312156149b157600080fd5b82356149bc816146ac565b915060208301356149cc81614990565b809150509250929050565b6000606082840312156149e957600080fd5b613d1c83836145b3565b6001600160a01b0384168152606060208201819052600090614a17908301856148ec565b828103604084015261457f81856148ec565b60008060408385031215614a3c57600080fd5b8235614a47816146ac565b915060208301356149cc816146ac565b600181811c90821680614a6b57607f821691505b60208210810361289c57634e487b7160e01b600052602260045260246000fd5b60006001600160401b03821115614aa457614aa46146de565b5060051b60200190565b600082601f830112614abf57600080fd5b81516020614acf6147ed83614a8b565b82815260059290921b84018101918181019086841115614aee57600080fd5b8286015b84811015614b12578051614b05816146ac565b8352918301918301614af2565b509695505050505050565b600060208284031215614b2f57600080fd5b81516001600160401b03811115614b4557600080fd5b61416684828501614aae565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561176557611765614b67565b600060808284031215614ba257600080fd5b604051608081018181106001600160401b0382111715614bc457614bc46146de565b604052825161ffff81168114614bd957600080fd5b808252506020830151602082015260408301516040820152606083015160608201528091505092915050565b63ffffffff81511682526020810151602083015260408101516040830152606081015160608301526000608082015160e06080850152614c4860e08501826148ec565b905060a083015184820360a0860152614c6182826148ec565b91505060c083015184820360c08601526129ab82826148ec565b608081526000614c8e6080830186614c05565b8451602084810191909152909401516040830152506001600160a01b0391909116606090910152919050565b80516001600160401b0381168114614cd157600080fd5b919050565b600060408284031215614ce857600080fd5b614cf06146f4565b9050815181526020820151602082015292915050565b600082601f830112614d1757600080fd5b8151614d256147ed8261476e565b818152846020838601011115614d3a57600080fd5b6141668260208301602087016148c8565b600080600083850360e0811215614d6157600080fd5b6080811215614d6f57600080fd5b50614d7861471c565b84518152614d8860208601614cba565b6020820152614d9a8660408701614cd6565b60408201529250614dae8560808601614cd6565b915060c08401516001600160401b0380821115614dca57600080fd5b9085019060408288031215614dde57600080fd5b614de66146f4565b825168ffffffffffffffffff81168114614dff57600080fd5b8152602083015182811115614e1357600080fd5b614e1f89828601614d06565b6020830152508093505050509250925092565b6000806040808486031215614e4657600080fd5b83516001600160401b0380821115614e5d57600080fd5b818601915086601f830112614e7157600080fd5b81516020614e816147ed83614a8b565b8281526060928302850182019282820191908b851115614ea057600080fd5b958301955b84871015614ee85780878d031215614ebd5760008081fd5b614ec561471c565b875181528488015185820152888801518982015283529586019591830191614ea5565b5091890151919750909450505080831115614f0257600080fd5b505061487585828601614aae565b6000808335601e19843603018112614f2757600080fd5b83016020810192503590506001600160401b03811115614f4657600080fd5b80360382131561463a57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260008235614f8f816146ac565b6001600160a01b0316602083810191909152614fad90840184614f10565b60606040850152614fc2608085018284614f55565b915050614fd26040850185614f10565b848303601f1901606086015261457f838284614f55565b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000808335601e1984360301811261502057600080fd5b8301803591506001600160401b0382111561503a57600080fd5b60200191503681900382131561463a57600080fd5b601f821115610dca57600081815260208120601f850160051c810160208610156150765750805b601f850160051c820191505b8181101561200457828155600101615082565b600019600383901b1c191660019190911b1790565b6001600160401b038311156150c1576150c16146de565b6150d5836150cf8354614a57565b8361504f565b6000601f84116001811461510357600085156150f15750838201355b6150fb8682615095565b845550610d77565b600083815260209020601f19861690835b828110156151345786850135825560209485019460019092019101615114565b50868210156151515760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b813561516e816146ac565b6151788183614fe9565b506001808201602061518c81860186615009565b6001600160401b038111156151a3576151a36146de565b6151b7816151b18654614a57565b8661504f565b6000601f8211600181146151e557600083156151d35750838201355b6151dd8482615095565b87555061523a565b600086815260209020601f19841690835b8281101561521357868501358255938701939089019087016151f6565b50848210156152305760001960f88660031b161c19848701351681555b50508683881b0186555b5050505050505061524e6040830183615009565b6109328183600286016150aa565b602081526000614166602083018486614f55565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60008135615315816146ac565b6001600160a01b0316835261532d6020830183614f10565b604060208601526129ab604086018284614f55565b8281526040602082015260006141666040830184615308565b8135615366816146ac565b6153708183614fe9565b506001808201602061538481860186615009565b6001600160401b0381111561539b5761539b6146de565b6153a9816151b18654614a57565b6000601f8211600181146153d757600083156153c55750838201355b6153cf8482615095565b87555061542c565b600086815260209020601f19841690835b8281101561540557868501358255938701939089019087016153e8565b50848210156154225760001960f88660031b161c19848701351681555b50508683881b0186555b505050505050505050565b610fff828261535b565b6000602080838503121561545457600080fd5b82516001600160401b0381111561546a57600080fd5b8301601f8101851361547b57600080fd5b80516154896147ed82614a8b565b818152606091820283018401918482019190888411156154a857600080fd5b938501935b8385101561550d5780858a0312156154c55760008081fd5b6154cd61471c565b85516154d8816146ac565b8152858701516154e7816146ac565b818801526040868101516154fa81614990565b90820152835293840193918501916154ad565b50979650505050505050565b600060a0820187835260208781850152604060a08186015282885180855260c087019150838a01945060005b8181101561558257855180516001600160a01b03908116855286820151168685015284015115158484015294840194606090920191600101615545565b50506001600160a01b0388166060870152935061559e92505050565b8260808301529695505050505050565b600060208083850312156155c157600080fd5b82516001600160401b038111156155d757600080fd5b8301601f810185136155e857600080fd5b80516155f66147ed82614a8b565b81815260059190911b8201830190838101908783111561561557600080fd5b928401925b828410156156335783518252928401929084019061561a565b979650505050505050565b600081518084526020808501945080840160005b838110156156775781516001600160a01b031687529582019590820190600101615652565b509495945050505050565b85815284602082015260a0604082015260006156a160a083018661563e565b6001600160a01b0394909416606083015250608001529392505050565b6000602082840312156156d057600080fd5b81516001600160401b03808211156156e757600080fd5b90830190604082860312156156fb57600080fd5b6157036146f4565b82518281111561571257600080fd5b61571e87828601614d06565b82525060208301518281111561573357600080fd5b61573f87828601614d06565b60208301525095945050505050565b60808152600061576160808301876148ec565b6020838203818501526000875461577781614a57565b8085526001828116801561579257600181146157ac576157da565b60ff1984168787015282151560051b8701860194506157da565b8b6000528560002060005b848110156157d25781548982018901529083019087016157b7565b880187019550505b5050505084810360408601526157f081886148ec565b935050505082606083015295945050505050565b60006020828403121561581657600080fd5b81516001600160401b0381111561582c57600080fd5b61416684828501614d06565b60006020828403121561584a57600080fd5b5051919050565b813561585c81614990565b815460ff19811691151560ff169182178355602084013561587c816146ac565b6001600160a81b03199190911690911760089190911b610100600160a81b03161781556040919091013560019190910155565b805160ff81168114614cd157600080fd5b600060c082840312156158d257600080fd5b60405160c081018181106001600160401b03821117156158f4576158f46146de565b60405282518152615907602084016158af565b6020820152615918604084016158af565b6040820152606083015161592b816146ac565b606082015261593c608084016158af565b608082015261594d60a084016158af565b60a08201529392505050565b8082018082111561176557611765614b67565b60006020828403121561597e57600080fd5b815163ffffffff81168114613d1c57600080fd5b6000602082840312156159a457600080fd5b613d1c82614cba565b600083516159bf8184602088016148c8565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b6000600182016159f6576159f6614b67565b5060010190565b602081526000825160a06020840152615a1960c08401826148ec565b905060018060a01b0360208501511660408401526040840151606084015260608401516080840152608084015160a08401528091505092915050565b604081526000615a686040830185614c05565b905082151560208301529392505050565b600060408284031215615a8b57600080fd5b613d1c8383614cd6565b6000808354615aa381614a57565b60018281168015615abb5760018114615ad057615aff565b60ff1984168752821515830287019450615aff565b8760005260208060002060005b85811015615af65781548a820152908401908201615add565b50505082870194505b50929695505050505050565b600081518084526020808501945080840160005b8381101561567757815187529582019590820190600101615b1f565b6000610120808301615b4d848b61487f565b60208481019290925288519081905261014080850192600583901b8601909101918a820160005b82811015615bd75787850361013f190186528151805186528481015185870152604080820151908701526060808201519087015260809081015160a091870182905290615bc3818801836148ec565b978601979650505090830190600101615b74565b505050508381036040850152615bed818961563e565b915050615c2d606084018780516001600160a01b039081168352602080830151151590840152604080830151909116908301526060908101511515910152565b82810360e0840152615c3f8186615b0b565b91505082610100830152979650505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b81516001600160401b03811115615cb857615cb86146de565b615ccc81615cc68454614a57565b8461504f565b602080601f831160018114615cfb5760008415615ce95750858301515b615cf38582615095565b865550612004565b600085815260208120601f198616915b82811015615d2a57888601518255948401946001909101908401615d0b565b5085821015615d485787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b602081526000825160806020840152615d7460a08401826148ec565b905060018060a01b03602085015116604084015260408401516060840152606084015160808401528091505092915050565b600082615dc357634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215615dda57600080fd5b8151613d1c81614990565b60008251615df78184602087016148c8565b919091019291505056fe48b87fc02925b37a6aefac60c14fa9d8e9988d7dfadf262d4bd845872ca40730360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220bacb08ad553b86e823875132b7aebdbcb051c56e31e3cfc71fb2b9cf3a90808c64736f6c63430008130033