0 txs
2.96m calls
constructor
constructor()
functions
decimals
viewfunction decimals(address base, address quote) view returns (uint8)
decimalsByName
viewfunction decimalsByName(string base, string quote) view returns (uint8)
description
viewfunction description(address base, address quote) view returns (string)
descriptionByName
viewfunction descriptionByName(string base, string quote) view returns (string)
exists
viewfunction exists(string base, string quote) view returns (bool)
getAccessController
viewfunction getAccessController() view returns (address)
getAllPairs
viewfunction getAllPairs() view returns (tuple[])
getAnswer
viewfunction getAnswer(address base, address quote, uint256 roundId) view returns (int256 answer)
getCurrentPhaseId
viewfunction getCurrentPhaseId(address base, address quote) view returns (uint16 currentPhaseId)
getFeed
viewfunction getFeed(address base, address quote) view returns (address aggregator)
getMultipleLatestRoundData
viewfunction getMultipleLatestRoundData(string[] bases, string[] quotes) view returns (tuple[])
getNextRoundId
viewfunction getNextRoundId(address base, address quote, uint80 roundId) view returns (uint80 nextRoundId)
getPhase
viewfunction getPhase(address base, address quote, uint16 phaseId) view returns (tuple phase)
getPhaseFeed
viewfunction getPhaseFeed(address base, address quote, uint16 phaseId) view returns (address aggregator)
getPhaseRange
viewfunction getPhaseRange(address base, address quote, uint16 phaseId) view returns (uint80 startingRoundId, uint80 endingRoundId)
getPreviousRoundId
viewfunction getPreviousRoundId(address base, address quote, uint80 roundId) view returns (uint80 previousRoundId)
getProposedFeed
viewfunction getProposedFeed(address base, address quote) view returns (address proposedAggregator)
getRoundData
viewfunction getRoundData(address base, address quote, uint80 _roundId) view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)
getRoundFeed
viewfunction getRoundFeed(address base, address quote, uint80 roundId) view returns (address aggregator)
getTimestamp
viewfunction getTimestamp(address base, address quote, uint256 roundId) view returns (uint256 timestamp)
getTradingPairDetails
viewfunction getTradingPairDetails(string base, string quote) view returns (address, address, address)
isFeedEnabled
viewfunction isFeedEnabled(address aggregator) view returns (bool)
latestAnswer
viewfunction latestAnswer(address base, address quote) view returns (int256 answer)
latestAnswerByName
viewfunction latestAnswerByName(string base, string quote) view returns (int256 answer)
latestRound
viewfunction latestRound(address base, address quote) view returns (uint256 roundId)
latestRoundData
viewfunction latestRoundData(address base, address quote) view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)
latestRoundDataByName
viewfunction latestRoundDataByName(string base, string quote) view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)
latestTimestamp
viewfunction latestTimestamp(address base, address quote) view returns (uint256 timestamp)
owner
viewfunction owner() view returns (address)
proposedGetRoundData
viewfunction proposedGetRoundData(address base, address quote, uint80 roundId) view returns (uint80 id, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)
proposedLatestRoundData
viewfunction proposedLatestRoundData(address base, address quote) view returns (uint80 id, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)
totalPairsAvailable
viewfunction totalPairsAvailable() view returns (uint256)
typeAndVersion
purefunction typeAndVersion() pure returns (string)
version
viewfunction version(address base, address quote) view returns (uint256)
versionByName
viewfunction versionByName(string base, string quote) view returns (uint256)
acceptOwnership
nonpayablefunction acceptOwnership()
confirmFeed
nonpayablefunction confirmFeed(address base, address quote, address aggregator)
insertPair
nonpayablefunction insertPair(string base, string quote, address baseAssetAddress, address quoteAssetAddress, address feedAdapterAddress)
proposeFeed
nonpayablefunction proposeFeed(address base, address quote, address aggregator)
removePair
nonpayablefunction removePair(string base, string quote)
setAccessController
nonpayablefunction setAccessController(address _accessController)
transferOwnership
nonpayablefunction transferOwnership(address to)
events
FeedConfirmed
event FeedConfirmed(address indexed asset, address indexed denomination, address indexed latestAggregator, address previousAggregator, uint16 nextPhaseId, address sender)
FeedProposed
event FeedProposed(address indexed asset, address indexed denomination, address indexed proposedAggregator, address currentAggregator, address sender)
OwnershipTransferred
event OwnershipTransferred(address indexed from, address indexed to)
OwnershipTransferRequested
event OwnershipTransferRequested(address indexed from, address indexed to)
PairAccessControllerSet
event PairAccessControllerSet(address indexed accessController, address indexed sender)
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b503380600081620000695760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b03848116919091179091558116156200009c576200009c81620000f1565b505050604051620000ad906200019d565b604051809103906000f080158015620000ca573d6000803e3d6000fd5b50600880546001600160a01b0319166001600160a01b0392909216919091179055620001ab565b6001600160a01b0381163314156200014c5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000060565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6118978062004b6c83390190565b6149b180620001bb6000396000f3fe608060405234801561001057600080fd5b50600436106102de5760003560e01c8063a051538e11610186578063d4c282a3116100e3578063f7d6909111610097578063fc58749e11610071578063fc58749e14610712578063ff0601c014610725578063ff2ed6e01461076f576102de565b8063f7d69091146106d7578063f800ece9146106ea578063fa820de9146106ff576102de565b8063ec62f44b116100c8578063ec62f44b1461069e578063f08391d8146106b1578063f2fde38b146106c4576102de565b8063d4c282a314610678578063eb6d90421461068b576102de565b8063bfda5e711161013a578063c639cd911161011f578063c639cd911461063f578063d0188fc614610652578063d2edb6dd14610665576102de565b8063bfda5e71146105f9578063c1ce86fc1461060c576102de565b8063af34b03a1161016b578063af34b03a146105c0578063b099d43b146105d3578063bcfd032d146105e6576102de565b8063a051538e146105a5578063ad3fdee5146105b8576102de565b8063573a23af1161023f57806379ba5097116101f357806391624c95116101cd57806391624c95146105545780639e3ff6fd146105675780639eed82b014610592576102de565b806379ba5097146104f45780638916524a146104fc5780638da5cb5b14610543576102de565b80635ad9d9df116102245780635ad9d9df146104bb578063672ff44f146104ce5780636e91995a146104e1576102de565b8063573a23af1461048357806358e2d3a814610496576102de565b8063218936fc11610296578063303228181161027b57806330322818146104005780634e74197b1461045057806352dbeb8b14610470576102de565b8063218936fc146103a05780632656554c146103dd576102de565b806315cd4ad2116102c757806315cd4ad21461032157806316d6b5f614610342578063181f5a7714610367576102de565b8063045abf4b146102e357806304737f8e146102f8575b600080fd5b6102f66102f1366004613d8f565b610782565b005b61030b61030636600461419f565b61084f565b604051610318919061448c565b60405180910390f35b61033461032f366004613e5f565b6108ef565b604051908152602001610318565b6002546001600160a01b03165b6040516001600160a01b039091168152602001610318565b60408051808201909152601781527f42696e616e636546656564526567697374727920312e30000000000000000000602082015261030b565b6103b36103ae36600461405d565b610a2f565b604080516001600160a01b0394851681529284166020840152921691810191909152606001610318565b6103f06103eb36600461405d565b610ae3565b6040519015158152602001610318565b61043d61040e366004613d29565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205461ffff1690565b60405161ffff9091168152602001610318565b61046361045e366004613ede565b610b75565b6040516103189190614356565b61034f61047e366004613e1a565b61103b565b6102f66104913660046140c6565b6110c3565b6104a96104a4366004613d29565b61115b565b60405160ff9091168152602001610318565b61034f6104c9366004613d29565b611167565b6103346104dc366004613d29565b611196565b6104a96104ef36600461419f565b61127d565b6102f66115d3565b61050f61050a366004613e9f565b611684565b604080516001600160501b03968716815260208101959095528401929092526060830152909116608082015260a001610318565b6000546001600160a01b031661034f565b610334610562366004613e5f565b6117be565b61057a610575366004613e9f565b6118a3565b6040516001600160501b039091168152602001610318565b6102f66105a0366004613d8f565b6118c8565b61057a6105b3366004613e9f565b611a19565b610334611a35565b6103346105ce366004613d29565b611ad0565b6103f06105e1366004613d0d565b611adc565b61050f6105f4366004613d29565b611afe565b61050f61060736600461419f565b611b3a565b61061f61061a366004613e1a565b611be9565b604080516001600160501b03938416815292909116602083015201610318565b61034f61064d366004613e9f565b611d1e565b61050f610660366004613d29565b611db1565b61034f610673366004613d29565b611ee0565b610334610686366004613d29565b611f35565b61033461069936600461405d565b611f56565b6103346106ac366004613d29565b6124b3565b6102f66106bf366004613d0d565b6125ee565b6102f66106d2366004613d0d565b6126a1565b6103346106e536600461419f565b61270b565b6106f261279f565b60405161031891906142d4565b61030b61070d366004613d29565b612839565b61050f610720366004613e9f565b612845565b610738610733366004613e1a565b6129d4565b60408051825161ffff1681526020808401516001600160501b03908116918301919091529282015190921690820152606001610318565b6102f661077d36600461405d565b612ab7565b61078a612b46565b600080610798858585612ba2565b6001600160a01b0387811660008181526004602090815260408083208b861680855290835281842080546001600160a01b03191690558a861680855260038452828520805460ff19908116600117909155968816808652948390208054909716909655815193845261ffff88169284019290925233908301529496509294509092917f27a180c70f2642f63d1694eb252b7df52e7ab2565e3f67adf7748acb7d82b9bc906060015b60405180910390a45050505050565b6008546040516316e3539360e11b815260609160009182916001600160a01b031690632dc6a72690610887908890889060040161449f565b604080518083038186803b15801561089e57600080fd5b505afa1580156108b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d69190613d61565b915091506108e48282612e67565b925050505b92915050565b600083836108fd8282612f33565b61090657600080fd5b60016109146010604061459c565b61091f90600261467b565b6109299190614863565b8411156109395760009250610a26565b6001600160a01b0386811660009081526006602090815260408083208985168452825280832088821c61ffff811685529252909120549091869116806109855760009550505050610a26565b6040517fb5ab58dc00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff831660048201526001600160a01b0382169063b5ab58dc906024015b60206040518083038186803b1580156109e857600080fd5b505afa1580156109fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a209190614045565b95505050505b50509392505050565b6008546040517f218936fc000000000000000000000000000000000000000000000000000000008152600091829182916001600160a01b03169063218936fc90610a83908a908a908a908a906004016143d0565b60606040518083038186803b158015610a9b57600080fd5b505afa158015610aaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad39190613dd9565b9250925092509450945094915050565b600854604051630995955360e21b81526000916001600160a01b031690632656554c90610b1a9088908890889088906004016143d0565b60206040518083038186803b158015610b3257600080fd5b505afa158015610b46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6a9190614025565b90505b949350505050565b6002546060906001600160a01b03161580610c0657506002546040516304e162b360e41b81523360048201526001600160a01b0390911690634e162b309060240160206040518083038186803b158015610bce57600080fd5b505afa158015610be2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c069190614025565b610c575760405162461bcd60e51b815260206004820152600960248201527f4e6f20616363657373000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b8151835114610cce5760405162461bcd60e51b815260206004820152602160248201527f4261736520616e642071756f746520636f756e74732061726520756e6571756160448201527f6c000000000000000000000000000000000000000000000000000000000000006064820152608401610c4e565b6000835167ffffffffffffffff811115610cf857634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610d6d57816020015b610d5a6040518060a0016040528060006001600160501b0316815260200160008152602001600081526020016000815260200160006001600160501b031681525090565b815260200190600190039081610d165790505b50905060005b845181101561103357600854855160009182916001600160a01b0390911690632dc6a72690899086908110610db857634e487b7160e01b600052603260045260246000fd5b6020026020010151888681518110610de057634e487b7160e01b600052603260045260246000fd5b60200260200101516040518363ffffffff1660e01b8152600401610e0592919061449f565b604080518083038186803b158015610e1c57600080fd5b505afa158015610e30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e549190613d61565b6001600160a01b03808316600090815260056020908152604080832093851683529290529081205492945090925061ffff90911690610e9384846130c3565b90506001600160a01b038116610edc5760405162461bcd60e51b815260206004820152600e60248201526d11995959081b9bdd08199bdd5b9960921b6044820152606401610c4e565b6000806000806000856001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b158015610f1d57600080fd5b505afa158015610f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5591906141f6565b94509450945094509450610fa36040518060a0016040528060006001600160501b0316815260200160008152602001600081526020016000815260200160006001600160501b031681525090565b6001600160501b0367ffffffffffffffff83811660408b811b61ffff60401b169182178416608086015260608501879052840187905260208401889052908816171681528b5181908d908d90811061100b57634e487b7160e01b600052603260045260246000fd5b602002602001018190525050505050505050505050808061102b9061490a565b915050610d73565b509392505050565b6001600160a01b0383811660009081526006602090815260408083208685168452825280832061ffff8616845290915290205416806110bc5760405162461bcd60e51b815260206004820152601860248201527f46656564206e6f7420666f756e6420666f7220706861736500000000000000006044820152606401610c4e565b9392505050565b6110cb612b46565b6008546040517f573a23af0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063573a23af90611120908a908a908a908a908a908a908a90600401614402565b600060405180830381600087803b15801561113a57600080fd5b505af115801561114e573d6000803e3d6000fd5b5050505050505050505050565b60006110bc8383613115565b6001600160a01b03808316600090815260046020908152604080832084861684529091528120549091166110bc565b600082826111a48282612f33565b6111ad57600080fd5b60006111b986866130c3565b90506001600160a01b0381166112025760405162461bcd60e51b815260206004820152600e60248201526d11995959081b9bdd08199bdd5b9960921b6044820152606401610c4e565b806001600160a01b0316638205bf6a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561123b57600080fd5b505afa15801561124f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112739190614045565b9695505050505050565b600854604051630995955360e21b81526000916001600160a01b031690632656554c906112b0908690869060040161449f565b60206040518083038186803b1580156112c857600080fd5b505afa1580156112dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113009190614025565b156113a2576008546040516316e3539360e11b815260009182916001600160a01b0390911690632dc6a7269061133c908890889060040161449f565b604080518083038186803b15801561135357600080fd5b505afa158015611367573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138b9190613d61565b915091506113998282613115565b925050506108e9565b6040805180820190915260038152621554d160ea1b6020918201528251908301207fc4ae21aac0c6549d71dd96035b7e0bdb6c79ebdba8891b666115bc976d16a29e141561141f576008546040516316e3539360e11b815260009182916001600160a01b0390911690632dc6a7269061133c9088906004016144c4565b6040805180820190915260038152621554d160ea1b6020918201528351908401207fc4ae21aac0c6549d71dd96035b7e0bdb6c79ebdba8891b666115bc976d16a29e141561149c576008546040516316e3539360e11b815260009182916001600160a01b0390911690632dc6a7269061133c9087906004016144c4565b6008546040516316e3539360e11b815260009182916001600160a01b0390911690632dc6a726906114d19088906004016144c4565b604080518083038186803b1580156114e857600080fd5b505afa1580156114fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115209190613d61565b6008546040516316e3539360e11b81529294509092506000916001600160a01b0390911690632dc6a726906115599088906004016144c4565b604080518083038186803b15801561157057600080fd5b505afa158015611584573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a89190613d61565b5090506115b58383613115565b6115bf8284613115565b6115c991906145b4565b93505050506108e9565b6001546001600160a01b0316331461162d5760405162461bcd60e51b815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610c4e565b60008054336001600160a01b0319808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6001600160a01b03808416600090815260046020908152604080832084871684529091528120549091829182918291829189918991166117065760405162461bcd60e51b815260206004820152601e60248201527f4e6f2070726f706f7365642061676772656761746f722070726573656e7400006044820152606401610c4e565b6001600160a01b038a811660009081526004602081815260408084208e8616855290915291829020549151639a6fc8f560e01b81526001600160501b038c1691810191909152911690639a6fc8f59060240160a06040518083038186803b15801561177057600080fd5b505afa158015611784573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a891906141f6565b939e929d50909b50995090975095505050505050565b600083836117cc8282612f33565b6117d557600080fd5b60016117e36010604061459c565b6117ee90600261467b565b6117f89190614863565b8411156118085760009250610a26565b6001600160a01b0386811660009081526006602090815260408083208985168452825280832088821c61ffff811685529252909120549091869116806118545760009550505050610a26565b6040517fb633620c00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff831660048201526001600160a01b0382169063b633620c906024016109d0565b6000806118b18585856131dc565b90506118bf858583866133aa565b95945050505050565b6118d0612b46565b60006118dc84846130c3565b9050806001600160a01b0316826001600160a01b031614156119665760405162461bcd60e51b815260206004820152602160248201527f43616e6e6f742070726f706f73652063757272656e742061676772656761746f60448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610c4e565b6001600160a01b038481166000908152600460209081526040808320878516845290915290205481169083168114611a12576001600160a01b0385811660008181526004602090815260408083208986168085529083529281902080546001600160a01b03191689871690811790915581519588168652339286019290925290939192917fb56c4f88c3e344891ef92e51f036d7116e886f4ea57f5ba93e28b5f44925b9ce9101610840565b5050505050565b600080611a278585856131dc565b90506118bf85858386613515565b600854604080517fad3fdee500000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163ad3fdee5916004808301926020929190829003018186803b158015611a9357600080fd5b505afa158015611aa7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611acb9190614045565b905090565b60006110bc838361366c565b6001600160a01b03811660009081526003602052604090205460ff165b919050565b60008060008060008686611b128282612f33565b611b1b57600080fd5b611b258989613733565b939d929c50909a509850909650945050505050565b6008546040516316e3539360e11b81526000918291829182918291829182916001600160a01b031690632dc6a72690611b79908c908c9060040161449f565b604080518083038186803b158015611b9057600080fd5b505afa158015611ba4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc89190613d61565b91509150611bd68282612f33565b611bdf57600080fd5b611b258282613733565b6040805160608082018352600080835260208084018290529284018190526001600160a01b038781168252600784528482209087168252835283812061ffff868116835290845284822085519384018652549081168084526001600160501b03620100008304811695850195909552600160601b909104909316938201939093528291611cb85760405162461bcd60e51b815260206004820152601460248201527f506861736520646f6573206e6f742065786973740000000000000000000000006044820152606401610c4e565b6001600160a01b0380871660009081526005602090815260408083209389168352929052205461ffff908116908516811415611d0457611cf9878783613861565b935093505050611d16565b611d0f8787876138f3565b9350935050505b935093915050565b600080611d2c8585856131dc565b6001600160a01b0386811660009081526006602090815260408083208985168452825280832061ffff861684529091529020541692509050816110335760405162461bcd60e51b815260206004820152601860248201527f46656564206e6f7420666f756e6420666f7220726f756e6400000000000000006044820152606401610c4e565b6001600160a01b0380831660009081526004602090815260408083208486168452909152812054909182918291829182918891889116611e335760405162461bcd60e51b815260206004820152601e60248201527f4e6f2070726f706f7365642061676772656761746f722070726573656e7400006044820152606401610c4e565b6001600160a01b03808a1660009081526004602081815260408084208d86168552909152918290205482517ffeaf968c000000000000000000000000000000000000000000000000000000008152925193169263feaf968c928083019260a09291829003018186803b158015611ea857600080fd5b505afa158015611ebc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2591906141f6565b6000611eec83836130c3565b90506001600160a01b0381166108e95760405162461bcd60e51b815260206004820152600e60248201526d11995959081b9bdd08199bdd5b9960921b6044820152606401610c4e565b60008282611f438282612f33565b611f4c57600080fd5b6108e48585613989565b600854604051630995955360e21b81526000916001600160a01b031690632656554c90611f8d9088908890889088906004016143d0565b60206040518083038186803b158015611fa557600080fd5b505afa158015611fb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fdd9190614025565b15612096576008546040516316e3539360e11b815260009182916001600160a01b0390911690632dc6a7269061201d908a908a908a908a906004016143d0565b604080518083038186803b15801561203457600080fd5b505afa158015612048573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206c9190613d61565b9150915061207a8282612f33565b61208357600080fd5b61208d8282613989565b92505050610b6d565b60408051808201825260038152621554d160ea1b602090910152517fc4ae21aac0c6549d71dd96035b7e0bdb6c79ebdba8891b666115bc976d16a29e906120e090859085906142c4565b60405180910390201415612125576008546040516316e3539360e11b815260009182916001600160a01b0390911690632dc6a7269061201d908a908a90600401614456565b60408051808201825260038152621554d160ea1b602090910152517fc4ae21aac0c6549d71dd96035b7e0bdb6c79ebdba8891b666115bc976d16a29e9061216f90879087906142c4565b604051809103902014156122b8576008546040516316e3539360e11b815260009182916001600160a01b0390911690632dc6a726906121b49088908890600401614456565b604080518083038186803b1580156121cb57600080fd5b505afa1580156121df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122039190613d61565b915091506122118282612f33565b61221a57600080fd5b6122248282613989565b6122845760405162461bcd60e51b815260206004820152602b60248201527f44697669646564206279207a65726f206572726f722e205468652071756f746560448201526a020707269636520697320360ac1b6064820152608401610c4e565b61228e8282613989565b6122988383613115565b6122a3906002614817565b6122ae90600a61468a565b61208d91906145fb565b6008546040516316e3539360e11b815260009182916001600160a01b0390911690632dc6a726906122ef908a908a90600401614456565b604080518083038186803b15801561230657600080fd5b505afa15801561231a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233e9190613d61565b6008546040516316e3539360e11b81529294509092506000916001600160a01b0390911690632dc6a726906123799089908990600401614456565b604080518083038186803b15801561239057600080fd5b505afa1580156123a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c89190613d61565b5090506123d58383612f33565b80156123e657506123e68183612f33565b6123ef57600080fd5b6123f98183613989565b6124595760405162461bcd60e51b815260206004820152602b60248201527f44697669646564206279207a65726f206572726f722e205468652071756f746560448201526a020707269636520697320360ac1b6064820152608401610c4e565b60006124658284613115565b60ff1690506124748284613989565b61247e8585613989565b6124898360026147f8565b61249490600a61467b565b61249e919061475c565b6124a891906145fb565b945050505050610b6d565b600082826124c18282612f33565b6124ca57600080fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290529081205461ffff169061250187876130c3565b90506001600160a01b03811661254a5760405162461bcd60e51b815260206004820152600e60248201526d11995959081b9bdd08199bdd5b9960921b6044820152606401610c4e565b6125da82826001600160a01b031663668a0f026040518163ffffffff1660e01b815260040160206040518083038186803b15801561258757600080fd5b505afa15801561259b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125bf9190614045565b67ffffffffffffffff1660409190911b61ffff60401b161790565b6001600160501b0316979650505050505050565b6125f6612b46565b6002546001600160a01b03828116911614156126545760405162461bcd60e51b815260206004820181905260248201527f41636365737320636f6e74726f6c6c657220697320616c7265616479207365746044820152606401610c4e565b600280546001600160a01b0319166001600160a01b0383169081179091556040513391907fcfa989179aa1c36c00d3edadf67bcb4f35d9516f4951d34f527ed93957adfbeb90600090a350565b6126a9612b46565b6001600160a01b0381166126ff5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f00000000000000006044820152606401610c4e565b61270881613a18565b50565b6008546040516316e3539360e11b8152600091829182916001600160a01b031690632dc6a72690612742908890889060040161449f565b604080518083038186803b15801561275957600080fd5b505afa15801561276d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127919190613d61565b915091506108e4828261366c565b600854604080517ff800ece900000000000000000000000000000000000000000000000000000000815290516060926001600160a01b03169163f800ece9916004808301926000929190829003018186803b1580156127fd57600080fd5b505afa158015612811573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611acb9190810190613f3f565b60606110bc8383612e67565b600080600080600087876128598282612f33565b61286257600080fd5b60008061287a8a6001600160501b0316604081901c91565b9150915060006128c08d8d856001600160a01b039283166000908152600660209081526040808320948616835293815283822061ffff9390931682529190915220541690565b90506001600160a01b0381166129095760405162461bcd60e51b815260206004820152600e60248201526d11995959081b9bdd08199bdd5b9960921b6044820152606401610c4e565b604051639a6fc8f560e01b815267ffffffffffffffff831660048201526001600160a01b03821690639a6fc8f59060240160a06040518083038186803b15801561295257600080fd5b505afa158015612966573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061298a91906141f6565b939d50919b5099509750955061ffff60401b604084901b1667ffffffffffffffff808c168217918b918b918b918b1617995099509950995099505050505050939792965093509350565b6040805160608082018352600080835260208084018290529284018190528351808301855281815280840182905284018190526001600160a01b038781168252600784528482209087168252835283812061ffff86811683529084529084902084519283018552549081168083526001600160501b03620100008304811694840194909452600160601b909104909216928101929092526110bc5760405162461bcd60e51b815260206004820152601460248201527f506861736520646f6573206e6f742065786973740000000000000000000000006044820152606401610c4e565b612abf612b46565b6008546040517fff2ed6e00000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063ff2ed6e090612b0e9087908790879087906004016143d0565b600060405180830381600087803b158015612b2857600080fd5b505af1158015612b3c573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b03163314612ba05760405162461bcd60e51b815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610c4e565b565b6001600160a01b038084166000908152600460209081526040808320868516845290915281205490918291848216911614612c1f5760405162461bcd60e51b815260206004820152601b60248201527f496e76616c69642070726f706f7365642061676772656761746f7200000000006044820152606401610c4e565b6000612c2b86866130c3565b90506000612c3882613ac2565b6001600160a01b038881166000818152600560209081526040808320948c16808452948252808320549383526007825280832094835293815283822061ffff9093168083529290529190912080547fffffffffffffffffffff00000000000000000000ffffffffffffffffffffffff16600160601b6001600160501b03851602179055909150612cc9816001614576565b6001600160a01b0389811660008181526005602090815260408083208d8616808552908352818420805461ffff191661ffff891690811790915594845260068352818420908452825280832093835292905290812080546001600160a01b031916928a1692909217909155909550612d4087613ac2565b905060405180606001604052808761ffff168152602001826001600160501b0316815260200160006001600160501b0316815250600760008b6001600160a01b03166001600160a01b0316815260200190815260200160002060008a6001600160a01b03166001600160a01b0316815260200190815260200160002060008861ffff1661ffff16815260200190815260200160002060008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a8154816001600160501b0302191690836001600160501b03160217905550604082015181600001600c6101000a8154816001600160501b0302191690836001600160501b0316021790555090505085849550955050505050935093915050565b60606000612e7584846130c3565b90506001600160a01b038116612ebe5760405162461bcd60e51b815260206004820152600e60248201526d11995959081b9bdd08199bdd5b9960921b6044820152606401610c4e565b806001600160a01b0316637284e4166040518163ffffffff1660e01b815260040160006040518083038186803b158015612ef757600080fd5b505afa158015612f0b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b6d919081019061416c565b6002546000906001600160a01b03161580612fc457506002546040516304e162b360e41b81523360048201526001600160a01b0390911690634e162b309060240160206040518083038186803b158015612f8c57600080fd5b505afa158015612fa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fc49190614025565b8061306e57506002546040517f1f5d2cc10000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b038581166024830152848116604483015290911690631f5d2cc19060640160206040518083038186803b15801561303657600080fd5b505afa15801561304a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061306e9190614025565b6130ba5760405162461bcd60e51b815260206004820152600e60248201527f4e6f2070616972206163636573730000000000000000000000000000000000006044820152606401610c4e565b50600192915050565b6001600160a01b0382811660008181526005602090815260408083208686168085529083528184205494845260068352818420908452825280832061ffff9094168352929052908120549091166110bc565b60008061312284846130c3565b90506001600160a01b03811661316b5760405162461bcd60e51b815260206004820152600e60248201526d11995959081b9bdd08199bdd5b9960921b6044820152606401610c4e565b806001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156131a457600080fd5b505afa1580156131b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6d919061424d565b6001600160a01b03808416600090815260056020908152604080832093861683529290529081205461ffff168180613215878785613861565b91509150816001600160501b0316856001600160501b03161015801561324d5750806001600160501b0316856001600160501b031611155b1561325d578293505050506110bc565b60008361ffff16116132b15760405162461bcd60e51b815260206004820152600d60248201527f496e76616c6964207068617365000000000000000000000000000000000000006044820152606401610c4e565b60006132be600185614840565b90505b61ffff81161561339c576001600160a01b0380891660009081526006602090815260408083208b85168452825280832061ffff86168452909152902054168061330a575061338a565b6000806133188b8b866138f3565b91509150816001600160501b0316896001600160501b0316101580156133505750806001600160501b0316896001600160501b031611155b1561336457839750505050505050506110bc565b806001600160501b0316896001600160501b031611156133865750505061339c565b5050505b80613394816148ca565b9150506132c1565b506000979650505050505050565b6001600160a01b03808516600090815260056020908152604080832093871683529290529081205461ffff16835b61ffff811615613508576001600160a01b0387811660009081526006602090815260408083208a85168452825280832061ffff8681168086529190935290832054909316928291861614613436576134318a8a866138f3565b613441565b6134418a8a86613861565b90925090506001600160a01b03831661345c575050506134f6565b816001600160501b0316876001600160501b03161161347d575050506134f6565b816001600160501b0316876001600160501b03161180156134b05750806001600160501b0316876001600160501b031611155b156134cc576134c060018861487a565b95505050505050610b6d565b806001600160501b0316876001600160501b031611156134f2579450610b6d9350505050565b5050505b80613500816148ca565b9150506133d8565b5060009695505050505050565b6001600160a01b03808516600090815260056020908152604080832093871683529290529081205461ffff16835b8161ffff168161ffff1611613508576001600160a01b0387811660009081526006602090815260408083208a85168452825280832061ffff86811680865291909352908320549093169282918616146135a6576135a18a8a866138f3565b6135b1565b6135b18a8a86613861565b90925090506001600160a01b0383166135cc5750505061365a565b806001600160501b0316876001600160501b0316106135ed5750505061365a565b816001600160501b0316876001600160501b0316101580156136205750806001600160501b0316876001600160501b0316105b15613630576134c08760016145d9565b816001600160501b0316876001600160501b0316101561365657509350610b6d92505050565b5050505b80613664816148e8565b915050613543565b60008061367984846130c3565b90506001600160a01b0381166136c25760405162461bcd60e51b815260206004820152600e60248201526d11995959081b9bdd08199bdd5b9960921b6044820152606401610c4e565b806001600160a01b03166354fd4d506040518163ffffffff1660e01b815260040160206040518083038186803b1580156136fb57600080fd5b505afa15801561370f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6d9190614045565b6001600160a01b038083166000908152600560209081526040808320938516835292905290812054819081908190819061ffff168161377289896130c3565b90506001600160a01b0381166137bb5760405162461bcd60e51b815260206004820152600e60248201526d11995959081b9bdd08199bdd5b9960921b6044820152606401610c4e565b806001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b1580156137f457600080fd5b505afa158015613808573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061382c91906141f6565b939a5091985096509450925061ffff60401b604083901b1667ffffffffffffffff808916821791889188918891881617611b25565b6001600160a01b038084166000908152600760209081526040808320938616835292815282822061ffff80861684529082528383208451606081018652905491821681526001600160501b03620100008304811693820193909352600160601b909104909116928101929092529081906138db8482613b4b565b6138e6878787613b71565b9250925050935093915050565b6040805160608082018352600080835260208084018290529284018190526001600160a01b038781168252600784528482209087168252835283812061ffff8681168352908452848220855193840186525490811683526001600160501b03620100008204811694840194909452600160601b90049092169281019290925290819061397f8482613b4b565b6138e68583613baa565b60008061399684846130c3565b90506001600160a01b0381166139df5760405162461bcd60e51b815260206004820152600e60248201526d11995959081b9bdd08199bdd5b9960921b6044820152606401610c4e565b806001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156136fb57600080fd5b6001600160a01b038116331415613a715760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610c4e565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60006001600160a01b038216613ada57506000611af9565b816001600160a01b031663668a0f026040518163ffffffff1660e01b815260040160206040518083038186803b158015613b1357600080fd5b505afa158015613b27573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e99190614045565b60006110bc83836020015167ffffffffffffffff1660409190911b61ffff60401b161790565b600080613b7e85856130c3565b90506000613b8b82613ac2565b905061ffff60401b604085901b1667ffffffffffffffff821617611273565b60006110bc83836040015167ffffffffffffffff1660409190911b61ffff60401b161790565b600082601f830112613be0578081fd5b81356020613bf5613bf08361452a565b6144f9565b82815281810190858301855b85811015613c2a57613c18898684358b0101613c7e565b84529284019290840190600101613c01565b5090979650505050505050565b60008083601f840112613c48578182fd5b50813567ffffffffffffffff811115613c5f578182fd5b602083019150836020828501011115613c7757600080fd5b9250929050565b600082601f830112613c8e578081fd5b8135613c9c613bf08261454e565b818152846020838601011115613cb0578283fd5b816020850160208301379081016020019190915292915050565b600082601f830112613cda578081fd5b8151613ce8613bf08261454e565b818152846020838601011115613cfc578283fd5b610b6d82602083016020870161489a565b600060208284031215613d1e578081fd5b81356110bc81614951565b60008060408385031215613d3b578081fd5b8235613d4681614951565b91506020830135613d5681614951565b809150509250929050565b60008060408385031215613d73578182fd5b8251613d7e81614951565b6020840151909250613d5681614951565b600080600060608486031215613da3578081fd5b8335613dae81614951565b92506020840135613dbe81614951565b91506040840135613dce81614951565b809150509250925092565b600080600060608486031215613ded578283fd5b8351613df881614951565b6020850151909350613e0981614951565b6040850151909250613dce81614951565b600080600060608486031215613e2e578081fd5b8335613e3981614951565b92506020840135613e4981614951565b9150604084013561ffff81168114613dce578182fd5b600080600060608486031215613e73578081fd5b8335613e7e81614951565b92506020840135613e8e81614951565b929592945050506040919091013590565b600080600060608486031215613eb3578081fd5b8335613ebe81614951565b92506020840135613ece81614951565b91506040840135613dce81614966565b60008060408385031215613ef0578182fd5b823567ffffffffffffffff80821115613f07578384fd5b613f1386838701613bd0565b93506020850135915080821115613f28578283fd5b50613f3585828601613bd0565b9150509250929050565b60006020808385031215613f51578182fd5b825167ffffffffffffffff80821115613f68578384fd5b818501915085601f830112613f7b578384fd5b8151613f89613bf08261452a565b81815284810190848601875b848110156140165781518701604080601f19838f03011215613fb5578a8bfd5b613fbe816144f9565b8a83015189811115613fce578c8dfd5b613fdc8f8d83870101613cca565b825250908201519088821115613ff0578b8cfd5b613ffe8e8c84860101613cca565b818c0152865250509287019290870190600101613f95565b50909998505050505050505050565b600060208284031215614036578081fd5b815180151581146110bc578182fd5b600060208284031215614056578081fd5b5051919050565b60008060008060408587031215614072578182fd5b843567ffffffffffffffff80821115614089578384fd5b61409588838901613c37565b909650945060208701359150808211156140ad578384fd5b506140ba87828801613c37565b95989497509550505050565b600080600080600080600060a0888a0312156140e0578485fd5b873567ffffffffffffffff808211156140f7578687fd5b6141038b838c01613c37565b909950975060208a013591508082111561411b578687fd5b506141288a828b01613c37565b909650945050604088013561413c81614951565b9250606088013561414c81614951565b9150608088013561415c81614951565b8091505092959891949750929550565b60006020828403121561417d578081fd5b815167ffffffffffffffff811115614193578182fd5b610b6d84828501613cca565b600080604083850312156141b1578182fd5b823567ffffffffffffffff808211156141c8578384fd5b6141d486838701613c7e565b935060208501359150808211156141e9578283fd5b50613f3585828601613c7e565b600080600080600060a0868803121561420d578283fd5b855161421881614966565b80955050602086015193506040860151925060608601519150608086015161423f81614966565b809150509295509295909350565b60006020828403121561425e578081fd5b815160ff811681146110bc578182fd5b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b600081518084526142b081602086016020860161489a565b601f01601f19169290920160200192915050565b6000828483379101908152919050565b60208082528251828201819052600091906040908185019080840286018301878501865b8381101561434857888303603f190185528151805187855261431c88860182614298565b91890151858303868b01529190506143348183614298565b9689019694505050908601906001016142f8565b509098975050505050505050565b602080825282518282018190526000919060409081850190868401855b828110156143c357815180516001600160501b0390811686528782015188870152868201518787015260608083015190870152608091820151169085015260a09093019290850190600101614373565b5091979650505050505050565b6000604082526143e460408301868861426e565b82810360208401526143f781858761426e565b979650505050505050565b600060a0825261441660a08301898b61426e565b828103602084015261442981888a61426e565b6001600160a01b039687166040850152948616606084015250509216608090920191909152949350505050565b60006040825261446a60408301848661426e565b82810360208401526118bf8160038152621554d160ea1b602082015260400190565b6000602082526110bc6020830184614298565b6000604082526144b26040830185614298565b82810360208401526118bf8185614298565b6000604082526144d76040830184614298565b8281036020840152610b6d8160038152621554d160ea1b602082015260400190565b604051601f8201601f1916810167ffffffffffffffff811182821017156145225761452261493b565b604052919050565b600067ffffffffffffffff8211156145445761454461493b565b5060209081020190565b600067ffffffffffffffff8211156145685761456861493b565b50601f01601f191660200190565b600061ffff80831681851680830382111561459357614593614925565b01949350505050565b600082198211156145af576145af614925565b500190565b600060ff821660ff84168060ff038211156145d1576145d1614925565b019392505050565b60006001600160501b0380831681851680830382111561459357614593614925565b60008261461657634e487b7160e01b81526012600452602481fd5b600160ff1b82146000198414161561463057614630614925565b500590565b80825b60018086116146475750614672565b81870482111561465957614659614925565b8086161561466657918102915b9490941c938002614638565b94509492505050565b60006110bc6000198484614698565b60006110bc60001960ff8516845b6000826146a7575060016110bc565b816146b4575060006110bc565b81600181146146ca57600281146146d457614701565b60019150506110bc565b60ff8411156146e5576146e5614925565b6001841b9150848211156146fb576146fb614925565b506110bc565b5060208310610133831016604e8410600b8410161715614734575081810a8381111561472f5761472f614925565b6110bc565b6147418484846001614635565b80860482111561475357614753614925565b02949350505050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8184138284138583048511828216161561479b5761479b614925565b600160ff1b848712868205881281841616156147b9576147b9614925565b8587129250878205871284841616156147d4576147d4614925565b878505871281841616156147ea576147ea614925565b505050929093029392505050565b600081600019048311821515161561481257614812614925565b500290565b600060ff821660ff84168160ff048111821515161561483857614838614925565b029392505050565b600061ffff8381169083168181101561485b5761485b614925565b039392505050565b60008282101561487557614875614925565b500390565b60006001600160501b038381169083168181101561485b5761485b614925565b60005b838110156148b557818101518382015260200161489d565b838111156148c4576000848401525b50505050565b600061ffff8216806148de576148de614925565b6000190192915050565b600061ffff8083168181141561490057614900614925565b6001019392505050565b600060001982141561491e5761491e614925565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461270857600080fd5b6001600160501b038116811461270857600080fdfea2646970667358221220045ba73af01ff1e4ff35c1b2ae99d19de26ec6cc3e81dd88f8575ff77e7e0c6564736f6c63430008020033608060405234801561001057600080fd5b5033806000816100675760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615610097576100978161009f565b505050610149565b6001600160a01b0381163314156100f85760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640161005e565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b61173f806101586000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80638da5cb5b11610076578063f2fde38b1161005b578063f2fde38b146101a9578063f800ece9146101bc578063ff2ed6e0146101d1576100be565b80638da5cb5b14610178578063ad3fdee514610193576100be565b80632dc6a726116100a75780632dc6a72614610128578063573a23af1461015b57806379ba509714610170576100be565b8063218936fc146100c35780632656554c14610105575b600080fd5b6100d66100d1366004611293565b6101e4565b604080516001600160a01b03948516815292841660208401529216918101919091526060015b60405180910390f35b610118610113366004611293565b610297565b60405190151581526020016100fc565b61013b6101363660046113a2565b610317565b604080516001600160a01b039384168152929091166020830152016100fc565b61016e6101693660046112fc565b6103be565b005b61016e610506565b6000546040516001600160a01b0390911681526020016100fc565b61019b6105c4565b6040519081526020016100fc565b61016e6101b7366004611180565b6105d4565b6101c461063e565b6040516100fc91906114ae565b61016e6101df366004611293565b6106e1565b60008060008073338b3d0e75bc4b3127813a79c8ecbba96a7db70a638b0846f660028a8a8a8a6040518663ffffffff1660e01b815260040161022a95949392919061158d565b60606040518083038186803b15801561024257600080fd5b505af4158015610256573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027a9190611403565b80516020820151604090920151909a919950975095505050505050565b600061030e600286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061076492505050565b95945050505050565b600080600073338b3d0e75bc4b3127813a79c8ecbba96a7db70a638b0846f6600287876040518463ffffffff1660e01b8152600401610358939291906115c6565b60606040518083038186803b15801561037057600080fd5b505af4158015610384573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a89190611403565b80516020909101519093509150505b9250929050565b6103c6610944565b6001600160a01b038316158015906103e657506001600160a01b03821615155b80156103fa57506001600160a01b03811615155b61044b5760405162461bcd60e51b815260206004820152601c60248201527f4164647265737365732073686f756c64206e6f74206265206e756c6c0000000060448201526064015b60405180910390fd5b60006040518060600160405280856001600160a01b03168152602001846001600160a01b03168152602001836001600160a01b031681525090506104fc600289898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a90819084018382808284376000920191909152508792506109a0915050565b5050505050505050565b6001546001600160a01b031633146105605760405162461bcd60e51b815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610442565b600080543373ffffffffffffffffffffffffffffffffffffffff19808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b60006105cf60025490565b905090565b6105dc610944565b6001600160a01b0381166106325760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f00000000000000006044820152606401610442565b61063b81610b1b565b50565b6040517f63b3a3080000000000000000000000000000000000000000000000000000000081526002600482015260609073338b3d0e75bc4b3127813a79c8ecbba96a7db70a906363b3a3089060240160006040518083038186803b1580156106a557600080fd5b505af41580156106b9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105cf919081019061119c565b6106e9610944565b61075e600285858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f89018190048102820181019092528781529250879150869081908401838280828437600092019190915250610bd292505050565b50505050565b82546000906107755750600061093d565b610792604051806040016040528085815260200184815250610f99565b610939856001810160006107ab88805160209091012090565b815260200190815260200160002060006107ca87805160209091012090565b815260200190815260200160002054815481106107f757634e487b7160e01b600052603260045260246000fd5b9060005260206000209060020201604051806040016040529081600082018054610820906116a3565b80601f016020809104026020016040519081016040528092919081815260200182805461084c906116a3565b80156108995780601f1061086e57610100808354040283529160200191610899565b820191906000526020600020905b81548152906001019060200180831161087c57829003601f168201915b505050505081526020016001820180546108b2906116a3565b80601f01602080910402602001604051908101604052809291908181526020018280546108de906116a3565b801561092b5780601f106109005761010080835404028352916020019161092b565b820191906000526020600020905b81548152906001019060200180831161090e57829003601f168201915b505050505081525050610f99565b1490505b9392505050565b6000546001600160a01b0316331461099e5760405162461bcd60e51b815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610442565b565b6109ab848484610764565b15610a0a5760405162461bcd60e51b815260206004820152602960248201527f496e736572743a204b657920616c72656164792065786973747320696e20746860448201526865206d617070696e6760b81b6064820152608401610442565b6040805180820190915283815260208082018490528554600181018755600087815282902083518051600290930290910192610a4b92849290910190610fd3565b506020828101518051610a649260018501920190610fd3565b50508454610a759150600190611654565b8351602080860191822060009081526001888101835260408083208851898601908120855290855281842096909655975190932081526002978801825286812095519093208352938452908490208251815473ffffffffffffffffffffffffffffffffffffffff199081166001600160a01b0392831617835594840151928201805486169382169390931790925591909301519301805490911692909116919091179055565b6001600160a01b038116331415610b745760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610442565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b610bdd838383610764565b610c3b5760405162461bcd60e51b815260206004820152602960248201527f52656d6f76653a204b657920646f6573206e6f7420657869737420696e20746860448201526865206d617070696e6760b81b6064820152608401610442565b60006001610c47855490565b610c519190611654565b90506000846001016000610c6a86805160209091012090565b81526020019081526020016000206000610c8985805160209091012090565b8152602001908152602001600020549050818114610ec0576000856000018381548110610cc657634e487b7160e01b600052603260045260246000fd5b9060005260206000209060020201604051806040016040529081600082018054610cef906116a3565b80601f0160208091040260200160405190810160405280929190818152602001828054610d1b906116a3565b8015610d685780601f10610d3d57610100808354040283529160200191610d68565b820191906000526020600020905b815481529060010190602001808311610d4b57829003601f168201915b50505050508152602001600182018054610d81906116a3565b80601f0160208091040260200160405190810160405280929190818152602001828054610dad906116a3565b8015610dfa5780601f10610dcf57610100808354040283529160200191610dfa565b820191906000526020600020905b815481529060010190602001808311610ddd57829003601f168201915b505050505081525050905081866001016000610e1f8460000151805160209091012090565b81526020019081526020016000206000610e428460200151805160209091012090565b81526020019081526020016000208190555080866000018381548110610e7857634e487b7160e01b600052603260045260246000fd5b90600052602060002090600202016000820151816000019080519060200190610ea2929190610fd3565b506020828101518051610ebb9260018501920190610fd3565b505050505b8351602080860191909120600090815260018701825260408082208651878501208352909252908120558454859080610f0957634e487b7160e01b600052603160045260246000fd5b60008281526020812060001990920191600283020190610f298282611057565b610f37600183016000611057565b505090555050815160209283012060009081526002938401835260408082208351938501939093208252919092529020805473ffffffffffffffffffffffffffffffffffffffff19908116825560018201805482169055910180549091169055565b600081600001518260200151604051602001610fb6929190611530565b604051602081830303815290604052805190602001209050919050565b828054610fdf906116a3565b90600052602060002090601f0160209004810192826110015760008555611047565b82601f1061101a57805160ff1916838001178555611047565b82800160010185558215611047579182015b8281111561104757825182559160200191906001019061102c565b5061105392915061108f565b5090565b508054611063906116a3565b6000825580601f10611075575061063b565b601f01602090049060005260206000209081019061063b91905b5b808211156110535760008155600101611090565b60008083601f8401126110b5578182fd5b50813567ffffffffffffffff8111156110cc578182fd5b6020830191508360208285010111156103b757600080fd5b600082601f8301126110f4578081fd5b81356111076111028261162c565b6115fb565b81815284602083860101111561111b578283fd5b816020850160208301379081016020019190915292915050565b600082601f830112611145578081fd5b81516111536111028261162c565b818152846020838601011115611167578283fd5b611178826020830160208701611677565b949350505050565b600060208284031215611191578081fd5b813561093d816116f4565b600060208083850312156111ae578182fd5b825167ffffffffffffffff808211156111c5578384fd5b818501915085601f8301126111d8578384fd5b8151818111156111ea576111ea6116de565b6111f784858302016115fb565b81815284810190848601875b848110156112845781518701604080601f19838f03011215611223578a8bfd5b61122c816115fb565b8a8301518981111561123c578c8dfd5b61124a8f8d83870101611135565b82525090820151908882111561125e578b8cfd5b61126c8e8c84860101611135565b818c0152865250509287019290870190600101611203565b50909998505050505050505050565b600080600080604085870312156112a8578283fd5b843567ffffffffffffffff808211156112bf578485fd5b6112cb888389016110a4565b909650945060208701359150808211156112e3578384fd5b506112f0878288016110a4565b95989497509550505050565b600080600080600080600060a0888a031215611316578283fd5b873567ffffffffffffffff8082111561132d578485fd5b6113398b838c016110a4565b909950975060208a0135915080821115611351578485fd5b5061135e8a828b016110a4565b9096509450506040880135611372816116f4565b92506060880135611382816116f4565b91506080880135611392816116f4565b8091505092959891949750929550565b600080604083850312156113b4578182fd5b823567ffffffffffffffff808211156113cb578384fd5b6113d7868387016110e4565b935060208501359150808211156113ec578283fd5b506113f9858286016110e4565b9150509250929050565b600060608284031215611414578081fd5b61141e60606115fb565b8251611429816116f4565b81526020830151611439816116f4565b6020820152604083015161144c816116f4565b60408201529392505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000815180845261149a816020860160208601611677565b601f01601f19169290920160200192915050565b60208082528251828201819052600091906040908185019080840286018301878501865b8381101561152257888303603f19018552815180518785526114f688860182611482565b91890151858303868b015291905061150e8183611482565b9689019694505050908601906001016114d2565b509098975050505050505050565b6000606082526115436060830185611482565b828103806020850152600182527f2f0000000000000000000000000000000000000000000000000000000000000060208301526040810160408501525061030e6040820185611482565b6000868252606060208301526115a7606083018688611458565b82810360408401526115ba818587611458565b98975050505050505050565b6000848252606060208301526115df6060830185611482565b82810360408401526115f18185611482565b9695505050505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715611624576116246116de565b604052919050565b600067ffffffffffffffff821115611646576116466116de565b50601f01601f191660200190565b60008282101561167257634e487b7160e01b81526011600452602481fd5b500390565b60005b8381101561169257818101518382015260200161167a565b8381111561075e5750506000910152565b6002810460018216806116b757607f821691505b602082108114156116d857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461063b57600080fdfea26469706673582212205217ba49061d15d5564db743880835ab79dffd99ad7f59f02df1c135a816c41164736f6c63430008020033