0 txs
0 calls
constructor
constructor(address _cloudToken, address _cloudStaking)
functions
allProposals
viewfunction allProposals(uint256) view returns (bool)
BALLOT_TYPEHASH
viewfunction BALLOT_TYPEHASH() view returns (bytes32)
BLOCK_TIME
viewfunction BLOCK_TIME() view returns (uint256)
CLOCK_MODE
purefunction CLOCK_MODE() pure returns (string)
clock
viewfunction clock() view returns (uint48)
cloudStaking
viewfunction cloudStaking() view returns (address)
cloudToken
viewfunction cloudToken() view returns (address)
COUNTING_MODE
purefunction COUNTING_MODE() pure returns (string)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
EXTENDED_BALLOT_TYPEHASH
viewfunction EXTENDED_BALLOT_TYPEHASH() view returns (bytes32)
getGovernanceParams
viewfunction getGovernanceParams() view returns (uint256 _votingPeriodValue, uint256 _proposalThresholdValue, uint256 _quorumValue, uint256 _proposalDepositAmount, uint256 _vetoThresholdPercent)
getLastActivityTime
viewfunction getLastActivityTime(address user) view returns (uint256)
getProposalCount
viewfunction getProposalCount() view returns (uint256)
getProposalsPaginated
viewfunction getProposalsPaginated(uint256 start, uint256 count) view returns (uint256[])
getVotes
viewfunction getVotes(address account, uint256 timepoint) view returns (uint256)
getVotesWithParams
viewfunction getVotesWithParams(address account, uint256 timepoint, bytes params) view returns (uint256)
hashProposal
purefunction hashProposal(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) pure returns (uint256)
hasVoted
viewfunction hasVoted(uint256 proposalId, address account) view returns (bool)
name
viewfunction name() view returns (string)
nonces
viewfunction nonces(address owner) view returns (uint256)
proposalDeadline
viewfunction proposalDeadline(uint256 proposalId) view returns (uint256)
proposalEta
viewfunction proposalEta(uint256 proposalId) view returns (uint256)
proposalIds
viewfunction proposalIds(uint256) view returns (uint256)
proposalNeedsQueuing
viewfunction proposalNeedsQueuing(uint256) view returns (bool)
proposalProposer
viewfunction proposalProposer(uint256 proposalId) view returns (address)
proposalsMetadata
viewfunction proposalsMetadata(uint256) view returns (address proposer, string title, string description, uint256 timestamp, uint256 depositAmount, bool depositClaimed)
proposalSnapshot
viewfunction proposalSnapshot(uint256 proposalId) view returns (uint256)
proposalThreshold
viewfunction proposalThreshold() view returns (uint256)
proposalVotes
viewfunction proposalVotes(uint256 proposalId) view returns (uint256 againstVotes, uint256 forVotes, uint256 abstainVotes)
proposalWalletCounts
viewfunction proposalWalletCounts(uint256) view returns (uint256 againstWallets, uint256 forWallets, uint256 abstainWallets, uint256 vetoWallets)
propose
purefunction propose(address[], uint256[], bytes[], string) pure returns (uint256)
quorum
viewfunction quorum(uint256 blockNumber) view returns (uint256)
state
viewfunction state(uint256 proposalId) view returns (uint8)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
totalVotesOf
viewfunction totalVotesOf(uint256 proposalId) view returns (uint256)
version
viewfunction version() view returns (string)
votes
viewfunction votes(uint256, address) view returns (uint8)
votesAbstain
viewfunction votesAbstain(uint256) view returns (uint256)
votesAgainst
viewfunction votesAgainst(uint256) view returns (uint256)
votesFor
viewfunction votesFor(uint256) view returns (uint256)
votesVeto
viewfunction votesVeto(uint256) view returns (uint256)
voteWeights
viewfunction voteWeights(uint256, address) view returns (uint256)
votingDelay
purefunction votingDelay() pure returns (uint256)
votingPeriod
viewfunction votingPeriod() view returns (uint256)
cancel
nonpayablefunction cancel(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) returns (uint256)
castVote
nonpayablefunction castVote(uint256 proposalId, uint8 support) returns (uint256)
castVoteBySig
nonpayablefunction castVoteBySig(uint256 proposalId, uint8 support, address voter, bytes signature) returns (uint256)
castVoteWithReason
nonpayablefunction castVoteWithReason(uint256 proposalId, uint8 support, string reason) returns (uint256)
castVoteWithReasonAndParams
nonpayablefunction castVoteWithReasonAndParams(uint256 proposalId, uint8 support, string reason, bytes params) returns (uint256)
castVoteWithReasonAndParamsBySig
nonpayablefunction castVoteWithReasonAndParamsBySig(uint256 proposalId, uint8 support, address voter, string reason, bytes params, bytes signature) returns (uint256)
claimDeposit
nonpayablefunction claimDeposit(uint256 proposalId)
execute
payablefunction execute(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) payable returns (uint256)
onERC1155BatchReceived
nonpayablefunction onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) returns (bytes4)
onERC1155Received
nonpayablefunction onERC1155Received(address, address, uint256, uint256, bytes) returns (bytes4)
onERC721Received
nonpayablefunction onERC721Received(address, address, uint256, bytes) returns (bytes4)
proposeWithMetadata
nonpayablefunction proposeWithMetadata(address[] targets, uint256[] values, bytes[] calldatas, string title, string description) returns (uint256)
queue
nonpayablefunction queue(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) returns (uint256)
relay
payablefunction relay(address target, uint256 value, bytes data) payable
setStakingContract
nonpayablefunction setStakingContract(address _newCloudStaking)
updateGovernanceParameters
nonpayablefunction updateGovernanceParameters(uint8[] keys, uint256[] values)
events
DepositRefunded
event DepositRefunded(uint256 indexed proposalId, address indexed proposer)
DepositSlashed
event DepositSlashed(uint256 indexed proposalId, address indexed proposer)
EIP712DomainChanged
event EIP712DomainChanged()
GovernanceParamUpdated
event GovernanceParamUpdated(uint8 param, uint256 newValue)
ProposalCanceled
event ProposalCanceled(uint256 proposalId)
ProposalCreated
event ProposalCreated(uint256 proposalId, address proposer, address[] targets, uint256[] values, string[] signatures, bytes[] calldatas, uint256 voteStart, uint256 voteEnd, string description)
ProposalExecuted
event ProposalExecuted(uint256 proposalId)
ProposalQueued
event ProposalQueued(uint256 proposalId, uint256 etaSeconds)
StakingContractAddressUpdated
event StakingContractAddressUpdated(address oldCloudStaking, address newCloudStaking)
VoteCast
event VoteCast(address indexed voter, uint256 proposalId, uint8 support, uint256 weight, string reason)
VoteCastWithParams
event VoteCastWithParams(address indexed voter, uint256 proposalId, uint8 support, uint256 weight, string reason, bytes params)
errors
FailedCall
error FailedCall()
GovernorAlreadyCastVote
error GovernorAlreadyCastVote(address voter)
GovernorAlreadyQueuedProposal
error GovernorAlreadyQueuedProposal(uint256 proposalId)
GovernorDisabledDeposit
error GovernorDisabledDeposit()
GovernorInsufficientProposerVotes
error GovernorInsufficientProposerVotes(address proposer, uint256 votes, uint256 threshold)
GovernorInvalidProposalLength
error GovernorInvalidProposalLength(uint256 targets, uint256 calldatas, uint256 values)
GovernorInvalidSignature
error GovernorInvalidSignature(address voter)
GovernorInvalidVoteParams
error GovernorInvalidVoteParams()
GovernorInvalidVoteType
error GovernorInvalidVoteType()
GovernorInvalidVotingPeriod
error GovernorInvalidVotingPeriod(uint256 votingPeriod)
GovernorNonexistentProposal
error GovernorNonexistentProposal(uint256 proposalId)
GovernorNotQueuedProposal
error GovernorNotQueuedProposal(uint256 proposalId)
GovernorOnlyExecutor
error GovernorOnlyExecutor(address account)
GovernorOnlyProposer
error GovernorOnlyProposer(address account)
GovernorQueueNotImplemented
error GovernorQueueNotImplemented()
GovernorRestrictedProposer
error GovernorRestrictedProposer(address proposer)
GovernorUnexpectedProposalState
error GovernorUnexpectedProposalState(uint256 proposalId, uint8 current, bytes32 expectedStates)
InvalidAccountNonce
error InvalidAccountNonce(address account, uint256 currentNonce)
InvalidShortString
error InvalidShortString()
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
StringTooLong
error StringTooLong(string str)
creation bytecode
0x6101606040523480156200001257600080fd5b5060405162005856380380620058568339810160408190526200003591620002e4565b60408051808201909152600d81526c21b637bab223b7bb32b93737b960991b602082015280620000796040805180820190915260018152603160f81b602082015290565b620000868260006200024b565b61012052620000978160016200024b565b61014052815160208084019190912060e052815190820120610100524660a0526200012560e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c05260036200013c8282620003c3565b50506001600160a01b0382166200019a5760405162461bcd60e51b815260206004820152601560248201527f496e76616c696420746f6b656e2061646472657373000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b038116620001f25760405162461bcd60e51b815260206004820152601760248201527f496e76616c6964207374616b696e672061646472657373000000000000000000604482015260640162000191565b62093a80600a5569021e19e0c9bab2400000600b8190556021600c819055600d91909155600e55600880546001600160a01b039384166001600160a01b0319918216179091556009805492909316911617905562000505565b60006020835110156200026b57620002638362000284565b90506200027e565b81620002788482620003c3565b5060ff90505b92915050565b600080829050601f81511115620002b2578260405163305a27a960e01b81526004016200019191906200048f565b8051620002bf82620004e0565b179392505050565b80516001600160a01b0381168114620002df57600080fd5b919050565b60008060408385031215620002f857600080fd5b6200030383620002c7565b91506200031360208401620002c7565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003be576000816000526020600020601f850160051c81016020861015620003995750805b601f850160051c820191505b81811015620003ba57828155600101620003a5565b5050505b505050565b81516001600160401b03811115620003df57620003df6200031c565b620003f781620003f0845462000332565b846200036e565b602080601f8311600181146200042f5760008415620004165750858301515b600019600386901b1c1916600185901b178555620003ba565b600085815260208120601f198616915b8281101562000460578886015182559484019460019091019084016200043f565b50858210156200047f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808352835180602085015260005b81811015620004bf57858101830151858201604001528201620004a1565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620003685760001960209190910360031b1b16919050565b60805160a05160c05160e0516101005161012051610140516152f6620005606000396000613381015260006133540152600061367e01526000613656015260006135b1015260006135db0152600061360501526152f66000f3fe60806040526004361061039b5760003560e01c80637ecebe00116101dc578063b7f3b59711610102578063c59057e4116100a0578063eb9019d41161006f578063eb9019d414610cfb578063f23a6e6114610d1b578063f8ce560a14610d47578063f930191014610d7457600080fd5b8063c59057e414610c14578063d23254b414610c34578063dd4e2ba514610c81578063deaaa7cc14610cc757600080fd5b8063bc197c81116100dc578063bc197c8114610ba0578063c01f9e3714610bcc578063c08cc02d14610bec578063c28bc2fa14610c0157600080fd5b8063b7f3b59714610b26578063ba673dd814610b53578063bb2f94d414610b7357600080fd5b80639b644a231161017a578063a9a9529411610149578063a9a9529414610a98578063ab58fb8e14610ab9578063b14bb0b514610af1578063b58131b014610b1157600080fd5b80639b644a2314610a005780639dd373b914610a205780639f9b554514610a40578063a716552e14610a6057600080fd5b80638ff262e3116101b65780638ff262e31461096d57806391ddadf41461098d578063938351b8146109b05780639a802a6d146109e057600080fd5b80637ecebe00146108ad57806384b0196e146108e35780638fe4a1dd1461090b57600080fd5b80633e4f49e6116102c1578063567813881161025f5780635f8534ae1161022e5780635f8534ae146108205780636c5721c5146108405780637b3c71d31461086d5780637d5e81e21461088d57600080fd5b8063567813881461078e5780635b8d0e0d146107ae5780635c07659f146107ce5780635f398a141461080057600080fd5b80634bf5d7e91161029b5780634bf5d7e9146106d05780634f2c130814610709578063544ffc9c1461072957806354fd4d501461076457600080fd5b80633e4f49e61461063e578063438596321461066b578063452115d6146106b057600080fd5b8063150b7a02116103395780632d63f693116103085780632d63f693146105b55780632fe3e261146105d5578063311f1c08146106095780633932abb11461062957600080fd5b8063150b7a0214610511578063160cbed71461055557806323b4a998146105755780632656227d146105a257600080fd5b806306fdde031161037557806306fdde0314610437578063078f62081461045957806307fae15814610496578063143489d0146104c357600080fd5b806301ffc9a7146103a957806302a251a3146103de57806303efc4551461040157600080fd5b366103a457005b005b600080fd5b3480156103b557600080fd5b506103c96103c43660046140e4565b610d89565b60405190151581526020015b60405180910390f35b3480156103ea57600080fd5b506103f3610ddb565b6040519081526020016103d5565b34801561040d57600080fd5b506103f361041c36600461412a565b6001600160a01b031660009081526013602052604090205490565b34801561044357600080fd5b5061044c610df1565b6040516103d59190614195565b34801561046557600080fd5b5061046e610e83565b604080519586526020860194909452928401919091526060830152608082015260a0016103d5565b3480156104a257600080fd5b506103f36104b13660046141a8565b60196020526000908152604090205481565b3480156104cf57600080fd5b506104f96104de3660046141a8565b6000908152600460205260409020546001600160a01b031690565b6040516001600160a01b0390911681526020016103d5565b34801561051d57600080fd5b5061053c61052c366004614276565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016103d5565b34801561056157600080fd5b506103f3610570366004614454565b610edf565b34801561058157600080fd5b506103f36105903660046141a8565b60186020526000908152604090205481565b6103f36105b0366004614454565b610f1f565b3480156105c157600080fd5b506103f36105d03660046141a8565b61104a565b3480156105e157600080fd5b506103f37f3e83946653575f9a39005e1545185629e92736b7528ab20ca3816f315424a81181565b34801561061557600080fd5b506009546104f9906001600160a01b031681565b34801561063557600080fd5b506103f361106b565b34801561064a57600080fd5b5061065e6106593660046141a8565b61107a565b6040516103d5919061450d565b34801561067757600080fd5b506103c961068636600461451b565b60009182526016602090815260408084206001600160a01b03939093168452919052902054151590565b3480156106bc57600080fd5b506103f36106cb366004614454565b6111a0565b3480156106dc57600080fd5b5060408051808201909152601081526f36b7b2329eb13637b1b5b73ab6b132b960811b602082015261044c565b34801561071557600080fd5b506103f3610724366004614547565b61120f565b34801561073557600080fd5b506107496107443660046141a8565b611607565b604080519384526020840192909252908201526060016103d5565b34801561077057600080fd5b506040805180820190915260018152603160f81b602082015261044c565b34801561079a57600080fd5b506103f36107a9366004614629565b611654565b3480156107ba57600080fd5b506103f36107c9366004614694565b611803565b3480156107da57600080fd5b506107ee6107e93660046141a8565b611962565b6040516103d59695949392919061474c565b34801561080c57600080fd5b506103f361081b3660046147a3565b611ab6565b34801561082c57600080fd5b506103a261083b3660046141a8565b611b0b565b34801561084c57600080fd5b5061086061085b36600461480c565b611b9f565b6040516103d5919061486a565b34801561087957600080fd5b506103f361088836600461487d565b611cc1565b34801561089957600080fd5b506103f36108a83660046148d6565b611d09565b3480156108b957600080fd5b506103f36108c836600461412a565b6001600160a01b031660009081526002602052604090205490565b3480156108ef57600080fd5b506108f8611d5e565b6040516103d59796959493929190614976565b34801561091757600080fd5b5061094d6109263660046141a8565b60126020526000908152604090208054600182015460028301546003909301549192909184565b6040805194855260208501939093529183015260608201526080016103d5565b34801561097957600080fd5b506103f36109883660046149e6565b611da4565b34801561099957600080fd5b5060405165ffffffffffff431681526020016103d5565b3480156109bc57600080fd5b506103c96109cb3660046141a8565b60116020526000908152604090205460ff1681565b3480156109ec57600080fd5b506103f36109fb366004614a35565b611e76565b348015610a0c57600080fd5b506103f3610a1b3660046141a8565b611e8d565b348015610a2c57600080fd5b506103a2610a3b36600461412a565b611eae565b348015610a4c57600080fd5b506103a2610a5b366004614acf565b612008565b348015610a6c57600080fd5b506103f3610a7b36600461451b565b601660209081526000928352604080842090915290825290205481565b348015610aa457600080fd5b506103c9610ab33660046141a8565b50600090565b348015610ac557600080fd5b506103f3610ad43660046141a8565b60009081526004602052604090206001015465ffffffffffff1690565b348015610afd57600080fd5b506103f3610b0c3660046141a8565b6127fb565b348015610b1d57600080fd5b50600b546103f3565b348015610b3257600080fd5b506103f3610b413660046141a8565b60176020526000908152604090205481565b348015610b5f57600080fd5b506008546104f9906001600160a01b031681565b348015610b7f57600080fd5b506103f3610b8e3660046141a8565b601a6020526000908152604090205481565b348015610bac57600080fd5b5061053c610bbb366004614b2e565b63bc197c8160e01b95945050505050565b348015610bd857600080fd5b506103f3610be73660046141a8565b61282f565b348015610bf857600080fd5b50600f546103f3565b6103a2610c0f366004614ba7565b612872565b348015610c2057600080fd5b506103f3610c2f366004614454565b6128f2565b348015610c4057600080fd5b50610c6f610c4f36600461451b565b601560209081526000928352604080842090915290825290205460ff1681565b60405160ff90911681526020016103d5565b348015610c8d57600080fd5b506040805180820190915260208082527f737570706f72743d627261766f2671756f72756d3d666f722c6162737461696e9082015261044c565b348015610cd357600080fd5b506103f37ff2aad550cf55f045cb27e9c559f9889fdfb6e6cdaa032301d6ea397784ae51d781565b348015610d0757600080fd5b506103f3610d16366004614be8565b61292c565b348015610d2757600080fd5b5061053c610d36366004614c12565b63f23a6e6160e01b95945050505050565b348015610d5357600080fd5b506103f3610d623660046141a8565b60009081526010602052604090205490565b348015610d8057600080fd5b506103f3600281565b60006001600160e01b031982166332a2ad4360e11b1480610dba57506001600160e01b03198216630271189760e51b145b80610dd557506301ffc9a760e01b6001600160e01b03198316145b92915050565b60006002600a54610dec9190614c8c565b905090565b606060038054610e0090614cae565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2c90614cae565b8015610e795780601f10610e4e57610100808354040283529160200191610e79565b820191906000526020600020905b815481529060010190602001808311610e5c57829003601f168201915b5050505050905090565b600080600080600062015180600a54610e9c9190614c8c565b9450670de0b6b3a7640000600b54610eb49190614c8c565b9350600c549250670de0b6b3a7640000600d54610ed19190614c8c565b9150600e5490509091929394565b600080610eee868686866128f2565b9050610f0381610efe600461294d565b612970565b506000604051634844252360e11b815260040160405180910390fd5b600080610f2e868686866128f2565b9050610f4e81610f3e600561294d565b610f48600461294d565b17612970565b506000818152600460205260409020805460ff60f01b1916600160f01b17905530610f763090565b6001600160a01b0316146110005760005b8651811015610ffe57306001600160a01b0316878281518110610fac57610fac614ce8565b60200260200101516001600160a01b031603610ff657610ff6858281518110610fd757610fd7614ce8565b60200260200101518051906020012060056129af90919063ffffffff16565b600101610f87565b505b61100d8187878787612a11565b6040518181527f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f906020015b60405180910390a195945050505050565b600090815260046020526040902054600160a01b900465ffffffffffff1690565b6000610dec6002610e10614c8c565b6000818152600460205260408120805460ff600160f01b8204811691600160f81b90041681156110af57506007949350505050565b80156110c057506002949350505050565b60006110cb8661104a565b9050806000036110f657604051636ad0607560e01b8152600481018790526024015b60405180910390fd5b65ffffffffffff4316808210611113575060009695505050505050565b600061111e8861282f565b905081811061113557506001979650505050505050565b61113e88612aeb565b1580611150575061114e88612b0a565b155b1561116357506003979650505050505050565b60008881526004602052604090206001015465ffffffffffff1660000361119257506004979650505050505050565b506005979650505050505050565b6000806111af868686866128f2565b90506111bf81610efe600061294d565b506000818152600460205260409020546001600160a01b031633146111f95760405163233d98e360e01b81523360048201526024016110ed565b61120586868686612b47565b9695505050505050565b6000808351116112595760405162461bcd60e51b81526020600482015260156024820152745469746c652063616e6e6f7420626520656d70747960581b60448201526064016110ed565b6064835111156112ba5760405162461bcd60e51b815260206004820152602660248201527f5469746c6520697320746f6f206c6f6e6720286d61782031303020636861726160448201526563746572732960d01b60648201526084016110ed565b600082511161130b5760405162461bcd60e51b815260206004820152601b60248201527f4465736372697074696f6e2063616e6e6f7420626520656d707479000000000060448201526064016110ed565b6107d0825111156113745760405162461bcd60e51b815260206004820152602d60248201527f4465736372697074696f6e20697320746f6f206c6f6e6720286d61782032303060448201526c3020636861726163746572732960981b60648201526084016110ed565b600d54600854604051636eb1769f60e11b81523360048201523060248201526001600160a01b039091169063dd62ed3e90604401602060405180830381865afa1580156113c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e99190614cfe565b10156114375760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e7420746f6b656e20616c6c6f77616e63650000000060448201526064016110ed565b600d54600854611456916001600160a01b039091169033903090612bf8565b600061146487878786612c65565b905060006114718261104a565b905061147b612c73565b600082815260106020908152604080832093909355600f805460018082019092557f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020186905585835260118252838320805460ff1916821790558351610120810185523381528083018a81528186018a9052606082018e9052608082018d905260a082018c90524260c0830152600d5460e08301526101008201859052878552601490935293909220835181546001600160a01b0319166001600160a01b03909116178155905190918201906115519082614d5f565b50604082015160028201906115669082614d5f565b5060608201518051611582916003840191602090910190613f8a565b506080820151805161159e916004840191602090910190613feb565b5060a082015180516115ba916005840191602090910190614026565b5060c0820151600682015560e08201516007820155610100909101516008909101805460ff1916911515919091179055503360009081526013602052604090204290559695505050505050565b6000818152601a602090815260408083205460189092528220548291829161162f9190614e1e565b6000948552601760209081526040808720546019909252909520549095909350915050565b600060016116618461107a565b6007811115611672576116726144e3565b146116b25760405162461bcd60e51b815260206004820152601060248201526f1d9bdd1a5b99c81a5cc818db1bdcd95960821b60448201526064016110ed565b60006116c133610d168661104a565b9050600081116116fb5760405162461bcd60e51b815260206004820152600560248201526406e6f2056560dc1b60448201526064016110ed565b600084815260156020908152604080832033808552908352818420548885526016845282852091855292529091205460ff909116908115158061173d57508015155b1561174d5761174d868383612d25565b600086815260156020908152604080832033808552908352818420805460ff191660ff8b1617905589845260168352818420818552835281842087905581519283019091529181526117a491889188908790612e99565b506040805187815260ff8716602082015290810184905260806060820181905260009082015233907fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda49060a00160405180910390a25090949350505050565b6000806118e6876118e07f3e83946653575f9a39005e1545185629e92736b7528ab20ca3816f315424a8118c8c8c6118588e6001600160a01b0316600090815260026020526040902080546001810190915590565b8d8d604051611868929190614e31565b60405180910390208c805190602001206040516020016118c59796959493929190968752602087019590955260ff9390931660408601526001600160a01b03919091166060850152608084015260a083015260c082015260e00190565b6040516020818303038152906040528051906020012061301c565b85613049565b905080611911576040516394ab6c0760e01b81526001600160a01b03881660048201526024016110ed565b61195589888a89898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b92506130bd915050565b9998505050505050505050565b601460205260009081526040902080546001820180546001600160a01b03909216929161198e90614cae565b80601f01602080910402602001604051908101604052809291908181526020018280546119ba90614cae565b8015611a075780601f106119dc57610100808354040283529160200191611a07565b820191906000526020600020905b8154815290600101906020018083116119ea57829003601f168201915b505050505090806002018054611a1c90614cae565b80601f0160208091040260200160405190810160405280929190818152602001828054611a4890614cae565b8015611a955780601f10611a6a57610100808354040283529160200191611a95565b820191906000526020600020905b815481529060010190602001808311611a7857829003601f168201915b50505050600683015460078401546008909401549293909290915060ff1686565b600080339050611b0087828888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92506130bd915050565b979650505050505050565b6000611b168261107a565b6007811115611b2757611b276144e3565b14158015611b4f57506001611b3b8261107a565b6007811115611b4c57611b4c6144e3565b14155b611b935760405162461bcd60e51b8152602060048201526015602482015274141c9bdc1bdcd85b081b9bdd08199a5b9a5cda1959605a1b60448201526064016110ed565b611b9c8161319f565b50565b600f546060908310611bf35760405162461bcd60e51b815260206004820152601960248201527f537461727420696e646578206f7574206f6620626f756e64730000000000000060448201526064016110ed565b6000611bff8385614e1e565b600f54909150811115611c115750600f545b6000611c1d8583614e41565b6001600160401b03811115611c3457611c346141c1565b604051908082528060200260200182016040528015611c5d578160200160208202803683370190505b509050845b82811015611cb857600f8181548110611c7d57611c7d614ce8565b9060005260206000200154828783611c959190614e41565b81518110611ca557611ca5614ce8565b6020908102919091010152600101611c62565b50949350505050565b60008033905061120586828787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061332a92505050565b60405162461bcd60e51b815260206004820152602160248201527f5573652070726f706f7365576974684d65746164617461282920696e737465616044820152601960fa1b60648201526000906084016110ed565b600060608060008060006060611d7261334d565b611d7a61337a565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b600080611e30846118e07ff2aad550cf55f045cb27e9c559f9889fdfb6e6cdaa032301d6ea397784ae51d7898989611df98b6001600160a01b0316600090815260026020526040902080546001810190915590565b60408051602081019690965285019390935260ff90911660608401526001600160a01b0316608083015260a082015260c0016118c5565b905080611e5b576040516394ab6c0760e01b81526001600160a01b03851660048201526024016110ed565b6112058685876040518060200160405280600081525061332a565b6000611e838484846133a7565b90505b9392505050565b600f8181548110611e9d57600080fd5b600091825260209091200154905081565b611eb661341d565b6001600160a01b038116611efe5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b60448201526064016110ed565b6009546001600160a01b0390811690821603611f5c5760405162461bcd60e51b815260206004820152601860248201527f53616d65206164647265737320616c726561647920736574000000000000000060448201526064016110ed565b6000816001600160a01b03163b11611fa75760405162461bcd60e51b815260206004820152600e60248201526d139bdd08184818dbdb9d1c9858dd60921b60448201526064016110ed565b600980546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f7094255034eacc0f60d116eaacd1c7355924fe6546a96a111a4270c3ac263a1b910160405180910390a15050565b61201061341d565b8281146120585760405162461bcd60e51b8152602060048201526016602482015275082e4e4c2f240d8cadccee8d0e640dad2e6dac2e8c6d60531b60448201526064016110ed565b60005b838110156127f457600485858381811061207757612077614ce8565b905060200201602081019061208c9190614e54565b60ff1611156120dd5760405162461bcd60e51b815260206004820152601c60248201527f496e76616c696420676f7665726e616e636520706172616d206b65790000000060448201526064016110ed565b60008585838181106120f1576120f1614ce8565b90506020020160208101906121069190614e54565b60ff16600481111561211a5761211a6144e3565b90506000816004811115612130576121306144e3565b0361227f57600184848481811061214957612149614ce8565b90506020020135101561219e5760405162461bcd60e51b815260206004820152601e60248201527f766f74696e67506572696f6456616c7565206d757374206265203e3d2031000060448201526064016110ed565b600e8484848181106121b2576121b2614ce8565b9050602002013511156122075760405162461bcd60e51b815260206004820152601f60248201527f766f74696e67506572696f6456616c7565206d757374206265203c3d2031340060448201526064016110ed565b83838381811061221957612219614ce8565b90506020020135601861222c9190614e6f565b61223890610e10614e6f565b600a556000805160206152a18339815191528185858581811061225d5761225d614ce8565b90506020020135604051612272929190614e86565b60405180910390a16127eb565b6001816004811115612293576122936144e3565b036123e05760008484848181106122ac576122ac614ce8565b90506020020135116123105760405162461bcd60e51b815260206004820152602760248201527f70726f706f73616c5468726573686f6c6456616c7565206d75737420626520706044820152666f73697469766560c81b60648201526084016110ed565b620f424084848481811061232657612326614ce8565b90506020020135111561238f5760405162461bcd60e51b815260206004820152602b60248201527f70726f706f73616c5468726573686f6c6456616c7565206d757374206265203c60448201526a03d20312c3030302c3030360ac1b60648201526084016110ed565b8383838181106123a1576123a1614ce8565b90506020020135670de0b6b3a76400006123bb9190614e6f565b600b556000805160206152a18339815191528185858581811061225d5761225d614ce8565b60028160048111156123f4576123f46144e3565b0361250a57600084848481811061240d5761240d614ce8565b90506020020135116124615760405162461bcd60e51b815260206004820152601c60248201527f71756f72756d56616c7565206d75737420626520706f7369746976650000000060448201526064016110ed565b603284848481811061247557612475614ce8565b9050602002013511156124ca5760405162461bcd60e51b815260206004820152601960248201527f71756f72756d56616c7565206d757374206265203c3d2035300000000000000060448201526064016110ed565b8383838181106124dc576124dc614ce8565b6020029190910135600c55506000805160206152a18339815191528185858581811061225d5761225d614ce8565b600381600481111561251e5761251e6144e3565b0361266957600084848481811061253757612537614ce8565b905060200201351161259a5760405162461bcd60e51b815260206004820152602660248201527f70726f706f73616c4465706f736974416d6f756e74206d75737420626520706f60448201526573697469766560d01b60648201526084016110ed565b620f42408484848181106125b0576125b0614ce8565b9050602002013511156126185760405162461bcd60e51b815260206004820152602a60248201527f70726f706f73616c4465706f736974416d6f756e74206d757374206265203c3d604482015269020312c3030302c3030360b41b60648201526084016110ed565b83838381811061262a5761262a614ce8565b90506020020135670de0b6b3a76400006126449190614e6f565b600d556000805160206152a18339815191528185858581811061225d5761225d614ce8565b600481600481111561267d5761267d6144e3565b036127ab57601484848481811061269657612696614ce8565b9050602002013510156126f65760405162461bcd60e51b815260206004820152602260248201527f7665746f5468726573686f6c6450657263656e74206d757374206265203e3d20604482015261032360f41b60648201526084016110ed565b606484848481811061270a5761270a614ce8565b90506020020135111561276b5760405162461bcd60e51b815260206004820152602360248201527f7665746f5468726573686f6c6450657263656e74206d757374206265203c3d2060448201526203130360ec1b60648201526084016110ed565b83838381811061277d5761277d614ce8565b6020029190910135600e55506000805160206152a18339815191528185858581811061225d5761225d614ce8565b60405162461bcd60e51b8152602060048201526015602482015274496e76616c696420706172616d65746572206b657960581b60448201526064016110ed565b5060010161205b565b5050505050565b60008060008061280a85611607565b919450925090508061281c8385614e1e565b6128269190614e1e565b95945050505050565b60008181526004602052604081205461286490600160d01b810463ffffffff1690600160a01b900465ffffffffffff16614ea4565b65ffffffffffff1692915050565b61287a61341d565b600080856001600160a01b0316858585604051612898929190614e31565b60006040518083038185875af1925050503d80600081146128d5576040519150601f19603f3d011682016040523d82523d6000602084013e6128da565b606091505b50915091506128e98282613454565b50505050505050565b60008484848460405160200161290b9493929190614f5e565b60408051601f19818403018152919052805160209091012095945050505050565b6000611e86838361294860408051602081019091526000815290565b6133a7565b6000816007811115612961576129616144e3565b600160ff919091161b92915050565b60008061297c8461107a565b905060008361298a8361294d565b1603611e86578381846040516331b75e4d60e01b81526004016110ed93929190614fa9565b81546001600160801b03600160801b8204811691811660018301909116036129db576129db6041613470565b6001600160801b03808216600090815260018086016020526040909120939093558354919092018216600160801b029116179055565b60005b8451811015612ae357600080868381518110612a3257612a32614ce8565b60200260200101516001600160a01b0316868481518110612a5557612a55614ce8565b6020026020010151868581518110612a6f57612a6f614ce8565b6020026020010151604051612a849190614fcb565b60006040518083038185875af1925050503d8060008114612ac1576040519150601f19603f3d011682016040523d82523d6000602084013e612ac6565b606091505b5091509150612ad58282613454565b505050806001019050612a14565b505050505050565b6000612af9610d628361104a565b612b02836127fb565b101592915050565b6000818152601a60209081526040808320546018909252822054612b2e9190614e1e565b6000928352601760205260409092205491909111919050565b600080612b56868686866128f2565b9050612ba481612b66600761294d565b612b70600661294d565b612b7a600261294d565b6001612b87600782614fe7565b612b929060026150e4565b612b9c9190614e41565b181818612970565b506000818152600460205260409081902080546001600160f81b0316600160f81b179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c906110399083815260200190565b6040516001600160a01b038481166024830152838116604483015260648201839052612c5f9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613482565b50505050565b6000612826858585856134f3565b600080600960009054906101000a90046001600160a01b03166001600160a01b0316635b5927f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ced9190614cfe565b905060006064600c5483612d019190614e6f565b612d0b9190614c8c565b905060008111612d1c576001612d1e565b805b9250505090565b8160ff16600103612d7a5760008381526017602052604081208054839290612d4e908490614e41565b90915550506000838152601260205260408120600101805491612d70836150f3565b9190505550505050565b8160ff16600003612dc25760008381526018602052604081208054839290612da3908490614e41565b90915550506000838152601260205260408120805491612d70836150f3565b8160ff16600203612e0d5760008381526019602052604081208054839290612deb908490614e41565b90915550506000838152601260205260408120600201805491612d70836150f3565b8160ff16600303612e58576000838152601a602052604081208054839290612e36908490614e41565b90915550506000838152601260205260408120600301805491612d70836150f3565b60405162461bcd60e51b8152602060048201526011602482015270696e76616c696420766f7465207479706560781b60448201526064016110ed565b505050565b60008360ff16600103612ecf5760008681526017602052604081208054859290612ec4908490614e1e565b90915550612f4a9050565b8360ff16600003612ef85760008681526018602052604081208054859290612ec4908490614e1e565b8360ff16600203612f215760008681526019602052604081208054859290612ec4908490614e1e565b8360ff16600303612e58576000868152601a602052604081208054859290612ec4908490614e1e565b8360ff16600103612f7c576000868152601260205260408120600101805491612f728361510a565b9190505550612ff7565b8360ff16600003612fa1576000868152601260205260408120805491612f728361510a565b8360ff16600203612fc9576000868152601260205260408120600201805491612f728361510a565b8360ff16600303612ff7576000868152601260205260408120600301805491612ff18361510a565b91905055505b50506001600160a01b0392909216600090815260136020526040902042905550919050565b6000610dd56130296135a4565b8360405161190160f01b8152600281019290925260228201526042902090565b6000836001600160a01b03163b6000036130ab5760008061306a85856136cf565b5090925090506000816003811115613084576130846144e3565b1480156130a25750856001600160a01b0316826001600160a01b0316145b92505050611e86565b6130b684848461371c565b9050611e86565b60006130cd86610efe600161294d565b5060006130e3866130dd8961104a565b856133a7565b905060006130f48888888588612e99565b9050835160000361314b57866001600160a01b03167fb8e138887d0aa13bab447e82de9d5c1777041ecd21ca36ba824ff1e6c07ddda48988848960405161313e9493929190615123565b60405180910390a2611b00565b866001600160a01b03167fe2babfbac5889a709b63bb7f598b324e08bc5a4fb9ec647fb3cbc9ec07eb8712898884898960405161318c95949392919061514b565b60405180910390a2979650505050505050565b6000818152601460205260409020600881015460ff16156131be575050565b80546001600160a01b03166131d1575050565b60006131dc836127fb565b6000848152601a60205260408120549192508281036131fd5750600061321b565b600e548361320c846064614e6f565b6132169190614c8c565b101590505b60088401805460ff191660011790558015806132505750600461323d8661107a565b600781111561324e5761324e6144e3565b145b80613274575060076132618661107a565b6007811115613272576132726144e3565b145b80613285575061328385612aeb565b155b156132ea57835460078501546008546132ac926001600160a01b03918216929116906137f7565b83546040516001600160a01b039091169086907fb609a48849707cb36cfe770933c1394af50134a09c22785b9a51397c0735465e90600090a36127f4565b83546040516001600160a01b039091169086907f6a03416ba433facbd0a5d6e51a4d937dcb7d73314b93c8f0c951e51a32df943c90600090a35050505050565b60006128268585858561334860408051602081019091526000815290565b6130bd565b6060610dec7f00000000000000000000000000000000000000000000000000000000000000006000613828565b6060610dec7f00000000000000000000000000000000000000000000000000000000000000006001613828565b6009546040516305e112dd60e41b81526001600160a01b038581166004830152602482018590526000921690635e112dd090604401602060405180830381865afa1580156133f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e839190614cfe565b30331461343f576040516347096e4760e01b81523360048201526024016110ed565b565b8061344c60056138d3565b036134415750565b6060826134695761346482613942565b610dd5565b5080610dd5565b634e487b71600052806020526024601cfd5b600080602060008451602086016000885af1806134a5576040513d6000823e3d81fd5b50506000513d915081156134bd5780600114156134ca565b6001600160a01b0384163b155b15612c5f57604051635274afe760e01b81526001600160a01b03851660048201526024016110ed565b600033613500818461396b565b6135285760405163d9b3955760e01b81526001600160a01b03821660048201526024016110ed565b6000613533600b5490565b905080156135975760006135598361354c600143615191565b65ffffffffffff1661292c565b90508181101561359557604051636121770b60e11b81526001600160a01b038416600482015260248101829052604481018390526064016110ed565b505b611b0087878787866139f1565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156135fd57507f000000000000000000000000000000000000000000000000000000000000000046145b1561362757507f000000000000000000000000000000000000000000000000000000000000000090565b610dec604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600080600083516041036137095760208401516040850151606086015160001a6136fb88828585613bfa565b955095509550505050613715565b50508151600091506002905b9250925092565b6000806000856001600160a01b0316858560405160240161373e9291906151b0565b60408051601f198184030181529181526020820180516001600160e01b0316630b135d3f60e11b179052516137739190614fcb565b600060405180830381855afa9150503d80600081146137ae576040519150601f19603f3d011682016040523d82523d6000602084013e6137b3565b606091505b50915091508180156137c757506020815110155b801561120557508051630b135d3f60e11b906137ec9083016020908101908401614cfe565b149695505050505050565b6040516001600160a01b03838116602483015260448201839052612e9491859182169063a9059cbb90606401612c2d565b606060ff83146138425761383b83613cc9565b9050610dd5565b81805461384e90614cae565b80601f016020809104026020016040519081016040528092919081815260200182805461387a90614cae565b80156138c75780601f1061389c576101008083540402835291602001916138c7565b820191906000526020600020905b8154815290600101906020018083116138aa57829003601f168201915b50505050509050610dd5565b80546000906001600160801b0380821691600160801b90041681036138fc576138fc6031613470565b6001600160801b038181166000908152600185810160205260408220805492905585546fffffffffffffffffffffffffffffffff19169301909116919091179092555090565b8051156139525780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b80516000906034811015613983576001915050610dd5565b60131981840101516001600160b01b03198116692370726f706f7365723d60b01b146139b457600192505050610dd5565b6000806139c586602a860386613d08565b91509150811580611b005750866001600160a01b0316816001600160a01b031614979650505050505050565b6000613a0686868686805190602001206128f2565b905084518651141580613a1b57508351865114155b80613a2557508551155b15613a5a57855184518651604051630447b05d60e41b81526004810193909352602483019190915260448201526064016110ed565b600081815260046020526040902054600160a01b900465ffffffffffff1615613aa55780613a878261107a565b6040516331b75e4d60e01b81526110ed929190600090600401614fa9565b6000613aaf61106b565b613ac19065ffffffffffff4316614e1e565b90506000613acd610ddb565b600084815260046020526040902080546001600160a01b0319166001600160a01b038716178155909150613b0083613dbb565b815465ffffffffffff91909116600160a01b0265ffffffffffff60a01b19909116178155613b2d82613df2565b815463ffffffff91909116600160d01b0263ffffffff60d01b1990911617815588517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e090859087908c908c906001600160401b03811115613b9057613b906141c1565b604051908082528060200260200182016040528015613bc357816020015b6060815260200190600190039081613bae5790505b508c89613bd08a82614e1e565b8e604051613be6999897969594939291906151c9565b60405180910390a150505095945050505050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115613c355750600091506003905082613cbf565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015613c89573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613cb557506000925060019150829050613cbf565b9250600091508190505b9450945094915050565b60606000613cd683613e23565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6000808451831180613d1957508284115b15613d2957506000905080613db3565b6000613d36856001614e1e565b84118015613d5e575061060f60f31b613d528787016020015190565b6001600160f01b031916145b90506000613d6f8215156002614e6f565b613d7a906028614e1e565b905080613d878787614e41565b03613da957600080613d9a898989613e4b565b9096509450613db39350505050565b6000809350935050505b935093915050565b600065ffffffffffff821115613dee576040516306dfcc6560e41b815260306004820152602481018390526044016110ed565b5090565b600063ffffffff821115613dee576040516306dfcc6560e41b815260206004820152602481018390526044016110ed565b600060ff8216601f811115610dd557604051632cd44ac360e21b815260040160405180910390fd5b6000808481613e5b866001614e1e565b85118015613e83575061060f60f31b613e778388016020015190565b6001600160f01b031916145b90506000613e948215156002614e6f565b9050600080613ea3838a614e1e565b90505b87811015613f00576000613ec5613ec08784016020015190565b613f11565b9050600f8160ff161115613ee55760008097509750505050505050613db3565b613ef0601084614e6f565b60ff909116019150600101613ea6565b506001999098509650505050505050565b600060f882901c602f81118015613f2b5750603a8160ff16105b15613f3957602f1901610dd5565b60608160ff16118015613f4f575060678160ff16105b15613f5d5760561901610dd5565b60408160ff16118015613f73575060478160ff16105b15613f815760361901610dd5565b5060ff92915050565b828054828255906000526020600020908101928215613fdf579160200282015b82811115613fdf57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190613faa565b50613dee929150614078565b828054828255906000526020600020908101928215613fdf579160200282015b82811115613fdf57825182559160200191906001019061400b565b82805482825590600052602060002090810192821561406c579160200282015b8281111561406c578251829061405c9082614d5f565b5091602001919060010190614046565b50613dee92915061408d565b5b80821115613dee5760008155600101614079565b80821115613dee5760006140a182826140aa565b5060010161408d565b5080546140b690614cae565b6000825580601f106140c6575050565b601f016020900490600052602060002090810190611b9c9190614078565b6000602082840312156140f657600080fd5b81356001600160e01b031981168114611e8657600080fd5b80356001600160a01b038116811461412557600080fd5b919050565b60006020828403121561413c57600080fd5b611e868261410e565b60005b83811015614160578181015183820152602001614148565b50506000910152565b60008151808452614181816020860160208601614145565b601f01601f19169290920160200192915050565b602081526000611e866020830184614169565b6000602082840312156141ba57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156141ff576141ff6141c1565b604052919050565b600082601f83011261421857600080fd5b81356001600160401b03811115614231576142316141c1565b614244601f8201601f19166020016141d7565b81815284602083860101111561425957600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561428c57600080fd5b6142958561410e565b93506142a36020860161410e565b92506040850135915060608501356001600160401b038111156142c557600080fd5b6142d187828801614207565b91505092959194509250565b60006001600160401b038211156142f6576142f66141c1565b5060051b60200190565b600082601f83011261431157600080fd5b81356020614326614321836142dd565b6141d7565b8083825260208201915060208460051b87010193508684111561434857600080fd5b602086015b8481101561436b5761435e8161410e565b835291830191830161434d565b509695505050505050565b600082601f83011261438757600080fd5b81356020614397614321836142dd565b8083825260208201915060208460051b8701019350868411156143b957600080fd5b602086015b8481101561436b57803583529183019183016143be565b600082601f8301126143e657600080fd5b813560206143f6614321836142dd565b82815260059290921b8401810191818101908684111561441557600080fd5b8286015b8481101561436b5780356001600160401b038111156144385760008081fd5b6144468986838b0101614207565b845250918301918301614419565b6000806000806080858703121561446a57600080fd5b84356001600160401b038082111561448157600080fd5b61448d88838901614300565b955060208701359150808211156144a357600080fd5b6144af88838901614376565b945060408701359150808211156144c557600080fd5b506144d2878288016143d5565b949793965093946060013593505050565b634e487b7160e01b600052602160045260246000fd5b60088110614509576145096144e3565b9052565b60208101610dd582846144f9565b6000806040838503121561452e57600080fd5b8235915061453e6020840161410e565b90509250929050565b600080600080600060a0868803121561455f57600080fd5b85356001600160401b038082111561457657600080fd5b61458289838a01614300565b9650602088013591508082111561459857600080fd5b6145a489838a01614376565b955060408801359150808211156145ba57600080fd5b6145c689838a016143d5565b945060608801359150808211156145dc57600080fd5b6145e889838a01614207565b935060808801359150808211156145fe57600080fd5b5061460b88828901614207565b9150509295509295909350565b803560ff8116811461412557600080fd5b6000806040838503121561463c57600080fd5b8235915061453e60208401614618565b60008083601f84011261465e57600080fd5b5081356001600160401b0381111561467557600080fd5b60208301915083602082850101111561468d57600080fd5b9250929050565b600080600080600080600060c0888a0312156146af57600080fd5b873596506146bf60208901614618565b95506146cd6040890161410e565b945060608801356001600160401b03808211156146e957600080fd5b6146f58b838c0161464c565b909650945060808a013591508082111561470e57600080fd5b61471a8b838c01614207565b935060a08a013591508082111561473057600080fd5b5061473d8a828b01614207565b91505092959891949750929550565b6001600160a01b038716815260c06020820181905260009061477090830188614169565b82810360408401526147828188614169565b606084019690965250506080810192909252151560a0909101529392505050565b6000806000806000608086880312156147bb57600080fd5b853594506147cb60208701614618565b935060408601356001600160401b03808211156147e757600080fd5b6147f389838a0161464c565b909550935060608801359150808211156145fe57600080fd5b6000806040838503121561481f57600080fd5b50508035926020909101359150565b60008151808452602080850194506020840160005b8381101561485f57815187529582019590820190600101614843565b509495945050505050565b602081526000611e86602083018461482e565b6000806000806060858703121561489357600080fd5b843593506148a360208601614618565b925060408501356001600160401b038111156148be57600080fd5b6148ca8782880161464c565b95989497509550505050565b600080600080608085870312156148ec57600080fd5b84356001600160401b038082111561490357600080fd5b61490f88838901614300565b9550602087013591508082111561492557600080fd5b61493188838901614376565b9450604087013591508082111561494757600080fd5b614953888389016143d5565b9350606087013591508082111561496957600080fd5b506142d187828801614207565b60ff60f81b8816815260e06020820152600061499560e0830189614169565b82810360408401526149a78189614169565b606084018890526001600160a01b038716608085015260a0840186905283810360c085015290506149d8818561482e565b9a9950505050505050505050565b600080600080608085870312156149fc57600080fd5b84359350614a0c60208601614618565b9250614a1a6040860161410e565b915060608501356001600160401b038111156142c557600080fd5b600080600060608486031215614a4a57600080fd5b614a538461410e565b92506020840135915060408401356001600160401b03811115614a7557600080fd5b614a8186828701614207565b9150509250925092565b60008083601f840112614a9d57600080fd5b5081356001600160401b03811115614ab457600080fd5b6020830191508360208260051b850101111561468d57600080fd5b60008060008060408587031215614ae557600080fd5b84356001600160401b0380821115614afc57600080fd5b614b0888838901614a8b565b90965094506020870135915080821115614b2157600080fd5b506148ca87828801614a8b565b600080600080600060a08688031215614b4657600080fd5b614b4f8661410e565b9450614b5d6020870161410e565b935060408601356001600160401b0380821115614b7957600080fd5b614b8589838a01614376565b94506060880135915080821115614b9b57600080fd5b6145e889838a01614376565b60008060008060608587031215614bbd57600080fd5b614bc68561410e565b93506020850135925060408501356001600160401b038111156148be57600080fd5b60008060408385031215614bfb57600080fd5b614c048361410e565b946020939093013593505050565b600080600080600060a08688031215614c2a57600080fd5b614c338661410e565b9450614c416020870161410e565b9350604086013592506060860135915060808601356001600160401b03811115614c6a57600080fd5b61460b88828901614207565b634e487b7160e01b600052601160045260246000fd5b600082614ca957634e487b7160e01b600052601260045260246000fd5b500490565b600181811c90821680614cc257607f821691505b602082108103614ce257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215614d1057600080fd5b5051919050565b601f821115612e94576000816000526020600020601f850160051c81016020861015614d405750805b601f850160051c820191505b81811015612ae357828155600101614d4c565b81516001600160401b03811115614d7857614d786141c1565b614d8c81614d868454614cae565b84614d17565b602080601f831160018114614dc15760008415614da95750858301515b600019600386901b1c1916600185901b178555612ae3565b600085815260208120601f198616915b82811015614df057888601518255948401946001909101908401614dd1565b5085821015614e0e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115610dd557610dd5614c76565b8183823760009101908152919050565b81810381811115610dd557610dd5614c76565b600060208284031215614e6657600080fd5b611e8682614618565b8082028115828204841417610dd557610dd5614c76565b6040810160058410614e9a57614e9a6144e3565b9281526020015290565b65ffffffffffff818116838216019080821115614ec357614ec3614c76565b5092915050565b60008151808452602080850194506020840160005b8381101561485f5781516001600160a01b031687529582019590820190600101614edf565b60008282518085526020808601955060208260051b8401016020860160005b84811015614f5157601f19868403018952614f3f838351614169565b98840198925090830190600101614f23565b5090979650505050505050565b608081526000614f716080830187614eca565b8281036020840152614f83818761482e565b90508281036040840152614f978186614f04565b91505082606083015295945050505050565b83815260608101614fbd60208301856144f9565b826040830152949350505050565b60008251614fdd818460208701614145565b9190910192915050565b60ff8181168382160190811115610dd557610dd5614c76565b600181815b8085111561503b57816000190482111561502157615021614c76565b8085161561502e57918102915b93841c9390800290615005565b509250929050565b60008261505257506001610dd5565b8161505f57506000610dd5565b8160018114615075576002811461507f5761509b565b6001915050610dd5565b60ff84111561509057615090614c76565b50506001821b610dd5565b5060208310610133831016604e8410600b84101617156150be575081810a610dd5565b6150c88383615000565b80600019048211156150dc576150dc614c76565b029392505050565b6000611e8660ff841683615043565b60008161510257615102614c76565b506000190190565b60006001820161511c5761511c614c76565b5060010190565b84815260ff841660208201528260408201526080606082015260006112056080830184614169565b85815260ff8516602082015283604082015260a06060820152600061517360a0830185614169565b82810360808401526151858185614169565b98975050505050505050565b65ffffffffffff828116828216039080821115614ec357614ec3614c76565b828152604060208201526000611e836040830184614169565b60006101208b8352602060018060a01b038c16818501528160408501526151f28285018c614eca565b91508382036060850152615206828b61482e565b915083820360808501528189518084528284019150828160051b850101838c0160005b8381101561525757601f19878403018552615245838351614169565b94860194925090850190600101615229565b505086810360a088015261526b818c614f04565b9450505050508560c08401528460e08401528281036101008401526152908185614169565b9c9b50505050505050505050505056fe6f9ed6a384cbf90b58bf1f76f5317192b82f9bd7cc8c5a3d5016e06ce2a79a81a26469706673582212203096323dc7fa0e24ff3c84d274ef1163e882f5175b49a940db83fb27213b939564736f6c634300081600330000000000000000000000002425598dd959e47a294a737ee4104316864817cf000000000000000000000000b78c584ed07b1b0bf8bc6bdd48d32f31f599434d