0 txs
386 calls
constructor
constructor()
functions
allOpenDisputesCancelledToIndexForMarket
viewfunction allOpenDisputesCancelledToIndexForMarket(address) view returns (uint256)
canDisputorClaimbackBondFromUnclosedDispute
viewfunction canDisputorClaimbackBondFromUnclosedDispute(address _market, uint256 _disputeIndex, address _disputorAddress) view returns (bool)
councilMemberAddress
viewfunction councilMemberAddress(uint256) view returns (address)
councilMemberCount
viewfunction councilMemberCount() view returns (uint256)
councilMemberIndex
viewfunction councilMemberIndex(address) view returns (uint256)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
dispute
viewfunction dispute(address, uint256) view returns (address disputorAddress, string disputeString, uint256 disputeCode, uint256 disputeTimestamp, uint256 originalOutcomeFromResolver, uint256 winningPosition, bool isResolverPunished, bool isDisputorPunished)
disputeVote
viewfunction disputeVote(address, uint256, uint256) view returns (uint256)
disputeVotePunish
viewfunction disputeVotePunish(address, uint256, uint256) view returns (bool)
disputeVotesCount
viewfunction disputeVotesCount(address, uint256, uint256) view returns (uint256)
disputeWinningPositionChoosen
viewfunction disputeWinningPositionChoosen(address, uint256) view returns (uint256)
disputeWinningPositionChoosenByMember
viewfunction disputeWinningPositionChoosenByMember(address, uint256, uint256) view returns (uint256)
disputeWinningPositionVotes
viewfunction disputeWinningPositionVotes(address, uint256, uint256) view returns (uint256)
firstMemberThatChoseWinningPosition
viewfunction firstMemberThatChoseWinningPosition(address) view returns (address)
getDispute
viewfunction getDispute(address _market, uint256 _index) view returns (tuple)
getDisputeAddressOfDisputor
viewfunction getDisputeAddressOfDisputor(address _market, uint256 _index) view returns (address)
getDisputeCode
viewfunction getDisputeCode(address _market, uint256 _index) view returns (uint256)
getDisputeString
viewfunction getDisputeString(address _market, uint256 _index) view returns (string)
getDisputeTimestamp
viewfunction getDisputeTimestamp(address _market, uint256 _index) view returns (uint256)
getDisputeVoteOfCouncilMember
viewfunction getDisputeVoteOfCouncilMember(address _market, uint256 _index, address _councilMember) view returns (uint256)
getDisputeVotes
viewfunction getDisputeVotes(address _market, uint256 _index) view returns (uint256[])
getLastClosedDispute
viewfunction getLastClosedDispute(address _market) view returns (tuple)
getMarketLastClosedDispute
viewfunction getMarketLastClosedDispute(address _market) view returns (uint256)
getMarketOpenDisputes
viewfunction getMarketOpenDisputes(address _market) view returns (uint256)
getNumberOfCouncilMembersForMarketDispute
viewfunction getNumberOfCouncilMembersForMarketDispute(address _market, uint256 _index) view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getVotesCountForMarketDispute
viewfunction getVotesCountForMarketDispute(address _market, uint256 _index) view returns (uint256)
getVotesMissingForMarketDispute
viewfunction getVotesMissingForMarketDispute(address _market, uint256 _index) view returns (uint256)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isDisputeCancelled
viewfunction isDisputeCancelled(address _market, uint256 _index) view returns (bool)
isDisputeOpen
viewfunction isDisputeOpen(address _market, uint256 _index) view returns (bool)
isMarketClosedForDisputes
viewfunction isMarketClosedForDisputes(address _market) view returns (bool)
isMarketLastClosedDisputeExists
viewfunction isMarketLastClosedDisputeExists(address _market) view returns (bool)
isOpenDisputeCancelled
viewfunction isOpenDisputeCancelled(address _market, uint256 _disputeIndex) view returns (bool)
isOracleCouncilMember
viewfunction isOracleCouncilMember(address _councilMember) view returns (bool)
marketClosedForDisputes
viewfunction marketClosedForDisputes(address) view returns (bool)
marketLastClosedDispute
viewfunction marketLastClosedDispute(address) view returns (uint256)
marketManager
viewfunction marketManager() view returns (address)
marketOpenDisputesCount
viewfunction marketOpenDisputesCount(address) view returns (uint256)
marketTotalDisputes
viewfunction marketTotalDisputes(address) view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
addOracleCouncilMember
nonpayablefunction addOracleCouncilMember(address _councilMember)
claimUnclosedDisputeBonds
nonpayablefunction claimUnclosedDisputeBonds(address _market, uint256 _disputeIndex)
closeMarketForDisputes
nonpayablefunction closeMarketForDisputes(address _market)
createMarket
nonpayablefunction createMarket(string _marketQuestion, string _marketSource, string _additionalInfo, uint256 _endOfTrading, uint256 _yesNoTokenCap, address _rewardToken, uint256 _rewardAmount, string _yesTokenSymbol, string _noTokenSymbol)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address _marketManager)
openDispute
nonpayablefunction openDispute(address _market, string _disputeString)
pause
nonpayablefunction pause()
renounceOwnership
nonpayablefunction renounceOwnership()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
reopenMarketForDisputes
nonpayablefunction reopenMarketForDisputes(address _market)
replaceOracleCouncilMember
nonpayablefunction replaceOracleCouncilMember(address _oldMember, address _newMember)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setMarketManager
nonpayablefunction setMarketManager(address _marketManager)
setYesNoTokenCap
nonpayablefunction setYesNoTokenCap(address _market, uint256 _yesNoTokenCap)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
voteForDispute
nonpayablefunction voteForDispute(address _market, uint256 _disputeIndex, uint256 _disputeCodeVote, bool _punish, uint256 _winningPosition)
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
DisputeClosed
event DisputeClosed(address market, uint256 disputeIndex, uint256 decidedOption)
Initialized
event Initialized(uint8 version)
MarketClosedForDisputes
event MarketClosedForDisputes(address market, uint256 disputeFinalCode)
MarketReopenedForDisputes
event MarketReopenedForDisputes(address market)
NewDispute
event NewDispute(address market, string disputeString, address disputorAccount)
NewMarketManager
event NewMarketManager(address marketManager)
NewOracleCouncilMember
event NewOracleCouncilMember(address councilMember, uint256 councilMemberCount)
OracleCouncilMemberRemoved
event OracleCouncilMemberRemoved(address councilMember, uint256 councilMemberCount)
OracleCouncilMemberReplaced
event OracleCouncilMemberReplaced(address oldMember, address newMember, uint256 memberIndex)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
Unpaused
event Unpaused(address account)
Upgraded
event Upgraded(address indexed implementation)
VotedAddedForDispute
event VotedAddedForDispute(address market, uint256 disputeIndex, uint256 disputeCodeVote, uint256 winningPosition, address voter)
errors
AlreadyOracleCouncilMember
error AlreadyOracleCouncilMember()
DisputeAlreadyClosed
error DisputeAlreadyClosed()
DisputeAlreadyOpen
error DisputeAlreadyOpen()
DisputeInvalid
error DisputeInvalid()
DisputeNonExistent
error DisputeNonExistent()
InvalidAddress
error InvalidAddress()
InvalidDisputeCode
error InvalidDisputeCode()
InvalidDisputeString
error InvalidDisputeString()
InvalidMarketStatus
error InvalidMarketStatus()
InvalidOption
error InvalidOption()
InvalidWinningPosition
error InvalidWinningPosition()
MarketClosedForDisputesError
error MarketClosedForDisputesError()
MarketNotActive
error MarketNotActive()
MarketNotClosedForDisputes
error MarketNotClosedForDisputes()
MaxOracleCouncilMembersExceeded
error MaxOracleCouncilMembersExceeded()
NotOracleCouncilMember
error NotOracleCouncilMember()
NotOracleCouncilMemberAndOwner
error NotOracleCouncilMemberAndOwner()
OnlyManagerOrOwner
error OnlyManagerOrOwner()
SameVoteOption
error SameVoteOption()
SameWinningPosition
error SameWinningPosition()
UnableToClaimBond
error UnableToClaimBond()
creation bytecode
0x60a0806040523460d657306080525f549060ff8260081c166084575060ff80821603604b575b6040516150b290816100db8239608051818181612f550152818161305401526135300152f35b60ff90811916175f557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a15f6025565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c90816301ffc9a714613db057508063084739e414613d7757806314ec9a1f14613d355780631c0cc42c14613cde5780631e8b477414613b935780631eb4370a14613b4b5780632056433414613b0957806322cdda1a14613abe578063248a9ca314613a905780632a9af70c146139f55780632db4c708146138fb5780632f2ff15d1461384c57806336568abe146137b95780633659cfe61461350b57806336cb20a7146134cf578063380d9622146134b55780633878970f1461346c57806339672ba3146134285780633c794933146133d55780633f4ba83a1461334057806341ed2c12146133165780634ee05dd6146132cf5780634f1ef2861461300557806352d1902d14612f42578063580a913d14612eae5780635c975abb14612e8b5780636774454714612e385780636cd431dd14612dfe578063715018a614612da15780637172021214612d6757806371dba48d14612d1f5780637210cceb14612c7b57806375969e3214612c3e5780637b6cfe9d14612c1f578063815feffd14611bd05780638456cb5914612bc4578063876ae35214612b6957806389c0b25c146122a75780638a6ef984146122735780638da5cb5b1461224a57806391d14854146121ff578063944450391461214457806395e7f02d1461208c5780639906a1f514612052578063a217fddf14612036578063a24536f91461200e578063a6182c9814611fd4578063a8cca32a14611f98578063a9faca8014611ddd578063aa7839e814611d2f578063b35bf5db14611cd0578063c084e6fe14611c0a578063c3b2b6e414611bd0578063c4d66de814611937578063c63011b214611909578063c69d81d7146117b2578063ce07756114611772578063cf65e30f146116cf578063d547741f14611690578063d82aff111461160b578063f2fde38b1461157a578063f48bb5341461153a578063f68246ce146115185763f6db4c2f146102de575f80fd5b346115155760a0366003190112611515576102f7613e03565b6064358015158103610a5857335f9081526101946020526040902054156114705761019154604051633761c52760e11b81526001600160a01b038481166004830152608435939260209183916024918391165afa90811561108e5785916114e6575b50156114d457610368836145c6565b6114c2576001600160a01b0383168452610197602052604084205460243511156114b0576024351561149e576001600160a01b038316845261019b602090815260408086206024358752909152842060020154610c8457600460443510801590611494575b61148257338452610194602052604084205480156114705760443560010361135e57821580156112f6575b801561128e575b61127c576001600160a01b03841685526101a06020908152604080872060243588528252808720838852909152852054831461126a576001600160a01b03841685526101a060209081526040808720602435885282528087208388529091528520546111ae576001600160a01b0384168086526101a060209081526040808820602435808a52908352818920858a5283528189208790559288526101a1825280882092885291815281872085885290528520805460018101811161119a5760010190555b60018060a01b038416855261019c6020526040852060243586526020526104ed8160408720613fa5565b90549060031b1c6110a3575b61056e6105899160018060a01b038616875261019c60205260408720602435885260205261054661052d8260408a20613fa5565b6044359082549060031b91821b915f19901b1916179055565b6001600160a01b038616875261019d602090815260408089206024358a529091528720613e7c565b909215159083549060ff809160031b9316831b921b19161790565b905560018060a01b038216835261019e6020526040832060243584526020526105b760443560408520613e59565b90549060031b1c60018101811161103d576106149060018060a01b038416855261019e60205260408520602435865260205260016105fa60443560408820613e59565b919092019082549060031b91821b915f19901b1916179055565b7fe5a4e79fc191615470d7a161db08d0e2f18b21da5df60451d35a2fcac7524a8e60a0604051600180831b038516815260243560208201526044356040820152836060820152336080820152a160018060a01b038216835261019e60205260408320602435845260205261068d60443560408520613e59565b90549060031b1c6101925460011c106106a4578280f35b604435600103610cc85750819081805b60405163e7702d0560e01b81526020816004816001600160a01b0388165afa908115610c5d578691610c96575b508111610761576001600160a01b03831685526101a16020818152604080882060243589528252808820848952909152862054831061072a575b5061072590614bb1565b6106b4565b6001600160a01b0384168652602090815260408087206024358852825280872083885290915285205490935090508261072561071b565b509190916101925460011c1061077b575b50505b5f808280f35b60018060a01b038216835261019f6020526040832060243584526020528060408420556107ae8160443560243585614cfb565b6107b6614afb565b6001600160a01b038416855261019b602090815260408087206024358852909152852060020154610c845760443515610c725760018060a01b038416855261019b60205260408520602435865260205260443560026040872001556003604435145f14610c6857604051632486d67160e01b8152906020826004816001600160a01b0389165afa8015610c5d578690610c25575b6108e092505b6001600160a01b03861680885261019b60208181526040808b20602435808d52908352818c2060050195909555928a52908152818920928952919091528620600601805460ff191660ff851515161790556001600160a01b038516865261019b6020908152604080882060243589529091528620600601805461ff00191691151560081b61ff0016919091179055565b6001600160a01b03831684526101986020526040842054848115610c1b5750805f19810111610c0757849291905f19015b6001600160a01b03851684526101986020526040842055604435600303610a5c575050506001600160a01b03818116835261019960209081526040808520805460ff191660011790556101968252808520602435908190556101915461019b845282872091875292528420600401548492909116803b15610a5857604051633c58cdcb60e01b81526001600160a01b0385166004820152602481019290925282908290604490829084905af18015610a4d57610a35575b5050604080516001600160a01b038316815260443560208201525f8051602061505d8339815191529260609290915f8051602061501d8339815191529190a15b604080516001600160a01b039092168252602435602083015260443590820152a1600160fb555f80610772565b610a3e90613ece565b610a4957815f6109c8565b5080fd5b6040513d84823e3d90fd5b8280fd5b604435600103610b3957506001600160a01b03838116835261019960209081526040808520805460ff19166001179055610196909152832060243590556101915416803b15610a5857604051633c58cdcb60e01b81526001600160a01b0385166004820152602481019290925282908290604490829084905af18015610a4d57610b25575b5050604080516001600160a01b038316815260443560208201525f8051602061505d8339815191529260609290915f8051602061501d8339815191529190a1610a08565b610b2e90613ece565b610a4957815f610ae1565b9050600260443514610b5e575b505060605f8051602061505d83398151915291610a08565b6101956020526040822054610197602052604083205561019860205281604081205561019960205260408220600160ff19825416179055610196602052602435604083205560018060a01b03610191541690813b15610a58576040516319eab15960e01b81526001600160a01b0385166004820152901560248201529082908290604490829084905af18015610a4d5715610b4657610bfc90613ece565b610a4957815f610b46565b634e487b7160e01b85526011600452602485fd5b8093929150610911565b506020823d602011610c55575b81610c3f60209383613f33565b81010312610c51576108e0915161084a565b5f80fd5b3d9150610c32565b6040513d88823e3d90fd5b6108e09083610850565b604051632a71953160e01b8152600490fd5b60405163d4192f2b60e01b8152600490fd5b90506020813d602011610cc0575b81610cb160209383613f33565b81010312610c5157515f6106e1565b3d9150610ca4565b610cd760443560243584614bbf565b9091610ce1614afb565b6001600160a01b038416855261019b602090815260408087206024358852909152852060020154610c845760443515610c725760018060a01b038416855261019b60205260408520602435865260205260443560026040872001556003604435145f146110995750604051632486d67160e01b8152906020826004816001600160a01b0388165afa801561108e57859061105a575b610e0c92505b6001600160a01b03851680875261019b60208181526040808a20602435808c52908352818b2060050195909555928952908152818820928852919091528520600601805460ff191660ff851515161790556001600160a01b038416855261019b6020908152604080872060243588529091528520600601805461ff00191691151560081b61ff0016919091179055565b6001600160a01b038216835261019860205260408320548381156110515750805f1981011161103d578391905f19015b6001600160a01b03841683526101986020526040832055604435600303610f715750506001600160a01b03818116835261019960209081526040808520805460ff191660011790556101968252808520602435908190556101915461019b845282872091875292528420600401548492909116803b15610a5857604051633c58cdcb60e01b81526001600160a01b0385166004820152602481019290925282908290604490829084905af18015610a4d57610f5d575b5050604080516001600160a01b038316815260443560208201525f8051602061505d8339815191529260609290915f8051602061501d8339815191529190a15b604080516001600160a01b039092168252602435602083015260443590820152a1600160fb55610775565b610f6690613ece565b610a4957815f610ef2565b600260443514610f94575b505060605f8051602061505d83398151915291610f32565b6101956020526040822054610197602052604083205561019860205281604081205561019960205260408220600160ff19825416179055610196602052602435604083205560018060a01b03610191541690813b15610a58576040516319eab15960e01b81526001600160a01b0385166004820152901560248201529082908290604490829084905af18015610a4d5715610f7c5761103290613ece565b610a4957815f610f7c565b634e487b7160e01b84526011600452602484fd5b80929150610e3c565b506020823d602011611086575b8161107460209383613f33565b81010312610c5157610e0c9151610d76565b3d9150611067565b6040513d87823e3d90fd5b90610e0c91610d7c565b6001600160a01b03841680865261019e60209081526040808820602435808a5290835281892093895261019c835281892090895290915286206110f991906110ec908490613fa5565b90549060031b1c90613e59565b90549060031b1c805f19810111611186576105899161117e61056e9260018060a01b038816895261019e602052604089206024358a5260205261116360408a2060018060a01b038a168b5261019c60205260408b206024358c526020526110ec8560408d20613fa5565b90915f19019082549060031b91821b915f19901b1916179055565b9150506104f9565b634e487b7160e01b86526011600452602486fd5b634e487b7160e01b87526011600452602487fd5b6001600160a01b0384168086526101a160209081526040808820602435808a529083528189209389526101a0835281892090895282528088208489528252808820548852919052852080545f198101811061119a575f190190556001600160a01b0384168086526101a060209081526040808820602435808a52908352818920858a5283528189208790559288526101a1825280882092885291815281872085885290528520805460018101811161119a5760010190556104c3565b604051632b6847a560e21b8152600490fd5b60405163f2bfb5bf60e01b8152600490fd5b50604051632486d67160e01b81526020816004816001600160a01b0389165afa908115610c5d5786916112c4575b5083146103ff565b90506020813d6020116112ee575b816112df60209383613f33565b81010312610c5157515f6112bc565b3d91506112d2565b5060405163e7702d0560e01b81526020816004816001600160a01b0389165afa908115610c5d57869161132c575b5083116103f8565b90506020813d602011611356575b8161134760209383613f33565b81010312610c5157515f611324565b3d915061133a565b915060018060a01b038316845261019c60205260408420602435855260205261138a8260408620613fa5565b60443591549060031b1c1461145e576001600160a01b03831684526101a060209081526040808620602435875282528086208487529091528420546113d1575b83916104c3565b6001600160a01b0383168085526101a1602090815260408087206024358089529083528188209388526101a0835281882090885282528087208588528252808720548752919052842080545f1981018110611186575f190190556001600160a01b03831684526101a0602090815260408086206024358752825280862084875290915284208490556113ca565b60405163f30f6f1960e01b8152600490fd5b60405163ccb7f41960e01b8152600490fd5b604051630a383c2d60e11b8152600490fd5b50604435156103cd565b60405163b754f80760e01b8152600490fd5b6040516365b1c14760e01b8152600490fd5b604051637d274ca160e01b8152600490fd5b604051635a90bb8d60e11b8152600490fd5b611508915060203d60201161150e575b6115008183613f33565b810190614229565b5f610359565b503d6114f6565b80fd5b503461151557602061153261152c36613e9a565b91614644565b604051908152f35b50346115155760203660031901126115155760209060ff906040906001600160a01b03611565613e03565b16815261019984522054166040519015158152f35b503461151557602036600319011261151557611594613e03565b61159c6146a8565b6001600160a01b038116156115b7576115b490614ab3565b80f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b503461151557602036600319011261151557611625613e03565b61162d6146a8565b6001600160a01b0316801561167e5761019180546001600160a01b031916821790556040519081527f23e455350850b05998316f502175b427a275f4d5be9e2a04d530ea39239e1b6f90602090a180f35b60405163e6c4247b60e01b8152600490fd5b5034611515576040366003190112611515576115b46004356116b0613e19565b9080845261015f6020526116ca6001604086200154614910565b614a3f565b5034611515576020366003190112611515576116e9613e03565b6097546001600160a01b039190821633141580611763575b61175157168082526101998060205260ff6040842054166114c257816040915f8051602061501d833981519152938552602052818420600160ff198254161790558151908152836020820152a180f35b604051632556aead60e01b8152600490fd5b50816101915416331415611701565b503461151557604060209161178636613e2f565b6001600160a01b0390921683526101a08552838320908352845282822090825283522054604051908152f35b50346115155760209081600319360112611515576117ce613e03565b6117d66146a8565b6001600160a01b038181169190821561167e57610192906004868354926101915416604051928380926309ae6dab60e31b82525afa908115610c5d5786916118dc575b5081116118ca576001600160a01b0383165f90815261019460205260409020546118b85760018101809111610c075780825584526101938552604080852080546001600160a01b03191685179055905492845261019490945283832082905583516001600160a01b03919091168152602081019190915290917f7b669209e50faed123ff5edb840280b4529293d7408675dbe630eb19cc12e5bb91a180f35b604051631ac5e78760e31b8152600490fd5b60405163ba0c71bf60e01b8152600490fd5b90508681813d8311611902575b6118f38183613f33565b81010312610c5157515f611819565b503d6118e9565b503461151557602036600319011261151557602061192d611928613e03565b6145c6565b6040519015158152f35b503461151557602080600319360112610a4957611952613e03565b82549060ff808360081c161592838094611bc4575b8015611bae575b15611b525760ff1981811660011787559084611b41575b5061199e82875460081c1661199981614b51565b614b51565b6119a733614ab3565b6119f082875460081c166119ba81614b51565b6119c381614b51565b6119cc81614b51565b8260c9541660c9556119dd81614b51565b6119e681614b51565b600160fb55614b51565b5f805261015f80865260405f20335f5286528260405f20541615611af9575b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a92835f5281875260405f20335f52875260405f20541615611aae575b505061019180546001600160a01b0319166001600160a01b039093169290921790915550611a78575080f35b7f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989061ff0019835416835560405160018152a180f35b825f52855260405f20335f528552600160405f2091825416179055339033907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a45f8080611a4c565b5f805280865260405f20335f52865260405f2060018382541617905533335f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4611a0f565b61ffff19166101011786555f611985565b60405162461bcd60e51b815260048101869052602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b15801561196e575060018282161461196e565b50600182821610611967565b5034611515576020366003190112611515576020906040906001600160a01b03611bf8613e03565b16815261019883522054604051908152f35b503461151557602036600319011261151557611ccc9060ff60066040611c2e613e03565b93611c376144d3565b506001600160a01b03948516815261019b6020908152828220610196825283832054835290522060405193611c6b85613ee1565b8154168452611c7c600182016140a6565b6020850152600281015460408501526003810154606085015260048101546080850152600581015460a08501520154818116151560c084015260081c16151560e082015260405191829182613fde565b0390f35b503461151557604036600319011261151557611ccc90611d1b906001906040906001600160a01b03611d00613e03565b16815261019b602052818120602435825260205220016140a6565b604051918291602083526020830190613fba565b503461151557602036600319011261151557611d49613e03565b6097546001600160a01b039190821633141580611dce575b61175157168082526101998060205260ff60408420541615611dbc5781835260209081526040808420805460ff19169055519182527fba1dc3bb562a92f019150e93749bcdeeb5d64787f37a856f4563f38a12877b0e91a180f35b60405163c2936f0f60e01b8152600490fd5b50816101915416331415611d61565b5034611515576101206003198181360112610a58576001600160401b0390600435828111611f9457611e13903690600401614050565b91602435818111611f9057611e2c903690600401614050565b90604435818111611f8c57611e45903690600401614050565b9360a43560018060a01b0396878216809203610c515760e435848111611f8857611e73903690600401614050565b95610104948535908111611f8457611e8f903690600401614050565b90611e98614afb565b611ea0614700565b335f908152610194602052604090205415611470578a99610191541695863b15611f84578a9889956040519b8c9a8b998a98630153f59560e71b8a5260048a01526101248901611eef91613fba565b868982030160248a0152611f0291613fba565b85888203016044890152611f1591613fba565b906064356064880152608435608488015260a487015260c43560c4870152838682030160e4870152611f4691613fba565b918483030190840152611f5891613fba565b03925af18015610a4d57611f70575b50600160fb5580f35b611f7990613ece565b61151557805f611f67565b8a80fd5b8980fd5b8680fd5b8580fd5b8480fd5b503461151557602036600319011261151557602061192d611fb7613e03565b6001600160a01b03165f9081526101946020526040902054151590565b5034611515576020366003190112611515576020906040906001600160a01b03611ffc613e03565b16815261019583522054604051908152f35b503461151557604036600319011261151557602061153261202d613e03565b6024359061453d565b5034611515578060031936011261151557602090604051908152f35b5034611515576020366003190112611515576020906040906001600160a01b0361207a613e03565b16815261019483522054604051908152f35b50346115155760403660031901126115155760406120a8613e03565b6001600160a01b03908116835261019b602090815282842060243585529052912080549091166120da600183016140a6565b9160ff60028201549160038101549060048101546006600583015492015492612116604051988998610100908a528060208b0152890190613fba565b9560408801526060870152608086015260a0850152818116151560c085015260081c16151560e08301520390f35b5034611515576040366003190112611515576001600160a01b03612166613e03565b168152602061019c815260408220602435835281526040822060405192838383549182815201908193835284832090835b8181106121eb57505050846121ad910385613f33565b60405193838594850191818652518092526040850193925b8281106121d457505050500390f35b8351855286955093810193928101926001016121c5565b825484529286019260019283019201612197565b503461151557604036600319011261151557604061221b613e19565b91600435815261015f602052209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b50346115155780600319360112611515576097546040516001600160a01b039091168152602090f35b50346115155760203660031901126115155760209060043581526101938252604060018060a01b0391205416604051908152f35b5034611515576040366003190112611515576122c1613e03565b6024356001600160401b038111610a58576122e0903690600401614050565b6122e8614700565b61019154604051633761c52760e11b81526001600160a01b03848116600483015290911690602081602481855afa90811561108e578591612b4a575b50156114d457612333836145c6565b6114c25760405163a3dd261960e01b808252906020816004816001600160a01b0389165afa908115610c5d578691612b2b575b506008811015612b1757600214159081612a98575b50612a86576040516020810190602082526123ab8161239d6040820187613fba565b03601f198101835282613f33565b519020604051602081019060208252866040820152604081526123cd81613efd565b51902014612a745760206004916040519283809263481e23d560e11b82525afa908115612813578491612a45575b506040516380af208b60e01b81526001600160a01b038481166004830152336024830152909160209183916044918391165afa908115612813578491612a13575b50612a01576001600160a01b038216835261019560205260408320546001810190811061103d5760018060a01b038316845261019560205260408420556101988060205260408420549060018201809211610c075760018060a01b0384168552602052604084205561019b602052604083206101956020526040842054845260205260408320336bffffffffffffffffffffffff60a01b82541617905560018060a01b038216835261019b60205260408320610195602052604084205484526020526001604084200181516001600160401b0381116129ed5761251f825461406e565b601f81116129b2575b50806020601f821160011461294f578691612944575b508160011b915f199060031b1c19161790555b60018060a01b038216835261019b60205260408320610195602052604084205484526020524260036040852001556101925460018101811161103d576125b4600161259d818401614526565b926125ab6040519485613f33565b01808352614526565b601f19013660208301376001600160a01b038316845261019c60209081526040808620610195835281872054875290915284208151916001600160401b03831161290257600160401b831161290257602090825484845580851061292a575b500190855260208520855b83811061291657505050506101925460018101811161103d57612647600161259d818401614526565b601f19013660208301376001600160a01b038316845261019d6020908152604080862061019583528187205487529091528420815190916001600160401b03821161290257600160401b82116129025760209083548385558084106128b1575b50019185526020852090855b8160051c811061286c5750601f19811680820361281e575b5050604051632486d67160e01b8152915060209050816004816001600160a01b0387165afa9081156128135784916127e1575b506001600160a01b03838116855261019b60209081526040808720610195835281882054885290915285206004019190915561019154849116803b15610a495760405163019e079960e61b81526001600160a01b03851660048201523360248201529082908290604490829084905af18015610a4d576127cd575b50507f87046dce79b1665a254dc604805c1931ea0b40c0cbf0b87b19329e013a027306916127c160405192839260018060a01b03168352606060208401526060830190613fba565b3360408301520390a180f35b6127d690613ece565b610a5857825f612779565b90506020813d60201161280b575b816127fc60209383613f33565b81010312610c5157515f6126fe565b3d91506127ef565b6040513d86823e3d90fd5b928693875b818403811061283d5750505060051c01555f8080806126cb565b90919460206128626001928489511515919060ff809160031b9316831b921b19161790565b9601929101612823565b86875b602081106128845750838201556001016126b3565b949060206128a86001928885511515919060ff809160031b9316831b921b19161790565b9201950161286f565b6128dc90858952601f848a2091818716806128e2575b500160051c810190601f860160051c01614510565b5f6126a7565b5f199081848a0160051c86010191825491890360031b1c1690555f6128c7565b634e487b7160e01b86526041600452602486fd5b60019060208451940193818401550161261e565b83885282882061293e918101908601614510565b5f612613565b90508301515f61253e565b91508286526020862086925b601f198316841061299a576001935082601f19811610612982575b5050811b019055612551565b8501515f1960f88460031b161c191690555f80612976565b8581015182556020938401936001909201910161295b565b6129dd9083875260208720601f840160051c810191602085106129e3575b601f0160051c0190614510565b5f612528565b90915081906129d0565b634e487b7160e01b85526041600452602485fd5b604051636bddbfa560e11b8152600490fd5b90506020813d602011612a3d575b81612a2e60209383613f33565b81010312610c5157515f61243c565b3d9150612a21565b612a67915060203d602011612a6d575b612a5f8183613f33565b810190614148565b5f6123fb565b503d612a55565b604051630ca53b0b60e11b8152600490fd5b6040516356d85b9f60e01b8152600490fd5b60405190815290506020816004816001600160a01b0388165afa90811561108e578591612ae8575b506008811015612ad457600314155f61237b565b634e487b7160e01b85526021600452602485fd5b612b0a915060203d602011612b10575b612b028183613f33565b810190614241565b5f612ac0565b503d612af8565b634e487b7160e01b86526021600452602486fd5b612b44915060203d602011612b1057612b028183613f33565b5f612366565b612b63915060203d60201161150e576115008183613f33565b5f612324565b503461151557604036600319011261151557611ccc9060ff60066040612b8d613e03565b93612b966144d3565b506001600160a01b03948516815261019b6020908152828220602435835290522060405193611c6b85613ee1565b5034611515578060031936011261151557612bdd614744565b612be5614700565b600160ff1960c954161760c9557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a180f35b5034611515578060031936011261151557602061019254604051908152f35b5034611515576020366003190112611515576020906001600160a01b039060409082612c68613e03565b16815261019a8452205416604051908152f35b503461151557604036600319011261151557612c95613e03565b6024359060018060a01b031690818352602092610199845260ff604082205416928315612d0b575b83612cee575b83612cd6575b5050506040519015158152f35b604092935081526101968452205414155f8080612cc9565b61019b855260408083208484528652822060020154159350612cc3565b610197855260408220548311159350612cbd565b5034611515576040366003190112611515576020906002906040906001600160a01b03612d4a613e03565b16815261019b845281812060243582528452200154604051908152f35b5034611515576020366003190112611515576020906040906001600160a01b03612d8f613e03565b16815261019783522054604051908152f35b5034611515578060031936011261151557612dba6146a8565b609780546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b5034611515576020366003190112611515576020906040906001600160a01b03612e26613e03565b16815261019683522054604051908152f35b503461151557612e4736613e2f565b929160018060a01b0316825261019c6020526040822090825260205260408120908154831015611515576020612e7d8484613fa5565b90546040519160031b1c8152f35b5034611515578060031936011261151557602060ff60c954166040519015158152f35b503461151557604036600319011261151557612ec8613e03565b60243560018060a01b038216835261019c602052604083208184526020526040832054905f199283830194838611612f2e575090612f059161453d565b900301908111612f1a57602090604051908152f35b634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b81526011600452602490fd5b50346115155780600319360112611515577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003612f9a5760206040515f8051602061503d8339815191528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b5060403660031901126115155761301a613e03565b6024356001600160401b038111610a585736602382011215610a585761304a903690602481600401359101613f6f565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811692919061308430851415614167565b6130a05f8051602061503d8339815191529482865416146141c8565b6130a86146a8565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156130de5750506115b49150614e0f565b8216604051936352d1902d60e01b85526020948581600481865afa5f91816132a0575b506131625760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b94929394036132495761317484614e0f565b7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590613241575b6131ae575b50505080f35b61322f925f80604051946131c186613efd565b602786527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c85870152660819985a5b195960ca1b60408701528481519101845af4903d15613238573d61321381613f54565b906132216040519283613f33565b81525f81943d92013e614f83565b505f80806131a8565b60609250614f83565b5060016131a3565b60405162461bcd60e51b815260048101839052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508681813d83116132c8575b6132b88183613f33565b81010312610c515751905f613101565b503d6132ae565b50346115155760403660031901126115155760209060406132ee613e03565b6001600160a01b03908116835261019b84528183206024358452845291205460405191168152f35b5034611515578060031936011261151557610191546040516001600160a01b039091168152602090f35b5034611515578060031936011261151557613359614744565b60c95460ff8116156133995760ff191660c9557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a180f35b60405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606490fd5b5034611515576040366003190112611515576001600160a01b036133f7613e03565b16815261019c6020526040812060243582526020526040812054905f198201918211612f2e57602082604051908152f35b5034611515576040366003190112611515576020906040906001600160a01b03613450613e03565b16815261019f8352818120602435825283522054604051908152f35b5034611515576040366003190112611515576020906002906040906001600160a01b03613497613e03565b16815261019b84528181206024358252845220015415604051908152f35b503461151557602061192d6134c936613e9a565b91614259565b5034611515576020366003190112611515576020906040906001600160a01b036134f7613e03565b168152610196835220541515604051908152f35b503461151557602080600319360112610a4957613526613e03565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811661355d30821415614167565b6135795f8051602061503d8339815191529183835416146141c8565b6135816146a8565b60405190848201928284106001600160401b038511176137a5578360405286835260ff7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914354165f146135db57505050506115b49150614e0f565b8492939416906040516352d1902d60e01b81528681600481865afa5f9181613776575b5061365f5760405162461bcd60e51b815260048101889052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b959394950361371f5761367182614e0f565b7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2825115801590613718575b6136ac575b5050505080f35b5f8061370e95604051956136bf87613efd565b602787527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c86880152660819985a5b195960ca1b60408801525190845af4903d15613238573d61321381613f54565b505f8080806136a5565b505f6136a0565b60405162461bcd60e51b815260048101849052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508781813d831161379e575b61378e8183613f33565b81010312610c515751905f6135fe565b503d613784565b634e487b7160e01b5f52604160045260245ffd5b5034611515576040366003190112611515576137d3613e19565b336001600160a01b038216036137ef576115b490600435614a3f565b60405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608490fd5b503461151557604036600319011261151557600435613869613e19565b81835261015f806020526138836001604086200154614910565b825f528060205260405f209160018060a01b031691825f5260205260ff60405f205416156138af578380f35b825f5260205260405f20815f5260205260405f20600160ff1982541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a45f80808380f35b503461151557604036600319011261151557613915613e03565b61391d614700565b61392a3360243583614259565b156139e3576101915460405163481e23d560e11b81528392916001600160a01b0391906020908290600490829086165afa9081156128135784916139c4575b5016803b156139c05760405163bc134bfd60e01b81526001600160a01b0392909216600483015233602483015282908290604490829084905af18015610a4d576139b05750f35b6139b990613ece565b6115155780f35b5050fd5b6139dd915060203d602011612a6d57612a5f8183613f33565b5f613969565b6040516330df642760e11b8152600490fd5b5034610c51576040366003190112610c5157613a0f613e03565b335f90815261019460205260409020541561147057610191546001600160a01b0316803b15610c5157604051630aa6bdc360e21b81526001600160a01b0392909216600483015260248035908301525f908290604490829084905af18015613a8557613a79575080f35b613a839150613ece565b005b6040513d5f823e3d90fd5b34610c51576020366003190112610c51576004355f5261015f6020526020600160405f200154604051908152f35b34610c51576040366003190112610c51576001600160a01b03613adf613e03565b165f5261019b60205260405f206024355f5260205260206003600260405f20015414604051908152f35b34610c5157613b1736613e2f565b9160018060a01b03165f526101a160205260405f20905f5260205260405f20905f52602052602060405f2054604051908152f35b34610c51576040366003190112610c51576001600160a01b03613b6c613e03565b165f5261019b60205260405f206024355f526020526020600360405f200154604051908152f35b34610c51576040366003190112610c5157613bac613e03565b613bb4613e19565b613bbc6146a8565b6001600160a01b038181169190821561167e57831692831561167e576001600160a01b03165f908152610194602052604090205415611470576001600160a01b03165f90815261019460205260409020546118b857808214613c9a57816060917fcfdcf225dd62209471bfabca833fc79c9f17fb470374ac70298fa54848c5ad60935f52610194908160205260405f205491825f5261019360205260405f20826bffffffffffffffffffffffff60a01b825416179055815f526020528160405f2055825f525f604081205560405192835260208301526040820152a1005b606460405162461bcd60e51b815260206004820152602060248201527f43616e6e6f74207265706c61636520776974682073616d6520616464726573736044820152fd5b34610c5157613cec36613e2f565b9160018060a01b03165f5261019d60205260405f20905f5260205260405f20908154811015610c5157613d2360ff91602093613e7c565b9190546040519260031b1c1615158152f35b34610c5157613d4336613e2f565b9160018060a01b03165f5261019e60205260405f20905f5260205260405f206004821015610c5157602091612e7d91613e59565b34610c51576020366003190112610c51576001600160a01b03613d98613e03565b165f52610196602052602060405f2054604051908152f35b34610c51576020366003190112610c51576004359063ffffffff60e01b8216809203610c5157602091637965db0b60e01b8114908115613df2575b5015158152f35b6301ffc9a760e01b14905083613deb565b600435906001600160a01b0382168203610c5157565b602435906001600160a01b0382168203610c5157565b6060906003190112610c51576004356001600160a01b0381168103610c5157906024359060443590565b6004821015613e685701905f90565b634e487b7160e01b5f52603260045260245ffd5b9190918054831015613e68575f52601f60205f208360051c01921690565b6060906003190112610c51576001600160a01b036004358181168103610c515791602435916044359081168103610c515790565b6001600160401b0381116137a557604052565b61010081019081106001600160401b038211176137a557604052565b606081019081106001600160401b038211176137a557604052565b608081019081106001600160401b038211176137a557604052565b90601f801991011681019081106001600160401b038211176137a557604052565b6001600160401b0381116137a557601f01601f191660200190565b929192613f7b82613f54565b91613f896040519384613f33565b829481845281830111610c51578281602093845f960137010152565b8054821015613e68575f5260205f2001905f90565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b602080825282516001600160a01b031682820152820151610100604083018190529060e09061401290610120850190613fba565b936040810151606085015260608101516080850152608081015160a085015260a081015160c085015260c08101511515828501520151151591015290565b9080601f83011215610c515781602061406b93359101613f6f565b90565b90600182811c9216801561409c575b602083101461408857565b634e487b7160e01b5f52602260045260245ffd5b91607f169161407d565b9060405191825f82546140b88161406e565b908184526020946001916001811690815f1461412657506001146140e8575b5050506140e692500383613f33565b565b5f90815285812095935091905b81831061410e5750506140e693508201015f80806140d7565b855488840185015294850194879450918301916140f5565b925050506140e694925060ff191682840152151560051b8201015f80806140d7565b90816020910312610c5157516001600160a01b0381168103610c515790565b1561416e57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b156141cf57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b90816020910312610c5157518015158103610c515790565b90816020910312610c5157516008811015610c515790565b6101915460408051633761c52760e11b81526001600160a01b03808516600483018190529196929560209592948216908689602481855afa9889156144c9575f996144aa575b5088614493575b88614471575b88614451575b88614439575b5087614354575b50505050836142db575b5050505f146142d757600190565b5f90565b825163a3dd261960e01b81529293508190839060049082905afa92831561434b57505f9261432e575b5050600881101561431a576007145f80806142c9565b634e487b7160e01b5f52602160045260245ffd5b6143449250803d10612b1057612b028183613f33565b5f80614304565b513d5f823e3d90fd5b600493949750859087519485809263481e23d560e11b82525afa92831561442f57918593916143b995935f93614410575b5087516380af208b60e01b81526001600160a01b039283166004820152919093166024820152938492839182906044820190565b0392165afa908115614406575f916143d9575b501515925f8080806142bf565b90508181813d83116143ff575b6143f08183613f33565b81010312610c5157515f6143cc565b503d6143e6565b83513d5f823e3d90fd5b614428919350853d8711612a6d57612a5f8183613f33565b915f614385565b86513d5f823e3d90fd5b909750845f526101968652865f20541415965f6142b8565b9750845f5261019b8652865f20885f5286526002875f20015415976142b2565b9750845f5261019b8652865f20885f52865281875f20541682851614976142ac565b9750845f526101958652865f2054881115976142a6565b6144c2919950873d891161150e576115008183613f33565b975f61429f565b88513d5f823e3d90fd5b604051906144e082613ee1565b5f60e083828152606060208201528260408201528260608201528260808201528260a08201528260c08201520152565b81811061451b575050565b5f8155600101614510565b6001600160401b0381116137a55760051b60200190565b60019290915f5b60018060a01b038416805f5261019c602090808252604092835f20865f528352835f20548910156145ba579161458a939189935f528152815f2090865f52525f20613fa5565b905460039190911b1c156145b25760ff60015b168101809111612f1a57600190940193614544565b60ff5f61459d565b50505050925050915090565b6001600160a01b03165f818152610199602052604090205460ff169081156145ec575090565b60405163a3dd261960e01b81529150602090829060049082905afa908115613a85575f91614625575b50600881101561431a5760071490565b61463e915060203d602011612b1057612b028183613f33565b5f614615565b6001600160a01b0383165f9081526101946020526040902054919291156114705761469e9260018060a01b038092165f5261019c60205260405f20905f5260205260405f2091165f5261019460205260405f205490613fa5565b90549060031b1c90565b6097546001600160a01b031633036146bc57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b60ff60c9541661470c57565b60405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606490fd5b335f9081527f68adc5ac8e590759d923d6ae0437ec12c3803306d286779f60d8af3f58595f346020908152604091829020547f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a9060ff16156147a557505050565b6147ae33614eaf565b9083516147ba81613f18565b60428152838101916060368437815115613e685760308353815160019060011015613e6857607860218401536041905b8082116148cd57505061488b57604861488793869361486b9387985198899376020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b82860152805191829101603786015e8301907001034b99036b4b9b9b4b733903937b6329607d1b60378301525180928583015e015f83820152036028810187520185613f33565b5192839262461bcd60e51b845260048401526024830190613fba565b0390fd5b60648486519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f81166010811015613e68576f181899199a1a9b1b9c1cb0b131b232b360811b901a6148fc8486614e9e565b5360041c918015612f1a575f1901906147ea565b805f52602061015f8152604091825f20335f52825260ff835f2054161561493657505050565b61493f33614eaf565b90835161494b81613f18565b60428152838101916060368437815115613e685760308353815160019060011015613e6857607860218401536041905b8082116149fc57505061488b57604861488793869361486b9387985198899376020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b82860152805191829101603786015e8301907001034b99036b4b9b9b4b733903937b6329607d1b60378301525180928583015e015f83820152036028810187520185613f33565b9091600f81166010811015613e68576f181899199a1a9b1b9c1cb0b131b232b360811b901a614a2b8486614e9e565b5360041c918015612f1a575f19019061497b565b90815f5261015f8060205260405f209160018060a01b031691825f5260205260ff60405f205416614a6f57505050565b825f5260205260405f20815f5260205260405f2060ff19815416905533917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4565b609780546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b600260fb5414614b0c57600260fb55565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b15614b5857565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b5f198114612f1a5760010190565b915f925f925f915f9160019161019254925b83811115614c29575050505060011c1015614c2057600181148015614c16575b15614c00575050506001905f90565b91929091600314614c0d57565b5f925060019150565b5060028114614bf1565b5050505f905f90565b60018060a01b038216805f5287602061019c8152604090815f20875f528152614c5485835f20613fa5565b939054600394851b1c1480614ccd575b614c7b575b50505050614c7690614bb1565b614bd1565b614ca4918591614c8d60ff969b614bb1565b9a5f5261019d8152815f2090895f52525f20613e7c565b9054911b1c16614cb8575b5f808080614c69565b94614cc5614c7691614bb1565b959050614caf565b5060018b141580614c645750835f526101a08152815f20875f528152815f20855f528152815f205415614c64565b610192545f9485949385938493929060015b84811115614d3c57505050505060011c1015614c2057600181148015614c165715614c00575050506001905f90565b60018060a01b038216805f5288602061019c8152604090815f20885f528152614d6785835f20613fa5565b939054600394851b1c1480614de0575b614d8e575b50505050614d8990614bb1565b614d0d565b614db7918591614da060ff969c614bb1565b9b5f5261019d8152815f20908a5f52525f20613e7c565b9054911b1c16614dcb575b5f808080614d7c565b95614dd8614d8991614bb1565b969050614dc2565b5060018c141580614d775750835f526101a08152815f20885f528152815f20855f52815286825f205414614d77565b803b15614e43575f8051602061503d83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b908151811015613e68570160200190565b60405190614ebc82613efd565b602a8252602082016040368237825115613e685760309053815160019060011015613e6857607860218401536029905b808211614f40575050614efc5790565b606460405162461bcd60e51b815260206004820152602060248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f81166010811015613e68576f181899199a1a9b1b9c1cb0b131b232b360811b901a614f6f8486614e9e565b5360041c918015612f1a575f190190614eec565b91929015614fe55750815115614f97575090565b3b15614fa05790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b825190915015614ff85750805190602001fd5b60405162461bcd60e51b815260206004820152908190614887906024830190613fba56fe72ae4e77c5952790aabb8be5b30e11bc87653ea8bb7558b88a1f8bf466fb71c5360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc22030d24c56fdfb5edf6a4fc074d3ae64f4a1de374968f0a0871f9fa5d494c4ea26469706673582212207646a9a15e12613158b708a2f66552fae8dccb5cd19d959a84fb6a39d310697f64736f6c63430008190033