0 txs
0 calls
constructor
constructor()
functions
authorityAddress
viewfunction authorityAddress() view returns (address)
baseToken
viewfunction baseToken() view returns (address)
buyBackAndBurn
viewfunction buyBackAndBurn() view returns (bool)
DISPUTE_NUMBER_OF_ORACLES
viewfunction DISPUTE_NUMBER_OF_ORACLES() view returns (uint256)
disputeEndTime
viewfunction disputeEndTime() view returns (uint256)
feeWethORC
viewfunction feeWethORC() view returns (uint24)
getAuthorityAddress
viewfunction getAuthorityAddress() view returns (address)
getBaseToken
viewfunction getBaseToken() view returns (address)
getPlatformWallet
viewfunction getPlatformWallet() view returns (address)
isWhiteListed
viewfunction isWhiteListed(address) view returns (bool)
MINIMUM_MINI_DISPUTE_DEAL_SIZE
viewfunction MINIMUM_MINI_DISPUTE_DEAL_SIZE() view returns (uint256)
owner
viewfunction owner() view returns (address)
platformWallet
viewfunction platformWallet() view returns (address)
PRICE_PER_SIDE
viewfunction PRICE_PER_SIDE() view returns (uint256)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
taskDisputeCreated
viewfunction taskDisputeCreated(address) view returns (bool)
timeFeeWallet
viewfunction timeFeeWallet() view returns (address)
tokenToPoolFee
viewfunction tokenToPoolFee(address) view returns (uint24)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
userTaskDisputeContracts
viewfunction userTaskDisputeContracts(address, uint256) view returns (address)
userTaskDisputeCount
viewfunction userTaskDisputeCount(address) view returns (uint256)
createTaskDispute
payablefunction createTaskDispute(address loyaltyFeeAddress, address disputedAddress, string disputedUri, address disputor, uint256 dealSize, uint256 loyaltyFee, uint256 pricePerSide, string disputeUri, uint256 taskDisputeEndTime) payable returns (address)
initialize
nonpayablefunction initialize(address platform, address timeFeeAddress, address base, address authority, address platformOwner)
renounceOwnership
nonpayablefunction renounceOwnership()
setAuthorityAddress
nonpayablefunction setAuthorityAddress(address newAuthorityAddress)
setDisputeTimes
nonpayablefunction setDisputeTimes(uint256 endTime)
setPlatformWallet
nonpayablefunction setPlatformWallet(address newPlatformWallet)
setPoolFee
nonpayablefunction setPoolFee(address token, uint24 fee)
setRewardTokenToPriceFeed
nonpayablefunction setRewardTokenToPriceFeed(address loyaltyFeeTokenAddress, address setPriceFeed, bool status)
setWhiteListAddress
nonpayablefunction setWhiteListAddress(address whiteListedAddress, bool status)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateBuyBackAndBurn
nonpayablefunction updateBuyBackAndBurn(uint24 fee)
updateExistingAuthorityAddress
nonpayablefunction updateExistingAuthorityAddress(address disputeContract, address newAuthorityAddress)
updateExistingPlatformWallet
nonpayablefunction updateExistingPlatformWallet(address disputeContract, address newPlatformWallet)
updateMinimumDisputeDealSize
nonpayablefunction updateMinimumDisputeDealSize(uint256 newDealSize)
updateNoOfOracles
nonpayablefunction updateNoOfOracles(uint256 newNoOfOracles)
updateTaskDisputePricePerSide
nonpayablefunction updateTaskDisputePricePerSide(uint256 newPricePerSide)
updateTimeFeeWalletAddress
nonpayablefunction updateTimeFeeWalletAddress(address newTimeFeeWallet)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
AddressIsWhitelisted
event AddressIsWhitelisted(address indexed whiteListedAddress, bool status)
AuthorityAddressUpdated
event AuthorityAddressUpdated(address indexed previousAuthorityAddress, address indexed newAuthorityAddress)
DisputeTimeUpdated
event DisputeTimeUpdated(uint256 endTime, address indexed disputeContract)
ExistingAuthorityAddressUpdated
event ExistingAuthorityAddressUpdated(address indexed disputeContract, address indexed authorityAddress)
ExistingPlatformWalletUpdated
event ExistingPlatformWalletUpdated(address indexed disputeContract, address indexed platfromWallet)
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PlatformWalletIsUpdated
event PlatformWalletIsUpdated(address indexed previousPlatformWallet, address indexed newPlatformWallet)
PoolFeeIsSet
event PoolFeeIsSet(address token, uint24 fee)
PriceFeedIsUpdated
event PriceFeedIsUpdated(bool tokenStatus, address indexed loyaltyFeeAddress, address indexed priceFeed)
TaskDisputeCreated
event TaskDisputeCreated(address contractAddress, address creator, address baseToken, address authority, uint256 userDisputeId)
TaskDisputePriceUpdated
event TaskDisputePriceUpdated(uint256 previousPrice, uint256 newPrice)
TimeFeeWalletAddressUpdated
event TimeFeeWalletAddressUpdated(address indexed previousTimeFeeWallet, address indexed newTimeFeeWallet)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressIsAlreadyWhiteListed
error AddressIsAlreadyWhiteListed()
DisputeAddressNotFound
error DisputeAddressNotFound()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExistingAndNewAuthorityAddressCantBeSame
error ExistingAndNewAuthorityAddressCantBeSame()
ExistingAndNewPlatFormWalletCantBeSame
error ExistingAndNewPlatFormWalletCantBeSame()
ExistingAndNewWalletAddressCantBeSame
error ExistingAndNewWalletAddressCantBeSame()
FailedCall
error FailedCall()
InvalidAddress
error InvalidAddress()
InvalidAuthorityAddress
error InvalidAuthorityAddress()
InvalidBaseToken
error InvalidBaseToken()
InvalidDisputeContractAddress
error InvalidDisputeContractAddress()
InvalidFee
error InvalidFee()
InvalidInitialization
error InvalidInitialization()
InvalidPlatformOwner
error InvalidPlatformOwner()
InvalidPlatformWallet
error InvalidPlatformWallet()
InvalidTokens
error InvalidTokens()
InvalidValue
error InvalidValue()
NotInitializing
error NotInitializing()
NotWhiteListed
error NotWhiteListed()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
RewardTokenNotWhiteListed
error RewardTokenNotWhiteListed()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
TokenIsAlreadyApproved
error TokenIsAlreadyApproved()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a080604052346100c257306080525f5160206160525f395f51905f525460ff8160401c166100b3576002600160401b03196001600160401b03821601610060575b604051615f8b90816100c782396080518181816110bd015261116d0152f35b6001600160401b0319166001600160401b039081175f5160206160525f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80610041565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe60806040526004361015610011575f80fd5b5f5f3560e01c806306fdcc44146118445780631459457a1461150b57806322edce201461143a5780633c695d4e1461063e5780633d6223f0146113fd5780634ab31218146113df5780634f1ef2861461111c57806352d1902d146110a2578063579812a514610fee5780635e159c5314610ef5578063664843a914610eb85780636f9170f614610e7b57806370b97de714610e5d578063715018a614610dc45780638831e9cf14610d0e5780638da5cb5b14610cc8578063923fc0b914610cab57806398acd7a6146107685780639b8f539c14610c7b578063a09f4c47146109e5578063a11dabdc146109b3578063a3cf25ab1461098c578063ad3cb1cc14610927578063b19ca8c7146108ef578063b5c74efb14610843578063bf0780db1461078f578063c55dae6314610768578063c970e99f14610742578063d76a09f41461071b578063dabbe70f146106a9578063e075af9f14610665578063e47a9d461461063e578063e4a86a9914610503578063e9eef88e146104dd578063ea36212d1461038e578063ef9892fa14610370578063f0b20dcd1461021d578063f2fde38b146101f05763fa2af9da146101c7575f80fd5b346101ed57806003193601126101ed5760206001600160a01b0360055416604051908152f35b80fd5b50346101ed5760203660031901126101ed5761021a61020d611fbb565b61021561223e565b6120c3565b80f35b50346101ed5760403660031901126101ed57610237611fbb565b6024359062ffffff821680920361036c576001600160a01b039061025961223e565b169081158015610364575b8015610358575b801561033b575b801561031e575b8015610301575b6102f257818352600c60205260ff604084205416156102e357816040917fa343d63a4000279c87edbdf3a9b2be476caeeec9a0d3559459f5f1249677ee2c938552600e6020528285208162ffffff1982541617905582519182526020820152a180f35b6004836333910aef60e11b8152fd5b6004836358d620b360e01b8152fd5b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8214610280565b5073fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb98214610279565b507382af49447d8a07e3bd95bd0d56f35241523fbab18214610272565b50620f4240811161026b565b508015610264565b8280fd5b50346101ed57806003193601126101ed576020600354604051908152f35b50346101ed5760403660031901126101ed576103a8611fbb565b6001600160a01b036103b8611fd1565b916103c161223e565b169081156104b557818352600a60205260ff6040842054161561048d576001600160a01b031690811561047e57803b1561036c57826040517fada4ef30000000000000000000000000000000000000000000000000000000008152836004820152818160248183875af180156104735761045e575b50807fae03c08a3f7078bbdc6986e7f8f7fda4a75c215f0adda92c192919c27e9f92e291a380f35b816104689161202b565b61036c57825f610436565b6040513d84823e3d90fd5b6004836387ac4dbf60e01b8152fd5b6004837f5d69cf43000000000000000000000000000000000000000000000000000000008152fd5b6004837f92a0fba5000000000000000000000000000000000000000000000000000000008152fd5b50346101ed57806003193601126101ed57602062ffffff60065460a01c16604051908152f35b50346101ed5760403660031901126101ed5761051d611fbb565b602435908115159081830361063a576001600160a01b039061053d61223e565b1691821561062b57156105cc57818352600b602052604083205460ff1615610587576004837f0e539de4000000000000000000000000000000000000000000000000000000008152fd5b60207f0d2b6bda3533156bdeb3811b12e8fbc75e409abd9587f109f7e29b882c2da05b91838552600b825260408520600160ff198254161790555b604051908152a280f35b818352600b602052604083205460ff166105ef5760048363e6c4247b60e01b8152fd5b60207f0d2b6bda3533156bdeb3811b12e8fbc75e409abd9587f109f7e29b882c2da05b91838552600b82526040852060ff1981541690556105c2565b60048463e6c4247b60e01b8152fd5b8380fd5b50346101ed57806003193601126101ed5760206001600160a01b0360075416604051908152f35b50346101ed5760403660031901126101ed576001600160a01b0360406020928261068d611fbb565b1681526008845281812060243582528452205416604051908152f35b50346101ed5760203660031901126101ed576004356106c661223e565b801561070c576001548082146102f25760407f52fd985d21e445e8ffd07b2ceaff1bc74a6642144a68fd0eb8616cb69e272f52918151908152836020820152a160015580f35b6004826358d620b360e01b8152fd5b50346101ed57806003193601126101ed5760206001600160a01b0360055416604051908152f35b50346101ed57806003193601126101ed57602060ff60065460b81c166040519015158152f35b50346101ed57806003193601126101ed5760206001600160a01b0360045416604051908152f35b50346101ed5760203660031901126101ed576001600160a01b036107b1611fbb565b6107b961223e565b168015610834576007546001600160a01b03811682811461080c5790826001600160a01b0319927f741ee0e619c436098dff0f2be43023c24aef6c4c3134ca5db37746bb1088d0df8680a3161760075580f35b6004847f4e7ec357000000000000000000000000000000000000000000000000000000008152fd5b6004826322203f5960e01b8152fd5b50346101ed5760203660031901126101ed5760043561086061223e565b80156108c75780600254146108c75762015180810281810462015180036108b3576002556040519081527f763b213c00111423e1212b22d2905383ebe2002137972a32fd0cb9c786fdf0d860203092a280f35b602483634e487b7160e01b81526011600452fd5b6004827faa7feadc000000000000000000000000000000000000000000000000000000008152fd5b50346101ed5760203660031901126101ed5760406020916001600160a01b03610916611fbb565b168152600983522054604051908152f35b50346101ed57806003193601126101ed575061098860405161094a60408261202b565b600581527f352e302e30000000000000000000000000000000000000000000000000000000602082015260405191829160208352602083019061209f565b0390f35b50346101ed57806003193601126101ed5760206001600160a01b0360065416604051908152f35b50346101ed5760203660031901126101ed576004356109d061223e565b80156108c75780600354146108c75760035580f35b50346101ed5760603660031901126101ed576109ff611fbb565b610a07611fd1565b6044359182151590818403610b7b576001600160a01b0390610a2761223e565b16918215610c6c576001600160a01b0316928315610c5d5715610bd857818452600c60205260ff604085205416610bb05773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee82141580610b92575b610adb575b60207ff6557f44112bad7e22a3d8146616090e1b8d7245c41b3d7be2d22a939293ee6491838652600c825260408620600160ff19825416179055838652600d825260408620856001600160a01b03198254161790555b604051908152a380f35b6040517fc55dae63000000000000000000000000000000000000000000000000000000008152602081600481875afa8015610b875783918691610b37575b506001600160a01b031614610a7b576004846333910aef60e11b8152fd5b9150506020813d602011610b7f575b81610b536020938361202b565b81010312610b7b57516001600160a01b0381168103610b7b5782906001600160a01b03610b19565b8480fd5b3d9150610b46565b6040513d87823e3d90fd5b507382af49447d8a07e3bd95bd0d56f35241523fbab1821415610a76565b6004847fef064978000000000000000000000000000000000000000000000000000000008152fd5b818452600c60205260ff6040852054161561062b57818452600d6020526001600160a01b036040852054161561062b5760207ff6557f44112bad7e22a3d8146616090e1b8d7245c41b3d7be2d22a939293ee6491838652600c82526040862060ff198154169055838652600d8252604086206001600160a01b03198154169055610ad1565b60048563e6c4247b60e01b8152fd5b600485630722152560e11b8152fd5b50346101ed5760203660031901126101ed57600435610c9861223e565b80156108c757815481146108c757815580f35b50346101ed57806003193601126101ed5760209054604051908152f35b50346101ed57806003193601126101ed5760206001600160a01b037f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005416604051908152f35b50346101ed5760203660031901126101ed57610d28611fbb565b610d3061223e565b6005546001600160a01b038116918215610db5576001600160a01b031691828114610d8d5790826001600160a01b0319927fafdafba178415f38a81e9ce31168ffa3ce22045e659b3dbb40405bf2ac3e70788680a3161760055580f35b6004847fc9518849000000000000000000000000000000000000000000000000000000008152fd5b6004846387ac4dbf60e01b8152fd5b50346101ed57806003193601126101ed57610ddd61223e565b806001600160a01b037f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031981167f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346101ed57806003193601126101ed576020600154604051908152f35b50346101ed5760203660031901126101ed5760ff60406020926001600160a01b03610ea4611fbb565b168152600b84522054166040519015158152f35b50346101ed5760203660031901126101ed5762ffffff60406020926001600160a01b03610ee3611fbb565b168152600e8452205416604051908152f35b50346101ed5760403660031901126101ed576004356001600160a01b038116809103610fea57610f23611fd1565b610f2b61223e565b81156104b557818352600a60205260ff6040842054161561048d576001600160a01b0316908115610fdb57803b1561036c57826040517fccfc4569000000000000000000000000000000000000000000000000000000008152836004820152818160248183875af1801561047357610fc6575b50807f1f2a1174c083e293cecbc3d063657f97b3d3fd1d84d1b6484d6cba850b6e671e91a380f35b81610fd09161202b565b61036c57825f610f9e565b6004836322203f5960e01b8152fd5b5080fd5b50346101ed5760203660031901126101ed576001600160a01b03611010611fbb565b61101861223e565b168015611093576006546001600160a01b03811682811461106b5790826001600160a01b0319927f62f89c5f9ac38231a06486e252729814bf16bf7e1e766076dad77dcde9f41d7c8680a3161760065580f35b6004847f69a73321000000000000000000000000000000000000000000000000000000008152fd5b60048263e6c4247b60e01b8152fd5b50346101ed57806003193601126101ed576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361110d5760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b8063703e46dd60e11b60049252fd5b5060403660031901126101ed57611131611fbb565b9060243567ffffffffffffffff8111610fea5736602382011215610fea57611163903690602481600401359101612069565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168030149081156113aa575b5061139b576111a561223e565b6001600160a01b03831690604051937f52d1902d000000000000000000000000000000000000000000000000000000008552602085600481865afa80958596611367575b506112015760248484634c9c8ce360e01b8252600452fd5b9091847f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc810361133c5750813b1561132a57806001600160a01b03197f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a281518390156112f757808360206112eb95519101845af43d156112ef573d916112cf8361204d565b926112dd604051948561202b565b83523d85602085013e6122f4565b5080f35b6060916122f4565b505050346113025780f35b807fb398979f0000000000000000000000000000000000000000000000000000000060049252fd5b634c9c8ce360e01b8452600452602483fd5b7faa1d49a4000000000000000000000000000000000000000000000000000000008552600452602484fd5b9095506020813d602011611393575b816113836020938361202b565b81010312610b7b5751945f6111e9565b3d9150611376565b60048263703e46dd60e11b8152fd5b90506001600160a01b037f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541614155f611198565b50346101ed57806003193601126101ed576020600254604051908152f35b50346101ed5760203660031901126101ed5760ff60406020926001600160a01b03611426611fbb565b168152600a84522054166040519015158152f35b50346101ed5760203660031901126101ed5760043562ffffff81169081810361036c5761146561223e565b6006549160ff8360b81c165f146114a4575050507fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff6006541660065580f35b156102f257907fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff76ffffff0000000000000000000000000000000000000000770100000000000000000000000000000000000000000000009360a01b169116171760065580f35b50346101ed5760a03660031901126101ed57611525611fbb565b61152d611fd1565b906044356001600160a01b03811680910361063a5761154a611fe7565b608435936001600160a01b03851693848603611840577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549560ff8760401c16159667ffffffffffffffff811680159081611838575b600114908161182e575b159081611825575b506117fd5767ffffffffffffffff1981166001177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00556001600160a01b03929161160d91896117be575b5061160561229d565b61021561229d565b61161561229d565b169081156117af576001600160a01b03169182156117a0578315611791576001600160a01b0316938415611782571561175a577fffffffffffffffff00000000000000000000000000000000000000000000000090838752600c60205260408720600160ff19825416179055600654906001600160a01b0319600554161760055516176006556001600160a01b031960045416176004556001600160a01b0319600754161760075560038255623d0900600155610258600255629896806003556116dc5780f35b68ff0000000000000000197ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b6004867f4e5c250c000000000000000000000000000000000000000000000000000000008152fd5b6004876322203f5960e01b8152fd5b600487630722152560e11b8152fd5b60048763e6c4247b60e01b8152fd5b6004876387ac4dbf60e01b8152fd5b68ffffffffffffffffff191668010000000000000001177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00555f6115fc565b6004897ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b9050155f6115b2565b303b1591506115aa565b8991506115a0565b8680fd5b50610120366003190112611e4d5761185a611fbb565b90611863611fd1565b60443567ffffffffffffffff8111611e4d57611883903690600401611ffd565b91909361188e611fe7565b9160e43567ffffffffffffffff8111611e4d576118af903690600401611ffd565b94905f956001600160a01b038516158015611faa575b8015611f99575b8015611f8c575b611f7d57608435158015611f73575b8015611f69575b611e5157335f52600b60205260ff60405f20541615611f41576001600160a01b0385165f52600c60205260ff60405f20541615611f19576001600160a01b0385165f52600d6020526001600160a01b0360405f205416905f5492600254610104350191826101043511611f05576101c060405260843560805260a085905260a43560c05260c43560e081905261010435610100526101209390935260026101405260019290921c610160526001600160a01b038816610180526119ad913691612069565b610120608001526001600160a01b0360055416906006546001600160a01b0360045416906001600160a01b036007541690600154956003549060405197613bd594858a01968a881067ffffffffffffffff891117611ef157610180998b9962ffffff986123818c39308a523360208b015260408a015260608901526001600160a01b038616608089015260a088015260c087015260e086015261010085015261012084015260ff8160b81c16151561014084015260a01c166101608201520301905ff0948515611e4257611a9b6001600160a01b036004541660c43590876001600160a01b038a169161217e565b6001600160a01b03841673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee03611e605760a4353410611e51577382af49447d8a07e3bd95bd0d56f35241523fbab13b15611e4d57604051977fd0e30db00000000000000000000000000000000000000000000000000000000089525f8960048160a4357382af49447d8a07e3bd95bd0d56f35241523fbab15af18015611e4257611e28575b879850604097959697517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038916600482015260a43560248201526020816044818a7382af49447d8a07e3bd95bd0d56f35241523fbab15af18015611e1d57611de5575b505b6001600160a01b0388163b15611de1576040517f01b2dae200000000000000000000000000000000000000000000000000000000815260a06004820181905260805160a48301525160c482015260c05160e482015260e0516101048201526101005161012482015261012051610144820152610140805161016483015261016051610184830152610180516001600160a01b039081166101a48401526101a0516101c484019290925291968896889660209688969295919462ffffff94919386918490611c75906101e48c019061209f565b981660248a01528888036003190160448a01528188528988013785850188018a9052166064860152166084840152601f01601f191601030181836001600160a01b0389165af1801561047357611dcc575b50506001600160a01b038181168085526009602081815260408088205484895260088352818920818a52835281892080546001600160a01b0319169689169690961790955592875252842080545f198114611db8579160406020967faffbbec40c8be4f254ff5f7c709acb773fb9285887e99ec7aab25e2d59fea8369593600160a0960190556001600160a01b0387168152600a885220600160ff198254161790556001600160a01b03600454166001600160a01b0360075416906001600160a01b036040519481891686521688850152604084015260608301526080820152a16001600160a01b0360405191168152f35b602486634e487b7160e01b81526011600452fd5b81611dd69161202b565b61036c57825f611cc6565b8580fd5b6020813d602011611e15575b81611dfe6020938361202b565b81010312611840575180151503611de1575f611ba1565b3d9150611df1565b6040513d89823e3d90fd5b94959650965f611e379161202b565b5f9594938790611b34565b6040513d5f823e3d90fd5b5f80fd5b6358d620b360e01b5f5260045ffd5b95969495939487946001600160a01b03851673fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb914611ece57506001600160a01b0384165f52600e60205262ffffff60405f20541690611ec960a4356001600160a01b038a16336001600160a01b03891661217e565b611ba3565b90611ec960a4356001600160a01b038a16336001600160a01b036004541661217e565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b7fa129301f000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f6a9a57a5000000000000000000000000000000000000000000000000000000005f5260045ffd5b5060c435156118e9565b5060a435156118e2565b63e6c4247b60e01b5f5260045ffd5b50426101043511156118d3565b506001600160a01b038416156118cc565b506001600160a01b038416156118c5565b600435906001600160a01b0382168203611e4d57565b602435906001600160a01b0382168203611e4d57565b606435906001600160a01b0382168203611e4d57565b9181601f84011215611e4d5782359167ffffffffffffffff8311611e4d5760208381860195010111611e4d57565b90601f8019910116810190811067ffffffffffffffff821117611ef157604052565b67ffffffffffffffff8111611ef157601f01601f191660200190565b9291926120758261204d565b91612083604051938461202b565b829481845281830111611e4d578281602093845f960137010152565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b6001600160a01b03168015612152576001600160a01b037f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054826001600160a01b03198216177f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b7f1e4fbdf7000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b92906020925f926001600160a01b036040519281878501957f23b872dd0000000000000000000000000000000000000000000000000000000087521660248501521660448301526064820152606481526121d960848261202b565b519082855af115611e42575f513d61223557506001600160a01b0381163b155b6122005750565b6001600160a01b03907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b600114156121f9565b6001600160a01b037f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005416330361227157565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c16156122cc57565b7fd7e6bcf8000000000000000000000000000000000000000000000000000000005f5260045ffd5b90612331575080511561230957805190602001fd5b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b81511580612377575b612342575090565b6001600160a01b03907f9996b315000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b50803b1561233a56fe610100346102dd57601f613bd538819003918201601f19168301916001600160401b038311848410176102e157808492610180946040528339810103126102dd57610049816102f5565b610055602083016102f5565b90610062604084016102f5565b9061006f606085016102f5565b9061007c608086016102f5565b60a08601516001600160a01b03811696918782036102dd576100a060c084016102f5565b9260e0810151946101008201519661012083015199610140840151938415158095036102dd5761016001519262ffffff841684036102dd576001600160a01b03169b8c156102ca575f80546001600160a01b031981168f1782556040519e916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a36001600160a01b038216159081156102b8575b81156102a6575b811561029d575b50801561028c575b61027d57871561026e57881561025f578a156102505760e052600180546014805462ffffff60a01b191660a095861b62ffffff60a01b161790556001600160a81b03191693831b60ff60a01b16939093176001600160a01b0391821617909255600280546001600160a01b03199081169484169490941790556080939093526004805483169482169490941790935592905260c0929092526003805490911692909116919091179055600f556138cb908161030a8239608051818181610b2b01528181610bbe015281816118d20152612648015260a051818181611b3101526120b9015260c05181612019015260e051816107d20152f35b632a9ffab760e21b5f5260045ffd5b63d9421b5560e01b5f5260045ffd5b630a1a738560e11b5f5260045ffd5b63d92e233d60e01b5f5260045ffd5b506001600160a01b03871615610158565b9050155f610150565b6001600160a01b038716159150610149565b6001600160a01b038416159150610142565b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036102dd5756fe6080604052600436101561001a575b3615610018575f80fd5b005b5f5f3560e01c806301b2dae214611e4f57806309eef43e14611e125780631973f02814611b7a5780631af19dd3146116e35780632c3077ea14611b5457806338b5033714611b195780634fa1f172146117cf57806356069c0a146117b1578063715018a61461175857806373b2e80e1461171b5780637afbf480146116e35780638a5fc0f9146116c05780638da5cb5b1461169a5780638e7ea5b21461164957806398c079381461162b5780639b46a164146112f25780639e4cbcda14611050578063ada4ef3014610fd3578063b0d2616814610fa9578063b88a802f14610b4f578063c55dae6314610b0b578063c970e99f14610ae5578063ccfc456914610a31578063d76a09f414610a0a578063d9cf9b4b146109cd578063db0fff37146109af578063e25d50b41461078d578063e47a9d4614610766578063ea35e805146103cc578063f0889e43146103a5578063f2fde38b14610307578063fda04e361461023f578063fe64dfbf146101c45763fff097d01461019b575061000e565b346101c157806003193601126101c15760206001600160a01b0360145416604051908152f35b80fd5b50346101c157806003193601126101c157610120606091604051906101e882612ea3565b80825280602083015280604083015280848301528060808301528060a08301528060c08301528060e0830152610100820152015261023b610227613336565b604051918291602083526020830190612ffc565b0390f35b50346101c157806003193601126101c15760405180602060135491828152018091601385527f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09090855b8181106102e8575050508261029e910383612edc565b604051928392602084019060208552518091526040840192915b8181106102c6575050500390f35b82516001600160a01b03168452859450602093840193909201916001016102b8565b82546001600160a01b0316845260209093019260019283019201610288565b50346101c15760203660031901126101c1576001600160a01b03610329612efe565b61033161346a565b168015610379576001600160a01b038254826001600160a01b03198216178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b6024827f1e4fbdf700000000000000000000000000000000000000000000000000000000815280600452fd5b50346101c157806003193601126101c15760206001600160a01b0360145416604051908152f35b50346101c157806003193601126101c1576103e56137b4565b6103ed613336565b60ff6012541661073e576020810180516011546040519163d494f49360e01b8352600483015260248201526020816044817331bfac61d77f746218960b64062125f30d76df335af4908115610733578491610704575b5015806106f7575b6106cf5751600281018091116106bb5760011c829160019160c08201925b835181116106b257808652601960205281604087205410156104935761048e906133cc565b610469565b505090915060015b1590816106a4575b5061069557816104b382516133f2565b90836001915b84518311610527578286526019602052604086205491818311156104f8575050936104f0600192806104ea86613424565b526133cc565b9190946104b9565b92908096921461050c575b6104f0906133cc565b9161051f81846104ea6104f09488613431565b929050610503565b8584836001811115610682575f198392845b83811061061057505050506015555b601554905f1982018281116105fc576105686001600160a01b03916130d0565b90549060031b1c1692836001600160a01b03196014541617601455600160ff196012541617601255600655826040518381527f5500268fe877b1c44a9b37138f1e2ee33cd5302265ae80b069a39baa72b93b6b60203392a37f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d604080519182526001600160a01b03929092166020820152f35b602482634e487b7160e01b81526011600452fd5b61061a8183613431565b51808752601b60205260408720545f19810190811161066e5761064890828952601b602052604089206130fc565b90549060031b1c848110610661575b5050600101610539565b9095509250600188610657565b602488634e487b7160e01b81526011600452fd5b5061068c90613424565b51601555610548565b600482633fc30bd160e11b8152fd5b60a09150015142105f6104a3565b5050909161049b565b602483634e487b7160e01b81526011600452fd5b6004837f907c5f19000000000000000000000000000000000000000000000000000000008152fd5b506007601054141561044b565b610726915060203d60201161072c575b61071e8183612edc565b8101906133b4565b5f610443565b503d610714565b6040513d86823e3d90fd5b6004827f4b9fa6e0000000000000000000000000000000000000000000000000000000008152fd5b50346101c157806003193601126101c15760206001600160a01b0360045416604051908152f35b50346101c15760403660031901126101c1576107a7612efe565b60243567ffffffffffffffff81116109ab576107c7903690600401612f30565b906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163303610983578151156108e6576001600160a01b031690811561097457818352601660205260ff6040842054161561094c57608061082e613336565b015142101561093d57818352601c60205261084c6040842054613155565b15158061091d575b6108f557818352601c60205261087661087d60408520604051928380926132b5565b0382612edc565b6020815191012081516020830120146108e657818352601c6020526108a881600160408620016131dc565b7f8833c4ef1be80b2c2b9885c3116db7d4219b759806d074cda5269b46a718946a60405160208152806108e030946020830190612fd8565b0390a380f35b6004836309bde33960e01b8152fd5b6004837fa4662f82000000000000000000000000000000000000000000000000000000008152fd5b50818352601c6020526109366001604085200154613155565b1515610854565b600483637c75aa6f60e11b8152fd5b6004837fd244645e000000000000000000000000000000000000000000000000000000008152fd5b60048363d92e233d60e01b8152fd5b6004837fe6c4247b000000000000000000000000000000000000000000000000000000008152fd5b8280fd5b50346101c157806003193601126101c1576020601054604051908152f35b50346101c15760203660031901126101c15760ff60406020926001600160a01b036109f6612efe565b168152601684522054166040519015158152f35b50346101c157806003193601126101c15760206001600160a01b0360015416604051908152f35b50346101c15760203660031901126101c1576001600160a01b03610a53612efe565b610a5b61346a565b168015610ad6576004546001600160a01b038116828114610aae5790826001600160a01b0319927f741ee0e619c436098dff0f2be43023c24aef6c4c3134ca5db37746bb1088d0df8680a3161760045580f35b6004847fca57cff4000000000000000000000000000000000000000000000000000000008152fd5b60048263d92e233d60e01b8152fd5b50346101c157806003193601126101c157602060ff60015460a01c166040519015158152f35b50346101c157806003193601126101c15760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346101c157806003193601126101c15760ff601254168015610ccd575b50610b76613336565b338252601a60205260ff6040832054168015610cb5575b610ca65780602060e0610ba593015191015190613087565b338252601a60205260408220600160ff198254161790557f0000000000000000000000000000000000000000000000000000000000000000604051907f70a082310000000000000000000000000000000000000000000000000000000082523060048301526020826024816001600160a01b0385165afa8015610733578490610c6e575b610c3f9250838082109118028318903390613758565b6040519081527f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f724160203392a280f35b506020823d602011610c9e575b81610c8860209383612edc565b81010312610c9a57610c3f9151610c29565b5f80fd5b3d9150610c7b565b600482637c75aa6f60e11b8152fd5b50338252601860205260408220546015541415610b8d565b610cd56137b4565b610cdd613336565b9061073e576020810180516011546040519163d494f49360e01b8352600483015260248201526020816044817331bfac61d77f746218960b64062125f30d76df335af4908115610733578491610f8a575b501580610f7d575b6106cf5751600281018091116106bb5760011c829160019160c08201925b83518111610f745780865260196020528160408720541015610d7e57610d79906133cc565b610d54565b505090915060015b159081610f66575b506106955781610d9e82516133f2565b90836001915b84518311610e0c57828652601960205260408620549181831115610ddd57505093610dd5600192806104ea86613424565b919094610da4565b929080969214610df1575b610dd5906133cc565b91610e0481846104ea610dd59488613431565b929050610de8565b935090506001811115610f53575f198492855b838110610ee157505050506015555b6015545f198101818111610ecd57610e4d6001600160a01b03916130d0565b90549060031b1c1691826001600160a01b03196014541617601455600160ff1960125416176012556006556040519081527f5500268fe877b1c44a9b37138f1e2ee33cd5302265ae80b069a39baa72b93b6b60203392a3807f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d5f610b6d565b602484634e487b7160e01b81526011600452fd5b610eeb8183613431565b51808852601b60205260408820545f198101908111610f3f57610f1990828a52601b60205260408a206130fc565b90549060031b1c848110610f32575b5050600101610e1f565b909550925060015f610f28565b602489634e487b7160e01b81526011600452fd5b50610f5d90613424565b51601555610e2e565b60a09150015142105f610d8e565b50509091610d86565b5060076010541415610d36565b610fa3915060203d60201161072c5761071e8183612edc565b5f610d2e565b50346101c15760203660031901126101c15760406020916004358152601983522054604051908152f35b50346101c15760203660031901126101c1576001600160a01b03610ff5612efe565b610ffd61346a565b168015610ad6576001546001600160a01b038116828114610aae5790826001600160a01b0319927fafdafba178415f38a81e9ce31168ffa3ce22045e659b3dbb40405bf2ac3e70788680a3161760015580f35b50346101c15761105f36612fa4565b6110676137b4565b61106f613336565b6007601054146112ca5760a0810192835142106112a257428511156112a25760207331bfac61d77f746218960b64062125f30d76df339201516011546040519163d494f49360e01b835260048301526024820152602081604481865af4908115611297578791611278575b506112505760048054604051632f34148760e11b81529182018790523360248301529092906001600160a01b0316602084604481855af4908115611245578891611210575b60209450611143604051968795869485946311c5268f60e11b865260048601613445565b03915af49081156107335784916111f1575b50156111c95781600a5560105460018101809111610ecd57601055519060405191825260208201527f1330a2b7f70d74408554b6e5d73c6aefa8d88e43a5cf2dde8220b95a7bb23e3560403092a2807f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d80f35b6004837f8baa579f000000000000000000000000000000000000000000000000000000008152fd5b61120a915060203d60201161072c5761071e8183612edc565b5f611155565b90506020843d60201161123d575b8161122b60209383612edc565b81010312610c9a57602093519061111f565b3d915061121e565b6040513d8a823e3d90fd5b6004867fc40b05a4000000000000000000000000000000000000000000000000000000008152fd5b611291915060203d60201161072c5761071e8183612edc565b5f6110da565b6040513d89823e3d90fd5b6004867f38af65f7000000000000000000000000000000000000000000000000000000008152fd5b6004857fc7eff8f7000000000000000000000000000000000000000000000000000000008152fd5b50346101c15761130136612fa4565b6113096137b4565b611311613336565b918315801561161e575b61160f576001600160a01b036101008401511633146115e757601154602084015111156115bf5760048054604051632f34148760e11b81529182018690523360248301529091907331bfac61d77f746218960b64062125f30d76df33906001600160a01b0316602084604481855af490811561124557889161158a575b602094506113bc604051968795869485946311c5268f60e11b865260048601613445565b03915af490811561073357849161156b575b50156111c95760a08101514210156115435760800151421061151b57338252601760205260ff6040832054166114f357808252601b60205260408220805490680100000000000000008210156114df579061142e916001820181556130fc565b81549060031b9042821b915f19901b1916179055338252601760205260408220600160ff19825416179055338252601860205280604083205580825260196020526040822061147d81546133cc565b905561148a6011546133cc565b6011556040519081527fd0e6c39f2e086dc49f1524b47725526a56945cd1ff661f37976f1725a1e5698660203392a2807f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d80f35b602484634e487b7160e01b81526041600452fd5b6004827f7c9a1cf9000000000000000000000000000000000000000000000000000000008152fd5b6004827f7fa01202000000000000000000000000000000000000000000000000000000008152fd5b6004837f7a19ed05000000000000000000000000000000000000000000000000000000008152fd5b611584915060203d60201161072c5761071e8183612edc565b5f6113ce565b90506020843d6020116115b7575b816115a560209383612edc565b81010312610c9a576020935190611398565b3d9150611598565b6004857fadfe6616000000000000000000000000000000000000000000000000000000008152fd5b6004857fb41cf6ac000000000000000000000000000000000000000000000000000000008152fd5b600485632a71953160e01b8152fd5b5060c0830151841161131b565b50346101c157806003193601126101c1576020601154604051908152f35b50346101c157806003193601126101c15760ff6012541615611672576020601554604051908152f35b807f49087aad0000000000000000000000000000000000000000000000000000000060049252fd5b50346101c157806003193601126101c1576001600160a01b036020915416604051908152f35b50346101c157806003193601126101c157602060ff601254166040519015158152f35b50346101c15760203660031901126101c15760406020916001600160a01b0361170a612efe565b168152601883522054604051908152f35b50346101c15760203660031901126101c15760ff60406020926001600160a01b03611744612efe565b168152601a84522054166040519015158152f35b50346101c157806003193601126101c15761177161346a565b806001600160a01b0381546001600160a01b031981168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346101c157806003193601126101c1576020601554604051908152f35b50346101c15760603660031901126101c1576117e9612efe565b6024359060443567ffffffffffffffff8111611a6b5761180d903690600401612f30565b906118166137b4565b815115611b0a576001600160a01b038116928315611afb578015611aec5761183c613336565b916080830151421015611add57848652601660205260ff604087205416611ab55760608301518210611aa65761188690858752601c60205261188185604089206131dc565b613111565b61188f81613738565b908115611a97579085916118a4600b546133cc565b600b556118b382600c5461307a565b600c55858352601660205260408320600160ff198254161790556119427f000000000000000000000000000000000000000000000000000000000000000091604051907f23b872dd00000000000000000000000000000000000000000000000000000000602083015288602483015230604483015260648201526064815261193c608482612edc565b82613828565b60015460ff8160a01c165f14611a7e5750506119699062ffffff60145460a01c16906135a1565b73f3eec6bd2934e7c365912c7697876a0dca8c52c93b15611a7a5760405190630852cd8d60e31b8252600482015281816024818373f3eec6bd2934e7c365912c7697876a0dca8c52c95af18015611a6f57611a56575b50505b60c0600c5491015160018101809111611a4257907eaba0a451763f97f5216856a79ae7225cf892fb8f15ad3cd52a375c9d7ead779160405191825260208201526060604082015280611a1930946060830190612fd8565b0390a3807f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d80f35b602485634e487b7160e01b81526011600452fd5b81611a6091612edc565b611a6b57835f6119bf565b8380fd5b6040513d84823e3d90fd5b5080fd5b611a9293506001600160a01b031690613758565b6119c2565b600486630b6de1b760e31b8152fd5b600486630a1a738560e11b8152fd5b6004867fca6a758f000000000000000000000000000000000000000000000000000000008152fd5b600486637c75aa6f60e11b8152fd5b600485630a1a738560e11b8152fd5b60048563d92e233d60e01b8152fd5b6004846309bde33960e01b8152fd5b50346101c157806003193601126101c15760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50346101c157806003193601126101c157602062ffffff60145460a01c16604051908152f35b50346101c157806003193601126101c157611b93613336565b6020810180516011546040519163d494f49360e01b8352600483015260248201526020816044817331bfac61d77f746218960b64062125f30d76df335af4908115610733578491611df3575b501580611de6575b6106cf5751600281018091116106bb5760011c829160019160c08201925b83518111611ddd5780865260196020528160408720541015611c2f57611c2a906133cc565b611c05565b505090915060015b1580611dd0575b611dc15782611c4d83516133f2565b93806001925b85518411611cbb57838352601960205260408320549181831115611c8c57505092611c84600193806104ea89613424565b929093611c53565b939080959214611ca0575b611c84906133cc565b92611cb381856104ea611c84948b613431565b939050611c97565b868592600181115f14611daa575f198592865b838110611d3857505050509060e0611ce992935b0151613087565b5f19820192828411611d2457506001600160a01b03611d096060946130d0565b90549060031b1c169060405192835260208301526040820152f35b80634e487b7160e01b602492526011600452fd5b611d428183613431565b51808952601b60205260408920545f198101908111611d9657611d7090828b52601b60205260408b206130fc565b90549060031b1c848110611d89575b5050600101611cce565b9095509250600189611d7f565b60248a634e487b7160e01b81526011600452fd5b509060e0611dba611ce993613424565b5193611ce2565b600483633fc30bd160e11b8152fd5b5060a08101514210611c3e565b50509091611c37565b5060076010541415611be7565b611e0c915060203d60201161072c5761071e8183612edc565b5f611bdf565b50346101c15760203660031901126101c15760ff60406020926001600160a01b03611e3b612efe565b168152601784522054166040519015158152f35b5034610c9a5760a0366003190112610c9a5760043567ffffffffffffffff8111610c9a576101406003198236030112610c9a57611e8c6080612ea3565b6004810135608052602481013560a052604481013560c052606481013560e05260848101356101005260a48101356101205260c48101356101405260e4810135610160526101048101356001600160a01b0381168103610c9a57610180526101248101359067ffffffffffffffff8211610c9a576004611f0f9236920101612f30565b6101a0526024356001600160a01b0381168103610c9a5760443567ffffffffffffffff8111610c9a57611f46903690600401612f76565b909160643591906001600160a01b0383168303610c9a5762ffffff6084351660843503610c9a577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00549267ffffffffffffffff841680159081612e93575b6001149081612e89575b159081612e80575b50612e5857600167ffffffffffffffff198516177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005560ff8460401c1615612e19575b61200161346a565b60805115612df15761014051600211612de25760a0517f000000000000000000000000000000000000000000000000000000000000000003612dba576001600160a01b03811673fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9036128815750608051600f541161285957620f424061207c6080516130a5565b0480156128135760c0518111612831578060011c90811561281357610160516120b4926120a89161307a565b6101605260e05161307a565b60e0517f000000000000000000000000000000000000000000000000000000000000000011612822576120e690613738565b8015612813576120f582613111565b6101805161210b906001600160a01b0316613111565b6001600160a01b0382165f52601660205260405f20600160ff198254161790556001600160a01b0361010060800151165f52601660205260405f20600160ff198254161790556001600160a01b0382165f52601c60205260405f2067ffffffffffffffff841161279157612189846121838354613155565b8361318d565b5f84601f81116001146127b057806121b5925f916127a5575b508160011b915f199060031b1c19161790565b90555b6121e2610120608001516001600160a01b0361010060800151165f52601c60205260405f206131dc565b60805160055560a05160065560c05160075560e0516008556101005160095561012051600a5561014051600b5561016051600c5561018051600d80546001600160a01b0319166001600160a01b03929092169190911790556101a05180519067ffffffffffffffff8211612791576122668261225f600e54613155565b600e61318d565b602090601f831160011461272c5761229592915f9183612721575b50508160011b915f199060031b1c19161790565b600e555b620f423f1981019081116126f05760405163095ea7b360e01b815273e592427a0aece92de3edee1f18e0157c058615646004820152620f424060248201526020816044815f73fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb95af180156126b357612704575b5060405173fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb960601b6020820152607d60ea1b60348201527382af49447d8a07e3bd95bd0d56f35241523fbab160601b6037820152602b8152612357604b82612edc565b61012c42018042116126f0576123ac916020916040519161237783612ec0565b825230838301526040820152620f424060608201525f60808201526040518093819263c04b8d5960e01b835260048301613555565b03815f73e592427a0aece92de3edee1f18e0157c058615645af19081156126b3575f916126be575b507382af49447d8a07e3bd95bd0d56f35241523fbab13b15610c9a576040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081528160048201525f81602481837382af49447d8a07e3bd95bd0d56f35241523fbab15af180156126b35761269e575b5086808080936001600160a01b03600254165af13d15612699573d61246881612f14565b906124766040519283612edc565b81528760203d92013e5b1561267157859060015460ff8160a01c165f1461260d57506124ad9062ffffff60145460a01c16906135a1565b73f3eec6bd2934e7c365912c7697876a0dca8c52c93b15611a7a5760405190630852cd8d60e31b8252600482015281816024818373f3eec6bd2934e7c365912c7697876a0dca8c52c95af18015611a6f576125f0575b50509060ff936125637fad1e557876b338d5dd0baf44008dc21e2bdce06cce8a00e278c88f8b75243a68935b604051938493606085526001600160a01b0361254f606087016080612ffc565b931660208601528483036040860152613295565b0390a160401c16156125725780f35b68ff0000000000000000197ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054167ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b816125fd91949394612edc565b6126095790845f612503565b8480fd5b60ff9692509261266c612563926001600160a01b037fad1e557876b338d5dd0baf44008dc21e2bdce06cce8a00e278c88f8b75243a689796167f0000000000000000000000000000000000000000000000000000000000000000613758565b61252f565b6004867f71037f31000000000000000000000000000000000000000000000000000000008152fd5b612480565b6126ab9197505f90612edc565b5f955f612444565b6040513d5f823e3d90fd5b90506020813d6020116126e8575b816126d960209383612edc565b81010312610c9a57515f6123d4565b3d91506126cc565b634e487b7160e01b5f52601160045260245ffd5b61271c9060203d60201161072c5761071e8183612edc565b612300565b015190505f80612281565b90601f19831691600e5f52815f20925f5b8181106127795750908460019594939210612761575b505050811b01600e55612299565b01515f1960f88460031b161c191690555f8080612753565b9293602060018192878601518155019501930161273d565b634e487b7160e01b5f52604160045260245ffd5b90508801355f6121a2565b50815f5260205f20905f5b601f19871681106127fb575085601f198116106127e2575b5050600184811b0190556121b8565b8701355f19600387901b60f8161c191690555f806127d3565b9091602060018192858c0135815501930191016127bb565b630b6de1b760e31b5f5260045ffd5b630a1a738560e11b5f5260045ffd5b7f58d620b3000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f28829e82000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001600160a01b03811673af88d065e77c8cc2239327c5edb3a432268e583103612b5457506001600160a01b03600354168015612b2c57602060049160405192838092634c6afee560e11b82525afa9081156126b3575f91612afa575b508015612813576128f5620f4240916080516130bd565b04600f541161285957620f424061290d6080516130a5565b0480156128135760c051106128315762ffffff60843516156128315760c05160405163095ea7b360e01b815273e592427a0aece92de3edee1f18e0157c058615646004820152602481018290526020816044815f73af88d065e77c8cc2239327c5edb3a432268e58315af180156126b357612add575b506040517faf88d065e77c8cc2239327c5edb3a432268e583100000000000000000000000060208201527fffffff000000000000000000000000000000000000000000000000000000000060843560e81b16603482015273fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb960601b6037820152602b8152612a06604b82612edc565b61012c4201908142116126f057612a589260209260405192612a2784612ec0565b83523084840152604083015260608201525f60808201526040518093819263c04b8d5960e01b835260048301613555565b03815f73e592427a0aece92de3edee1f18e0157c058615645af19081156126b3575f91612aab575b50612aa2612a938260606080015161307a565b9160011c60e06080015161307a565b610160526120b4565b90506020813d602011612ad5575b81612ac660209383612edc565b81010312610c9a57515f612a80565b3d9150612ab9565b612af59060203d60201161072c5761071e8183612edc565b612983565b90506020813d602011612b24575b81612b1560209383612edc565b81010312610c9a57515f6128de565b3d9150612b08565b7fe3588063000000000000000000000000000000000000000000000000000000005f5260045ffd5b7382af49447d8a07e3bd95bd0d56f35241523fbab16001600160a01b038216148015612d94575b15612c655750612b9760806001600160a01b03600354166134a9565b60c05160405163095ea7b360e01b815273e592427a0aece92de3edee1f18e0157c058615646004820152602481018290526020816044815f7382af49447d8a07e3bd95bd0d56f35241523fbab15af180156126b357612c48575b506040517382af49447d8a07e3bd95bd0d56f35241523fbab160601b6020820152607d60ea1b603482015273fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb960601b6037820152602b8152612a06604b82612edc565b612c609060203d60201161072c5761071e8183612edc565b612bf1565b612c7b60806001600160a01b03600354166134a9565b62ffffff6084351615612831576040608001519060405163095ea7b360e01b815273e592427a0aece92de3edee1f18e0157c0586156460048201528260248201526020816044815f6001600160a01b0387165af180156126b357612d77575b50604051906bffffffffffffffffffffffff199060601b1660208201527fffffff000000000000000000000000000000000000000000000000000000000060843560e81b1660348201527382af49447d8a07e3bd95bd0d56f35241523fbab160601b6037820152607d60ea1b604b82015273fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb960601b604e82015260428152612a06606282612edc565b612d8f9060203d60201161072c5761071e8183612edc565b612cda565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03821614612b7b565b7fd9421b55000000000000000000000000000000000000000000000000000000005f5260045ffd5b632a71953160e01b5f5260045ffd5b7f9737120f000000000000000000000000000000000000000000000000000000005f5260045ffd5b68ffffffffffffffffff19841668010000000000000001177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0055611ff9565b7ff92ee8a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050155f611fb6565b303b159150611fae565b604086901c60ff16159150611fa4565b610140810190811067ffffffffffffffff82111761279157604052565b60a0810190811067ffffffffffffffff82111761279157604052565b90601f8019910116810190811067ffffffffffffffff82111761279157604052565b600435906001600160a01b0382168203610c9a57565b67ffffffffffffffff811161279157601f01601f191660200190565b81601f82011215610c9a57803590612f4782612f14565b92612f556040519485612edc565b82845260208383010111610c9a57815f926020809301838601378301015290565b9181601f84011215610c9a5782359167ffffffffffffffff8311610c9a5760208381860195010111610c9a57565b906040600319830112610c9a57600435916024359067ffffffffffffffff8211610c9a57612fd491600401612f76565b9091565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9061014061012061307793805184526020810151602085015260408101516040850152606081015160608501526080810151608085015260a081015160a085015260c081015160c085015260e081015160e08501526001600160a01b0361010082015116610100850152015191816101208201520190612fd8565b90565b919082018092116126f057565b8115613091570490565b634e487b7160e01b5f52601260045260245ffd5b906109c48202918083046109c414901517156126f057565b818102929181159184041417156126f057565b6013548110156130e85760135f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b80548210156130e8575f5260205f2001905f90565b6013546801000000000000000081101561279157806001613137920160135560136130fc565b6001600160a01b0380839493549260031b9316831b921b1916179055565b90600182811c92168015613183575b602083101461316f57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691613164565b601f821161319a57505050565b5f5260205f20906020601f840160051c830193106131d2575b601f0160051c01905b8181106131c7575050565b5f81556001016131bc565b90915081906131b3565b919091825167ffffffffffffffff811161279157613204816131fe8454613155565b8461318d565b6020601f82116001146132375781906132339394955f926127215750508160011b915f199060031b1c19161790565b9055565b601f19821690835f52805f20915f5b81811061327d57509583600195969710613265575b505050811b019055565b01515f1960f88460031b161c191690555f808061325b565b9192602060018192868b015181550194019201613246565b908060209392818452848401375f828201840152601f01601f1916010190565b5f92918154916132c483613155565b808352926001811690811561331957506001146132e057505050565b5f9081526020812093945091925b8383106132ff575060209250010190565b6001816020929493945483858701015201910191906132ee565b915050602093945060ff929192191683830152151560051b010190565b6040519061334382612ea3565b8160055481526006546020820152600754604082015260085460608201526009546080820152600a5460a0820152600b5460c0820152600c5460e08201526001600160a01b03600d5416610100820152610120604051916133b0836133a981600e6132b5565b0384612edc565b0152565b90816020910312610c9a57518015158103610c9a5790565b5f1981146126f05760010190565b67ffffffffffffffff81116127915760051b60200190565b906133fc826133da565b6134096040519182612edc565b828152809261341a601f19916133da565b0190602036910137565b8051156130e85760200190565b80518210156130e85760209160051b010190565b61307794926001600160a01b0360609316825260208201528160408201520191613295565b6001600160a01b035f5416330361347d57565b7f118cdaa7000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b6001600160a01b03168015612b2c57602060049160405192838092634c6afee560e11b82525afa9081156126b3575f91613523575b508015612813576134f9670de0b6b3a76400009183516130bd565b04600f541161285957620f424061351082516130a5565b0490811561281357604001511061283157565b90506020813d60201161354d575b8161353e60209383612edc565b81010312610c9a57515f6134de565b3d9150613531565b6020815260a06080613572845183602086015260c0850190612fd8565b936001600160a01b03602082015116604085015260408101516060850152606081015182850152015191015290565b9060405163095ea7b360e01b815273e592427a0aece92de3edee1f18e0157c0586156460048201528260248201526020816044815f73fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb95af180156126b35761371b575b507fffffff00000000000000000000000000000000000000000000000000000000006040519173fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb960601b6020840152607d60ea1b60348401527382af49447d8a07e3bd95bd0d56f35241523fbab160601b603784015260e81b16604b8201527ff3eec6bd2934e7c365912c7697876a0dca8c52c9000000000000000000000000604e820152604281526136a0606282612edc565b61012c4201908142116126f0576136c19260209260405192612a2784612ec0565b03815f73e592427a0aece92de3edee1f18e0157c058615645af19081156126b3575f916136ec575090565b90506020813d602011613713575b8161370760209383612edc565b81010312610c9a575190565b3d91506136fa565b6137339060203d60201161072c5761071e8183612edc565b6135f8565b6207a1208102908082046207a12014901517156126f057620f4240900490565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000060208201526001600160a01b039290921660248301526044808301939093529181526137b2916137ad606483612edc565b613828565b565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c6138005760017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b905f602091828151910182855af1156126b3575f513d61388c57506001600160a01b0381163b155b6138575750565b6001600160a01b03907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b6001141561385056fea2646970667358221220398616d4c4be5b99bf7b7564559ac5dafd4f4467ddd76f58be4bdb0498ac133c64736f6c634300081c0033a26469706673582212208c73348544ced235bdd0e55bb391a2e01ea1f944b79f58a8a7b8a50be6cb107d64736f6c634300081c0033f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00