Mainnet
Testnet

Contract

0x79599de6C077D25540A975d5056D17776aE3f040

Overview

Balance:
0 WBT
WBT Value:
0 USDT (@ 46.91/WBT)

More info

Contract creator:
Contract Source Code Verified (Exact Match)
Note: ByteCode deployed for this contract is identical to source code.

Contract Name:

ETHRegistrarController

Compiler Version:

0.8.17+commit.8df45f5f

EVM Version:

london evmVersion

Optimizations:

Enabled with 1200 runs

License:

MIT License (MIT)

Contract source code and ABI

Constructor arguments

00000000000000000000000085c0246e99556abc1daa573ff96be91d10a5f2a70000000000000000000000009cb4eb477966bcef2736e6d348d986110773a753000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000015180000000000000000000000000cc81c8d3353fe654d189522ac853d79a5528194e000000000000000000000000cef341b5f58888e58651149bfe2cba5818ff37470000000000000000000000004a384971fbbb4fa3c6495ffe8203bc44d76c94db000000000000000000000000ab5abda08e5f80fcb8b13765c46398616ada37bd0000000000000000000000000000000000000000000000000000000000000002

Creation bytecode

0x6101406040523480156200001257600080fd5b5060405162002a4238038062002a4283398101604081905262000035916200023f565b82336200004281620001d6565b6040516302571be360e01b81527f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260048201526000906001600160a01b038416906302571be390602401602060405180830381865afa158015620000aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000d09190620002f3565b604051630f41a04d60e11b81526001600160a01b03848116600483015291925090821690631e83409a906024016020604051808303816000875af11580156200011d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014391906200031a565b5050505086861162000168576040516307cb550760e31b815260040160405180910390fd5b428611156200018a57604051630b4319e560e21b815260040160405180910390fd5b6001600160a01b0398891660805296881660a05260c0959095525060e092909252841661010052831661012052600280546001600160a01b031916919093161790915560015562000334565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146200023c57600080fd5b50565b60008060008060008060008060006101208a8c0312156200025f57600080fd5b89516200026c8162000226565b60208b01519099506200027f8162000226565b8098505060408a0151965060608a0151955060808a0151620002a18162000226565b60a08b0151909550620002b48162000226565b60c08b0151909450620002c78162000226565b60e08b0151909350620002da8162000226565b809250506101008a015190509295985092959850929598565b6000602082840312156200030657600080fd5b8151620003138162000226565b9392505050565b6000602082840312156200032d57600080fd5b5051919050565b60805160a05160c05160e0516101005161012051612671620003d1600039600081816104550152818161079201528181610d65015261137f01526000818161032d01526119c50152600081816104d20152818161101301526117f30152600081816103c3015261177c01526000818161050601528181610afd0152610c38015260008181610b3201528181610c6d0152610eb201526126716000f3fe6080604052600436106101ac5760003560e01c80638a95b09f116100ec578063aeb8ce9b1161008a578063d3419bf311610064578063d3419bf3146104f4578063df0a564a14610528578063f14fcbc814610548578063f2fde38b1461056857600080fd5b8063aeb8ce9b1461048a578063b0a8d904146104aa578063ce1e09c0146104c057600080fd5b80639791c097116100c65780639791c09714610403578063a1495acb14610423578063a8e5fbc014610443578063acf1a8411461047757600080fd5b80638a95b09f1461039c5780638d839ffe146103b15780638da5cb5b146103e557600080fd5b806365a69dcf116101595780637ccc5643116101335780637ccc5643146102e0578063808698531461031b578063839df9451461034f57806383e7f6ff1461037c57600080fd5b806365a69dcf1461028a578063715018a6146102b857806374694a2b146102cd57600080fd5b80633ccfd60b1161018a5780633ccfd60b1461021d5780635d3590d5146102325780635e20a7a51461025257600080fd5b806301ffc9a7146101b1578063298821c1146101e657806337c2d66b146101fd575b600080fd5b3480156101bd57600080fd5b506101d16101cc366004611b9a565b610588565b60405190151581526020015b60405180910390f35b3480156101f257600080fd5b506101fb6105f1565b005b34801561020957600080fd5b506101fb610218366004611c0d565b6106a7565b34801561022957600080fd5b506101fb610852565b34801561023e57600080fd5b506101fb61024d366004611c7a565b61088f565b34801561025e57600080fd5b50600254610272906001600160a01b031681565b6040516001600160a01b0390911681526020016101dd565b34801561029657600080fd5b506102aa6102a5366004611de0565b610910565b6040519081526020016101dd565b3480156102c457600080fd5b506101fb6109ae565b6101fb6102db366004611ea1565b6109c2565b3480156102ec57600080fd5b506103006102fb366004611f6b565b610acc565b604080518251815260209283015192810192909252016101dd565b34801561032757600080fd5b506102727f000000000000000000000000000000000000000000000000000000000000000081565b34801561035b57600080fd5b506102aa61036a366004611fb0565b60036020526000908152604090205481565b34801561038857600080fd5b50610300610397366004611f6b565b610c07565b3480156103a857600080fd5b506102aa600181565b3480156103bd57600080fd5b506102aa7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103f157600080fd5b506000546001600160a01b0316610272565b34801561040f57600080fd5b506101d161041e366004611fc9565b610c9e565b34801561042f57600080fd5b506101fb61043e366004611fb0565b610cb4565b34801561044f57600080fd5b506102727f000000000000000000000000000000000000000000000000000000000000000081565b6101fb610485366004611ffe565b610cc1565b34801561049657600080fd5b506101d16104a5366004611fc9565b610e69565b3480156104b657600080fd5b506102aa60015481565b3480156104cc57600080fd5b506102aa7f000000000000000000000000000000000000000000000000000000000000000081565b34801561050057600080fd5b506102727f000000000000000000000000000000000000000000000000000000000000000081565b34801561053457600080fd5b506101fb61054336600461204a565b610f2c565b34801561055457600080fd5b506101fb610563366004611fb0565b610ffc565b34801561057457600080fd5b506101fb61058336600461211c565b61108a565b60006001600160e01b031982167f01ffc9a70000000000000000000000000000000000000000000000000000000014806105eb57506001600160e01b031982167f612e8c0900000000000000000000000000000000000000000000000000000000145b92915050565b6002546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b039091169060009082906370a0823190602401602060405180830381865afa158015610657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067b9190612137565b90506106a36106926000546001600160a01b031690565b6001600160a01b0384169083611117565b5050565b600084846040516106b9929190612150565b604080519182900382206020601f88018190048102840181019092528683529250829160009161070691908990899081908401838280828437600092019190915250899250610acc915050565b6020810151815191925061071991612176565b8410156107395760405163044044a560e21b815260040160405180910390fd5b600254602082015182516001600160a01b0390921691610772913391309161076091612176565b6001600160a01b038516929190611194565b60405163c475abff60e01b815260048101849052602481018790526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c475abff906044016020604051808303816000875af11580156107e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108079190612137565b9050847f3da24c024582931cfaf8267d8ed24d13a82a8068d5bd337d30ec45cea4e506ae8a8a898560405161083f94939291906121b2565b60405180910390a2505050505050505050565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f1935050505015801561088c573d6000803e3d6000fd5b50565b6108976111e5565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af11580156108e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090a91906121d9565b50505050565b885160208a0120600090841580159061093057506001600160a01b038716155b15610967576040517fd3f605c400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808a8a8a8a8a8a8a8a60405160200161098899989796959493929190612288565b604051602081830303815290604052805190602001209150509998505050505050505050565b6109b66111e5565b6109c0600061123f565b565b6000610a058b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250610c07915050565b60208101518151919250610a1891612176565b341015610a385760405163044044a560e21b815260040160405180910390fd5b6000610a4c8c8c8c8c8c8c8c8c8c8c6112a7565b9050610a5b8c8c8c8585611484565b60208201518251610a6c9190612176565b341115610abe576020820151825133916108fc91610a8a9190612176565b610a9490346122ea565b6040518115909202916000818181858888f19350505050158015610abc573d6000803e3d6000fd5b505b505050505050505050505050565b604080518082019091526000808252602082015282516020840120604051636b727d4360e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081169163b86360c69187917f00000000000000000000000000000000000000000000000000000000000000009091169063d6e4fa86906024015b602060405180830381865afa158015610b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba09190612137565b866040518463ffffffff1660e01b8152600401610bbf9392919061234d565b6040805180830381865afa158015610bdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bff9190612372565b949350505050565b604080518082019091526000808252602082015282516020840120604051636b727d4360e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116916350e9a7159187917f00000000000000000000000000000000000000000000000000000000000000009091169063d6e4fa8690602401610b5f565b6000600154610cac836114f1565b101592915050565b610cbc6111e5565b600155565b60008383604051610cd3929190612150565b604080519182900382206020601f870181900481028401810190925285835292508291600091610d2091908890889081908401838280828437600092019190915250889250610c07915050565b8051909150341015610d455760405163044044a560e21b815260040160405180910390fd5b60405163c475abff60e01b815260048101839052602481018590526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c475abff906044016020604051808303816000875af1158015610db6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dda9190612137565b8251909150341115610e2257815133906108fc90610df890346122ea565b6040518115909202916000818181858888f19350505050158015610e20573d6000803e3d6000fd5b505b837f3da24c024582931cfaf8267d8ed24d13a82a8068d5bd337d30ec45cea4e506ae88883485604051610e5894939291906121b2565b60405180910390a250505050505050565b80516020820120600090610e7c83610c9e565b8015610f2557506040517f96e494e8000000000000000000000000000000000000000000000000000000008152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906396e494e890602401602060405180830381865afa158015610f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2591906121d9565b9392505050565b6000610f6f8c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250610acc915050565b60208101518151919250610f8291612176565b821015610fa25760405163044044a560e21b815260040160405180910390fd5b600254602082015182516001600160a01b0390921691610fc9913391309161076091612176565b6000610fdd8e8e8e8e8e8e8e8e8e8e6112a7565b9050610fec8e8e8e8685611484565b5050505050505050505050505050565b6000818152600360205260409020544290611038907f000000000000000000000000000000000000000000000000000000000000000090612176565b10611077576040517f0a059d71000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b6000908152600360205260409020429055565b6110926111e5565b6001600160a01b03811661110e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161106e565b61088c8161123f565b6040516001600160a01b03831660248201526044810182905261118f90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b031990931692909217909152611680565b505050565b6040516001600160a01b038085166024830152831660448201526064810182905261090a9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611143565b6000546001600160a01b031633146109c05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161106e565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061134c8b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050896113478e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508d8d8d8d8d8d8d8d610910565b611765565b6040517fa40149820000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a4014982906113be908f908f908f908f908e908b906004016123c1565b6020604051808303816000875af11580156113dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114019190612137565b9050841561142c5761142c878d8d60405161141d929190612150565b604051809103902088886118e0565b8315611475576114758c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b92503391506119c39050565b9b9a5050505050505050505050565b826001600160a01b0316858560405161149e929190612150565b6040519081900381208451602086015191927f69e37f151eb98a09618ddaa80c8cfaf1ce5996867c489f45b555b412271ebf27926114e2928b928b9290899061240b565b60405180910390a35050505050565b8051600090819081905b808210156116775760008583815181106115175761151761243c565b01602001516001600160f81b03191690507f80000000000000000000000000000000000000000000000000000000000000008110156115625761155b600184612176565b9250611664565b7fe0000000000000000000000000000000000000000000000000000000000000006001600160f81b03198216101561159f5761155b600284612176565b7ff0000000000000000000000000000000000000000000000000000000000000006001600160f81b0319821610156115dc5761155b600384612176565b7ff8000000000000000000000000000000000000000000000000000000000000006001600160f81b0319821610156116195761155b600484612176565b7ffc000000000000000000000000000000000000000000000000000000000000006001600160f81b0319821610156116565761155b600584612176565b611661600684612176565b92505b508261166f81612452565b9350506114fb565b50909392505050565b60006116d5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611a779092919063ffffffff16565b80519091501561118f57808060200190518101906116f391906121d9565b61118f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161106e565b60008181526003602052604090205442906117a1907f000000000000000000000000000000000000000000000000000000000000000090612176565b11156117dc576040517f5320bcf90000000000000000000000000000000000000000000000000000000081526004810182905260240161106e565b6000818152600360205260409020544290611818907f000000000000000000000000000000000000000000000000000000000000000090612176565b11611852576040517fcb7690d70000000000000000000000000000000000000000000000000000000081526004810182905260240161106e565b61185b83610e69565b61189357826040517f477707e800000000000000000000000000000000000000000000000000000000815260040161106e919061246b565b600081815260036020526040812055600182101561118f576040517f9a71997b0000000000000000000000000000000000000000000000000000000081526004810183905260240161106e565b604080517ffc97184b4cad3ee23a98f70b5e40845bfde0e68147e57dfac1d04a3016c10a5d602080830191909152818301869052825180830384018152606083019384905280519101207fe32954eb0000000000000000000000000000000000000000000000000000000090925285906001600160a01b0382169063e32954eb906119739085908890889060640161247e565b6000604051808303816000875af1158015611992573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119ba91908101906124a1565b50505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637a806d6b33838587604051602001611a0691906125a0565b6040516020818303038152906040526040518563ffffffff1660e01b8152600401611a3494939291906125e1565b6020604051808303816000875af1158015611a53573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090a9190612137565b6060610bff848460008585600080866001600160a01b03168587604051611a9e919061261f565b60006040518083038185875af1925050503d8060008114611adb576040519150601f19603f3d011682016040523d82523d6000602084013e611ae0565b606091505b5091509150611af187838387611afc565b979650505050505050565b60608315611b6b578251600003611b64576001600160a01b0385163b611b645760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161106e565b5081610bff565b610bff8383815115611b805781518083602001fd5b8060405162461bcd60e51b815260040161106e919061246b565b600060208284031215611bac57600080fd5b81356001600160e01b031981168114610f2557600080fd5b60008083601f840112611bd657600080fd5b50813567ffffffffffffffff811115611bee57600080fd5b602083019150836020828501011115611c0657600080fd5b9250929050565b60008060008060608587031215611c2357600080fd5b843567ffffffffffffffff811115611c3a57600080fd5b611c4687828801611bc4565b90989097506020870135966040013595509350505050565b80356001600160a01b0381168114611c7557600080fd5b919050565b600080600060608486031215611c8f57600080fd5b611c9884611c5e565b9250611ca660208501611c5e565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611cf557611cf5611cb6565b604052919050565b600067ffffffffffffffff821115611d1757611d17611cb6565b50601f01601f191660200190565b600082601f830112611d3657600080fd5b8135611d49611d4482611cfd565b611ccc565b818152846020838601011115611d5e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008083601f840112611d8d57600080fd5b50813567ffffffffffffffff811115611da557600080fd5b6020830191508360208260051b8501011115611c0657600080fd5b801515811461088c57600080fd5b803561ffff81168114611c7557600080fd5b60008060008060008060008060006101008a8c031215611dff57600080fd5b893567ffffffffffffffff80821115611e1757600080fd5b611e238d838e01611d25565b9a50611e3160208d01611c5e565b995060408c0135985060608c01359750611e4d60808d01611c5e565b965060a08c0135915080821115611e6357600080fd5b50611e708c828d01611d7b565b90955093505060c08a0135611e8481611dc0565b9150611e9260e08b01611dce565b90509295985092959850929598565b6000806000806000806000806000806101008b8d031215611ec157600080fd5b8a3567ffffffffffffffff80821115611ed957600080fd5b611ee58e838f01611bc4565b909c509a508a9150611ef960208e01611c5e565b995060408d0135985060608d01359750611f1560808e01611c5e565b965060a08d0135915080821115611f2b57600080fd5b50611f388d828e01611d7b565b90955093505060c08b0135611f4c81611dc0565b9150611f5a60e08c01611dce565b90509295989b9194979a5092959850565b60008060408385031215611f7e57600080fd5b823567ffffffffffffffff811115611f9557600080fd5b611fa185828601611d25565b95602094909401359450505050565b600060208284031215611fc257600080fd5b5035919050565b600060208284031215611fdb57600080fd5b813567ffffffffffffffff811115611ff257600080fd5b610bff84828501611d25565b60008060006040848603121561201357600080fd5b833567ffffffffffffffff81111561202a57600080fd5b61203686828701611bc4565b909790965060209590950135949350505050565b60008060008060008060008060008060006101208c8e03121561206c57600080fd5b67ffffffffffffffff808d35111561208357600080fd5b6120908e8e358f01611bc4565b909c509a506120a160208e01611c5e565b995060408d0135985060608d013597506120bd60808e01611c5e565b96508060a08e013511156120d057600080fd5b506120e18d60a08e01358e01611d7b565b909550935060c08c01356120f481611dc0565b925061210260e08d01611dce565b91506101008c013590509295989b509295989b9093969950565b60006020828403121561212e57600080fd5b610f2582611c5e565b60006020828403121561214957600080fd5b5051919050565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156105eb576105eb612160565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006121c6606083018688612189565b6020830194909452506040015292915050565b6000602082840312156121eb57600080fd5b8151610f2581611dc0565b81835260006020808501808196508560051b810191508460005b8781101561227b5782840389528135601e1988360301811261223157600080fd5b8701858101903567ffffffffffffffff81111561224d57600080fd5b80360382131561225c57600080fd5b612267868284612189565b9a87019a9550505090840190600101612210565b5091979650505050505050565b60006101008b83526001600160a01b03808c1660208501528a60408501528960608501528089166080850152508060a08401526122c881840187896121f6565b94151560c0840152505061ffff9190911660e090910152979650505050505050565b818103818111156105eb576105eb612160565b60005b83811015612318578181015183820152602001612300565b50506000910152565b600081518084526123398160208601602086016122fd565b601f01601f19169290920160200192915050565b6060815260006123606060830186612321565b60208301949094525060400152919050565b60006040828403121561238457600080fd5b6040516040810181811067ffffffffffffffff821117156123a7576123a7611cb6565b604052825181526020928301519281019290925250919050565b60a0815260006123d560a08301888a612189565b90506001600160a01b03808716602084015285604084015280851660608401525061ffff83166080830152979650505050505050565b60808152600061241f608083018789612189565b602083019590955250604081019290925260609091015292915050565b634e487b7160e01b600052603260045260246000fd5b60006001820161246457612464612160565b5060010190565b602081526000610f256020830184612321565b8381526040602082015260006124986040830184866121f6565b95945050505050565b600060208083850312156124b457600080fd5b825167ffffffffffffffff808211156124cc57600080fd5b818501915085601f8301126124e057600080fd5b8151818111156124f2576124f2611cb6565b8060051b612501858201611ccc565b918252838101850191858101908984111561251b57600080fd5b86860192505b83831015612593578251858111156125395760008081fd5b8601603f81018b1361254b5760008081fd5b87810151604061255d611d4483611cfd565b8281528d828486010111156125725760008081fd5b612581838c83018487016122fd565b85525050509186019190860190612521565b9998505050505050505050565b600082516125b28184602087016122fd565b7f2e77627400000000000000000000000000000000000000000000000000000000920191825250600401919050565b60006001600160a01b0380871683528086166020840152808516604084015250608060608301526126156080830184612321565b9695505050505050565b600082516126318184602087016122fd565b919091019291505056fea2646970667358221220dfcddf660493e7c52cf7c8aedf30324cb7a0ce39bdc42110633050213f43c27564736f6c6343000811003300000000000000000000000085c0246e99556abc1daa573ff96be91d10a5f2a70000000000000000000000009cb4eb477966bcef2736e6d348d986110773a753000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000015180000000000000000000000000cc81c8d3353fe654d189522ac853d79a5528194e000000000000000000000000cef341b5f58888e58651149bfe2cba5818ff37470000000000000000000000004a384971fbbb4fa3c6495ffe8203bc44d76c94db000000000000000000000000ab5abda08e5f80fcb8b13765c46398616ada37bd0000000000000000000000000000000000000000000000000000000000000002

Deployed bytecode

0x6080604052600436106101ac5760003560e01c80638a95b09f116100ec578063aeb8ce9b1161008a578063d3419bf311610064578063d3419bf3146104f4578063df0a564a14610528578063f14fcbc814610548578063f2fde38b1461056857600080fd5b8063aeb8ce9b1461048a578063b0a8d904146104aa578063ce1e09c0146104c057600080fd5b80639791c097116100c65780639791c09714610403578063a1495acb14610423578063a8e5fbc014610443578063acf1a8411461047757600080fd5b80638a95b09f1461039c5780638d839ffe146103b15780638da5cb5b146103e557600080fd5b806365a69dcf116101595780637ccc5643116101335780637ccc5643146102e0578063808698531461031b578063839df9451461034f57806383e7f6ff1461037c57600080fd5b806365a69dcf1461028a578063715018a6146102b857806374694a2b146102cd57600080fd5b80633ccfd60b1161018a5780633ccfd60b1461021d5780635d3590d5146102325780635e20a7a51461025257600080fd5b806301ffc9a7146101b1578063298821c1146101e657806337c2d66b146101fd575b600080fd5b3480156101bd57600080fd5b506101d16101cc366004611b9a565b610588565b60405190151581526020015b60405180910390f35b3480156101f257600080fd5b506101fb6105f1565b005b34801561020957600080fd5b506101fb610218366004611c0d565b6106a7565b34801561022957600080fd5b506101fb610852565b34801561023e57600080fd5b506101fb61024d366004611c7a565b61088f565b34801561025e57600080fd5b50600254610272906001600160a01b031681565b6040516001600160a01b0390911681526020016101dd565b34801561029657600080fd5b506102aa6102a5366004611de0565b610910565b6040519081526020016101dd565b3480156102c457600080fd5b506101fb6109ae565b6101fb6102db366004611ea1565b6109c2565b3480156102ec57600080fd5b506103006102fb366004611f6b565b610acc565b604080518251815260209283015192810192909252016101dd565b34801561032757600080fd5b506102727f000000000000000000000000cc81c8d3353fe654d189522ac853d79a5528194e81565b34801561035b57600080fd5b506102aa61036a366004611fb0565b60036020526000908152604090205481565b34801561038857600080fd5b50610300610397366004611f6b565b610c07565b3480156103a857600080fd5b506102aa600181565b3480156103bd57600080fd5b506102aa7f000000000000000000000000000000000000000000000000000000000000003c81565b3480156103f157600080fd5b506000546001600160a01b0316610272565b34801561040f57600080fd5b506101d161041e366004611fc9565b610c9e565b34801561042f57600080fd5b506101fb61043e366004611fb0565b610cb4565b34801561044f57600080fd5b506102727f000000000000000000000000cef341b5f58888e58651149bfe2cba5818ff374781565b6101fb610485366004611ffe565b610cc1565b34801561049657600080fd5b506101d16104a5366004611fc9565b610e69565b3480156104b657600080fd5b506102aa60015481565b3480156104cc57600080fd5b506102aa7f000000000000000000000000000000000000000000000000000000000001518081565b34801561050057600080fd5b506102727f0000000000000000000000009cb4eb477966bcef2736e6d348d986110773a75381565b34801561053457600080fd5b506101fb61054336600461204a565b610f2c565b34801561055457600080fd5b506101fb610563366004611fb0565b610ffc565b34801561057457600080fd5b506101fb61058336600461211c565b61108a565b60006001600160e01b031982167f01ffc9a70000000000000000000000000000000000000000000000000000000014806105eb57506001600160e01b031982167f612e8c0900000000000000000000000000000000000000000000000000000000145b92915050565b6002546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b039091169060009082906370a0823190602401602060405180830381865afa158015610657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067b9190612137565b90506106a36106926000546001600160a01b031690565b6001600160a01b0384169083611117565b5050565b600084846040516106b9929190612150565b604080519182900382206020601f88018190048102840181019092528683529250829160009161070691908990899081908401838280828437600092019190915250899250610acc915050565b6020810151815191925061071991612176565b8410156107395760405163044044a560e21b815260040160405180910390fd5b600254602082015182516001600160a01b0390921691610772913391309161076091612176565b6001600160a01b038516929190611194565b60405163c475abff60e01b815260048101849052602481018790526000907f000000000000000000000000cef341b5f58888e58651149bfe2cba5818ff37476001600160a01b03169063c475abff906044016020604051808303816000875af11580156107e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108079190612137565b9050847f3da24c024582931cfaf8267d8ed24d13a82a8068d5bd337d30ec45cea4e506ae8a8a898560405161083f94939291906121b2565b60405180910390a2505050505050505050565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f1935050505015801561088c573d6000803e3d6000fd5b50565b6108976111e5565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af11580156108e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090a91906121d9565b50505050565b885160208a0120600090841580159061093057506001600160a01b038716155b15610967576040517fd3f605c400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808a8a8a8a8a8a8a8a60405160200161098899989796959493929190612288565b604051602081830303815290604052805190602001209150509998505050505050505050565b6109b66111e5565b6109c0600061123f565b565b6000610a058b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250610c07915050565b60208101518151919250610a1891612176565b341015610a385760405163044044a560e21b815260040160405180910390fd5b6000610a4c8c8c8c8c8c8c8c8c8c8c6112a7565b9050610a5b8c8c8c8585611484565b60208201518251610a6c9190612176565b341115610abe576020820151825133916108fc91610a8a9190612176565b610a9490346122ea565b6040518115909202916000818181858888f19350505050158015610abc573d6000803e3d6000fd5b505b505050505050505050505050565b604080518082019091526000808252602082015282516020840120604051636b727d4360e11b8152600481018290527f0000000000000000000000009cb4eb477966bcef2736e6d348d986110773a7536001600160a01b039081169163b86360c69187917f00000000000000000000000085c0246e99556abc1daa573ff96be91d10a5f2a79091169063d6e4fa86906024015b602060405180830381865afa158015610b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba09190612137565b866040518463ffffffff1660e01b8152600401610bbf9392919061234d565b6040805180830381865afa158015610bdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bff9190612372565b949350505050565b604080518082019091526000808252602082015282516020840120604051636b727d4360e11b8152600481018290527f0000000000000000000000009cb4eb477966bcef2736e6d348d986110773a7536001600160a01b03908116916350e9a7159187917f00000000000000000000000085c0246e99556abc1daa573ff96be91d10a5f2a79091169063d6e4fa8690602401610b5f565b6000600154610cac836114f1565b101592915050565b610cbc6111e5565b600155565b60008383604051610cd3929190612150565b604080519182900382206020601f870181900481028401810190925285835292508291600091610d2091908890889081908401838280828437600092019190915250889250610c07915050565b8051909150341015610d455760405163044044a560e21b815260040160405180910390fd5b60405163c475abff60e01b815260048101839052602481018590526000907f000000000000000000000000cef341b5f58888e58651149bfe2cba5818ff37476001600160a01b03169063c475abff906044016020604051808303816000875af1158015610db6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dda9190612137565b8251909150341115610e2257815133906108fc90610df890346122ea565b6040518115909202916000818181858888f19350505050158015610e20573d6000803e3d6000fd5b505b837f3da24c024582931cfaf8267d8ed24d13a82a8068d5bd337d30ec45cea4e506ae88883485604051610e5894939291906121b2565b60405180910390a250505050505050565b80516020820120600090610e7c83610c9e565b8015610f2557506040517f96e494e8000000000000000000000000000000000000000000000000000000008152600481018290527f00000000000000000000000085c0246e99556abc1daa573ff96be91d10a5f2a76001600160a01b0316906396e494e890602401602060405180830381865afa158015610f01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2591906121d9565b9392505050565b6000610f6f8c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250610acc915050565b60208101518151919250610f8291612176565b821015610fa25760405163044044a560e21b815260040160405180910390fd5b600254602082015182516001600160a01b0390921691610fc9913391309161076091612176565b6000610fdd8e8e8e8e8e8e8e8e8e8e6112a7565b9050610fec8e8e8e8685611484565b5050505050505050505050505050565b6000818152600360205260409020544290611038907f000000000000000000000000000000000000000000000000000000000001518090612176565b10611077576040517f0a059d71000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b6000908152600360205260409020429055565b6110926111e5565b6001600160a01b03811661110e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161106e565b61088c8161123f565b6040516001600160a01b03831660248201526044810182905261118f90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b031990931692909217909152611680565b505050565b6040516001600160a01b038085166024830152831660448201526064810182905261090a9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611143565b6000546001600160a01b031633146109c05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161106e565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061134c8b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050896113478e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508d8d8d8d8d8d8d8d610910565b611765565b6040517fa40149820000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f000000000000000000000000cef341b5f58888e58651149bfe2cba5818ff3747169063a4014982906113be908f908f908f908f908e908b906004016123c1565b6020604051808303816000875af11580156113dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114019190612137565b9050841561142c5761142c878d8d60405161141d929190612150565b604051809103902088886118e0565b8315611475576114758c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b92503391506119c39050565b9b9a5050505050505050505050565b826001600160a01b0316858560405161149e929190612150565b6040519081900381208451602086015191927f69e37f151eb98a09618ddaa80c8cfaf1ce5996867c489f45b555b412271ebf27926114e2928b928b9290899061240b565b60405180910390a35050505050565b8051600090819081905b808210156116775760008583815181106115175761151761243c565b01602001516001600160f81b03191690507f80000000000000000000000000000000000000000000000000000000000000008110156115625761155b600184612176565b9250611664565b7fe0000000000000000000000000000000000000000000000000000000000000006001600160f81b03198216101561159f5761155b600284612176565b7ff0000000000000000000000000000000000000000000000000000000000000006001600160f81b0319821610156115dc5761155b600384612176565b7ff8000000000000000000000000000000000000000000000000000000000000006001600160f81b0319821610156116195761155b600484612176565b7ffc000000000000000000000000000000000000000000000000000000000000006001600160f81b0319821610156116565761155b600584612176565b611661600684612176565b92505b508261166f81612452565b9350506114fb565b50909392505050565b60006116d5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611a779092919063ffffffff16565b80519091501561118f57808060200190518101906116f391906121d9565b61118f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161106e565b60008181526003602052604090205442906117a1907f000000000000000000000000000000000000000000000000000000000000003c90612176565b11156117dc576040517f5320bcf90000000000000000000000000000000000000000000000000000000081526004810182905260240161106e565b6000818152600360205260409020544290611818907f000000000000000000000000000000000000000000000000000000000001518090612176565b11611852576040517fcb7690d70000000000000000000000000000000000000000000000000000000081526004810182905260240161106e565b61185b83610e69565b61189357826040517f477707e800000000000000000000000000000000000000000000000000000000815260040161106e919061246b565b600081815260036020526040812055600182101561118f576040517f9a71997b0000000000000000000000000000000000000000000000000000000081526004810183905260240161106e565b604080517ffc97184b4cad3ee23a98f70b5e40845bfde0e68147e57dfac1d04a3016c10a5d602080830191909152818301869052825180830384018152606083019384905280519101207fe32954eb0000000000000000000000000000000000000000000000000000000090925285906001600160a01b0382169063e32954eb906119739085908890889060640161247e565b6000604051808303816000875af1158015611992573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119ba91908101906124a1565b50505050505050565b7f000000000000000000000000cc81c8d3353fe654d189522ac853d79a5528194e6001600160a01b0316637a806d6b33838587604051602001611a0691906125a0565b6040516020818303038152906040526040518563ffffffff1660e01b8152600401611a3494939291906125e1565b6020604051808303816000875af1158015611a53573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090a9190612137565b6060610bff848460008585600080866001600160a01b03168587604051611a9e919061261f565b60006040518083038185875af1925050503d8060008114611adb576040519150601f19603f3d011682016040523d82523d6000602084013e611ae0565b606091505b5091509150611af187838387611afc565b979650505050505050565b60608315611b6b578251600003611b64576001600160a01b0385163b611b645760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161106e565b5081610bff565b610bff8383815115611b805781518083602001fd5b8060405162461bcd60e51b815260040161106e919061246b565b600060208284031215611bac57600080fd5b81356001600160e01b031981168114610f2557600080fd5b60008083601f840112611bd657600080fd5b50813567ffffffffffffffff811115611bee57600080fd5b602083019150836020828501011115611c0657600080fd5b9250929050565b60008060008060608587031215611c2357600080fd5b843567ffffffffffffffff811115611c3a57600080fd5b611c4687828801611bc4565b90989097506020870135966040013595509350505050565b80356001600160a01b0381168114611c7557600080fd5b919050565b600080600060608486031215611c8f57600080fd5b611c9884611c5e565b9250611ca660208501611c5e565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611cf557611cf5611cb6565b604052919050565b600067ffffffffffffffff821115611d1757611d17611cb6565b50601f01601f191660200190565b600082601f830112611d3657600080fd5b8135611d49611d4482611cfd565b611ccc565b818152846020838601011115611d5e57600080fd5b816020850160208301376000918101602001919091529392505050565b60008083601f840112611d8d57600080fd5b50813567ffffffffffffffff811115611da557600080fd5b6020830191508360208260051b8501011115611c0657600080fd5b801515811461088c57600080fd5b803561ffff81168114611c7557600080fd5b60008060008060008060008060006101008a8c031215611dff57600080fd5b893567ffffffffffffffff80821115611e1757600080fd5b611e238d838e01611d25565b9a50611e3160208d01611c5e565b995060408c0135985060608c01359750611e4d60808d01611c5e565b965060a08c0135915080821115611e6357600080fd5b50611e708c828d01611d7b565b90955093505060c08a0135611e8481611dc0565b9150611e9260e08b01611dce565b90509295985092959850929598565b6000806000806000806000806000806101008b8d031215611ec157600080fd5b8a3567ffffffffffffffff80821115611ed957600080fd5b611ee58e838f01611bc4565b909c509a508a9150611ef960208e01611c5e565b995060408d0135985060608d01359750611f1560808e01611c5e565b965060a08d0135915080821115611f2b57600080fd5b50611f388d828e01611d7b565b90955093505060c08b0135611f4c81611dc0565b9150611f5a60e08c01611dce565b90509295989b9194979a5092959850565b60008060408385031215611f7e57600080fd5b823567ffffffffffffffff811115611f9557600080fd5b611fa185828601611d25565b95602094909401359450505050565b600060208284031215611fc257600080fd5b5035919050565b600060208284031215611fdb57600080fd5b813567ffffffffffffffff811115611ff257600080fd5b610bff84828501611d25565b60008060006040848603121561201357600080fd5b833567ffffffffffffffff81111561202a57600080fd5b61203686828701611bc4565b909790965060209590950135949350505050565b60008060008060008060008060008060006101208c8e03121561206c57600080fd5b67ffffffffffffffff808d35111561208357600080fd5b6120908e8e358f01611bc4565b909c509a506120a160208e01611c5e565b995060408d0135985060608d013597506120bd60808e01611c5e565b96508060a08e013511156120d057600080fd5b506120e18d60a08e01358e01611d7b565b909550935060c08c01356120f481611dc0565b925061210260e08d01611dce565b91506101008c013590509295989b509295989b9093969950565b60006020828403121561212e57600080fd5b610f2582611c5e565b60006020828403121561214957600080fd5b5051919050565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156105eb576105eb612160565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006121c6606083018688612189565b6020830194909452506040015292915050565b6000602082840312156121eb57600080fd5b8151610f2581611dc0565b81835260006020808501808196508560051b810191508460005b8781101561227b5782840389528135601e1988360301811261223157600080fd5b8701858101903567ffffffffffffffff81111561224d57600080fd5b80360382131561225c57600080fd5b612267868284612189565b9a87019a9550505090840190600101612210565b5091979650505050505050565b60006101008b83526001600160a01b03808c1660208501528a60408501528960608501528089166080850152508060a08401526122c881840187896121f6565b94151560c0840152505061ffff9190911660e090910152979650505050505050565b818103818111156105eb576105eb612160565b60005b83811015612318578181015183820152602001612300565b50506000910152565b600081518084526123398160208601602086016122fd565b601f01601f19169290920160200192915050565b6060815260006123606060830186612321565b60208301949094525060400152919050565b60006040828403121561238457600080fd5b6040516040810181811067ffffffffffffffff821117156123a7576123a7611cb6565b604052825181526020928301519281019290925250919050565b60a0815260006123d560a08301888a612189565b90506001600160a01b03808716602084015285604084015280851660608401525061ffff83166080830152979650505050505050565b60808152600061241f608083018789612189565b602083019590955250604081019290925260609091015292915050565b634e487b7160e01b600052603260045260246000fd5b60006001820161246457612464612160565b5060010190565b602081526000610f256020830184612321565b8381526040602082015260006124986040830184866121f6565b95945050505050565b600060208083850312156124b457600080fd5b825167ffffffffffffffff808211156124cc57600080fd5b818501915085601f8301126124e057600080fd5b8151818111156124f2576124f2611cb6565b8060051b612501858201611ccc565b918252838101850191858101908984111561251b57600080fd5b86860192505b83831015612593578251858111156125395760008081fd5b8601603f81018b1361254b5760008081fd5b87810151604061255d611d4483611cfd565b8281528d828486010111156125725760008081fd5b612581838c83018487016122fd565b85525050509186019190860190612521565b9998505050505050505050565b600082516125b28184602087016122fd565b7f2e77627400000000000000000000000000000000000000000000000000000000920191825250600401919050565b60006001600160a01b0380871683528086166020840152808516604084015250608060608301526126156080830184612321565b9695505050505050565b600082516126318184602087016122fd565b919091019291505056fea2646970667358221220dfcddf660493e7c52cf7c8aedf30324cb7a0ce39bdc42110633050213f43c27564736f6c63430008110033

Source map

1479:10980:19:-:0;;;2711:906;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3056:4;3062:10;936:32:0;3062:10:19;936:18:0;:32::i;:::-;449:28:38;;-1:-1:-1;;;449:28:38;;259:66;449:28;;;1729:25:45;381:34:38;;-1:-1:-1;;;;;449:9:38;;;;;1702:18:45;;449:28:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;497:32;;-1:-1:-1;;;497:32:38;;-1:-1:-1;;;;;2214:32:45;;;497::38;;;2196:51:45;381:106:38;;-1:-1:-1;497:22:38;;;;;;2169:18:45;;497:32:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;371:165;332:204;;3109:17:19::1;3088;:38;3084:100;;3149:24;;-1:-1:-1::0;;;3149:24:19::1;;;;;;;;;;;3084:100;3218:15;3198:17;:35;3194:98;;;3256:25;;-1:-1:-1::0;;;3256:25:19::1;;;;;;;;;;;3194:98;-1:-1:-1::0;;;;;3302:12:19;;::::1;;::::0;3324:16;;::::1;;::::0;3350:36:::1;::::0;;;;-1:-1:-1;3396:36:19::1;::::0;;;;3442;::::1;;::::0;3488:26;::::1;;::::0;3524:12:::1;:28:::0;;-1:-1:-1;;;;;;3524:28:19::1;::::0;;;::::1;;::::0;;;-1:-1:-1;3562:48:19;1479:10980;;2433:187:0;2506:16;2525:6;;-1:-1:-1;;;;;2541:17:0;;;-1:-1:-1;;;;;;2541:17:0;;;;;;2573:40;;2525:6;;;;;;;2573:40;;2506:16;2573:40;2496:124;2433:187;:::o;14:160:45:-;-1:-1:-1;;;;;118:31:45;;108:42;;98:70;;164:1;161;154:12;98:70;14:160;:::o;179:1399::-;436:6;444;452;460;468;476;484;492;500;553:3;541:9;532:7;528:23;524:33;521:53;;;570:1;567;560:12;521:53;602:9;596:16;621:60;675:5;621:60;:::i;:::-;750:2;735:18;;729:25;700:5;;-1:-1:-1;763:62:45;729:25;763:62;:::i;:::-;844:7;834:17;;;891:2;880:9;876:18;870:25;860:35;;935:2;924:9;920:18;914:25;904:35;;984:3;973:9;969:19;963:26;998:62;1052:7;998:62;:::i;:::-;1131:3;1116:19;;1110:26;1079:7;;-1:-1:-1;1145:62:45;1110:26;1145:62;:::i;:::-;1278:3;1263:19;;1257:26;1226:7;;-1:-1:-1;1292:62:45;1257:26;1292:62;:::i;:::-;1425:3;1410:19;;1404:26;1373:7;;-1:-1:-1;1439:62:45;1404:26;1439:62;:::i;:::-;1520:7;1510:17;;;1567:3;1556:9;1552:19;1546:26;1536:36;;179:1399;;;;;;;;;;;:::o;1765:280::-;1835:6;1888:2;1876:9;1867:7;1863:23;1859:32;1856:52;;;1904:1;1901;1894:12;1856:52;1936:9;1930:16;1955:60;2009:5;1955:60;:::i;:::-;2034:5;1765:280;-1:-1:-1;;;1765:280:45:o;2258:184::-;2328:6;2381:2;2369:9;2360:7;2356:23;2352:32;2349:52;;;2397:1;2394;2387:12;2349:52;-1:-1:-1;2420:16:45;;2258:184;-1:-1:-1;2258:184:45:o;:::-;1479:10980:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;