false
false
0
Contract Address Details
contract

0xc20fA7af64F8FB56e358316a73048B8Ef3ACAcb4

Sponsored: ERAM, a pioneering Central Bank Blockchain. The First Banking Regulatory Blockchain, Licensed by the Central Bank.

ERAM, Central Bank Digital Currency (CBDC) (STABLE COIN)

Overview

ERAM Balance

0 ERAM

ERAM Value

$0.00

Token Holdings

Fetching tokens...

More Info

Private Name Tags

Last Balance Update

Blocks Validated

Sponsored

Contract Creation Code

Verify & Publish
0x6101406040523480156200001257600080fd5b506000336001600160a01b031663890357306040518163ffffffff1660e01b815260040160a06040518083038186803b1580156200004f57600080fd5b505afa15801562000064573d6000803e3d6000fd5b505050506040513d60a08110156200007b57600080fd5b50805160208083015160408401516060808601516080968701516001600160e81b031960e892831b1660e0526001600160601b031993831b841660c05293821b831660a05294901b16909352600283810b900b90911b61010052909150620000ee90829062002f5e62000106821b17901c565b60801b6001600160801b031916610120525062000174565b60008082600281900b620d89e719816200011c57fe5b05029050600083600281900b620d89e8816200013457fe5b0502905060008460020b83830360020b816200014c57fe5b0560010190508062ffffff166001600160801b038016816200016a57fe5b0495945050505050565b60805160601c60a05160601c60c05160601c60e05160e81c6101005160e81c6101205160801c6159b26200025c600039806121735280614ecd5280614f04525080610cb15280612be95280614f385280614f6a525080610da05280611b475280611b7e5280612c315280612e005280612e425280612e895280612ed05250806113145280611c01528061206852806123f85280612c0d52806141fd52508061091452806114425280611bd05280612002528061237252806140b45250806121f6528061221f52806128d552806128fe5280612aa35280612ad05280612af952506159b26000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806370cf754a116100f9578063cc7e7fa211610097578063ddca3f4311610071578063ddca3f4314610842578063f305839914610862578063f30dba931461086a578063f637731d146108ec576101c4565b8063cc7e7fa2146107f5578063d0c93a7c1461081b578063d21220a71461083a576101c4565b8063a34123a7116100d3578063a34123a71461072d578063a38807f214610767578063b0d0d211146107c2578063c45a0155146107ed576101c4565b806370cf754a146105e157806385b66729146105e9578063883bdbfd14610626576101c4565b80633c8a7d8d116101665780634f1eb3d8116101405780634f1eb3d81461050f578063514ea4bf146105605780635339c296146105b9578063540d4918146105d9576101c4565b80633c8a7d8d146103cb578063461413191461046b578063490e6cbc14610485576101c4565b80631ad8b03b116101a25780631ad8b03b146102be578063252c09d7146102f557806332148f671461034c5780633850c7bd1461036f576101c4565b80630dfe1681146101c9578063128acb08146101ed5780631a6865021461029a575b600080fd5b6101d1610912565b604080516001600160a01b039092168252519081900360200190f35b610281600480360360a081101561020357600080fd5b6001600160a01b0382358116926020810135151592604082013592606083013516919081019060a081016080820135600160201b81111561024357600080fd5b82018360208201111561025557600080fd5b803590602001918460018302840111600160201b8311171561027657600080fd5b509092509050610936565b6040805192835260208301919091528051918290030190f35b6102a2611633565b604080516001600160801b039092168252519081900360200190f35b6102c6611642565b60405180836001600160801b03168152602001826001600160801b031681526020019250505060405180910390f35b6103126004803603602081101561030b57600080fd5b503561165c565b6040805163ffffffff909516855260069390930b60208501526001600160a01b039091168383015215156060830152519081900360800190f35b61036d6004803603602081101561036257600080fd5b503561ffff166116a1565b005b610377611793565b604080516001600160a01b03909816885260029690960b602088015261ffff9485168787015292841660608701529216608085015263ffffffff90911660a0840152151560c0830152519081900360e00190f35b610281600480360360a08110156103e157600080fd5b6001600160a01b03823516916020810135600290810b92604083013590910b916001600160801b036060820135169181019060a081016080820135600160201b81111561042d57600080fd5b82018360208201111561043f57600080fd5b803590602001918460018302840111600160201b8311171561046057600080fd5b5090925090506117e8565b610473611aa6565b60408051918252519081900360200190f35b61036d6004803603608081101561049b57600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b8111156104d157600080fd5b8201836020820111156104e357600080fd5b803590602001918460018302840111600160201b8311171561050457600080fd5b509092509050611aac565b6102c6600480360360a081101561052557600080fd5b506001600160a01b03813516906020810135600290810b91604081013590910b906001600160801b0360608201358116916080013516611ef3565b61057d6004803603602081101561057657600080fd5b5035612111565b604080516001600160801b0396871681526020810195909552848101939093529084166060840152909216608082015290519081900360a00190f35b610473600480360360208110156105cf57600080fd5b503560010b61214e565b6101d1612160565b6102a2612171565b6102c6600480360360608110156105ff57600080fd5b506001600160a01b03813516906001600160801b0360208201358116916040013516612195565b6106946004803603602081101561063c57600080fd5b810190602081018135600160201b81111561065657600080fd5b82018360208201111561066857600080fd5b803590602001918460208302840111600160201b8311171561068957600080fd5b509092509050612490565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156106d85781810151838201526020016106c0565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156107175781810151838201526020016106ff565b5050505090500194505050505060405180910390f35b6102816004803603606081101561074357600080fd5b508035600290810b91602081013590910b90604001356001600160801b0316612515565b6107916004803603604081101561077d57600080fd5b508035600290810b9160200135900b612691565b6040805160069490940b84526001600160a01b03909216602084015263ffffffff1682820152519081900360600190f35b61036d600480360360408110156107d857600080fd5b5063ffffffff81358116916020013516612879565b6101d1612aa1565b61036d6004803603602081101561080b57600080fd5b50356001600160a01b0316612ac5565b610823612be7565b6040805160029290920b8252519081900360200190f35b6101d1612c0b565b61084a612c2f565b6040805162ffffff9092168252519081900360200190f35b610473612c53565b61088a6004803603602081101561088057600080fd5b503560020b612c59565b604080516001600160801b039099168952600f9790970b602089015287870195909552606087019390935260069190910b60808601526001600160a01b031660a085015263ffffffff1660c0840152151560e083015251908190036101000190f35b61036d6004803603602081101561090257600080fd5b50356001600160a01b0316612cc5565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008085610970576040805162461bcd60e51b8152602060048201526002602482015261415360f01b604482015290519081900360640190fd5b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602083015261ffff600160b81b8204811693830193909352600160c81b810483166060830152600160d81b9004909116608082015260015463ffffffff811660a083015260ff600160201b90910416151560c08201819052610a28576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b87610a735780600001516001600160a01b0316866001600160a01b0316118015610a6e575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038716105b610aa5565b80600001516001600160a01b0316866001600160a01b0316108015610aa557506401000276a36001600160a01b038716115b610adc576040805162461bcd60e51b815260206004820152600360248201526214d41360ea1b604482015290519081900360640190fd5b6001805460ff60201b191690556040805160c08101909152600090808a610b115760108460a0015163ffffffff16901c610b1b565b60a084015161ffff165b63ffffffff1681526005546001600160801b03166020820152604001610b3f612fca565b63ffffffff1681526000602082018190526040820181905260609091015262010008549091506001600160a01b031615610be557620100085460408083015181516310a537f160e11b815263ffffffff909116600482015290516001600160a01b039092169163214a6fe29160248082019260009290919082900301818387803b158015610bcc57600080fd5b505af1158015610be0573d6000803e3d6000fd5b505050505b6000808913905060006040518060e001604052808b81526020016000815260200185600001516001600160a01b03168152602001856020015160020b81526020018c610c3357600354610c37565b6002545b815260200160006001600160801b0316815260200184602001516001600160801b031681525090505b805115801590610c865750886001600160a01b031681604001516001600160a01b031614155b156110f557610c93615942565b60408201516001600160a01b031681526060820151610cd6906007907f00000000000000000000000000000000000000000000000000000000000000008f612fce565b15156040830152600290810b810b60208301819052620d89e719910b1215610d0757620d89e7196020820152610d26565b6020810151620d89e860029190910b1315610d2657620d89e860208201525b610d338160200151613110565b6001600160a01b031660608201526040820151610dc4908d610d6d578b6001600160a01b031683606001516001600160a01b031611610d87565b8b6001600160a01b031683606001516001600160a01b0316105b610d95578260600151610d97565b8b5b60c085015185517f0000000000000000000000000000000000000000000000000000000000000000613441565b60c085015260a084015260808301526001600160a01b031660408301528215610e2657610dfa8160c00151826080015101613633565b825103825260a0810151610e1c90610e1190613633565b602084015190613649565b6020830152610e61565b610e338160a00151613633565b825101825260c08101516080820151610e5b91610e509101613633565b602084015190613665565b60208301525b835163ffffffff1615610ec1576000612710610e94866000015163ffffffff168460c0015161367b90919063ffffffff16565b81610e9b57fe5b60c0840180519290910491829003905260a0840180519091016001600160801b03169052505b60c08201516001600160801b031615610f0057610ef48160c00151600160801b8460c001516001600160801b031661369f565b60808301805190910190525b80606001516001600160a01b031682604001516001600160a01b031614156110b45780604001511561108b578360a00151610f8a57610f68846040015160008760200151886040015188602001518a60600151600961374f909695949392919063ffffffff16565b6001600160a01b03166080860152600690810b900b6060850152600160a08501525b62010008546001600160a01b03161561101557620100085460208201516040805163a498463360e01b815260029290920b60048301528e15156024830152516001600160a01b039092169163a49846339160448082019260009290919082900301818387803b158015610ffc57600080fd5b505af1158015611010573d6000803e3d6000fd5b505050505b600061106182602001518e61102c57600254611032565b84608001515b8f611041578560800151611045565b6003545b608089015160608a015160408b015160069594939291906138e1565b90508c1561106d576000035b61107b8360c001518261399f565b6001600160801b031660c0840152505b8b61109a5780602001516110a3565b60018160200151035b600290810b900b60608301526110ef565b80600001516001600160a01b031682604001516001600160a01b0316146110ef576110e28260400151613a55565b600290810b900b60608301525b50610c60565b836020015160020b816060015160020b146111c35760008061114386604001518660400151886020015188602001518a606001518b608001516009613d7d909695949392919063ffffffff16565b604085015160608601516000805461ffff60c81b1916600160c81b61ffff958616021761ffff60b81b1916600160b81b95909416949094029290921762ffffff60a01b1916600160a01b62ffffff60029490940b9390931692909202919091176001600160a01b0319166001600160a01b03909116179055506111e89050565b6040810151600080546001600160a01b0319166001600160a01b039092169190911790555b8060c001516001600160801b031683602001516001600160801b03161461122e5760c0810151600580546001600160801b0319166001600160801b039092169190911790555b6000808c1561128857608083015160025560a08301516001600160801b03161561127c5760a0830151600480546001600160801b031981166001600160801b03918216909301169190911790555b8260a0015191506112d5565b608083015160035560a08301516001600160801b0316156112ce5760a0830151600480546001600160801b03808216600160801b92839004821690940116029190911790555b5060a08201515b8315158d1515146112ee57602083015183518d036112fb565b82600001518c0383602001515b90985096508c1561143457600087121561133d5761133d7f00000000000000000000000000000000000000000000000000000000000000008f89600003613f18565b6000611347614066565b9050336001600160a01b03166323a69e758a8a8e8e6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b505050506113eb614066565b6113f5828b61419f565b111561142e576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b5061155e565b600088121561146b5761146b7f00000000000000000000000000000000000000000000000000000000000000008f8a600003613f18565b60006114756141af565b9050336001600160a01b03166323a69e758a8a8e8e6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156114f957600080fd5b505af115801561150d573d6000803e3d6000fd5b505050506115196141af565b611523828a61419f565b111561155c576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b505b8d6001600160a01b0316336001600160a01b03167f19b47279256b2a23a1665c810c8d55a1758940ee09377d4f8d26497a3577dc838a8a87604001518860c001518960600151898960405180888152602001878152602001866001600160a01b03168152602001856001600160801b031681526020018460020b8152602001836001600160801b03168152602001826001600160801b0316815260200197505050505050505060405180910390a350506001805460ff60201b1916600160201b17905550939a92995091975050505050505050565b6005546001600160801b031681565b6004546001600160801b0380821691600160801b90041682565b60098161ffff811061166d57600080fd5b015463ffffffff81169150600160201b810460060b90600160581b81046001600160a01b031690600160f81b900460ff1684565b600154600160201b900460ff166116e5576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6001805460ff60201b1916905560008054600160d81b900461ffff169061170e60098385614247565b6000805461ffff808416600160d81b810261ffff60d81b199093169290921790925591925083161461177b576040805161ffff80851682528316602082015281517fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a929181900390910190a15b50506001805460ff60201b1916600160201b17905550565b6000546001546001600160a01b03821691600160a01b810460020b9161ffff600160b81b8304811692600160c81b8104821692600160d81b9091049091169063ffffffff81169060ff600160201b9091041687565b6001546000908190600160201b900460ff16611831576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6001805460ff60201b191690556001600160801b03851661185157600080fd5b60008061189f60405180608001604052808c6001600160a01b031681526020018b60020b81526020018a60020b81526020016118958a6001600160801b03166142ea565b600f0b90526142fb565b925092505081935080925060008060008611156118c1576118be614066565b91505b84156118d2576118cf6141af565b90505b336001600160a01b03166399eee9d087878b8b6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561195457600080fd5b505af1158015611968573d6000803e3d6000fd5b5050505060008611156119bf5761197d614066565b611987838861419f565b11156119bf576040805162461bcd60e51b815260206004820152600260248201526104d360f41b604482015290519081900360640190fd5b8415611a0f576119cd6141af565b6119d7828761419f565b1115611a0f576040805162461bcd60e51b81526020600482015260026024820152614d3160f01b604482015290519081900360640190fd5b8960020b8b60020b8d6001600160a01b03167f7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde338d8b8b60405180856001600160a01b03168152602001846001600160801b0316815260200183815260200182815260200194505050505060405180910390a450506001805460ff60201b1916600160201b17905550919890975095505050505050565b60035481565b600154600160201b900460ff16611af0576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6001805460ff60201b191690556005546001600160801b031680611b3f576040805162461bcd60e51b81526020600482015260016024820152601360fa1b604482015290519081900360640190fd5b6000611b74867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f4240614531565b90506000611bab867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f4240614531565b90506000611bb7614066565b90506000611bc36141af565b90508815611bf657611bf67f00000000000000000000000000000000000000000000000000000000000000008b8b613f18565b8715611c2757611c277f00000000000000000000000000000000000000000000000000000000000000008b8a613f18565b336001600160a01b031663a1d4833685858a8a6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611ca957600080fd5b505af1158015611cbd573d6000803e3d6000fd5b505050506000611ccb614066565b90506000611cd76141af565b905081611ce4858861419f565b1115611d1c576040805162461bcd60e51b8152602060048201526002602482015261046360f41b604482015290519081900360640190fd5b80611d27848761419f565b1115611d5f576040805162461bcd60e51b8152602060048201526002602482015261463160f01b604482015290519081900360640190fd5b8382038382038115611de85760015461ffff1660008115611d8c5761271063ffffffff8316850204611d8f565b60005b90506001600160801b03811615611dc257600480546001600160801b038082168401166001600160801b03199091161790555b611ddc818503600160801b8d6001600160801b031661369f565b60028054909101905550505b8015611e6d5760015460101c61ffff1660008115611e125761271063ffffffff8316840204611e15565b60005b90506001600160801b03811615611e4757600480546001600160801b03600160801b8083048216850182160291161790555b611e61818403600160801b8d6001600160801b031661369f565b60038054909101905550505b8d6001600160a01b0316336001600160a01b03167fbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca6338f8f86866040518085815260200184815260200183815260200182815260200194505050505060405180910390a350506001805460ff60201b1916600160201b179055505050505050505050505050565b6001546000908190600160201b900460ff16611f3c576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6001805460ff60201b191690556000611f58600833898961456b565b60038101549091506001600160801b0390811690861611611f795784611f88565b60038101546001600160801b03165b60038201549093506001600160801b03600160801b909104811690851611611fb05783611fc6565b6003810154600160801b90046001600160801b03165b91506001600160801b0383161561202b576003810180546001600160801b031981166001600160801b0391821686900382161790915561202b907f0000000000000000000000000000000000000000000000000000000000000000908a908616613f18565b6001600160801b03821615612091576003810180546001600160801b03600160801b808304821686900382160291811691909117909155612091907f0000000000000000000000000000000000000000000000000000000000000000908a908516613f18565b604080516001600160a01b038a1681526001600160801b0380861660208301528416818301529051600288810b92908a900b9133917f70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0919081900360600190a4506001805460ff60201b1916600160201b17905590969095509350505050565b60086020526000908152604090208054600182015460028301546003909301546001600160801b0392831693919281811691600160801b90041685565b60076020526000908152604090205481565b62010008546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001546000908190600160201b900460ff166121de576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6001805460ff60201b19169055336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806122ae57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561227657600080fd5b505afa15801561228a573d6000803e3d6000fd5b505050506040513d60208110156122a057600080fd5b50516001600160a01b031633145b6122b757600080fd5b6004546001600160801b03908116908516116122d357836122e0565b6004546001600160801b03165b6004549092506001600160801b03600160801b909104811690841611612306578261231a565b600454600160801b90046001600160801b03165b90506001600160801b0382161561239b576004546001600160801b038381169116141561234957600019909101905b600480546001600160801b031981166001600160801b0391821685900382161790915561239b907f00000000000000000000000000000000000000000000000000000000000000009087908516613f18565b6001600160801b03811615612421576004546001600160801b03828116600160801b9092041614156123cc57600019015b600480546001600160801b03600160801b808304821685900382160291811691909117909155612421907f00000000000000000000000000000000000000000000000000000000000000009087908416613f18565b604080516001600160801b0380851682528316602082015281516001600160a01b0388169233927f596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151929081900390910190a36001805460ff60201b1916600160201b1790559094909350915050565b60608061250a61249e612fca565b858580806020026020016040519081016040528093929190818152602001838360200280828437600092018290525054600554600996959450600160a01b820460020b935061ffff600160b81b8304811693506001600160801b0390911691600160c81b9004166145cf565b915091509250929050565b6001546000908190600160201b900460ff1661255e576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6001805460ff60201b1916905560408051608081018252338152600287810b602083015286900b91810191909152600090819081906125ba90606081016125ad6001600160801b038a166142ea565b600003600f0b90526142fb565b92509250925081600003945080600003935060008511806125db5750600084115b1561261a576003830180546001600160801b038082168089018216600160801b93849004831689019092169092029091176001600160801b0319161790555b604080516001600160801b0388168152602081018790528082018690529051600289810b92908b900b9133917f0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c919081900360600190a450506001805460ff60201b1916600160201b179055509094909350915050565b60008060006126a08585614729565b600285810b810b600090815260066020819052604080832088850b90940b8352822060038401549182900b93600160381b83046001600160a01b0316928492600160d81b820463ffffffff16928492909190600160f81b900460ff168061270657600080fd5b6003820154600681900b9850600160381b81046001600160a01b03169650600160d81b810463ffffffff169450600160f81b900460ff168061274757600080fd5b50506040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b810b6020840181905261ffff600160b81b8404811695850195909552600160c81b830485166060850152600160d81b909204909316608083015260015463ffffffff811660a084015260ff600160201b90910416151560c08301529093508e820b910b121590506127ef57509390940396509003935090039050612872565b8a60020b816020015160020b121561286357600061280b612fca565b6020830151604084015160055460608601519394506000938493612841936009938893879392916001600160801b03169061374f565b9a9003989098039b505094909603929092039650909103039250612872915050565b50949093039650039350900390505b9250925092565b600154600160201b900460ff166128bd576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6001805460ff60201b19169055336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061298d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561295557600080fd5b505afa158015612969573d6000803e3d6000fd5b505050506040513d602081101561297f57600080fd5b50516001600160a01b031633145b61299657600080fd5b63ffffffff821615806129c457506103e88263ffffffff16101580156129c45750610fa08263ffffffff1611155b80156129f9575063ffffffff811615806129f957506103e88163ffffffff16101580156129f95750610fa08163ffffffff1611155b612a0257600080fd5b6001805465ffffffff0000601084901b16840163ffffffff90811663ffffffff19831617909255167fb3159fed3ddfba67bae294599eafe2d0ec98c08bb38e0e5fb87d33154b6e05aa62010000826040805163ffffffff939092068316825261ffff601086901c16602083015286831682820152918516606082015290519081900360800190a150506001805460ff60201b1916600160201b17905550565b7f000000000000000000000000000000000000000000000000000000000000000081565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612b8857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015612b5057600080fd5b505afa158015612b64573d6000803e3d6000fd5b505050506040513d6020811015612b7a57600080fd5b50516001600160a01b031633145b612b9157600080fd5b6201000880546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f29983690a85a11696ce8a357993744f8d5a74fde14653e517cc2f8608a7235e99181900360200190a150565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025481565b60066020819052600091825260409091208054600182015460028301546003909301546001600160801b03831694600160801b909304600f0b93919281900b90600160381b81046001600160a01b031690600160d81b810463ffffffff1690600160f81b900460ff1688565b6000546001600160a01b031615612d08576040805162461bcd60e51b8152602060048201526002602482015261414960f01b604482015290519081900360640190fd5b6000612d1382613a55565b9050600080612d2b612d23612fca565b6009906147f2565b6040805160e0810182526001600160a01b038816808252600288810b60208401819052600094840185905261ffff8781166060860181905290871660808601819052630c800c8060a08701819052600160c090970187905287546001600160a01b03191690951762ffffff60a01b1916600160a01b62ffffff9490950b8416949094029390931763ffffffff60b81b1916600160c81b9091021761ffff60d81b1916600160d81b909202919091179093558154600160201b63ffffffff1990911690911760ff60201b191617905591935091507f00000000000000000000000000000000000000000000000000000000000000001660641415612e40576001805463ffffffff1916630ce40ce4179055612f11565b7f000000000000000000000000000000000000000000000000000000000000000062ffffff166101f41415612e87576001805463ffffffff1916630d480d48179055612f11565b7f000000000000000000000000000000000000000000000000000000000000000062ffffff166109c41415612ece576001805463ffffffff1916630c800c80179055612f11565b7f000000000000000000000000000000000000000000000000000000000000000062ffffff166127101415612f11576001805463ffffffff1916630c800c801790555b604080516001600160a01b0386168152600285900b602082015281517f98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95929181900390910190a150505050565b60008082600281900b620d89e71981612f7357fe5b05029050600083600281900b620d89e881612f8a57fe5b0502905060008460020b83830360020b81612fa157fe5b0560010190508062ffffff166001600160801b03801681612fbe57fe5b0493505050505b919050565b4290565b60008060008460020b8660020b81612fe257fe5b05905060008660020b12801561300957508460020b8660020b8161300257fe5b0760020b15155b1561301357600019015b8315613088576000806130258361483e565b600182810b810b600090815260208d9052604090205460ff83169190911b8001600019019081168015159750929450909250908561306a57888360ff1686030261307d565b8861307482614850565b840360ff168603025b965050505050613106565b6000806130978360010161483e565b91509150600060018260ff166001901b031990506000818b60008660010b60010b81526020019081526020016000205416905080600014159550856130e957888360ff0360ff168660010101026130ff565b88836130f4836148ef565b0360ff168660010101025b9650505050505b5094509492505050565b60008060008360020b12613127578260020b61312f565b8260020b6000035b9050620d89e881111561316d576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b60006001821661318157600160801b613193565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156131c7576ffff97272373d413259a46990580e213a0260801c5b60048216156131e6576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613205576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613224576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613243576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613262576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613281576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156132a1576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156132c1576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156132e1576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613301576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615613321576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615613341576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615613361576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615613381576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156133a2576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156133c2576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156133e1576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156133fe576b048a170391f7dc42444e8fa20260801c5b60008460020b131561341957806000198161341557fe5b0490505b600160201b81061561342c57600161342f565b60005b60ff16602082901c0192505050919050565b60008080806001600160a01b03808916908a1610158187128015906134c657600061347a8989620f42400362ffffff16620f424061369f565b9050826134935761348e8c8c8c60016149d9565b6134a0565b6134a08b8d8c6001614a54565b95508581106134b1578a96506134c0565b6134bd8c8b8386614b08565b96505b50613510565b816134dd576134d88b8b8b6000614a54565b6134ea565b6134ea8a8c8b60006149d9565b93508388600003106134fe57899550613510565b61350d8b8a8a60000385614b54565b95505b6001600160a01b038a81169087161482156135735780801561352f5750815b61354557613540878d8c6001614a54565b613547565b855b9550808015613554575081155b61356a57613565878d8c60006149d9565b61356c565b845b94506135bd565b80801561357d5750815b6135935761358e8c888c60016149d9565b613595565b855b95508080156135a2575081155b6135b8576135b38c888c6000614a54565b6135ba565b845b94505b811580156135cd57508860000385115b156135d9578860000394505b8180156135f857508a6001600160a01b0316876001600160a01b031614155b15613607578589039350613624565b613621868962ffffff168a620f42400362ffffff16614531565b93505b50505095509550955095915050565b6000600160ff1b821061364557600080fd5b5090565b8082038281131560008312151461365f57600080fd5b92915050565b8181018281121560008312151461365f57600080fd5b60008215806136965750508181028183828161369357fe5b04145b61365f57600080fd5b60008080600019858709868602925082811090839003039050806136d557600084116136ca57600080fd5b508290049050613748565b8084116136e157600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60008063ffffffff87166137f5576000898661ffff1661ffff811061377057fe5b60408051608081018252919092015463ffffffff808216808452600160201b8304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff16151560608301529092508a16146137e1576137de818a8988614ba0565b90505b8060200151816040015192509250506138d5565b86880360008061380a8c8c858c8c8c8c614c43565b91509150816000015163ffffffff168363ffffffff16141561383c5781602001518260400151945094505050506138d5565b805163ffffffff848116911614156138645780602001518160400151945094505050506138d5565b8151815160208085015190840151918390039286039163ffffffff80841692908516910360060b8161389257fe5b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b031602816138c457fe5b048560400151019650965050505050505b97509795505050505050565b600295860b860b60009081526020979097526040909620600181018054909503909455938301805490920390915560038201805463ffffffff600160d81b6001600160a01b03600160381b808504821690960316909402670100000000000000600160d81b031990921691909117600681810b90960390950b66ffffffffffffff1666ffffffffffffff199095169490941782810485169095039093160263ffffffff60d81b1990931692909217905554600160801b9004600f0b90565b60008082600f0b1215613a0457826001600160801b03168260000384039150816001600160801b0316106139ff576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b61365f565b826001600160801b03168284019150816001600160801b0316101561365f576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b60006401000276a36001600160a01b03831610801590613a91575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b613ac6576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c97908811961790941790921717909117171760808110613b6757607f810383901c9150613b71565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c600160381b161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b14613d6e57886001600160a01b0316613d5282613110565b6001600160a01b03161115613d675781613d69565b805b613d70565b815b9998505050505050505050565b6000806000898961ffff1661ffff8110613d9357fe5b60408051608081018252919092015463ffffffff808216808452600160201b8304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff161515606083015290925089161415613e0257888592509250506138d5565b8461ffff168461ffff16118015613e2357506001850361ffff168961ffff16145b15613e3057839150613e34565b8491505b8161ffff168960010161ffff1681613e4857fe5b069250613e5781898989614ba0565b8a8461ffff1661ffff8110613e6857fe5b825191018054602084015160408501516060909501511515600160f81b026001600160f81b036001600160a01b03909616600160581b027fff0000000000000000000000000000000000000000ffffffffffffffffffffff60069390930b66ffffffffffffff16600160201b026affffffffffffff000000001963ffffffff90971663ffffffff199095169490941795909516929092171692909217929092161790555097509795505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b60208310613f945780518252601f199092019160209182019101613f75565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613ff6576040519150601f19603f3d011682016040523d82523d6000602084013e613ffb565b606091505b5091509150818015614029575080511580614029575080806020019051602081101561402657600080fd5b50515b61405f576040805162461bcd60e51b81526020600482015260026024820152612a2360f11b604482015290519081900360640190fd5b5050505050565b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693919290918291908083835b602083106140ff5780518252601f1990920191602091820191016140e0565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811461415f576040519150601f19603f3d011682016040523d82523d6000602084013e614164565b606091505b509150915081801561417857506020815110155b61418157600080fd5b80806020019051602081101561419657600080fd5b50519250505090565b8082018281101561365f57600080fd5b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169391929091829190808383602083106140ff5780518252601f1990920191602091820191016140e0565b6000808361ffff1611614285576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b8261ffff168261ffff161161429b575081613748565b825b8261ffff168161ffff1610156142e1576001858261ffff1661ffff81106142c057fe5b01805463ffffffff191663ffffffff9290921691909117905560010161429d565b50909392505050565b80600f81900b8114612fc557600080fd5b600080600061431284602001518560400151614729565b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602080840182905261ffff600160b81b8404811685870152600160c81b84048116606080870191909152600160d81b90940416608085015260015463ffffffff811660a086015260ff600160201b90910416151560c0850152885190890151948901519289015193946143b49491939092909190614e3d565b93508460600151600f0b60001461452957846020015160020b816020015160020b1215614409576144026143eb8660200151613110565b6143f88760400151613110565b8760600151614ff2565b9250614529565b846040015160020b816020015160020b12156144ff5760055460408201516001600160801b039091169061445b9061443f612fca565b6020850151606086015160808701516009949392918791613d7d565b6000805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b9390921692909202179055815160408701516144ab91906144a190613110565b8860600151614ff2565b93506144c96144bd8760200151613110565b83516060890151615036565b92506144d981876060015161399f565b600580546001600160801b0319166001600160801b039290921691909117905550614529565b61452661450f8660200151613110565b61451c8760400151613110565b8760600151615036565b91505b509193909250565b600061453e84848461369f565b90506000828061454a57fe5b848609111561374857600019811061456157600080fd5b6001019392505050565b6040805160609490941b6bffffffffffffffffffffffff1916602080860191909152600293840b60e890811b60348701529290930b90911b60378401528051808403601a018152603a90930181528251928201929092206000908152929052902090565b60608060008361ffff161161460f576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b865167ffffffffffffffff8111801561462757600080fd5b50604051908082528060200260200182016040528015614651578160200160208202803683370190505b509150865167ffffffffffffffff8111801561466c57600080fd5b50604051908082528060200260200182016040528015614696578160200160208202803683370190505b50905060005b875181101561471c576146c78a8a8a84815181106146b657fe5b60200260200101518a8a8a8a61374f565b8483815181106146d357fe5b602002602001018484815181106146e657fe5b60200260200101826001600160a01b03166001600160a01b03168152508260060b60060b8152505050808060010191505061469c565b5097509795505050505050565b8060020b8260020b12614769576040805162461bcd60e51b8152602060048201526003602482015262544c5560e81b604482015290519081900360640190fd5b620d89e719600283900b12156147ac576040805162461bcd60e51b8152602060048201526003602482015262544c4d60e81b604482015290519081900360640190fd5b620d89e8600282900b13156147ee576040805162461bcd60e51b815260206004820152600360248201526254554d60e81b604482015290519081900360640190fd5b5050565b6040805160808101825263ffffffff9283168082526000602083018190529282019290925260016060909101819052835463ffffffff1916909117909116600160f81b17909155908190565b60020b600881901d9161010090910790565b600080821161485e57600080fd5b600160801b821061487157608091821c91015b68010000000000000000821061488957604091821c91015b600160201b821061489c57602091821c91015b6201000082106148ae57601091821c91015b61010082106148bf57600891821c91015b601082106148cf57600491821c91015b600482106148df57600291821c91015b60028210612fc557600101919050565b60008082116148fd57600080fd5b5060ff6001600160801b0382161561491857607f1901614920565b608082901c91505b67ffffffffffffffff82161561493957603f1901614941565b604082901c91505b63ffffffff82161561495657601f190161495e565b602082901c91505b61ffff82161561497157600f1901614979565b601082901c91505b60ff82161561498b5760071901614993565b600882901c91505b600f8216156149a557600319016149ad565b600482901c91505b60038216156149bf57600119016149c7565b600282901c91505b6001821615612fc55760001901919050565b6000836001600160a01b0316856001600160a01b031611156149f9579293925b81614a2657614a21836001600160801b03168686036001600160a01b0316600160601b61369f565b614a49565b614a49836001600160801b03168686036001600160a01b0316600160601b614531565b90505b949350505050565b6000836001600160a01b0316856001600160a01b03161115614a74579293925b6fffffffffffffffffffffffffffffffff60601b606084901b166001600160a01b038686038116908716614aa757600080fd5b83614ad757866001600160a01b0316614aca8383896001600160a01b031661369f565b81614ad157fe5b04614afd565b614afd614aee8383896001600160a01b0316614531565b886001600160a01b0316615065565b979650505050505050565b600080856001600160a01b031611614b1f57600080fd5b6000846001600160801b031611614b3557600080fd5b81614b4757614a218585856001615070565b614a498585856001615151565b600080856001600160a01b031611614b6b57600080fd5b6000846001600160801b031611614b8157600080fd5b81614b9357614a218585856000615151565b614a498585856000615070565b614ba861597e565b600085600001518503905060405180608001604052808663ffffffff1681526020018263ffffffff168660020b0288602001510160060b81526020016000856001600160801b031611614bfc576001614bfe565b845b6001600160801b031663ffffffff60801b608085901b1681614c1c57fe5b048860400151016001600160a01b0316815260200160011515815250915050949350505050565b614c4b61597e565b614c5361597e565b888561ffff1661ffff8110614c6457fe5b60408051608081018252919092015463ffffffff8116808352600160201b8204600690810b810b900b6020840152600160581b82046001600160a01b031693830193909352600160f81b900460ff16151560608201529250614cc89089908961523d565b15614d00578663ffffffff16826000015163ffffffff161415614cea576138d5565b81614cf783898988614ba0565b915091506138d5565b888361ffff168660010161ffff1681614d1557fe5b0661ffff1661ffff8110614d2557fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201819052909250614dda57604080516080810182528a5463ffffffff81168252600160201b8104600690810b810b900b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015291505b614de98883600001518961523d565b614e20576040805162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015290519081900360640190fd5b614e2d89898988876152fe565b9150915097509795505050505050565b6000614e4c600887878761456b565b60025460035491925090600080600f87900b15614f92576000614e6d612fca565b6000805460055492935090918291614eb79160099186918591600160a01b810460020b9161ffff600160b81b83048116926001600160801b0390921691600160c81b90041661374f565b9092509050614ef160068d8b8d8b8b87898b60007f000000000000000000000000000000000000000000000000000000000000000061549c565b9450614f2860068c8b8d8b8b87898b60017f000000000000000000000000000000000000000000000000000000000000000061549c565b93508415614f5c57614f5c60078d7f0000000000000000000000000000000000000000000000000000000000000000615659565b8315614f8e57614f8e60078c7f0000000000000000000000000000000000000000000000000000000000000000615659565b5050505b600080614fa460068c8c8b8a8a6156bf565b9092509050614fb5878a848461576b565b600089600f0b1215614fe3578315614fd257614fd260068c615900565b8215614fe357614fe360068b615900565b50505050505095945050505050565b60008082600f0b126150185761501361500e8585856001614a54565b613633565b614a4c565b61502b61500e8585856000036000614a54565b600003949350505050565b60008082600f0b126150525761501361500e85858560016149d9565b61502b61500e85858560000360006149d9565b808204910615150190565b600081156150e35760006001600160a01b038411156150a6576150a184600160601b876001600160801b031661369f565b6150be565b6001600160801b038516606085901b816150bc57fe5b045b90506150db6150d66001600160a01b0388168361419f565b61592c565b915050614a4c565b60006001600160a01b038411156151115761510c84600160601b876001600160801b0316614531565b615128565b615128606085901b6001600160801b038716615065565b905080866001600160a01b03161161513f57600080fd5b6001600160a01b038616039050614a4c565b60008261515f575083614a4c565b6fffffffffffffffffffffffffffffffff60601b606085901b1682156151f6576001600160a01b0386168481029085828161519657fe5b0414156151c7578181018281106151c5576151bb83896001600160a01b031683614531565b9350505050614a4c565b505b6151ed826151e8878a6001600160a01b031686816151e157fe5b049061419f565b615065565b92505050614a4c565b6001600160a01b0386168481029085828161520d57fe5b0414801561521a57508082115b61522357600080fd5b8082036151bb6150d6846001600160a01b038b1684614531565b60008363ffffffff168363ffffffff161115801561526757508363ffffffff168263ffffffff1611155b15615283578163ffffffff168363ffffffff1611159050613748565b60008463ffffffff168463ffffffff16116152aa578363ffffffff16600160201b016152b2565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff16116152e2578363ffffffff16600160201b016152ea565b8363ffffffff165b64ffffffffff169091111595945050505050565b61530661597e565b61530e61597e565b60008361ffff168560010161ffff168161532457fe5b0661ffff169050600060018561ffff16830103905060005b506002818301048961ffff8716828161535157fe5b0661ffff811061535d57fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b909104161515606082018190529095506153c75780600101925061533c565b898661ffff1682600101816153d857fe5b0661ffff81106153e457fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b9091041615156060820152855190945060009061544e908b908b61523d565b905080801561546757506154678a8a876000015161523d565b15615472575061548f565b8061548257600182039250615489565b8160010193505b5061533c565b5050509550959350505050565b60028a810b900b600090815260208c90526040812080546001600160801b0316826154c7828d61399f565b9050846001600160801b0316816001600160801b03161115615515576040805162461bcd60e51b81526020600482015260026024820152614c4f60f01b604482015290519081900360640190fd5b6001600160801b0382811615908216158114159450156155be578c60020b8e60020b136155a657600183018b9055600283018a9055600383018054670100000000000000600160d81b031916600160381b6001600160a01b038c16021766ffffffffffffff191666ffffffffffffff60068b900b161763ffffffff60d81b1916600160d81b63ffffffff8a16021790555b6003830180546001600160f81b0316600160f81b1790555b82546001600160801b0319166001600160801b03821617835585615607578254615602906155fd90600160801b9004600f90810b810b908f900b613665565b6142ea565b615628565b8254615628906155fd90600160801b9004600f90810b810b908f900b613649565b8354600f9190910b6001600160801b03908116600160801b0291161790925550909c9b505050505050505050505050565b8060020b8260020b8161566857fe5b0760020b1561567657600080fd5b6000806156918360020b8560020b8161568b57fe5b0561483e565b600191820b820b60009081526020979097526040909620805460ff9097169190911b90951890945550505050565b600285810b80820b60009081526020899052604080822088850b850b83529082209193849391929184918291908a900b1261570557505060018201546002830154615718565b8360010154880391508360020154870390505b6000808b60020b8b60020b121561573a5750506001830154600284015461574d565b84600101548a0391508460020154890390505b92909803979097039b96909503949094039850939650505050505050565b6040805160a08101825285546001600160801b0390811682526001870154602083015260028701549282019290925260038601548083166060830152600160801b900490911660808201526000600f85900b61580a5781516001600160801b0316615802576040805162461bcd60e51b815260206004820152600260248201526104e560f41b604482015290519081900360640190fd5b508051615819565b8151615816908661399f565b90505b600061583d8360200151860384600001516001600160801b0316600160801b61369f565b905060006158638460400151860385600001516001600160801b0316600160801b61369f565b905086600f0b60001461588a5787546001600160801b0319166001600160801b0384161788555b60018801869055600288018590556001600160801b0382161515806158b857506000816001600160801b0316115b156158f6576003880180546001600160801b031981166001600160801b039182168501821617808216600160801b9182900483168501909216021790555b5050505050505050565b600290810b810b6000908152602092909252604082208281556001810183905590810182905560030155565b806001600160a01b0381168114612fc557600080fd5b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b6040805160808101825260008082526020820181905291810182905260608101919091529056fea164736f6c6343000706000a

Deployed ByteCode

0x608060405234801561001057600080fd5b50600436106101c45760003560e01c806370cf754a116100f9578063cc7e7fa211610097578063ddca3f4311610071578063ddca3f4314610842578063f305839914610862578063f30dba931461086a578063f637731d146108ec576101c4565b8063cc7e7fa2146107f5578063d0c93a7c1461081b578063d21220a71461083a576101c4565b8063a34123a7116100d3578063a34123a71461072d578063a38807f214610767578063b0d0d211146107c2578063c45a0155146107ed576101c4565b806370cf754a146105e157806385b66729146105e9578063883bdbfd14610626576101c4565b80633c8a7d8d116101665780634f1eb3d8116101405780634f1eb3d81461050f578063514ea4bf146105605780635339c296146105b9578063540d4918146105d9576101c4565b80633c8a7d8d146103cb578063461413191461046b578063490e6cbc14610485576101c4565b80631ad8b03b116101a25780631ad8b03b146102be578063252c09d7146102f557806332148f671461034c5780633850c7bd1461036f576101c4565b80630dfe1681146101c9578063128acb08146101ed5780631a6865021461029a575b600080fd5b6101d1610912565b604080516001600160a01b039092168252519081900360200190f35b610281600480360360a081101561020357600080fd5b6001600160a01b0382358116926020810135151592604082013592606083013516919081019060a081016080820135600160201b81111561024357600080fd5b82018360208201111561025557600080fd5b803590602001918460018302840111600160201b8311171561027657600080fd5b509092509050610936565b6040805192835260208301919091528051918290030190f35b6102a2611633565b604080516001600160801b039092168252519081900360200190f35b6102c6611642565b60405180836001600160801b03168152602001826001600160801b031681526020019250505060405180910390f35b6103126004803603602081101561030b57600080fd5b503561165c565b6040805163ffffffff909516855260069390930b60208501526001600160a01b039091168383015215156060830152519081900360800190f35b61036d6004803603602081101561036257600080fd5b503561ffff166116a1565b005b610377611793565b604080516001600160a01b03909816885260029690960b602088015261ffff9485168787015292841660608701529216608085015263ffffffff90911660a0840152151560c0830152519081900360e00190f35b610281600480360360a08110156103e157600080fd5b6001600160a01b03823516916020810135600290810b92604083013590910b916001600160801b036060820135169181019060a081016080820135600160201b81111561042d57600080fd5b82018360208201111561043f57600080fd5b803590602001918460018302840111600160201b8311171561046057600080fd5b5090925090506117e8565b610473611aa6565b60408051918252519081900360200190f35b61036d6004803603608081101561049b57600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b8111156104d157600080fd5b8201836020820111156104e357600080fd5b803590602001918460018302840111600160201b8311171561050457600080fd5b509092509050611aac565b6102c6600480360360a081101561052557600080fd5b506001600160a01b03813516906020810135600290810b91604081013590910b906001600160801b0360608201358116916080013516611ef3565b61057d6004803603602081101561057657600080fd5b5035612111565b604080516001600160801b0396871681526020810195909552848101939093529084166060840152909216608082015290519081900360a00190f35b610473600480360360208110156105cf57600080fd5b503560010b61214e565b6101d1612160565b6102a2612171565b6102c6600480360360608110156105ff57600080fd5b506001600160a01b03813516906001600160801b0360208201358116916040013516612195565b6106946004803603602081101561063c57600080fd5b810190602081018135600160201b81111561065657600080fd5b82018360208201111561066857600080fd5b803590602001918460208302840111600160201b8311171561068957600080fd5b509092509050612490565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156106d85781810151838201526020016106c0565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156107175781810151838201526020016106ff565b5050505090500194505050505060405180910390f35b6102816004803603606081101561074357600080fd5b508035600290810b91602081013590910b90604001356001600160801b0316612515565b6107916004803603604081101561077d57600080fd5b508035600290810b9160200135900b612691565b6040805160069490940b84526001600160a01b03909216602084015263ffffffff1682820152519081900360600190f35b61036d600480360360408110156107d857600080fd5b5063ffffffff81358116916020013516612879565b6101d1612aa1565b61036d6004803603602081101561080b57600080fd5b50356001600160a01b0316612ac5565b610823612be7565b6040805160029290920b8252519081900360200190f35b6101d1612c0b565b61084a612c2f565b6040805162ffffff9092168252519081900360200190f35b610473612c53565b61088a6004803603602081101561088057600080fd5b503560020b612c59565b604080516001600160801b039099168952600f9790970b602089015287870195909552606087019390935260069190910b60808601526001600160a01b031660a085015263ffffffff1660c0840152151560e083015251908190036101000190f35b61036d6004803603602081101561090257600080fd5b50356001600160a01b0316612cc5565b7f0000000000000000000000001336f973cbd16db4368655514395d0818a949c2c81565b60008085610970576040805162461bcd60e51b8152602060048201526002602482015261415360f01b604482015290519081900360640190fd5b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602083015261ffff600160b81b8204811693830193909352600160c81b810483166060830152600160d81b9004909116608082015260015463ffffffff811660a083015260ff600160201b90910416151560c08201819052610a28576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b87610a735780600001516001600160a01b0316866001600160a01b0316118015610a6e575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038716105b610aa5565b80600001516001600160a01b0316866001600160a01b0316108015610aa557506401000276a36001600160a01b038716115b610adc576040805162461bcd60e51b815260206004820152600360248201526214d41360ea1b604482015290519081900360640190fd5b6001805460ff60201b191690556040805160c08101909152600090808a610b115760108460a0015163ffffffff16901c610b1b565b60a084015161ffff165b63ffffffff1681526005546001600160801b03166020820152604001610b3f612fca565b63ffffffff1681526000602082018190526040820181905260609091015262010008549091506001600160a01b031615610be557620100085460408083015181516310a537f160e11b815263ffffffff909116600482015290516001600160a01b039092169163214a6fe29160248082019260009290919082900301818387803b158015610bcc57600080fd5b505af1158015610be0573d6000803e3d6000fd5b505050505b6000808913905060006040518060e001604052808b81526020016000815260200185600001516001600160a01b03168152602001856020015160020b81526020018c610c3357600354610c37565b6002545b815260200160006001600160801b0316815260200184602001516001600160801b031681525090505b805115801590610c865750886001600160a01b031681604001516001600160a01b031614155b156110f557610c93615942565b60408201516001600160a01b031681526060820151610cd6906007907f000000000000000000000000000000000000000000000000000000000000000a8f612fce565b15156040830152600290810b810b60208301819052620d89e719910b1215610d0757620d89e7196020820152610d26565b6020810151620d89e860029190910b1315610d2657620d89e860208201525b610d338160200151613110565b6001600160a01b031660608201526040820151610dc4908d610d6d578b6001600160a01b031683606001516001600160a01b031611610d87565b8b6001600160a01b031683606001516001600160a01b0316105b610d95578260600151610d97565b8b5b60c085015185517f00000000000000000000000000000000000000000000000000000000000001f4613441565b60c085015260a084015260808301526001600160a01b031660408301528215610e2657610dfa8160c00151826080015101613633565b825103825260a0810151610e1c90610e1190613633565b602084015190613649565b6020830152610e61565b610e338160a00151613633565b825101825260c08101516080820151610e5b91610e509101613633565b602084015190613665565b60208301525b835163ffffffff1615610ec1576000612710610e94866000015163ffffffff168460c0015161367b90919063ffffffff16565b81610e9b57fe5b60c0840180519290910491829003905260a0840180519091016001600160801b03169052505b60c08201516001600160801b031615610f0057610ef48160c00151600160801b8460c001516001600160801b031661369f565b60808301805190910190525b80606001516001600160a01b031682604001516001600160a01b031614156110b45780604001511561108b578360a00151610f8a57610f68846040015160008760200151886040015188602001518a60600151600961374f909695949392919063ffffffff16565b6001600160a01b03166080860152600690810b900b6060850152600160a08501525b62010008546001600160a01b03161561101557620100085460208201516040805163a498463360e01b815260029290920b60048301528e15156024830152516001600160a01b039092169163a49846339160448082019260009290919082900301818387803b158015610ffc57600080fd5b505af1158015611010573d6000803e3d6000fd5b505050505b600061106182602001518e61102c57600254611032565b84608001515b8f611041578560800151611045565b6003545b608089015160608a015160408b015160069594939291906138e1565b90508c1561106d576000035b61107b8360c001518261399f565b6001600160801b031660c0840152505b8b61109a5780602001516110a3565b60018160200151035b600290810b900b60608301526110ef565b80600001516001600160a01b031682604001516001600160a01b0316146110ef576110e28260400151613a55565b600290810b900b60608301525b50610c60565b836020015160020b816060015160020b146111c35760008061114386604001518660400151886020015188602001518a606001518b608001516009613d7d909695949392919063ffffffff16565b604085015160608601516000805461ffff60c81b1916600160c81b61ffff958616021761ffff60b81b1916600160b81b95909416949094029290921762ffffff60a01b1916600160a01b62ffffff60029490940b9390931692909202919091176001600160a01b0319166001600160a01b03909116179055506111e89050565b6040810151600080546001600160a01b0319166001600160a01b039092169190911790555b8060c001516001600160801b031683602001516001600160801b03161461122e5760c0810151600580546001600160801b0319166001600160801b039092169190911790555b6000808c1561128857608083015160025560a08301516001600160801b03161561127c5760a0830151600480546001600160801b031981166001600160801b03918216909301169190911790555b8260a0015191506112d5565b608083015160035560a08301516001600160801b0316156112ce5760a0830151600480546001600160801b03808216600160801b92839004821690940116029190911790555b5060a08201515b8315158d1515146112ee57602083015183518d036112fb565b82600001518c0383602001515b90985096508c1561143457600087121561133d5761133d7f000000000000000000000000eb3c930c1e0d3434ff917ffd77aa813e7d79ae398f89600003613f18565b6000611347614066565b9050336001600160a01b03166323a69e758a8a8e8e6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113cb57600080fd5b505af11580156113df573d6000803e3d6000fd5b505050506113eb614066565b6113f5828b61419f565b111561142e576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b5061155e565b600088121561146b5761146b7f0000000000000000000000001336f973cbd16db4368655514395d0818a949c2c8f8a600003613f18565b60006114756141af565b9050336001600160a01b03166323a69e758a8a8e8e6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156114f957600080fd5b505af115801561150d573d6000803e3d6000fd5b505050506115196141af565b611523828a61419f565b111561155c576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b505b8d6001600160a01b0316336001600160a01b03167f19b47279256b2a23a1665c810c8d55a1758940ee09377d4f8d26497a3577dc838a8a87604001518860c001518960600151898960405180888152602001878152602001866001600160a01b03168152602001856001600160801b031681526020018460020b8152602001836001600160801b03168152602001826001600160801b0316815260200197505050505050505060405180910390a350506001805460ff60201b1916600160201b17905550939a92995091975050505050505050565b6005546001600160801b031681565b6004546001600160801b0380821691600160801b90041682565b60098161ffff811061166d57600080fd5b015463ffffffff81169150600160201b810460060b90600160581b81046001600160a01b031690600160f81b900460ff1684565b600154600160201b900460ff166116e5576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6001805460ff60201b1916905560008054600160d81b900461ffff169061170e60098385614247565b6000805461ffff808416600160d81b810261ffff60d81b199093169290921790925591925083161461177b576040805161ffff80851682528316602082015281517fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a929181900390910190a15b50506001805460ff60201b1916600160201b17905550565b6000546001546001600160a01b03821691600160a01b810460020b9161ffff600160b81b8304811692600160c81b8104821692600160d81b9091049091169063ffffffff81169060ff600160201b9091041687565b6001546000908190600160201b900460ff16611831576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6001805460ff60201b191690556001600160801b03851661185157600080fd5b60008061189f60405180608001604052808c6001600160a01b031681526020018b60020b81526020018a60020b81526020016118958a6001600160801b03166142ea565b600f0b90526142fb565b925092505081935080925060008060008611156118c1576118be614066565b91505b84156118d2576118cf6141af565b90505b336001600160a01b03166399eee9d087878b8b6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561195457600080fd5b505af1158015611968573d6000803e3d6000fd5b5050505060008611156119bf5761197d614066565b611987838861419f565b11156119bf576040805162461bcd60e51b815260206004820152600260248201526104d360f41b604482015290519081900360640190fd5b8415611a0f576119cd6141af565b6119d7828761419f565b1115611a0f576040805162461bcd60e51b81526020600482015260026024820152614d3160f01b604482015290519081900360640190fd5b8960020b8b60020b8d6001600160a01b03167f7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde338d8b8b60405180856001600160a01b03168152602001846001600160801b0316815260200183815260200182815260200194505050505060405180910390a450506001805460ff60201b1916600160201b17905550919890975095505050505050565b60035481565b600154600160201b900460ff16611af0576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6001805460ff60201b191690556005546001600160801b031680611b3f576040805162461bcd60e51b81526020600482015260016024820152601360fa1b604482015290519081900360640190fd5b6000611b74867f00000000000000000000000000000000000000000000000000000000000001f462ffffff16620f4240614531565b90506000611bab867f00000000000000000000000000000000000000000000000000000000000001f462ffffff16620f4240614531565b90506000611bb7614066565b90506000611bc36141af565b90508815611bf657611bf67f0000000000000000000000001336f973cbd16db4368655514395d0818a949c2c8b8b613f18565b8715611c2757611c277f000000000000000000000000eb3c930c1e0d3434ff917ffd77aa813e7d79ae398b8a613f18565b336001600160a01b031663a1d4833685858a8a6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611ca957600080fd5b505af1158015611cbd573d6000803e3d6000fd5b505050506000611ccb614066565b90506000611cd76141af565b905081611ce4858861419f565b1115611d1c576040805162461bcd60e51b8152602060048201526002602482015261046360f41b604482015290519081900360640190fd5b80611d27848761419f565b1115611d5f576040805162461bcd60e51b8152602060048201526002602482015261463160f01b604482015290519081900360640190fd5b8382038382038115611de85760015461ffff1660008115611d8c5761271063ffffffff8316850204611d8f565b60005b90506001600160801b03811615611dc257600480546001600160801b038082168401166001600160801b03199091161790555b611ddc818503600160801b8d6001600160801b031661369f565b60028054909101905550505b8015611e6d5760015460101c61ffff1660008115611e125761271063ffffffff8316840204611e15565b60005b90506001600160801b03811615611e4757600480546001600160801b03600160801b8083048216850182160291161790555b611e61818403600160801b8d6001600160801b031661369f565b60038054909101905550505b8d6001600160a01b0316336001600160a01b03167fbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca6338f8f86866040518085815260200184815260200183815260200182815260200194505050505060405180910390a350506001805460ff60201b1916600160201b179055505050505050505050505050565b6001546000908190600160201b900460ff16611f3c576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6001805460ff60201b191690556000611f58600833898961456b565b60038101549091506001600160801b0390811690861611611f795784611f88565b60038101546001600160801b03165b60038201549093506001600160801b03600160801b909104811690851611611fb05783611fc6565b6003810154600160801b90046001600160801b03165b91506001600160801b0383161561202b576003810180546001600160801b031981166001600160801b0391821686900382161790915561202b907f0000000000000000000000001336f973cbd16db4368655514395d0818a949c2c908a908616613f18565b6001600160801b03821615612091576003810180546001600160801b03600160801b808304821686900382160291811691909117909155612091907f000000000000000000000000eb3c930c1e0d3434ff917ffd77aa813e7d79ae39908a908516613f18565b604080516001600160a01b038a1681526001600160801b0380861660208301528416818301529051600288810b92908a900b9133917f70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0919081900360600190a4506001805460ff60201b1916600160201b17905590969095509350505050565b60086020526000908152604090208054600182015460028301546003909301546001600160801b0392831693919281811691600160801b90041685565b60076020526000908152604090205481565b62010008546001600160a01b031681565b7f0000000000000000000000000000000000005e8b2285f864419ac400be90719681565b6001546000908190600160201b900460ff166121de576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6001805460ff60201b19169055336001600160a01b037f000000000000000000000000e7b4639d1be21585548078ac3fda80c67053c1bb1614806122ae57507f000000000000000000000000e7b4639d1be21585548078ac3fda80c67053c1bb6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561227657600080fd5b505afa15801561228a573d6000803e3d6000fd5b505050506040513d60208110156122a057600080fd5b50516001600160a01b031633145b6122b757600080fd5b6004546001600160801b03908116908516116122d357836122e0565b6004546001600160801b03165b6004549092506001600160801b03600160801b909104811690841611612306578261231a565b600454600160801b90046001600160801b03165b90506001600160801b0382161561239b576004546001600160801b038381169116141561234957600019909101905b600480546001600160801b031981166001600160801b0391821685900382161790915561239b907f0000000000000000000000001336f973cbd16db4368655514395d0818a949c2c9087908516613f18565b6001600160801b03811615612421576004546001600160801b03828116600160801b9092041614156123cc57600019015b600480546001600160801b03600160801b808304821685900382160291811691909117909155612421907f000000000000000000000000eb3c930c1e0d3434ff917ffd77aa813e7d79ae399087908416613f18565b604080516001600160801b0380851682528316602082015281516001600160a01b0388169233927f596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151929081900390910190a36001805460ff60201b1916600160201b1790559094909350915050565b60608061250a61249e612fca565b858580806020026020016040519081016040528093929190818152602001838360200280828437600092018290525054600554600996959450600160a01b820460020b935061ffff600160b81b8304811693506001600160801b0390911691600160c81b9004166145cf565b915091509250929050565b6001546000908190600160201b900460ff1661255e576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6001805460ff60201b1916905560408051608081018252338152600287810b602083015286900b91810191909152600090819081906125ba90606081016125ad6001600160801b038a166142ea565b600003600f0b90526142fb565b92509250925081600003945080600003935060008511806125db5750600084115b1561261a576003830180546001600160801b038082168089018216600160801b93849004831689019092169092029091176001600160801b0319161790555b604080516001600160801b0388168152602081018790528082018690529051600289810b92908b900b9133917f0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c919081900360600190a450506001805460ff60201b1916600160201b179055509094909350915050565b60008060006126a08585614729565b600285810b810b600090815260066020819052604080832088850b90940b8352822060038401549182900b93600160381b83046001600160a01b0316928492600160d81b820463ffffffff16928492909190600160f81b900460ff168061270657600080fd5b6003820154600681900b9850600160381b81046001600160a01b03169650600160d81b810463ffffffff169450600160f81b900460ff168061274757600080fd5b50506040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b810b6020840181905261ffff600160b81b8404811695850195909552600160c81b830485166060850152600160d81b909204909316608083015260015463ffffffff811660a084015260ff600160201b90910416151560c08301529093508e820b910b121590506127ef57509390940396509003935090039050612872565b8a60020b816020015160020b121561286357600061280b612fca565b6020830151604084015160055460608601519394506000938493612841936009938893879392916001600160801b03169061374f565b9a9003989098039b505094909603929092039650909103039250612872915050565b50949093039650039350900390505b9250925092565b600154600160201b900460ff166128bd576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6001805460ff60201b19169055336001600160a01b037f000000000000000000000000e7b4639d1be21585548078ac3fda80c67053c1bb16148061298d57507f000000000000000000000000e7b4639d1be21585548078ac3fda80c67053c1bb6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561295557600080fd5b505afa158015612969573d6000803e3d6000fd5b505050506040513d602081101561297f57600080fd5b50516001600160a01b031633145b61299657600080fd5b63ffffffff821615806129c457506103e88263ffffffff16101580156129c45750610fa08263ffffffff1611155b80156129f9575063ffffffff811615806129f957506103e88163ffffffff16101580156129f95750610fa08163ffffffff1611155b612a0257600080fd5b6001805465ffffffff0000601084901b16840163ffffffff90811663ffffffff19831617909255167fb3159fed3ddfba67bae294599eafe2d0ec98c08bb38e0e5fb87d33154b6e05aa62010000826040805163ffffffff939092068316825261ffff601086901c16602083015286831682820152918516606082015290519081900360800190a150506001805460ff60201b1916600160201b17905550565b7f000000000000000000000000e7b4639d1be21585548078ac3fda80c67053c1bb81565b336001600160a01b037f000000000000000000000000e7b4639d1be21585548078ac3fda80c67053c1bb161480612b8857507f000000000000000000000000e7b4639d1be21585548078ac3fda80c67053c1bb6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015612b5057600080fd5b505afa158015612b64573d6000803e3d6000fd5b505050506040513d6020811015612b7a57600080fd5b50516001600160a01b031633145b612b9157600080fd5b6201000880546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f29983690a85a11696ce8a357993744f8d5a74fde14653e517cc2f8608a7235e99181900360200190a150565b7f000000000000000000000000000000000000000000000000000000000000000a81565b7f000000000000000000000000eb3c930c1e0d3434ff917ffd77aa813e7d79ae3981565b7f00000000000000000000000000000000000000000000000000000000000001f481565b60025481565b60066020819052600091825260409091208054600182015460028301546003909301546001600160801b03831694600160801b909304600f0b93919281900b90600160381b81046001600160a01b031690600160d81b810463ffffffff1690600160f81b900460ff1688565b6000546001600160a01b031615612d08576040805162461bcd60e51b8152602060048201526002602482015261414960f01b604482015290519081900360640190fd5b6000612d1382613a55565b9050600080612d2b612d23612fca565b6009906147f2565b6040805160e0810182526001600160a01b038816808252600288810b60208401819052600094840185905261ffff8781166060860181905290871660808601819052630c800c8060a08701819052600160c090970187905287546001600160a01b03191690951762ffffff60a01b1916600160a01b62ffffff9490950b8416949094029390931763ffffffff60b81b1916600160c81b9091021761ffff60d81b1916600160d81b909202919091179093558154600160201b63ffffffff1990911690911760ff60201b191617905591935091507f00000000000000000000000000000000000000000000000000000000000001f41660641415612e40576001805463ffffffff1916630ce40ce4179055612f11565b7f00000000000000000000000000000000000000000000000000000000000001f462ffffff166101f41415612e87576001805463ffffffff1916630d480d48179055612f11565b7f00000000000000000000000000000000000000000000000000000000000001f462ffffff166109c41415612ece576001805463ffffffff1916630c800c80179055612f11565b7f00000000000000000000000000000000000000000000000000000000000001f462ffffff166127101415612f11576001805463ffffffff1916630c800c801790555b604080516001600160a01b0386168152600285900b602082015281517f98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c95929181900390910190a150505050565b60008082600281900b620d89e71981612f7357fe5b05029050600083600281900b620d89e881612f8a57fe5b0502905060008460020b83830360020b81612fa157fe5b0560010190508062ffffff166001600160801b03801681612fbe57fe5b0493505050505b919050565b4290565b60008060008460020b8660020b81612fe257fe5b05905060008660020b12801561300957508460020b8660020b8161300257fe5b0760020b15155b1561301357600019015b8315613088576000806130258361483e565b600182810b810b600090815260208d9052604090205460ff83169190911b8001600019019081168015159750929450909250908561306a57888360ff1686030261307d565b8861307482614850565b840360ff168603025b965050505050613106565b6000806130978360010161483e565b91509150600060018260ff166001901b031990506000818b60008660010b60010b81526020019081526020016000205416905080600014159550856130e957888360ff0360ff168660010101026130ff565b88836130f4836148ef565b0360ff168660010101025b9650505050505b5094509492505050565b60008060008360020b12613127578260020b61312f565b8260020b6000035b9050620d89e881111561316d576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b60006001821661318157600160801b613193565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156131c7576ffff97272373d413259a46990580e213a0260801c5b60048216156131e6576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613205576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613224576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613243576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613262576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613281576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156132a1576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156132c1576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156132e1576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615613301576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615613321576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615613341576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615613361576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615613381576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156133a2576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156133c2576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156133e1576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156133fe576b048a170391f7dc42444e8fa20260801c5b60008460020b131561341957806000198161341557fe5b0490505b600160201b81061561342c57600161342f565b60005b60ff16602082901c0192505050919050565b60008080806001600160a01b03808916908a1610158187128015906134c657600061347a8989620f42400362ffffff16620f424061369f565b9050826134935761348e8c8c8c60016149d9565b6134a0565b6134a08b8d8c6001614a54565b95508581106134b1578a96506134c0565b6134bd8c8b8386614b08565b96505b50613510565b816134dd576134d88b8b8b6000614a54565b6134ea565b6134ea8a8c8b60006149d9565b93508388600003106134fe57899550613510565b61350d8b8a8a60000385614b54565b95505b6001600160a01b038a81169087161482156135735780801561352f5750815b61354557613540878d8c6001614a54565b613547565b855b9550808015613554575081155b61356a57613565878d8c60006149d9565b61356c565b845b94506135bd565b80801561357d5750815b6135935761358e8c888c60016149d9565b613595565b855b95508080156135a2575081155b6135b8576135b38c888c6000614a54565b6135ba565b845b94505b811580156135cd57508860000385115b156135d9578860000394505b8180156135f857508a6001600160a01b0316876001600160a01b031614155b15613607578589039350613624565b613621868962ffffff168a620f42400362ffffff16614531565b93505b50505095509550955095915050565b6000600160ff1b821061364557600080fd5b5090565b8082038281131560008312151461365f57600080fd5b92915050565b8181018281121560008312151461365f57600080fd5b60008215806136965750508181028183828161369357fe5b04145b61365f57600080fd5b60008080600019858709868602925082811090839003039050806136d557600084116136ca57600080fd5b508290049050613748565b8084116136e157600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60008063ffffffff87166137f5576000898661ffff1661ffff811061377057fe5b60408051608081018252919092015463ffffffff808216808452600160201b8304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff16151560608301529092508a16146137e1576137de818a8988614ba0565b90505b8060200151816040015192509250506138d5565b86880360008061380a8c8c858c8c8c8c614c43565b91509150816000015163ffffffff168363ffffffff16141561383c5781602001518260400151945094505050506138d5565b805163ffffffff848116911614156138645780602001518160400151945094505050506138d5565b8151815160208085015190840151918390039286039163ffffffff80841692908516910360060b8161389257fe5b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b031602816138c457fe5b048560400151019650965050505050505b97509795505050505050565b600295860b860b60009081526020979097526040909620600181018054909503909455938301805490920390915560038201805463ffffffff600160d81b6001600160a01b03600160381b808504821690960316909402670100000000000000600160d81b031990921691909117600681810b90960390950b66ffffffffffffff1666ffffffffffffff199095169490941782810485169095039093160263ffffffff60d81b1990931692909217905554600160801b9004600f0b90565b60008082600f0b1215613a0457826001600160801b03168260000384039150816001600160801b0316106139ff576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b61365f565b826001600160801b03168284019150816001600160801b0316101561365f576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b60006401000276a36001600160a01b03831610801590613a91575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b613ac6576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c97908811961790941790921717909117171760808110613b6757607f810383901c9150613b71565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c600160381b161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b14613d6e57886001600160a01b0316613d5282613110565b6001600160a01b03161115613d675781613d69565b805b613d70565b815b9998505050505050505050565b6000806000898961ffff1661ffff8110613d9357fe5b60408051608081018252919092015463ffffffff808216808452600160201b8304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff161515606083015290925089161415613e0257888592509250506138d5565b8461ffff168461ffff16118015613e2357506001850361ffff168961ffff16145b15613e3057839150613e34565b8491505b8161ffff168960010161ffff1681613e4857fe5b069250613e5781898989614ba0565b8a8461ffff1661ffff8110613e6857fe5b825191018054602084015160408501516060909501511515600160f81b026001600160f81b036001600160a01b03909616600160581b027fff0000000000000000000000000000000000000000ffffffffffffffffffffff60069390930b66ffffffffffffff16600160201b026affffffffffffff000000001963ffffffff90971663ffffffff199095169490941795909516929092171692909217929092161790555097509795505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b60208310613f945780518252601f199092019160209182019101613f75565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613ff6576040519150601f19603f3d011682016040523d82523d6000602084013e613ffb565b606091505b5091509150818015614029575080511580614029575080806020019051602081101561402657600080fd5b50515b61405f576040805162461bcd60e51b81526020600482015260026024820152612a2360f11b604482015290519081900360640190fd5b5050505050565b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f0000000000000000000000001336f973cbd16db4368655514395d0818a949c2c1693919290918291908083835b602083106140ff5780518252601f1990920191602091820191016140e0565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811461415f576040519150601f19603f3d011682016040523d82523d6000602084013e614164565b606091505b509150915081801561417857506020815110155b61418157600080fd5b80806020019051602081101561419657600080fd5b50519250505090565b8082018281101561365f57600080fd5b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f000000000000000000000000eb3c930c1e0d3434ff917ffd77aa813e7d79ae39169391929091829190808383602083106140ff5780518252601f1990920191602091820191016140e0565b6000808361ffff1611614285576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b8261ffff168261ffff161161429b575081613748565b825b8261ffff168161ffff1610156142e1576001858261ffff1661ffff81106142c057fe5b01805463ffffffff191663ffffffff9290921691909117905560010161429d565b50909392505050565b80600f81900b8114612fc557600080fd5b600080600061431284602001518560400151614729565b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602080840182905261ffff600160b81b8404811685870152600160c81b84048116606080870191909152600160d81b90940416608085015260015463ffffffff811660a086015260ff600160201b90910416151560c0850152885190890151948901519289015193946143b49491939092909190614e3d565b93508460600151600f0b60001461452957846020015160020b816020015160020b1215614409576144026143eb8660200151613110565b6143f88760400151613110565b8760600151614ff2565b9250614529565b846040015160020b816020015160020b12156144ff5760055460408201516001600160801b039091169061445b9061443f612fca565b6020850151606086015160808701516009949392918791613d7d565b6000805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b9390921692909202179055815160408701516144ab91906144a190613110565b8860600151614ff2565b93506144c96144bd8760200151613110565b83516060890151615036565b92506144d981876060015161399f565b600580546001600160801b0319166001600160801b039290921691909117905550614529565b61452661450f8660200151613110565b61451c8760400151613110565b8760600151615036565b91505b509193909250565b600061453e84848461369f565b90506000828061454a57fe5b848609111561374857600019811061456157600080fd5b6001019392505050565b6040805160609490941b6bffffffffffffffffffffffff1916602080860191909152600293840b60e890811b60348701529290930b90911b60378401528051808403601a018152603a90930181528251928201929092206000908152929052902090565b60608060008361ffff161161460f576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b865167ffffffffffffffff8111801561462757600080fd5b50604051908082528060200260200182016040528015614651578160200160208202803683370190505b509150865167ffffffffffffffff8111801561466c57600080fd5b50604051908082528060200260200182016040528015614696578160200160208202803683370190505b50905060005b875181101561471c576146c78a8a8a84815181106146b657fe5b60200260200101518a8a8a8a61374f565b8483815181106146d357fe5b602002602001018484815181106146e657fe5b60200260200101826001600160a01b03166001600160a01b03168152508260060b60060b8152505050808060010191505061469c565b5097509795505050505050565b8060020b8260020b12614769576040805162461bcd60e51b8152602060048201526003602482015262544c5560e81b604482015290519081900360640190fd5b620d89e719600283900b12156147ac576040805162461bcd60e51b8152602060048201526003602482015262544c4d60e81b604482015290519081900360640190fd5b620d89e8600282900b13156147ee576040805162461bcd60e51b815260206004820152600360248201526254554d60e81b604482015290519081900360640190fd5b5050565b6040805160808101825263ffffffff9283168082526000602083018190529282019290925260016060909101819052835463ffffffff1916909117909116600160f81b17909155908190565b60020b600881901d9161010090910790565b600080821161485e57600080fd5b600160801b821061487157608091821c91015b68010000000000000000821061488957604091821c91015b600160201b821061489c57602091821c91015b6201000082106148ae57601091821c91015b61010082106148bf57600891821c91015b601082106148cf57600491821c91015b600482106148df57600291821c91015b60028210612fc557600101919050565b60008082116148fd57600080fd5b5060ff6001600160801b0382161561491857607f1901614920565b608082901c91505b67ffffffffffffffff82161561493957603f1901614941565b604082901c91505b63ffffffff82161561495657601f190161495e565b602082901c91505b61ffff82161561497157600f1901614979565b601082901c91505b60ff82161561498b5760071901614993565b600882901c91505b600f8216156149a557600319016149ad565b600482901c91505b60038216156149bf57600119016149c7565b600282901c91505b6001821615612fc55760001901919050565b6000836001600160a01b0316856001600160a01b031611156149f9579293925b81614a2657614a21836001600160801b03168686036001600160a01b0316600160601b61369f565b614a49565b614a49836001600160801b03168686036001600160a01b0316600160601b614531565b90505b949350505050565b6000836001600160a01b0316856001600160a01b03161115614a74579293925b6fffffffffffffffffffffffffffffffff60601b606084901b166001600160a01b038686038116908716614aa757600080fd5b83614ad757866001600160a01b0316614aca8383896001600160a01b031661369f565b81614ad157fe5b04614afd565b614afd614aee8383896001600160a01b0316614531565b886001600160a01b0316615065565b979650505050505050565b600080856001600160a01b031611614b1f57600080fd5b6000846001600160801b031611614b3557600080fd5b81614b4757614a218585856001615070565b614a498585856001615151565b600080856001600160a01b031611614b6b57600080fd5b6000846001600160801b031611614b8157600080fd5b81614b9357614a218585856000615151565b614a498585856000615070565b614ba861597e565b600085600001518503905060405180608001604052808663ffffffff1681526020018263ffffffff168660020b0288602001510160060b81526020016000856001600160801b031611614bfc576001614bfe565b845b6001600160801b031663ffffffff60801b608085901b1681614c1c57fe5b048860400151016001600160a01b0316815260200160011515815250915050949350505050565b614c4b61597e565b614c5361597e565b888561ffff1661ffff8110614c6457fe5b60408051608081018252919092015463ffffffff8116808352600160201b8204600690810b810b900b6020840152600160581b82046001600160a01b031693830193909352600160f81b900460ff16151560608201529250614cc89089908961523d565b15614d00578663ffffffff16826000015163ffffffff161415614cea576138d5565b81614cf783898988614ba0565b915091506138d5565b888361ffff168660010161ffff1681614d1557fe5b0661ffff1661ffff8110614d2557fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201819052909250614dda57604080516080810182528a5463ffffffff81168252600160201b8104600690810b810b900b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015291505b614de98883600001518961523d565b614e20576040805162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015290519081900360640190fd5b614e2d89898988876152fe565b9150915097509795505050505050565b6000614e4c600887878761456b565b60025460035491925090600080600f87900b15614f92576000614e6d612fca565b6000805460055492935090918291614eb79160099186918591600160a01b810460020b9161ffff600160b81b83048116926001600160801b0390921691600160c81b90041661374f565b9092509050614ef160068d8b8d8b8b87898b60007f0000000000000000000000000000000000005e8b2285f864419ac400be90719661549c565b9450614f2860068c8b8d8b8b87898b60017f0000000000000000000000000000000000005e8b2285f864419ac400be90719661549c565b93508415614f5c57614f5c60078d7f000000000000000000000000000000000000000000000000000000000000000a615659565b8315614f8e57614f8e60078c7f000000000000000000000000000000000000000000000000000000000000000a615659565b5050505b600080614fa460068c8c8b8a8a6156bf565b9092509050614fb5878a848461576b565b600089600f0b1215614fe3578315614fd257614fd260068c615900565b8215614fe357614fe360068b615900565b50505050505095945050505050565b60008082600f0b126150185761501361500e8585856001614a54565b613633565b614a4c565b61502b61500e8585856000036000614a54565b600003949350505050565b60008082600f0b126150525761501361500e85858560016149d9565b61502b61500e85858560000360006149d9565b808204910615150190565b600081156150e35760006001600160a01b038411156150a6576150a184600160601b876001600160801b031661369f565b6150be565b6001600160801b038516606085901b816150bc57fe5b045b90506150db6150d66001600160a01b0388168361419f565b61592c565b915050614a4c565b60006001600160a01b038411156151115761510c84600160601b876001600160801b0316614531565b615128565b615128606085901b6001600160801b038716615065565b905080866001600160a01b03161161513f57600080fd5b6001600160a01b038616039050614a4c565b60008261515f575083614a4c565b6fffffffffffffffffffffffffffffffff60601b606085901b1682156151f6576001600160a01b0386168481029085828161519657fe5b0414156151c7578181018281106151c5576151bb83896001600160a01b031683614531565b9350505050614a4c565b505b6151ed826151e8878a6001600160a01b031686816151e157fe5b049061419f565b615065565b92505050614a4c565b6001600160a01b0386168481029085828161520d57fe5b0414801561521a57508082115b61522357600080fd5b8082036151bb6150d6846001600160a01b038b1684614531565b60008363ffffffff168363ffffffff161115801561526757508363ffffffff168263ffffffff1611155b15615283578163ffffffff168363ffffffff1611159050613748565b60008463ffffffff168463ffffffff16116152aa578363ffffffff16600160201b016152b2565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff16116152e2578363ffffffff16600160201b016152ea565b8363ffffffff165b64ffffffffff169091111595945050505050565b61530661597e565b61530e61597e565b60008361ffff168560010161ffff168161532457fe5b0661ffff169050600060018561ffff16830103905060005b506002818301048961ffff8716828161535157fe5b0661ffff811061535d57fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b909104161515606082018190529095506153c75780600101925061533c565b898661ffff1682600101816153d857fe5b0661ffff81106153e457fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b9091041615156060820152855190945060009061544e908b908b61523d565b905080801561546757506154678a8a876000015161523d565b15615472575061548f565b8061548257600182039250615489565b8160010193505b5061533c565b5050509550959350505050565b60028a810b900b600090815260208c90526040812080546001600160801b0316826154c7828d61399f565b9050846001600160801b0316816001600160801b03161115615515576040805162461bcd60e51b81526020600482015260026024820152614c4f60f01b604482015290519081900360640190fd5b6001600160801b0382811615908216158114159450156155be578c60020b8e60020b136155a657600183018b9055600283018a9055600383018054670100000000000000600160d81b031916600160381b6001600160a01b038c16021766ffffffffffffff191666ffffffffffffff60068b900b161763ffffffff60d81b1916600160d81b63ffffffff8a16021790555b6003830180546001600160f81b0316600160f81b1790555b82546001600160801b0319166001600160801b03821617835585615607578254615602906155fd90600160801b9004600f90810b810b908f900b613665565b6142ea565b615628565b8254615628906155fd90600160801b9004600f90810b810b908f900b613649565b8354600f9190910b6001600160801b03908116600160801b0291161790925550909c9b505050505050505050505050565b8060020b8260020b8161566857fe5b0760020b1561567657600080fd5b6000806156918360020b8560020b8161568b57fe5b0561483e565b600191820b820b60009081526020979097526040909620805460ff9097169190911b90951890945550505050565b600285810b80820b60009081526020899052604080822088850b850b83529082209193849391929184918291908a900b1261570557505060018201546002830154615718565b8360010154880391508360020154870390505b6000808b60020b8b60020b121561573a5750506001830154600284015461574d565b84600101548a0391508460020154890390505b92909803979097039b96909503949094039850939650505050505050565b6040805160a08101825285546001600160801b0390811682526001870154602083015260028701549282019290925260038601548083166060830152600160801b900490911660808201526000600f85900b61580a5781516001600160801b0316615802576040805162461bcd60e51b815260206004820152600260248201526104e560f41b604482015290519081900360640190fd5b508051615819565b8151615816908661399f565b90505b600061583d8360200151860384600001516001600160801b0316600160801b61369f565b905060006158638460400151860385600001516001600160801b0316600160801b61369f565b905086600f0b60001461588a5787546001600160801b0319166001600160801b0384161788555b60018801869055600288018590556001600160801b0382161515806158b857506000816001600160801b0316115b156158f6576003880180546001600160801b031981166001600160801b039182168501821617808216600160801b9182900483168501909216021790555b5050505050505050565b600290810b810b6000908152602092909252604082208281556001810183905590810182905560030155565b806001600160a01b0381168114612fc557600080fd5b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b6040805160808101825260008082526020820181905291810182905260608101919091529056fea164736f6c6343000706000a