0 txs
3.9k calls
constructor
No constructor.
functions
bridge
viewfunction bridge() view returns (address)
fabric
viewfunction fabric() view returns (address)
isTrustedForwarder
viewfunction isTrustedForwarder(address forwarder) view returns (bool)
metaRouter
viewfunction metaRouter() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
realToBurnSerialBTC
viewfunction realToBurnSerialBTC(address) view returns (uint64)
realToMintSerialBTC
viewfunction realToMintSerialBTC(address) view returns (uint64)
requestCount
viewfunction requestCount() view returns (uint256)
requests
viewfunction requests(bytes32) view returns (address recipient, address chain2address, uint256 amount, address token, address stoken, uint8 state)
synthesizeStates
viewfunction synthesizeStates(bytes32) view returns (uint8)
syntToMinFeeBTC
viewfunction syntToMinFeeBTC(address) view returns (uint256)
tokenThreshold
viewfunction tokenThreshold(address) view returns (uint256)
versionRecipient
purefunction versionRecipient() pure returns (string)
burnSyntheticToken
nonpayablefunction burnSyntheticToken(uint256 _stableBridgingFee, address _stoken, uint256 _amount, address _chain2address, address _receiveSide, address _oppositeBridge, address _revertableAddress, uint256 _chainID, bytes32 _clientID) returns (bytes32 internalID)
burnSyntheticTokenBTC
nonpayablefunction burnSyntheticTokenBTC(uint256 _stableBridgingFee, uint256 _amount, bytes _to, address _stoken, bytes32 _clientID) returns (uint64)
burnSyntheticTokenTON
nonpayablefunction burnSyntheticTokenTON(uint256 _stableBridgingFee, address _stoken, uint256 _amount, bytes32 _crossChainID, tuple _chain2address, address _receiveSide, address _oppositeBridge, address _revertableAddress, uint256 _chainID, bytes32 _clientID) returns (bytes32 internalID)
initialize
nonpayablefunction initialize(address _bridge, address _trustedForwarder, address _metaRouter)
metaBurnSyntheticToken
nonpayablefunction metaBurnSyntheticToken(tuple _metaBurnTransaction) returns (bytes32 internalID)
metaMintSyntheticToken
nonpayablefunction metaMintSyntheticToken(tuple _metaMintTransaction)
metaMintSyntheticTokenBTC
nonpayablefunction metaMintSyntheticTokenBTC(tuple _metaMintTransaction)
mintSyntheticToken
nonpayablefunction mintSyntheticToken(uint256 _stableBridgingFee, bytes32 _externalID, bytes32 _crossChainID, address _tokenReal, uint256 _chainID, uint256 _amount, address _to)
pause
nonpayablefunction pause()
renounceOwnership
nonpayablefunction renounceOwnership()
revertBurn
nonpayablefunction revertBurn(uint256 _stableBridgingFee, bytes32 _externalID)
revertBurnAndBurn
nonpayablefunction revertBurnAndBurn(uint256 _stableBridgingFee, bytes32 _externalID, address _receiveSide, address _oppositeBridge, uint256 _chainID, address _revertableAddress)
revertMetaBurn
nonpayablefunction revertMetaBurn(uint256 _stableBridgingFee, bytes32 _externalID, address _router, bytes _swapCalldata, address _synthesis, address _burnToken, bytes _burnCalldata)
revertSynthesizeRequest
nonpayablefunction revertSynthesizeRequest(uint256 _stableBridgingFee, bytes32 _internalID, address _receiveSide, address _oppositeBridge, uint256 _chainID, bytes32 _clientID)
revertSynthesizeRequestByBridge
nonpayablefunction revertSynthesizeRequestByBridge(uint256 _stableBridgingFee, bytes32 _internalID, address _receiveSide, address _oppositeBridge, uint256 _chainID, address _sender, bytes32 _clientID)
setFabric
nonpayablefunction setFabric(address _fabric)
setMetaRouter
nonpayablefunction setMetaRouter(address _metaRouter)
setMinFeeBTC
nonpayablefunction setMinFeeBTC(address _synt, uint256 _minFee)
setTokenThreshold
nonpayablefunction setTokenThreshold(address _token, uint256 _threshold)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
events
BTCSynthesizeCompleted
event BTCSynthesizeCompleted(bytes32 indexed id, address indexed to, uint256 amount, uint64 serial, uint256 bridgingFee, address indexed token)
BurnRequest
event BurnRequest(bytes32 id, address indexed from, uint256 indexed chainID, address indexed revertableAddress, address to, uint256 amount, address token)
BurnRequestBTC
event BurnRequestBTC(uint64 burnSerial, address indexed from, bytes to, uint256 amount, uint256 stableBridgingFee, address indexed rtoken)
BurnRequestTON
event BurnRequestTON(bytes32 id, address indexed from, uint256 indexed chainID, address indexed revertableAddress, (int8 workchain, bytes32 address_hash) to, uint256 amount, address token)
ClientIdLog
event ClientIdLog(bytes32 requestId, bytes32 indexed clientId)
ClientIdLogBTC
event ClientIdLogBTC(uint64 burnSerial, bytes32 indexed clientId)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
RevertBurnCompleted
event RevertBurnCompleted(bytes32 indexed id, address indexed to, uint256 amount, uint256 bridgingFee, address token)
RevertSynthesizeRequest
event RevertSynthesizeRequest(bytes32 indexed id, address indexed to)
SetFabric
event SetFabric(address fabric)
SetMetaRouter
event SetMetaRouter(address metaRouter)
SetMinFeeBTC
event SetMinFeeBTC(uint256 minFee)
SetTokenThreshold
event SetTokenThreshold(address token, uint256 threshold)
SynthesizeCompleted
event SynthesizeCompleted(bytes32 indexed id, address indexed to, bytes32 indexed crossChainID, uint256 amount, uint256 bridgingFee, address token)
Unpaused
event Unpaused(address account)
errors
No errors.
creation bytecode
0x60808060405234610016576145b2908161001c8239f35b600080fdfe6080604052600436101561001257600080fd5b6000803560e01c80630f5b2f68146131635780633f4ba83a146131045780633f60edf41461309257806341fabd1214612c3b578063486ff0cd14612bc6578063572b6c0514612b9257806359473c2614612b50578063595148931461261b5780635badbe4c146125fd5780635c975abb146125da5780635d176f2f146125b3578063687752781461257b578063715018a6146125045780637819d8af146121925780638456cb59146121255780638bb39802146120935780638da5cb5b1461206c578063957edb501461202a5780639d86698514611fac578063a0d9557014611bea578063a83e754b146119a5578063c0c53b8b146117cf578063c29a91bc14611603578063c4a588f814611426578063c7fa2d30146113ee578063cbef5f2c14610ef7578063cfd7bc0914610ddd578063d23fd79614610da7578063dbec15bb14610d80578063dd8c903914610caf578063e66bb55014610580578063e78cea9214610556578063eadd5c3414610464578063f2fde38b146103ad5763f70519ae1461019e57600080fd5b346103aa5760406003193601126103aa576004356024356067546101dd60ff6001600160a01b03926101d633858360081c161461360a565b1615613655565b818452606a60205260408420926004840180549461020c600160ff8860a01c166102068161345c565b1461443d565b7402000000000000000000000000000000000000000060ff60a01b1987161782558684606854169685835416976002840198610249878b546137c7565b90823b15610383576040516339240a7f60e21b8082526001600160a01b0392831660048301526024820193909352938916166044840152919083908290606490829084905af190811561039f578391610387575b50508560685416908660675460081c16908786541692803b15610383576040519182526001600160a01b039283166004830152602482018890529290911660448201529082908290606490829084905af1801561037857610360575b50508361032f847fb6f5f7b98cc78a8031c967af163a8c197f470a35df1e326a9038859679e6a1849661035a94541698546137c7565b925416604051938493849160409194936001600160a01b039160608501968552602085015216910152565b0390a380f35b6103699061347c565b6103745786386102f9565b8680fd5b6040513d84823e3d90fd5b8480fd5b6103909061347c565b61039b57813861029d565b5080fd5b6040513d85823e3d90fd5b80fd5b50346103aa5760206003193601126103aa576103c7613382565b6001600160a01b036103e78160335416826103e0614539565b161461356a565b8116156103fa576103f7906135b5565b80f35b608460405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152fd5b50346103aa5760206003193601126103aa5761047e613382565b6001600160a01b03906104988260335416836103e0614539565b1680156104ec576020817fd5c54ab1d37bfef4dd2253d9d73c292e46f5bd8a67ca5920aab4c2e1993178e79273ffffffffffffffffffffffffffffffffffffffff19606c541617606c55604051908152a180f35b608460405162461bcd60e51b815260206004820152602760248201527f53796d623a206d657461526f757465722063616e6e6f74206265207a65726f2060448201527f61646472657373000000000000000000000000000000000000000000000000006064820152fd5b50346103aa57806003193601126103aa5760206001600160a01b0360675460081c16604051908152f35b50346103aa57600319906020823601126103aa5767ffffffffffffffff806004351161039b576101c080936004353603011261039b5760405192830183811082821117610c99576040526004356004013583526024600435013560208401526044600435013560408401526105f96064600435016133da565b606084015261060c6084600435016133da565b608084015261061f60a4600435016133da565b60a084015260c4600435013590811161039b57610643906004369181350101613523565b60c083015260e4600435013560e0830152610663610104600435016133da565b610100830152610678610124600435016133da565b61012083015261068d610144600435016133da565b6101408301526106a2610164600435016133da565b61016083015261018460043501356101808301526101a460043501356101a08301526106d360ff6067541615613655565b6106fc60208301516001600160a01b0360a0850151168352606b6020526040832054111561430b565b6001600160a01b0360685416610710614539565b9060208401516001600160a01b0360a08601511692823b156103835760405163540b05bb60e11b81526001600160a01b039182166004820152602481019290925292909216604483015282908290606490829084905af1801561037857908291610c85575b50506001600160a01b036101608301511615610c6b575b6001600160a01b03606854169060206001600160a01b0360a08501511660246040518095819363161acb4760e01b835260048301525afa918215610c5e578192610c2d575b506107e66001600160a01b0383161515614356565b6066546040513060601b6bffffffffffffffffffffffff19166020820152603481019190915246605482015261082981607481015b03601f1981018352826134e4565b6020815191012091604084015115610c22575b61012084015161016085015161018086015160408051602081018881526bffffffffffffffffffffffff19606096871b8116938301939093529390941b1660548401526068830152610ab191610895816088810161081b565b519020917fffffffff0000000000000000000000000000000000000000000000000000000060576040516108c8816134ac565b8181527f2c616464726573732c62797465732c75696e7432353629000000000000000000606060208301927f6d657461556e73796e74686573697a652875696e743235362c6279746573333284527f2c627974657333322c616464726573732c75696e743235362c61646472657373604082015201522016926109e087519460408901516109cb8a6001600160a01b036101008201511660208201516001600160a01b036080840151169160e060c0850151940151956040519c8d9860208a015260248901526044880152886064880152608487015260a48601526001600160a01b03881660c486015260e48501526101206101048501526101448401906133ee565b9061012483015203601f1981018652856134e4565b6001600160a01b036060880151166001600160a01b036004816101008b015116928260a08c0151169560208c015160405192610a1b84613490565b835260208301958652604083019081528460608401921682526080830197885260a0830196600188528b52606a6020528460408c209351169573ffffffffffffffffffffffffffffffffffffffff19968785541617845585600185019151168782541617905551600283015583600383019151168582541617905501935116908354161782555190610aac8261345c565b6143a1565b610abc6066546143d5565b6066556001600160a01b0360675460081c166001600160a01b0361012086015116906001600160a01b03610140870151169161018087015193823b15610c1e57908580949392610b2260405197889687958694633675e4e160e11b8652600486016142d6565b03925af1801561037857610c0a575b6020836101a0866001600160a01b036060820151166101808201516001600160a01b0361016084015116917f5f00e8f0d61ff1190912879949026c85a81f3f96038c7f4cd868bdfe882e0eeb6001600160a01b03610100860151168886015190610bd46001600160a01b0360a0890151166040519384938c859293606092919594608085019685526001600160a01b038093166020860152604085015216910152565b0390a401517f5a297b2c9a9f94a0f4e5a796c74ad38e219d1185fccf5f79c18726a830c2b6f583604051848152a2604051908152f35b610c14829161347c565b6103aa5780610b31565b8580fd5b82604085015261083c565b610c5091925060203d602011610c57575b610c4881836134e4565b810190613737565b90386107d1565b503d610c3e565b50604051903d90823e3d90fd5b6001600160a01b036101008301511661016083015261078c565b610c8e9061347c565b6103aa578038610775565b634e487b7160e01b600052604160045260246000fd5b50346103aa5760206003193601126103aa57610cc9613382565b6001600160a01b03610ce28160335416826103e0614539565b60685491818316610d3c577fe7258eee4870ba270f25f5a42dd11bfe5a77658959c916807b94b8e9063c3cd09260209273ffffffffffffffffffffffffffffffffffffffff1992169182911617606855604051908152a180f35b606460405162461bcd60e51b815260206004820152601860248201527f53796d623a2046616272696320616c72656164792073657400000000000000006044820152fd5b50346103aa57806003193601126103aa5760206001600160a01b03606c5416604051908152f35b50346103aa5760206003193601126103aa5760ff604060209260043581526069845220541660405190610dd98161345c565b8152f35b50346103aa5760031960208136011261039b576004359067ffffffffffffffff808311610ef35761016080928436030112610ef35760405191820182811082821117610c99576040528260040135825260248301356020830152604483013581811681036103835760408301526064830135606083015260848301356080830152610e6a60a484016133da565b60a083015260c483013560c0830152610e8560e484016133da565b60e0830152610e9761010484016133da565b610100830152610124830135908111610ef3576103f792610ec16101449260043691840101613523565b6101208401520135610140820152610eee60ff6067546101d6336001600160a01b038360081c161461360a565b613d49565b8380fd5b50346103aa576101206003193601126103aa57610f12613398565b610f1a613356565b90610f236133c4565b91610f2c61336c565b92610f356133ae565b90610f4560ff6067541615613655565b816001600160a01b0385168752606b602052610f696040882054604435101561430b565b866001600160a01b0360685416610f7e614539565b90803b156113ea5760405163540b05bb60e11b81526001600160a01b0392831660048201526044803560248301529289169281019290925282908290606490829084905af18015610378576113d6575b50506001600160a01b0316156113ce575b602460206001600160a01b03606854166040519283809263161acb4760e01b82526001600160a01b038a1660048301525afa9081156113c35787916113a4575b506110346001600160a01b0382161515614356565b6066546040513060601b6bffffffffffffffffffffffff191660208201908152603482019290925246605482015261106f816074810161081b565b519020956040516110ba8161081b60e43588888d6020860192606894929184526bffffffffffffffffffffffff19809260601b16602085015260601b16603483015260488201520190565b60208151910120907fffffffff00000000000000000000000000000000000000000000000000000000603d6040516110f1816134c8565b8181527f657333322c616464726573732c75696e743235362c6164647265737329000000604060208301927f756e73796e74686573697a652875696e743235362c627974657333322c6279748452015220169160405192602084015260043560248401528060448401528860648401526001600160a01b038416608484015260443560a48401526001600160a01b03871660c484015260c483528261010081011067ffffffffffffffff61010085011117610c995787611284918b9561010086016040526001600160a01b036111c5614539565b6111d26101008901613490565b166101008701526001600160a01b036004610120880192828d1684526101408901906044358252836101608b0191168152836101808b01971687526101a08a0195600187528b52606a60205260408b2091846101008c0151169573ffffffffffffffffffffffffffffffffffffffff19968785541617845585600185019151168782541617905551600283015583600383019151168582541617905501935116908354161782555190610aac8261345c565b61128f6066546143d5565b6066556001600160a01b0360675460081c1690813b15610ef357836112cf9560405196879586948593633675e4e160e11b855260e43592600486016142d6565b03925af1801561139957611385575b50602094507f5f00e8f0d61ff1190912879949026c85a81f3f96038c7f4cd868bdfe882e0eeb6001600160a01b0380611315614539565b604080518981526001600160a01b0397881660208201526044359181019190915296909516606087015292169360e435939290921691608090a46040518181527f5a297b2c9a9f94a0f4e5a796c74ad38e219d1185fccf5f79c18726a830c2b6f5836101043592a2604051908152f35b61138f869161347c565b61038357846112de565b6040513d88823e3d90fd5b6113bd915060203d602011610c5757610c4881836134e4565b3861101f565b6040513d89823e3d90fd5b829150610fdf565b6113df9061347c565b610374578638610fce565b8280fd5b50346103aa5760206003193601126103aa5760406020916001600160a01b03611415613382565b168152607183522054604051908152f35b50346103aa5760c06003193601126103aa57602435611443613340565b61144b613356565b61145a60ff6067541615613655565b83611463614539565b91604051926020936114ae8161081b878201944690308c8892606894929184526bffffffffffffffffffffffff19809260601b16602085015260601b16603483015260488201520190565b51902093848352606984526114d6600160ff6040862054166114cf8161345c565b1415614206565b8483526069845260408320600260ff198254161790557fffffffff00000000000000000000000000000000000000000000000000000000611515614277565b85815191012016946040519585870152600435602487015260448601526044855261153f856134ac565b6001600160a01b03948560675460081c16803b156103835761157f9385809460405196879586948593633675e4e160e11b855260843592600486016142d6565b03925af18015610378576115ef575b50507f5a297b2c9a9f94a0f4e5a796c74ad38e219d1185fccf5f79c18726a830c2b6f5916115ba614539565b169260405193817f9bc8099e19706f253ae634ef1a5fb6ef84b4748c2183472905b9b2511cfa86178780a3835260a43592a280f35b6115f89061347c565b610ef357833861158e565b50346103aa57602060031981813601126113ea576004359167ffffffffffffffff90818411610383576101a0809385360301126103835760405192830183811083821117610c995760405283600401358352602484013581840152604484013560408401526064840135606084015261167e608485016133da565b608084015260a484013560a084015261169960c485016133da565b60c084015260e4840135828111610c1e5784019036602383011215610c1e576004820135918383116117bb578260051b604051936116d9848301866134e4565b8452602483850191830101913683116117b757602401905b8282106117a0575050505060e083015261170e61010484016133da565b610100830152610124830135818111610383576117319060043691860101613523565b61012083015261174461014484016133da565b610140830152610164830135908111610ef3576103f79261176e6101849260043691840101613523565b610160840152013561018082015261179b60ff6067546101d6336001600160a01b038360081c161461360a565b6137ea565b8380916117ac846133da565b8152019101906116f1565b8880fd5b602487634e487b7160e01b81526041600452fd5b50346103aa5760606003193601126103aa576117e9613382565b6117f1613398565b6117f9613340565b9183549260ff8460081c168060001461199b57303b155b1561193157159384611903575b5061184960ff865460081c16611832816144c8565b61183b816144c8565b611844816144c8565b6144c8565b611859611854614539565b6135b5565b6001600160a01b03918273ffffffffffffffffffffffffffffffffffffffff1994168460655416176065557fffffffffffffffffffffff0000000000000000000000000000000000000000ff74ffffffffffffffffffffffffffffffffffffffff006067549260081b169116176067551690606c541617606c556118da5780f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff815416815580f35b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011785553861181d565b608460405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152fd5b60ff851615611810565b50346103aa5760e06003193601126103aa576004356024356119c5613356565b9060a4356119d16133ae565b936067546119f360ff6001600160a01b03926101d633858360081c161461360a565b8387526069602052611a1560ff604089205416611a0f8161345c565b156136a0565b838752606960209081526040808920805460ff191660011790556068549051630283448560e51b81526001600160a01b038816600482015260843560248201528992909184169082604481845afa91821561039f578392611bca575b50611a7f8483161515613756565b611a8985876137c7565b813b15610ef3576040516339240a7f60e21b8082526001600160a01b038c8116600484015260248301939093529184166044820152909184908290606490829084905af1908115611bbf578491611bab575b50508360685416908460675460081c1691803b15610383576040519182526001600160a01b039283166004830152602482018790529290911660448201529082908290606490829084905af1801561037857611b97575b5050611b91611b62837f1f3f0f3c7b2df480755c6486a132f215e7b2b89fcca0beecd95a9696c71789b6956137c7565b95604051938493604435991697849160409194936001600160a01b039160608501968552602085015216910152565b0390a480f35b611ba09061347c565b610374578638611b32565b611bb49061347c565b6113ea578238611adb565b6040513d86823e3d90fd5b611be391925060203d8111610c5757610c4881836134e4565b9038611a71565b50346103aa5760a06003193601126103aa57600435906024359067ffffffffffffffff9060443582811161039b57611c2690369060040161342e565b949093611c31613356565b94611c4160ff6067541615613655565b6001600160a01b03808716808652602097606b8952611c66604088205486101561430b565b8187526071895285604088205411611f68578260685416611c85614539565b813b156117b75760405163540b05bb60e11b81526001600160a01b0391821660048201526024810188905290831660448201529088908290606490829084905af18015611f1457908891611f54575b50508260685416606754813b156117b7576040516339240a7f60e21b81526001600160a01b0360089290921c8616821660048201526024810189905292166044830152879082908183816064810103925af180156113c357908791611f40575b50508782606854169160246040518094819363161acb4760e01b835260048301525afa908115611399579082918791611f23575b501692611d76841515614356565b838652607094858952611d8e886040892054166144ae565b858852868a528860408920911667ffffffffffffffff198254161790558260675460081c16611dbb614539565b611dc583856137c7565b878a52888c528a60408b205416833b15611f1f5792868b8f939481958b97611e2a604051998a98899788967f65f341ce00000000000000000000000000000000000000000000000000000000885216600487015260806024870152608486019161441c565b916044840152606483015203925af18015611f1457611f00575b50978493819a937f76a6d97ee644ff153aa6e22a0c090a07012e616c1c0259ce9850593b9aed53169360409a9b878b52898552611eaa8d8d8d20541694611e9383611e8d614539565b956137c7565b9860808f519889988952880152608087019161441c565b968c850152606084015216930390a380835281865284848420541684519081527fa88fe925ee2e876e9cb92868d22eb4aebc517dbac42a034f4413c22715bdf1d68760843592a282528452205416604051908152f35b611f0a889161347c565b6103745738611e44565b6040513d8a823e3d90fd5b8a80fd5b611f3a9150893d8b11610c5757610c4881836134e4565b38611d68565b611f499061347c565b610c1e578538611d34565b611f5d9061347c565b610374578638611cd4565b6064896040519062461bcd60e51b82526004820152601660248201527f53796d623a20696e73756666696369656e7420666565000000000000000000006044820152fd5b50346103aa5760206003193601126103aa57604060c0916004358152606a602052206001600160a01b0390818154169180600183015416916002810154906004836003830154169101549160ff8360a01c16946040519687526020870152604086015260608501521660808301526120238161345c565b60a0820152f35b50346103aa5760206003193601126103aa5767ffffffffffffffff60406020926001600160a01b0361205a613382565b168152606f8452205416604051908152f35b50346103aa57806003193601126103aa5760206001600160a01b0360335416604051908152f35b50346103aa5760406003193601126103aa577fa6742efd4f410d6fd9688a6cf6a15b6d51121097a263056a3576baaacdc4a9ae6120ce613382565b602435906001600160a01b036120eb8160335416826103e0614539565b81168452606b60205281604085205561211f60405192839283602090939291936001600160a01b0360408201951681520152565b0390a180f35b50346103aa57806003193601126103aa577f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25860206001600160a01b036121728160335416826103e0614539565b600160ff196067541617606755612187614539565b60405191168152a180f35b50346103aa5760e06003193601126103aa576121ac613340565b816064359167ffffffffffffffff928381116113ea576121d090369060040161342e565b916121d96133c4565b916121e261336c565b9560c435908111610c1e576121fb90369060040161342e565b909161221c60ff6067546101d6336001600160a01b038360081c161461360a565b6024358752606a60205260408720976004890154612245600160ff8360a01c166102068161345c565b7402000000000000000000000000000000000000000060ff60a01b1982161760048b01556001600160a01b0360685416906001600160a01b038b5416916122938c60026004359101546137c7565b90803b15612500576040516339240a7f60e21b81526001600160a01b039485166004820152602481019290925291909216604483015289908290606490829084905af19081156124e15789916124ec575b50506001600160a01b03606854166001600160a01b0360675460081c166001600160a01b0360048c015416823b15611f1f576040516339240a7f60e21b81526001600160a01b03928316600480830191909152356024820152911660448201529089908290606490829084905af19081156124e15789916124c9575b50506001600160a01b03606c5416936001600160a01b0360048b0154169161238e60043560028d01546137c7565b94863b15611f1f578a9889956040519b8c9a8b998a987f732cffe9000000000000000000000000000000000000000000000000000000008a5260048a015260248901526001600160a01b031660448801526064870160e0905260e48701906123f59261441c565b926001600160a01b031660848601526001600160a01b031660a48501528382036003190160c48501526124279261441c565b03925af18015610378576124b5575b50506001600160a01b03815416907fb6f5f7b98cc78a8031c967af163a8c197f470a35df1e326a9038859679e6a18461035a6001600160a01b036004612481813560028701546137c7565b940154166040519182916024359560043590849160409194936001600160a01b039160608501968552602085015216910152565b6124be9061347c565b61039b578138612436565b6124d29061347c565b6124dd578738612360565b8780fd5b6040513d8b823e3d90fd5b6124f59061347c565b6124dd5787386122e4565b8b80fd5b50346103aa57806003193601126103aa57600060335473ffffffffffffffffffffffffffffffffffffffff196001600160a01b039161255083821693612548614539565b16841461356a565b166033557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346103aa5760206003193601126103aa5760406020916001600160a01b036125a2613382565b168152606b83522054604051908152f35b50346103aa57806003193601126103aa5760206001600160a01b0360685416604051908152f35b50346103aa57806003193601126103aa57602060ff606754166040519015158152f35b50346103aa57806003193601126103aa576020606654604051908152f35b50346103aa5760c06003193601126103aa57612635613340565b61263d613356565b9061264661336c565b9061266660ff6067546101d6336001600160a01b038360081c161461360a565b819060243591828652606a6020526040862094866004870154612694600160ff8360a01c166102068161345c565b7402000000000000000000000000000000000000000060ff60a01b1982161760048901556001600160a01b0360685416906001600160a01b0360675460081c16823b15610ef3576040516339240a7f60e21b81526001600160a01b03918216600480830191909152356024820152911660448201529082908290606490829084905af1801561037857612b3c575b50506001600160a01b0361273c60043560028901546137c7565b95818854168260048a015416967fb6f5f7b98cc78a8031c967af163a8c197f470a35df1e326a9038859679e6a184604051806127998b8d60043590849160409194936001600160a01b039160608501968552602085015216910152565b0390a31615612b27575b6024919260206001600160a01b03606854166040519485809263161acb4760e01b82528960048301525afa928315611f14578893612b06575b506066546040513060601b6bffffffffffffffffffffffff191660208201526034810191909152466054820152612816816074810161081b565b60208151910120946040516128658161081b60843589878c6020860192606894929184526bffffffffffffffffffffffff19809260601b16602085015260601b16603483015260488201520190565b60208151910120937fffffffff00000000000000000000000000000000000000000000000000000000603560405161289c816134c8565b8181527f726573732c75696e743235362c61646472657373290000000000000000000000604060208301927f756e73796e74686573697a652875696e743235362c627974657333322c616464845201522016916001600160a01b0360018b0154169560405193602085015260043560248501528060448501526001600160a01b03831660648501528960848501528660a485015260a484528360e081011067ffffffffffffffff60e086011117610c99578b966001600160a01b0360048c612a189660e089016040528361296e614539565b61297a60e08c01613490565b1660e08a015261010089019485526101208901918252836101408a01911681526101608901968752610180890195600187528c52606a60205260408c20918460e08b0151169573ffffffffffffffffffffffffffffffffffffffff19968785541617845585600185019151168782541617905551600283015583600383019151168582541617905501935116908354161782555190610aac8261345c565b612a236066546143d5565b6066556001600160a01b0360675460081c16803b1561038357612a649385809460405196879586948593633675e4e160e11b855260843592600486016142d6565b03925af1801561037857612af2575b50506001600160a01b037f5f00e8f0d61ff1190912879949026c85a81f3f96038c7f4cd868bdfe882e0eeb91611b91612aaa614539565b600188015460049890980154604080519788526001600160a01b039986168a166020890152870197909752958316871660608601529116946084359416929081906080820190565b612afb9061347c565b610383578438612a73565b612b2091935060203d602011610c5757610c4881836134e4565b91386127dc565b60018601546001600160a01b031691506127a3565b612b459061347c565b610374578638612722565b50346103aa5760206003193601126103aa5767ffffffffffffffff60406020926001600160a01b03612b80613382565b16815260708452205416604051908152f35b50346103aa5760206003193601126103aa576020612bae613382565b6001600160a01b038060655416911614604051908152f35b50346103aa57806003193601126103aa57604051604081019080821067ffffffffffffffff831117610c9957612c3791604052600581527f322e302e3100000000000000000000000000000000000000000000000000000060208201526040519182916020835260208301906133ee565b0390f35b50346103aa576101606003193601126103aa57612c56613398565b60407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c36011261039b57612c886133ae565b9060e435916001600160a01b03808416840361308d57610104359281841680940361308d57612cbc60ff6067541615613655565b81811691828752602096606b8852604081205492612cdf6044359485101561430b565b8260685416612cec614539565b813b15610ef35760405163540b05bb60e11b81526001600160a01b039182166004820152602481018790529216604483015282908290606490829084905af1801561037857908291613079575b505060248883606854166040519283809263161acb4760e01b82528960048301525afa90811561037857908391839161305c575b501696612d7b881515614356565b6066546040513060601b6bffffffffffffffffffffffff19168b82019081526014810192909252466034830152612db5816054840161081b565b51902097604051968a88018a81526bffffffffffffffffffffffff198260601b1660408a0152610124359889605482015260548152612df3816134ac565b5190207fffffffff0000000000000000000000000000000000000000000000000000000060448d7f3332292900000000000000000000000000000000000000000000000000000000606060405192612e4a846134ac565b8484528301927f756e73796e74686573697a652875696e743235362c627974657333322c62797484527f657333322c616464726573732c75696e743235362c28696e74382c627974657360408201520152201692604051938d850152600435602485015281604485015260643560648501528060848501528760a4850152612ed460c48501614402565b60e4845261012084019184831067ffffffffffffffff841117610c99578b888f858d958d8460408e606a6004978f6101c090612f9e9f8652612f158a613490565b8c8a5261014081019c8d52610160810197885261018081019889526101a081019e8f52019b60018d52835252209351169573ffffffffffffffffffffffffffffffffffffffff19968785541617845585600185019151168782541617905551600283015583600383019151168582541617905501935116908354161782555190610aac8261345c565b612fa96066546143d5565b6066558460675460081c1691823b156103835791889391858094612fe360405197889687958694633675e4e160e11b8652600486016142d6565b03925af1801561037857613048575b50507fb22f66d5cb4d958c8beec99f61917824d407a74d4514d8d44cc77247e67a4e5a9160a091613021614539565b1693604051918883526130358a8401614402565b60608301526080820152a4604051908152f35b613052829161347c565b6103aa5780612ff2565b61307391508a3d8c11610c5757610c4881836134e4565b38612d6d565b6130829061347c565b6103aa578038612d39565b600080fd5b50346103aa5760406003193601126103aa577f7ebf0a93cdc35d5dc914fb449261344b6a8925da9ee6329d771e00fa1afc8ef660206130cf613382565b602435906001600160a01b03906130ed8260335416836103e0614539565b16845260718252806040852055604051908152a180f35b50346103aa57806003193601126103aa577f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa60206001600160a01b036131518160335416826103e0614539565b60ff1960675416606755612187614539565b50346103aa5760e06003193601126103aa57602435613180613340565b613188613356565b61319061336c565b90606754926131a260ff851615613655565b6131bb6001600160a01b039485339160081c161461360a565b8560405192602093848101906132078161081b468a8d30908892606894929184526bffffffffffffffffffffffff19809260601b16602085015260601b16603483015260488201520190565b5190209081835260698552613228600160ff6040862054166114cf8161345c565b8183526069855260408320600260ff198254161790557fffffffff00000000000000000000000000000000000000000000000000000000613267614277565b868151910120169160405192868401526004356024840152604483015260448252613291826134ac565b8660675460081c1690813b15610ef357836132c79560405196879586948593633675e4e160e11b855260843592600486016142d6565b03925af180156113995761332d575b507f5a297b2c9a9f94a0f4e5a796c74ad38e219d1185fccf5f79c18726a830c2b6f56040519185835260c43592a216907f9bc8099e19706f253ae634ef1a5fb6ef84b4748c2183472905b9b2511cfa86178380a380f35b6133399095919561347c565b93386132d6565b604435906001600160a01b038216820361308d57565b606435906001600160a01b038216820361308d57565b60a435906001600160a01b038216820361308d57565b600435906001600160a01b038216820361308d57565b602435906001600160a01b038216820361308d57565b60c435906001600160a01b038216820361308d57565b608435906001600160a01b038216820361308d57565b35906001600160a01b038216820361308d57565b919082519283825260005b84811061341a575050601f19601f8460006020809697860101520116010190565b6020818301810151848301820152016133f9565b9181601f8401121561308d5782359167ffffffffffffffff831161308d576020838186019501011161308d57565b6003111561346657565b634e487b7160e01b600052602160045260246000fd5b67ffffffffffffffff8111610c9957604052565b60c0810190811067ffffffffffffffff821117610c9957604052565b6080810190811067ffffffffffffffff821117610c9957604052565b6060810190811067ffffffffffffffff821117610c9957604052565b90601f601f19910116810190811067ffffffffffffffff821117610c9957604052565b67ffffffffffffffff8111610c9957601f01601f191660200190565b81601f8201121561308d5780359061353a82613507565b9261354860405194856134e4565b8284526020838301011161308d57816000926020809301838601378301015290565b1561357157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b603354906001600160a01b03809116918273ffffffffffffffffffffffffffffffffffffffff19821617603355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b1561361157565b606460405162461bcd60e51b815260206004820152601e60248201527f53796d623a2063616c6c6572206973206e6f74207468652062726964676500006044820152fd5b1561365c57565b606460405162461bcd60e51b815260206004820152600c60248201527f53796d623a2070617573656400000000000000000000000000000000000000006044820152fd5b156136a757565b60a460405162461bcd60e51b815260206004820152604d60248201527f53796d623a2072657665727453796e74686573697a656452657175657374206360448201527f616c6c6564206f7220746f6b656e732068617665206265656e20616c7265616460648201527f792073796e74686573697a6564000000000000000000000000000000000000006084820152fd5b9081602091031261308d57516001600160a01b038116810361308d5790565b1561375d57565b608460405162461bcd60e51b815260206004820152603460248201527f53796d623a205468657265206973206e6f2073796e7420726570726573656e7460448201527f6174696f6e20666f72207468697320746f6b656e0000000000000000000000006064820152fd5b919082039182116137d457565b634e487b7160e01b600052601160045260246000fd5b6060810151906000918252606960205261380e60ff604084205416611a0f8161345c565b60608101518252606960209081526040808420805460ff19166001179055606854608084015160a08501519251630283448560e51b81526001600160a01b039182166004820152602481019390935216939181604481875afa908115610378578291613be1575b5061388a6001600160a01b0382161515613756565b602083019361389c85518551906137c7565b90803b15610ef3576040516339240a7f60e21b80825230600483015260248201939093526001600160a01b03841660448201529084908290606490829084905af18015611bbf57613bce575b506001600160a01b03606854166001600160a01b0360675460081c16855192823b15610c1e576040519081526001600160a01b03918216600482015260248101939093528316604483015283908290606490829084905af1801561039f57908391613bba575b505061395d84518451906137c7565b80855260e08401515115613b9d5750613984906001600160a01b03606c5416855191613c00565b6001600160a01b03606c5416803b1561039b578160405180927f3bc7883500000000000000000000000000000000000000000000000000000000825260206004830152855160248301528651604483015260408601516064830152606086015160848301526001600160a01b0360808701511660a483015260a086015160c48301526001600160a01b0360c08701511660e483015260e08601516101a06101048401526101c48301815180915260206101e48501920190855b818110613b78575050508383613acb81936001600160a01b036101008c015116610124840152613a9f6101208c0151917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc9283868303016101448701526133ee565b906001600160a01b036101408d0151166101648501526101608c015190848303016101848501526133ee565b6101808a01516101a483015203925af1801561037857613b64575b505060608101517f1f3f0f3c7b2df480755c6486a132f215e7b2b89fcca0beecd95a9696c71789b66001600160a01b0360c0840151169260408101519451613b5f6001600160a01b036080845194015116604051938493849160409194936001600160a01b039160608501968552602085015216910152565b0390a4565b613b6e829161347c565b6103aa5780613ae6565b82516001600160a01b0316845288965087955060209384019390920191600101613a3d565b60c090930151613bb894506001600160a01b03169150613c00565b565b613bc39061347c565b61039b57813861394e565b613bda9093919361347c565b91386138e8565b613bfa915060203d602011610c5757610c4881836134e4565b38613875565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082019081526001600160a01b039093166024820152604481019390935291613c51816064810161081b565b600092839283809351925af1903d15613d41573d90613c6f82613507565b91613c7d60405193846134e4565b82523d81602084013e5b82613d00575b505015613c9657565b608460405162461bcd60e51b815260206004820152602d60248201527f5472616e7366657248656c7065723a3a736166655472616e736665723a20747260448201527f616e73666572206661696c6564000000000000000000000000000000000000006064820152fd5b9080925051918215928315613d1a575b5050503880613c8d565b81929350906020918101031261039b57602001519081151582036103aa5750388080613d10565b606090613c87565b613dde906080810190815190600091825260209260698452604090613d7760ff8386205416611a0f8161345c565b8051845260698552818420600160ff198254161790556001600160a01b03908160685416948660a0860196848851169060c0880151918751809c81948293630283448560e51b845260048401602090939291936001600160a01b0360408201951681520152565b03915afa9788156141fa5781986141db575b50828816613dff811515613756565b838751168252606f885267ffffffffffffffff988986842054168a87890151160361419857848851168352606f8952613e3c8a87852054166144ae565b858951168452606f8a528a878520911667ffffffffffffffff198254161790558460685416998988019a613e738c518a51906137c7565b90803b15610c1e5788516339240a7f60e21b80825230600483015260248201939093526001600160a01b03851660448201529086908290606490829084905af1801561418e5761417b575b5086606854168760675460081c168a5192823b156124dd578a519081526001600160a01b03918216600482015260248101939093528416604483015285908290606490829084905af180156141715791858d928d94614155575b505086519060e08b019b898d51169351918b8d0151168a8d51925116958c519384528301528a82015260607fb6aa44f5b2e6d2030650d5514f6aa3c822cd88ce23e51fe20f6570837f02042b91a489518751613f73916137c7565b90818b526101208801918251511561413d5750613f979086606c54168c5191613c00565b84606c5416908a5191866101008a0151169151926101408a0151888c5116833b156124dd57918787819694938296946140158f519a8b98899788967ff5b697a500000000000000000000000000000000000000000000000000000000885260048801526024870152604486015260c0606486015260c48501906133ee565b91608484015260a483015203925af19182614129575b50506140f95783606c54169084885116908a5192803b1561038357849291836064928a5196879586947f62770ff80000000000000000000000000000000000000000000000000000000086526004860152602485015260448401525af180156140ef576140db575b50506060927f1f3f0f3c7b2df480755c6486a132f215e7b2b89fcca0beecd95a9696c71789b694926000925b51965116968484015198519351908251948552840152820152a4565b6140e5829161347c565b6103aa5780614093565b85513d84823e3d90fd5b50506060927f1f3f0f3c7b2df480755c6486a132f215e7b2b89fcca0beecd95a9696c71789b694926000926140bf565b6141329061347c565b6113ea57823861402b565b9950979550505050509150613bb89450511690613c00565b90925061416391935061347c565b610ef3578a8a918538613f18565b88513d87823e3d90fd5b6141879095919561347c565b9338613ebe565b89513d88823e3d90fd5b60648987519062461bcd60e51b82526004820152601f60248201527f53796d623a206e6f6e73657175656e7469616c206d696e742073657269616c006044820152fd5b6141f3919850873d8911610c5757610c4881836134e4565b9638613df0565b508351903d90823e3d90fd5b1561420d57565b608460405162461bcd60e51b815260206004820152602560248201527f53796d623a2073796e74686574696320746f6b656e7320616c7265616479206d60448201527f696e7465640000000000000000000000000000000000000000000000000000006064820152fd5b60405190614284826134c8565b602182527f29000000000000000000000000000000000000000000000000000000000000006040837f72657665727453796e74686573697a652875696e743235362c6279746573333260208201520152565b90916142f0606093969594966080845260808401906133ee565b956001600160a01b0380921660208401521660408201520152565b1561431257565b606460405162461bcd60e51b815260206004820152601c60248201527f53796d623a20616d6f756e7420756e646572207468726573686f6c64000000006044820152fd5b1561435d57565b606460405162461bcd60e51b815260206004820152601460248201527f53796d623a20696e636f72726563742073796e740000000000000000000000006044820152fd5b906143ab8161345c565b60ff60a01b1974ff000000000000000000000000000000000000000083549260a01b169116179055565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146137d45760010190565b6084358060000b80910361308d578152602060a435910152565b601f8260209493601f19938186528686013760008582860101520116010190565b1561444457565b608460405162461bcd60e51b815260206004820152602960248201527f53796d623a207374617465206e6f74206f70656e206f7220747820646f65732060448201527f6e6f7420657869737400000000000000000000000000000000000000000000006064820152fd5b600167ffffffffffffffff809216018181116137d4571690565b156144cf57565b608460405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152fd5b6001600160a01b03606554163314600014614578577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90565b339056fea2646970667358221220ce1f8bbec26d79a0e4d256f13564d91c5ed637ea8f88088b6f671874f2c60f8164736f6c63430008130033