UNPKG

@q-dev/gdk-sdk

Version:

Typescript Library to interact with GDK Contracts

767 lines 84.1 kB
{ "_format": "hh-sol-artifact-1", "contractName": "CrossChainModule", "sourceName": "contracts/presets/cross-chain/CrossChainModule.sol", "abi": [ { "inputs": [ { "internalType": "address", "name": "mailboxAddress_", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "previousAdmin", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "AdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "beacon", "type": "address" } ], "name": "BeaconUpgraded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint32", "name": "origin", "type": "uint32" }, { "indexed": true, "internalType": "uint32", "name": "destination", "type": "uint32" }, { "components": [ { "internalType": "address", "name": "member", "type": "address" }, { "internalType": "enum Action", "name": "action", "type": "uint8" } ], "indexed": false, "internalType": "struct MessageAction", "name": "action", "type": "tuple" } ], "name": "MessageSent", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "inputs": [], "name": "HANDLE_GAS_AMOUNT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MODULE_RESOURCE", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "remoteDomain_", "type": "uint32" }, { "internalType": "address", "name": "ism_", "type": "address" }, { "internalType": "bytes32", "name": "remoteRouter_", "type": "bytes32" }, { "internalType": "string", "name": "connectorRoleName_", "type": "string" }, { "internalType": "string", "name": "resource_", "type": "string" }, { "internalType": "string", "name": "relatedExpertPanelName_", "type": "string" } ], "name": "__CrossChainModule_init", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "registry_", "type": "address" }, { "internalType": "uint32", "name": "remoteDomain_", "type": "uint32" }, { "internalType": "address", "name": "ism_", "type": "address" }, { "internalType": "bytes32", "name": "remoteRouter_", "type": "bytes32" }, { "internalType": "string", "name": "connectorRoleName_", "type": "string" }, { "internalType": "string", "name": "resource_", "type": "string" }, { "internalType": "string", "name": "relatedExpertPanelName_", "type": "string" } ], "name": "__CrossChainModule_initAndSetDeps", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "member_", "type": "address" } ], "name": "addMember", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "member_", "type": "address" }, { "internalType": "string", "name": "permission_", "type": "string" } ], "name": "checkPermission", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "destinationDomain", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "domains", "outputs": [ { "internalType": "uint32[]", "name": "", "type": "uint32[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "_domain", "type": "uint32" }, { "internalType": "bytes32", "name": "_router", "type": "bytes32" } ], "name": "enrollRemoteRouter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32[]", "name": "_domains", "type": "uint32[]" }, { "internalType": "bytes32[]", "name": "_addresses", "type": "bytes32[]" } ], "name": "enrollRemoteRouters", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "member_", "type": "address" }, { "internalType": "enum Action", "name": "action_", "type": "uint8" } ], "name": "getEncodedOperation", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "getInjector", "outputs": [ { "internalType": "address", "name": "injector_", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getResource", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getResourceRecords", "outputs": [ { "components": [ { "internalType": "string", "name": "existingRole", "type": "string" }, { "internalType": "string", "name": "resource", "type": "string" }, { "internalType": "string[]", "name": "permissions", "type": "string[]" } ], "internalType": "struct IDAOIntegration.ResourceRecords[]", "name": "records_", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "_origin", "type": "uint32" }, { "internalType": "bytes32", "name": "_sender", "type": "bytes32" }, { "internalType": "bytes", "name": "_message", "type": "bytes" } ], "name": "handle", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "hook", "outputs": [ { "internalType": "contract IPostDispatchHook", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "implementation", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "interchainSecurityModule", "outputs": [ { "internalType": "contract IInterchainSecurityModule", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "localDomain", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mailbox", "outputs": [ { "internalType": "contract IMailbox", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "memberStorage", "outputs": [ { "internalType": "contract DAOMemberStorage", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "permissionManager", "outputs": [ { "internalType": "contract PermissionManager", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "destinationDomain_", "type": "uint32" }, { "internalType": "bytes", "name": "message_", "type": "bytes" } ], "name": "quoteDispatch", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "member_", "type": "address" } ], "name": "removeMember", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "_domain", "type": "uint32" } ], "name": "routers", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "registry_", "type": "address" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "setDependencies", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_hook", "type": "address" } ], "name": "setHook", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "injector_", "type": "address" } ], "name": "setInjector", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_module", "type": "address" } ], "name": "setInterchainSecurityModule", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "_domain", "type": "uint32" } ], "name": "unenrollRemoteRouter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32[]", "name": "_domains", "type": "uint32[]" } ], "name": "unenrollRemoteRouters", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" } ], "name": "upgradeTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" } ], "bytecode": "0x60e0604052306080523480156200001557600080fd5b50604051620043d6380380620043d6833981016040819052620000389162000229565b8080806001600160a01b0381163b6200006e5760405162461bcd60e51b8152600401620000659062000256565b60405180910390fd5b6001600160a01b03821660a08190526040805163234d8e3d60e21b81529051638d3638f4916004808201926020929091908290030181865afa158015620000b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000df9190620002ac565b63ffffffff1660c052620000f33362000119565b5050506200010860006200011960201b60201c565b620001126200016b565b506200032d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1615620001965760405162461bcd60e51b81526004016200006590620002d1565b60005460ff90811614620001ed576000805460ff191660ff9081179091556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249891620001e4916200031d565b60405180910390a15b565b60006001600160a01b0382165b92915050565b6200020d81620001ef565b81146200021957600080fd5b50565b8051620001fc8162000202565b600060208284031215620002405762000240600080fd5b60006200024e84846200021c565b949350505050565b60208082528101620001fc81601e81527f4d61696c626f78436c69656e743a20696e76616c6964206d61696c626f780000602082015260400190565b63ffffffff81166200020d565b8051620001fc8162000292565b600060208284031215620002c357620002c3600080fd5b60006200024e84846200029f565b60208082528101620001fc81602781527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469602082015266616c697a696e6760c81b604082015260600190565b60ff8216815260208101620001fc565b60805160a05160c0516140416200039560003960006104fd01526000818161061701528181610bd1015281816119f40152818161233901526125f101526000818161097d015281816109bd01528181610aba01528181610afa0152610b7601526140416000f3fe6080604052600436106102255760003560e01c80637f5a7c7b11610123578063ca6d56dc116100ab578063de523cf31161006f578063de523cf314610659578063e9198bf914610679578063efae508a14610699578063f13bdd4d146106b9578063f2fde38b146106db57600080fd5b8063ca6d56dc146105b2578063cc7a2049146105c5578063cd316598146105e5578063d5438eae14610605578063d8ad4e1c1461063957600080fd5b80638da5cb5b116100f25780638da5cb5b1461051f5780639c6b86201461053d578063a976d3c31461055d578063b49c53a71461057d578063bb65dc831461059d57600080fd5b80637f5a7c7b1461047e5780638b8ca25f146104ab5780638cb941cc146104cb5780638d3638f4146104eb57600080fd5b80633dfd3873116101b157806356d5d4751161017557806356d5d475146104015780635c60da1b146104145780636913045114610429578063715018a61461044957806371a15b381461045e57600080fd5b80633dfd38731461036c5780633e3b5b191461038c578063440df4f4146103b75780634f1ef286146103d957806352d1902d146103ec57600080fd5b806312f76222116101f857806312f76222146102c25780632858c55a146102e65780632b5c06bc146103175780632ead72f61461032c5780633659cfe61461034c57600080fd5b806301ffc9a71461022a5780630b1ca49a146102605780630e72cc061461027557806312e0e7db14610295575b600080fd5b34801561023657600080fd5b5061024a610245366004612aad565b6106fb565b6040516102579190612ad8565b60405180910390f35b61027361026e366004612b0b565b610768565b005b34801561028157600080fd5b50610273610290366004612b0b565b6107ff565b3480156102a157600080fd5b506102b56102b0366004612b44565b61086f565b6040516102579190612bd7565b3480156102ce57600080fd5b506102d9620e7ef081565b6040516102579190612bee565b3480156102f257600080fd5b5060cc5461030a90600160a01b900463ffffffff1681565b6040516102579190612c08565b34801561032357600080fd5b506102b56108c6565b34801561033857600080fd5b506102d9610347366004612c2d565b610954565b34801561035857600080fd5b50610273610367366004612b0b565b610973565b34801561037857600080fd5b50610273610387366004612b0b565b610a38565b34801561039857600080fd5b50600080516020613fa5833981519152545b6040516102579190612c57565b3480156103c357600080fd5b506103cc610a9f565b6040516102579190612cc3565b6102736103e7366004612dc5565b610ab0565b3480156103f857600080fd5b506102d9610b69565b61027361040f366004612e6d565b610bc6565b34801561042057600080fd5b506103aa610c41565b34801561043557600080fd5b50610273610444366004612dc5565b610c4b565b34801561045557600080fd5b50610273610cf0565b34801561046a57600080fd5b50610273610479366004612f24565b610d04565b34801561048a57600080fd5b5060655461049e906001600160a01b031681565b6040516102579190612fad565b3480156104b757600080fd5b506102d96104c6366004612fbb565b610d5f565b3480156104d757600080fd5b506102736104e6366004612b0b565b610da1565b3480156104f757600080fd5b5061030a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561052b57600080fd5b506033546001600160a01b03166103aa565b34801561054957600080fd5b50610273610558366004613016565b610dbf565b34801561056957600080fd5b506102736105783660046130ee565b610e9a565b34801561058957600080fd5b506102736105983660046131db565b610fa6565b3480156105a957600080fd5b506102b5610fb8565b6102736105c0366004612b0b565b61104a565b3480156105d157600080fd5b5060cb5461049e906001600160a01b031681565b3480156105f157600080fd5b5060cc5461049e906001600160a01b031681565b34801561061157600080fd5b5061049e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561064557600080fd5b5061024a610654366004612dc5565b6110de565b34801561066557600080fd5b5060665461049e906001600160a01b031681565b34801561068557600080fd5b5061027361069436600461320e565b61115c565b3480156106a557600080fd5b506102736106b4366004612c2d565b6111f1565b3480156106c557600080fd5b506106ce611202565b6040516102579190613399565b3480156106e757600080fd5b506102736106f6366004612b0b565b61190d565b60006001600160e01b031982166363c8929f60e01b148061072c57506001600160e01b0319821663f13bdd4d60e01b145b8061074757506001600160e01b031982166336e447a160e21b145b8061076257506301ffc9a760e01b6001600160e01b03198316145b92915050565b61078f6040518060400160405280600681526020016555504441544560d01b815250611944565b60cc5460405163058e524d60e11b81526001600160a01b0390911690630b1ca49a906107bf908490600401612c57565b600060405180830381600087803b1580156107d957600080fd5b505af11580156107ed573d6000803e3d6000fd5b505050506107fc81600261196a565b50565b806001600160a01b0381163b15158061081f57506001600160a01b038116155b6108445760405162461bcd60e51b815260040161083b906133ee565b60405180910390fd5b61084c611ab6565b50606680546001600160a01b0319166001600160a01b0392909216919091179055565b60606040518060400160405280846001600160a01b0316815260200183600281111561089d5761089d6133fe565b90526040516108af9190602001613461565b604051602081830303815290604052905092915050565b60ca80546108d390613485565b80601f01602080910402602001604051908101604052809291908181526020018280546108ff90613485565b801561094c5780601f106109215761010080835404028352916020019161094c565b820191906000526020600020905b81548152906001019060200180831161092f57829003601f168201915b505050505081565b60008061096b609763ffffffff80861690611ae016565b949350505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036109bb5760405162461bcd60e51b815260040161083b906134f8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109ed611af9565b6001600160a01b031614610a135760405162461bcd60e51b815260040161083b9061354f565b610a1c81611b15565b604080516000808252602082019092526107fc91839190611c0e565b806001600160a01b0381163b151580610a5857506001600160a01b038116155b610a745760405162461bcd60e51b815260040161083b906133ee565b610a7c611ab6565b50606580546001600160a01b0319166001600160a01b0392909216919091179055565b6060610aab6097611cf5565b905090565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610af85760405162461bcd60e51b815260040161083b906134f8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b2a611af9565b6001600160a01b031614610b505760405162461bcd60e51b815260040161083b9061354f565b610b5982611b15565b610b6582826001611c0e565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bb35760405162461bcd60e51b815260040161083b906135b7565b50600080516020613fc583398151915290565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c0e5760405162461bcd60e51b815260040161083b90613603565b6000610c1985611daf565b9050838114610c3a5760405162461bcd60e51b815260040161083b90613653565b5050505050565b6000610aab611af9565b610c53611dfb565b6000829050806001600160a01b0316639a06df506040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cba919061366e565b60cb80546001600160a01b0319166001600160a01b03929092169190911790555033600080516020613fa5833981519152555050565b610cf8611ab6565b610d026000611e4f565b565b610d0c611ab6565b8060005b81811015610d5957610d47848483818110610d2d57610d2d61368f565b9050602002016020810190610d429190612c2d565b611ea1565b610d526001826136bb565b9050610d10565b50505050565b600061096b8484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611edc92505050565b610da9611dfb565b6107fc81600080516020613fa583398151915255565b600054610100900460ff1615808015610ddf5750600054600160ff909116105b80610df95750303b158015610df9575060005460ff166001145b610e155760405162461bcd60e51b815260040161083b90613717565b6000805460ff191660011790558015610e38576000805461ff0019166101001790555b610e46878787878787611ef5565b8015610e91576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890610e889060019061373b565b60405180910390a15b50505050505050565b600054610100900460ff1615808015610eba5750600054600160ff909116105b80610ed45750303b158015610ed4575060005460ff166001145b610ef05760405162461bcd60e51b815260040161083b90613717565b6000805460ff191660011790558015610f13576000805461ff0019166101001790555b604080516000815260208101909152610f2d908990610c4b565b610f4388600080516020613fa583398151915255565b610f51878787878787611ef5565b8015610f9c576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890610f939060019061373b565b60405180910390a15b5050505050505050565b610fae611ab6565b610b65828261204d565b606060ca8054610fc790613485565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff390613485565b80156110405780601f1061101557610100808354040283529160200191611040565b820191906000526020600020905b81548152906001019060200180831161102357829003601f168201915b5050505050905090565b6110716040518060400160405280600681526020016555504441544560d01b815250611944565b60cc5460405163329b55b760e21b81526001600160a01b039091169063ca6d56dc906110a1908490600401612c57565b600060405180830381600087803b1580156110bb57600080fd5b505af11580156110cf573d6000803e3d6000fd5b505050506107fc81600161196a565b60cb54604051633ca8e36d60e11b81526000916001600160a01b031690637951c6da9061111490869060ca9087906004016137c3565b602060405180830381865afa158015611131573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611155919061380a565b9392505050565b611164611ab6565b8281146111835760405162461bcd60e51b815260040161083b90613847565b8260005b818110156111e9576111d78686838181106111a4576111a461368f565b90506020020160208101906111b99190612c2d565b8585848181106111cb576111cb61368f565b9050602002013561204d565b6111e26001826136bb565b9050611187565b505050505050565b6111f9611ab6565b6107fc81611ea1565b60408051600480825260a08201909252606091816020015b61123e60405180606001604052806060815260200160608152602001606081525090565b81526020019060019003908161121a57905050905060006112b760405180604001604052806040518060400160405280600d81526020016c4352454154455f564f54494e4760981b8152508152602001604051806040016040528060088152602001672b27aa22afa327a960c11b815250815250612063565b9050604051806060016040528061135760ce80546112d490613485565b80601f016020809104026020016040519081016040528092919081815260200182805461130090613485565b801561134d5780601f106113225761010080835404028352916020019161134d565b820191906000526020600020905b81548152906001019060200180831161133057829003601f168201915b50505050506120dc565b6000815181106113695761136961368f565b6020026020010151815260200160ca805461138390613485565b80601f01602080910402602001604051908101604052809291908181526020018280546113af90613485565b80156113fc5780601f106113d1576101008083540402835291602001916113fc565b820191906000526020600020905b8154815290600101906020018083116113df57829003601f168201915b50505050508152602001828152508260008151811061141d5761141d61368f565b6020026020010181905250600061145f60405180602001604052806040518060400160405280600681526020016511561411549560d21b815250815250612110565b905060405180606001604052806114ff60ce805461147c90613485565b80601f01602080910402602001604051908101604052809291908181526020018280546114a890613485565b80156114f55780601f106114ca576101008083540402835291602001916114f5565b820191906000526020600020905b8154815290600101906020018083116114d857829003601f168201915b5050505050612154565b6000815181106115115761151161368f565b6020026020010151815260200160ca805461152b90613485565b80601f016020809104026020016040519081016040528092919081815260200182805461155790613485565b80156115a45780601f10611579576101008083540402835291602001916115a4565b820191906000526020600020905b81548152906001019060200180831161158757829003601f168201915b5050505050815260200182815250836001815181106115c5576115c561368f565b6020026020010181905250604051806060016040528061166e60ce80546115eb90613485565b80601f016020809104026020016040519081016040528092919081815260200182805461161790613485565b80156116645780601f1061163957610100808354040283529160200191611664565b820191906000526020600020905b81548152906001019060200180831161164757829003601f168201915b5050505050612175565b6000815181106116805761168061368f565b6020026020010151815260200160ca805461169a90613485565b80601f01602080910402602001604051908101604052809291908181526020018280546116c690613485565b80156117135780601f106116e857610100808354040283529160200191611713565b820191906000526020600020905b8154815290600101906020018083116116f657829003601f168201915b5050505050815260200161175260405180602001604052806040518060400160405280600681526020016555504441544560d01b815250815250612110565b815250836002815181106117685761176861368f565b6020026020010181905250604051806060016040528060cd805461178b90613485565b80601f01602080910402602001604051908101604052809291908181526020018280546117b790613485565b80156118045780601f106117d957610100808354040283529160200191611804565b820191906000526020600020905b8154815290600101906020018083116117e757829003601f168201915b5050505050815260200160cc60009054906101000a90046001600160a01b03166001600160a01b031663e9ff965f6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611861573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261188991908101906138af565b81526020016118e760405180604001604052806040518060400160405280600681526020016543524541544560d01b81525081526020016040518060400160405280600681526020016544454c45544560d01b815250815250612063565b815250836003815181106118fd576118fd61368f565b6020026020010181905250505090565b611915611ab6565b6001600160a01b03811661193b5760405162461bcd60e51b815260040161083b9061392a565b6107fc81611e4f565b61194e33826110de565b6107fc5760405162461bcd60e51b815260040161083b90613979565b60006040518060400160405280846001600160a01b03168152602001836002811115611998576119986133fe565b81525090506119d860cc60149054906101000a900463ffffffff16826040516020016119c49190613461565b604051602081830303815290604052612196565b5060cc60149054906101000a900463ffffffff1663ffffffff167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638d3638f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a749190613994565b63ffffffff167fb9e0119a104a35e308d4080ee35ea0b26e382bbfd5d09bbd90d88eae28c8816083604051611aa99190613461565b60405180910390a3505050565b6033546001600160a01b03163314610d025760405162461bcd60e51b815260040161083b906139e5565b600080611aed84846121a3565b915091505b9250929050565b600080516020613fc5833981519152546001600160a01b031690565b60cb5460408051631082599b60e31b815290516000926001600160a01b031691638412ccd89160048083019260209291908290030181865afa158015611b5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b839190613a14565b6001600160a01b031663d10611fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be4919061366e565b9050336001600160a01b03821614610b655760405162461bcd60e51b815260040161083b90613a78565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611c4657611c41836121dd565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611ca0575060408051601f3d908101601f19168201909252611c9d91810190613a93565b60015b611cbc5760405162461bcd60e51b815260040161083b90613afd565b600080516020613fc58339815191528114611ce95760405162461bcd60e51b815260040161083b90613b51565b50611c41838383612233565b60606000611d0283612258565b905080516001600160401b03811115611d1d57611d1d612cd4565b604051908082528060200260200182016040528015611d46578160200160208202803683370190505b50915060005b8151811015611da857818181518110611d6757611d6761368f565b6020026020010151838281518110611d8157611d8161368f565b63ffffffff9092166020928302919091019091015280611da081613b61565b915050611d4c565b5050919050565b60008080611dc7609763ffffffff80871690611ae016565b9150915081611dd5856122f2565b90611df35760405162461bcd60e51b815260040161083b9190612bd7565b509392505050565b6000611e13600080516020613fa58339815191525490565b90506001600160a01b0381161580611e3357506001600160a01b03811633145b6107fc5760405162461bcd60e51b815260040161083b90613bac565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611eb5609763ffffffff8084169061232916565b611ebe826122f2565b90610b655760405162461bcd60e51b815260040161083b9190612bd7565b600080611ee884611daf565b905061096b848285612335565b611f01600086336123e4565b60cc805463ffffffff60a01b1916600160a01b63ffffffff891602179055611f29868561204d565b60cd611f358482613c4d565b5060ce611f428282613c4d565b5060cb5460408051631082599b60e31b815290516000926001600160a01b031691638412ccd89160048083019260209291908290030181865afa158015611f8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb19190613a14565b6040516301d1290960e01b81529091506001600160a01b038216906301d1290990611fe0908590600401612bd7565b602060405180830381865afa158015611ffd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612021919061366e565b60cc80546001600160a01b0319166001600160a01b039290921691909117905560ca610f9c8482613c4d565b610b65609763ffffffff80851690849061242e16565b6040805160028082526060828101909352816020015b6060815260200190600190039081612079575050825181519192509082906000906120a6576120a661368f565b60209081029190910101528160016020020151816001815181106120cc576120cc61368f565b6020026020010181905250919050565b60606107626040518060200160405280846040516020016120fd9190613d2e565b6040516020818303038152906040528152505b604080516001808252818301909252606091816020015b6060815260200190600190039081612127575050825181519192509082906000906120cc576120cc61368f565b60606107626040518060200160405280846040516020016120fd9190613d50565b60606107626040518060200160405280846040516020016120fd9190613d69565b6000611155833484612439565b60008181526002830160205260408120548190806121d2576121c5858561245c565b925060009150611af29050565b600192509050611af2565b6001600160a01b0381163b6122045760405162461bcd60e51b815260040161083b90613dca565b600080516020613fc583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61223c83612468565b6000825111806122495750805b15611c4157610d5983836124a8565b60606000612265836124cd565b9050806001600160401b0381111561227f5761227f612cd4565b6040519080825280602002602001820160405280156122a8578160200160208202803683370190505b50915060005b81811015611da8576122c084826124d8565b60001c8382815181106122d5576122d561368f565b6020908102919091010152806122ea81613b61565b9150506122ae565b60606123038263ffffffff166124e4565b6040516020016123139190613dda565b6040516020818303038152906040529050919050565b60006111558383612576565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166381d2ea9585858561237289612593565b6065546040516001600160e01b031960e088901b1681526123a395949392916001600160a01b031690600401613e0a565b602060405180830381865afa1580156123c0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096b9190613a93565b600054610100900460ff1661240b5760405162461bcd60e51b815260040161083b90613ea0565b6124136125a1565b61241c83610a38565b612425826107ff565b611c4181611e4f565b610d598383836125d0565b60008061244585611daf565b9050612453858286866125ed565b95945050505050565b6000611155838361269f565b612471816121dd565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606111558383604051806060016040528060278152602001613fe5602791396126b7565b60006107628261272f565b60006111558383612739565b606060006124f183612763565b60010190506000816001600160401b0381111561251057612510612cd4565b6040519080825280601f01601f19166020018201604052801561253a576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461254457509392505050565b60008181526002830160205260408120819055611155838361283b565b6060610762620e7ef0612847565b600054610100900460ff166125c85760405162461bcd60e51b815260040161083b90613ea0565b610d02612865565b6000828152600284016020526040812082905561096b8484612895565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166310b83dc08487878661262b8b612593565b6065546040516001600160e01b031960e089901b16815261265c95949392916001600160a01b031690600401613e0a565b60206040518083038185885af115801561267a573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124539190613a93565b60008181526001830160205260408120541515611155565b6060600080856001600160a01b0316856040516126d49190613eb0565b600060405180830381855af49150503d806000811461270f576040519150601f19603f3d011682016040523d82523d6000602084013e612714565b606091505b5091509150612725868383876128a1565b9695505050505050565b6000610762825490565b60008260000182815481106127505761275061368f565b9060005260206000200154905092915050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106127a25772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef810000000083106127ce576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106127ec57662386f26fc10000830492506010015b6305f5e1008310612804576305f5e100830492506008015b612710831061281857612710830492506004015b6064831061282a576064830492506002015b600a83106107625760010192915050565b600061115583836128ea565b606061076260008333604051806020016040528060008152506129dd565b600054610100900460ff1661288c5760405162461bcd60e51b815260040161083b90613ea0565b610d0233611e4f565b60006111558383612a12565b606083156128e05782516000036128d9576001600160a01b0385163b6128d95760405162461bcd60e51b815260040161083b90613eec565b508161096b565b61096b8383612a61565b600081815260018301602052604081205480156129d357600061290e600183613efc565b855490915060009061292290600190613efc565b90508181146129875760008660000182815481106129425761294261368f565b90600052602060002001549050808760000184815481106129655761296561368f565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061299857612998613f0f565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610762565b6000915050610762565b60606001858585856040516020016129f9959493929190613f66565b6040516020818303038152906040529050949350505050565b6000818152600183016020526040812054612a5957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610762565b506000610762565b815115612a715781518083602001fd5b8060405162461bcd60e51b815260040161083b9190612bd7565b6001600160e01b031981165b81146107fc57600080fd5b803561076281612a8b565b600060208284031215612ac257612ac2600080fd5b600061096b8484612aa2565b8015155b82525050565b602081016107628284612ace565b60006001600160a01b038216610762565b612a9781612ae6565b803561076281612af7565b600060208284031215612b2057612b20600080fd5b600061096b8484612b00565b600381106107fc57600080fd5b803561076281612b2c565b60008060408385031215612b5a57612b5a600080fd5b6000612b668585612b00565b9250506020612b7785828601612b39565b9150509250929050565b60005b83811015612b9c578181015183820152602001612b84565b50506000910152565b6000612baf825190565b808452602084019350612bc6818560208601612b81565b601f01601f19169290920192915050565b602080825281016111558184612ba5565b80612ad2565b602081016107628284612be8565b63ffffffff8116612ad2565b602081016107628284612bfc565b63ffffffff8116612a97565b803561076281612c16565b600060208284031215612c4257612c42600080fd5b600061096b8484612c22565b612ad281612ae6565b602081016107628284612c4e565b612c6f8282612bfc565b5060200190565b60200190565b6000612c86825190565b808452602093840193830160005b82811015612cb9578151612ca88782612c65565b965050602082019150600101612c94565b5093949350505050565b602080825281016111558184612c7c565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681018181106001600160401b0382111715612d0f57612d0f612cd4565b6040525050565b6000612d2160405190565b9050612d2d8282612cea565b919050565b60006001600160401b03821115612d4b57612d4b612cd4565b601f19601f83011660200192915050565b82818337506000910152565b6000612d7b612d7684612d32565b612d16565b905082815260208101848484011115612d9657612d96600080fd5b611df3848285612d5c565b600082601f830112612db557612db5600080fd5b813561096b848260208601612d68565b60008060408385031215612ddb57612ddb600080fd5b6000612de78585612b00565b92505060208301356001600160401b03811115612e0657612e06600080fd5b612b7785828601612da1565b80612a97565b803561076281612e12565b60008083601f840112612e3857612e38600080fd5b5081356001600160401b03811115612e5257612e52600080fd5b602083019150836001820283011115611af257611af2600080fd5b60008060008060608587031215612e8657612e86600080fd5b6000612e928787612c22565b9450506020612ea387828801612e18565b93505060408501356001600160401b03811115612ec257612ec2600080fd5b612ece87828801612e23565b95989497509550505050565b60008083601f840112612eef57612eef600080fd5b5081356001600160401b03811115612f0957612f09600080fd5b602083019150836020820283011115611af257611af2600080fd5b60008060208385031215612f3a57612f3a600080fd5b82356001600160401b03811115612f5357612f53600080fd5b612f5f85828601612eda565b92509250509250929050565b60006107626001600160a01b038316612f82565b90565b6001600160a01b031690565b600061076282612f6b565b600061076282612f8e565b612ad281612f99565b602081016107628284612fa4565b600080600060408486031215612fd357612fd3600080fd5b6000612fdf8686612c22565b93505060208401356001600160401b03811115612ffe57612ffe600080fd5b61300a86828701612e23565b92509250509250925092565b60008060008060008060c0878903121561303257613032600080fd5b600061303e8989612c22565b965050602061304f89828a01612b00565b955050604061306089828a01612e18565b94505060608701356001600160401b0381111561307f5761307f600080fd5b61308b89828a01612da1565b93505060808701356001600160401b038111156130aa576130aa600080fd5b6130b689828a01612da1565b92505060a08701356001600160401b038111156130d5576130d5600080fd5b6130e189828a01612da1565b9150509295509295509295565b600080600080600080600060e0888a03121561310c5761310c600080fd5b60006131188a8a612b00565b97505060206131298a828b01612c22565b965050604061313a8a828b01612b00565b955050606061314b8a828b01612e18565b94505060808801356001600160401b0381111561316a5761316a600080fd5b6131768a828b01612da1565b93505060a08801356001600160401b0381111561319557613195600080fd5b6131a18a828b01612da1565b92505060c08801356001600160401b038111156131c0576131c0600080fd5b6131cc8a828b01612da1565b91505092959891949750929550565b600080604083850312156131f1576131f1600080fd5b60006131fd8585612c22565b9250506020612b7785828601612e18565b6000806000806040858703121561322757613227600080fd5b84356001600160401b0381111561324057613240600080fd5b61324c87828801612eda565b945094505060208501356001600160401b0381111561326d5761326d600080fd5b612ece87828801612eda565b60006111558383612ba5565b600061328f825190565b808452602084019350836020820285016132a98560200190565b60005b848110156132dd57838303885281516132c58482613279565b935050602082016020989098019791506001016132ac565b50909695505050505050565b80516060808452600091908401906133018282612ba5565b9150506020830151848203602086015261331b8282612ba5565b915050604083015184820360408601526124538282613285565b600061115583836132e9565b600061334b825190565b808452602084019350836020820285016133658560200190565b60005b848110156132dd57838303885281516133818482613335565b93505060208201602098909801979150600101613368565b602080825281016111558184613341565b60278152602081017f4d61696c626f78436c69656e743a20696e76616c696420636f6e74726163742081526673657474696e6760c81b602082015290505b60400190565b60208082528101610762816133aa565b634e487b7160e01b600052602160045260246000fd5b600381106107fc576107fc6133fe565b80612d2d81613414565b600061076282613424565b612ad28161342e565b805161344e8382612c4e565b506020810151611c416020840182613439565b604081016107628284613442565b634e487b7160e01b600052602260045260246000fd5b60028104600182168061349957607f821691505b6020821081036134ab576134ab61346f565b50919050565b602c8152602081017f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682081526b19195b1959d85d1958d85b1b60a21b602082015290506133e8565b60208082528101610762816134b1565b602c8152602081017f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682081526b6163746976652070726f787960a01b602082015290506133e8565b6020808252810161076281613508565b60388152602081017f555550535570677261646561626c653a206d757374206e6f742062652063616c81527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015290506133e8565b602080825281016107628161355f565b60218152602081017f4d61696c626f78436c69656e743a2073656e646572206e6f74206d61696c626f8152600f60fb1b602082015290506133e8565b60208082528101610762816135c7565b60258152602081017f456e726f6c6c656420726f7574657220646f6573206e6f74206d61746368207381526432b73232b960d91b602082015290506133e8565b6020808252810161076281613613565b805161076281612af7565b60006020828403121561368357613683600080fd5b600061096b8484613663565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610762576107626136a5565b602e8152602081017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b602082015290506133e8565b60208082528101610762816136ce565b600060ff8216610762565b612ad281613727565b602081016107628284613732565b6000815461375681613485565b808552602085019450600182168015613776576001811461378c576137ba565b60ff1983168652602082151502860193506137ba565b60008581526020902060005b838110156137b457815488820152600190910190602001613798565b87019450505b50505092915050565b606081016137d18286612c4e565b81810360208301526137e38185613749565b905081810360408301526124538184612ba5565b801515612a97565b8051610762816137f7565b60006020828403121561381f5761381f600080fd5b600061096b84846137ff565b600781526020810166042d8cadccee8d60cb1b81529050612c76565b602080825281016107628161382b565b6000613865612d7684612d32565b90508281526020810184848401111561388057613880600080fd5b611df3848285612b81565b600082601f83011261389f5761389f600080fd5b815161096b848260208601613857565b6000602082840312156138c4576138c4600080fd5b81516001600160401b038111156138dd576138dd600080fd5b61096b8482850161388b565b60268152602081017f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015290506133e8565b60208082528101610762816138e9565b60248152602081017f43726f7373436861696e4d6f64756c653a207065726d697373696f6e2064656e81526334b2b21760e11b602082015290506133e8565b602080825281016107628161393a565b805161076281612c16565b6000602082840312156139a9576139a9600080fd5b600061096b8484613989565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65729101908152612c76565b60208082528101610762816139b5565b600061076282612ae6565b612a97816139f5565b805161076281613a00565b600060208284031215613a2957613a29600080fd5b600061096b8484613a09565b60288152602081017f5b5147444b2d3030363030355d2d4e6f7420617574686f72697a656420746f208152673ab833b930b2329760c11b602082015290506133e8565b6020808252810161076281613a35565b805161076281612e12565b600060208284031215613aa857613aa8600080fd5b600061096b8484613a88565b602e8152602081017f45524331393637557067726164653a206e657720696d706c656d656e7461746981526d6f6e206973206e6f74205555505360901b602082015290506133e8565b6020808252810161076281613ab4565b60298152602081017f45524331393637557067726164653a20756e737570706f727465642070726f788152681a58589b195555525160ba1b602082015290506133e8565b6020808252810161076281613b0d565b600060018201613b7357613b736136a5565b5060010190565b601a8152602081017f446570656e64616e743a206e6f7420616e20696e6a6563746f7200000000000081529050612c76565b6020808252810161076281613b7a565b6000610762612f7f8381565b613bd183613bbc565b815460001960089490940293841b1916921b91909117905550565b6000611c41818484613bc8565b81811015610b6557613c0c600082613bec565b600101613bf9565b601f821115611c41576000818152602090206020601f85010481016020851015613c3b5750805b610c3a6020601f860104830182613bf9565b81516001600160401b03811115613c6657613c66612cd4565b613c708254613485565b613c7b828285613c14565b506020601f821160018114613cb05760008315613c985750848201515b600019600885021c1981166002850217855550610c3a565b600084815260208120601f198516915b82811015613ce05787850151825560209485019460019092019101613cc0565b5084821015613cfd5783870151600019601f87166008021c191681555b50505050600202600101905550565b6000613d16825190565b613d24818560208601612b81565b9290920192915050565b6d2220a7a6b2b6b132b92937b6329d60911b81525b600e016107628183613d0c565b6d2220a7a2bc3832b93a2937b6329d60911b8152613d43565b6d2220a7ab37ba34b733a937b6329d60911b8152613d43565b602d8152602081017f455243313936373a206e657720696d706c656d656e746174696f6e206973206e81526c1bdd08184818dbdb9d1c9858dd609a1b602082015290506133e8565b6020808252810161076281613d82565b7f4e6f20726f7574657220656e726f6c6c656420666f7220646f6d61696e3a20008152601f016107628183613d0c565b60a08101613e188288612bfc565b613e256020830187612be8565b81810