UNPKG

@q-dev/gdk-sdk

Version:

Typescript Library to interact with GDK Contracts

791 lines 81.6 kB
{ "_format": "hh-sol-artifact-1", "contractName": "CrossChainTreasuryModule", "sourceName": "contracts/presets/cross-chain/CrossChainTreasuryModule.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": "token", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "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": "resource_", "type": "string" }, { "internalType": "string", "name": "relatedExpertPanelName_", "type": "string" } ], "name": "__CrossChainTreasuryModule_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": "resource_", "type": "string" }, { "internalType": "string", "name": "relatedExpertPanelName_", "type": "string" } ], "name": "__CrossChainTreasuryModule_initAndSetDeps", "outputs": [], "stateMutability": "nonpayable", "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": "token_", "type": "address" }, { "internalType": "address", "name": "to_", "type": "address" }, { "internalType": "uint256", "name": "amount_", "type": "uint256" } ], "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": "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": "to_", "type": "address" }, { "internalType": "uint256", "name": "value_", "type": "uint256" } ], "name": "redeemTokens", "outputs": [], "stateMutability": "nonpayable", "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": "token_", "type": "address" }, { "internalType": "address", "name": "to_", "type": "address" }, { "internalType": "uint256", "name": "amount_", "type": "uint256" } ], "name": "sendERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to_", "type": "address" }, { "internalType": "uint256", "name": "amount_", "type": "uint256" } ], "name": "sendNative", "outputs": [], "stateMutability": "nonpayable", "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" }, { "stateMutability": "payable", "type": "receive" } ], "bytecode": "0x60e0604052306080523480156200001557600080fd5b50604051620040e2380380620040e2833981016040819052620000389162000229565b8080806001600160a01b0381163b6200006e5760405162461bcd60e51b8152600401620000659062000256565b60405180910390fd5b6001600160a01b03821660a08190526040805163234d8e3d60e21b81529051638d3638f4916004808201926020929091908290030181865afa158015620000b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000df9190620002ac565b63ffffffff1660c052620000f33362000119565b5050506200010860006200011960201b60201c565b620001126200016b565b506200032d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1615620001965760405162461bcd60e51b81526004016200006590620002d1565b60005460ff90811614620001ed576000805460ff191660ff9081179091556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249891620001e4916200031d565b60405180910390a15b565b60006001600160a01b0382165b92915050565b6200020d81620001ef565b81146200021957600080fd5b50565b8051620001fc8162000202565b600060208284031215620002405762000240600080fd5b60006200024e84846200021c565b949350505050565b60208082528101620001fc81601e81527f4d61696c626f78436c69656e743a20696e76616c6964206d61696c626f780000602082015260400190565b63ffffffff81166200020d565b8051620001fc8162000292565b600060208284031215620002c357620002c3600080fd5b60006200024e84846200029f565b60208082528101620001fc81602781527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469602082015266616c697a696e6760c81b604082015260600190565b60ff8216815260208101620001fc565b60805160a05160c051613d4d62000395600039600061055501526000818161061c01528181610cee01528181611c3b01528181612145015261234801526000818161098d015281816109cd01528181610bd701528181610c170152610c930152613d4d6000f3fe6080604052600436106102295760003560e01c806371a15b3811610123578063bb65dc83116100ab578063de523cf31161006f578063de523cf31461067e578063e9198bf91461069e578063efae508a146106be578063f13bdd4d146106de578063f2fde38b1461070057600080fd5b8063bb65dc83146105d5578063cc7a2049146105ea578063d5438eae1461060a578063d8ad4e1c1461063e578063dad7f1101461065e57600080fd5b80638cb941cc116100f25780638cb941cc146105235780638d3638f4146105435780638da5cb5b146105775780638f975a6414610595578063b49c53a7146105b557600080fd5b806371a15b38146104965780637a180903146104b65780637f5a7c7b146104d65780638b8ca25f1461050357600080fd5b80633dfd3873116101b157806356d5d4751161017557806356d5d475146104195780635c60da1b1461042c57806366807566146104415780636913045114610461578063715018a61461048157600080fd5b80633dfd3873146103845780633e3b5b19146103a4578063440df4f4146103cf5780634f1ef286146103f157806352d1902d1461040457600080fd5b80632858c55a116101f85780632858c55a146102d15780632b5c06bc146103025780632ead72f6146103245780633659cfe61461034457806339012b181461036457600080fd5b806301ffc9a7146102355780630e72cc061461026b57806312f762221461028d5780632821095f146102b157600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061025561025036600461284c565b610720565b6040516102629190612877565b60405180910390f35b34801561027757600080fd5b5061028b6102863660046128aa565b61078d565b005b34801561029957600080fd5b506102a4620e7ef081565b60405161026291906128d1565b3480156102bd57600080fd5b5061028b6102cc3660046129f8565b6107fd565b3480156102dd57600080fd5b5060cb546102f590600160a01b900463ffffffff1681565b6040516102629190612ab0565b34801561030e57600080fd5b506103176108d6565b6040516102629190612b14565b34801561033057600080fd5b506102a461033f366004612b25565b610964565b34801561035057600080fd5b5061028b61035f3660046128aa565b610983565b34801561037057600080fd5b5061028b61037f366004612b46565b610a4b565b34801561039057600080fd5b5061028b61039f3660046128aa565b610b55565b3480156103b057600080fd5b50600080516020613cb1833981519152545b6040516102629190612c0d565b3480156103db57600080fd5b506103e4610bbc565b6040516102629190612c79565b61028b6103ff366004612c8a565b610bcd565b34801561041057600080fd5b506102a4610c86565b61028b610427366004612d2b565b610ce3565b34801561043857600080fd5b506103c2610d5e565b34801561044d57600080fd5b5061028b61045c366004612d98565b610d68565b34801561046d57600080fd5b5061028b61047c366004612c8a565b610dae565b34801561048d57600080fd5b5061028b610e53565b3480156104a257600080fd5b5061028b6104b1366004612e15565b610e67565b3480156104c257600080fd5b506103176104d1366004612e5c565b610ec2565b3480156104e257600080fd5b506065546104f6906001600160a01b031681565b6040516102629190612eee565b34801561050f57600080fd5b506102a461051e366004612efc565b610f19565b34801561052f57600080fd5b5061028b61053e3660046128aa565b610f5b565b34801561054f57600080fd5b506102f57f000000000000000000000000000000000000000000000000000000000000000081565b34801561058357600080fd5b506033546001600160a01b03166103c2565b3480156105a157600080fd5b5061028b6105b0366004612e5c565b610f79565b3480156105c157600080fd5b5061028b6105d0366004612f57565b610fb0565b3480156105e157600080fd5b50610317610fc2565b3480156105f657600080fd5b5060cb546104f6906001600160a01b031681565b34801561061657600080fd5b506104f67f000000000000000000000000000000000000000000000000000000000000000081565b34801561064a57600080fd5b50610255610659366004612c8a565b611054565b34801561066a57600080fd5b5061028b610679366004612d98565b6110d2565b34801561068a57600080fd5b506066546104f6906001600160a01b031681565b3480156106aa57600080fd5b5061028b6106b9366004612f79565b611175565b3480156106ca57600080fd5b5061028b6106d9366004612b25565b611202565b3480156106ea57600080fd5b506106f3611213565b6040516102629190613104565b34801561070c57600080fd5b5061028b61071b3660046128aa565b611789565b60006001600160e01b031982166363c8929f60e01b148061075157506001600160e01b0319821663f13bdd4d60e01b145b8061076c57506001600160e01b031982166336e447a160e21b145b8061078757506301ffc9a760e01b6001600160e01b03198316145b92915050565b806001600160a01b0381163b1515806107ad57506001600160a01b038116155b6107d25760405162461bcd60e51b81526004016107c990613159565b60405180910390fd5b6107da6117c0565b50606680546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff161580801561081d5750600054600160ff909116105b806108375750303b158015610837575060005460ff166001145b6108535760405162461bcd60e51b81526004016107c9906131b2565b6000805460ff191660011790558015610876576000805461ff0019166101001790555b61088386868686866117ea565b80156108ce576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906108c5906001906131d6565b60405180910390a15b505050505050565b60ca80546108e3906131fa565b80601f016020809104026020016040519081016040528092919081815260200182805461090f906131fa565b801561095c5780601f106109315761010080835404028352916020019161095c565b820191906000526020600020905b81548152906001019060200180831161093f57829003601f168201915b505050505081565b60008061097b609763ffffffff8086169061183716565b949350505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036109cb5760405162461bcd60e51b81526004016107c99061326d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109fd611850565b6001600160a01b031614610a235760405162461bcd60e51b81526004016107c9906132c4565b610a2c8161186c565b60408051600080825260208201909252610a4891839190611965565b50565b600054610100900460ff1615808015610a6b5750600054600160ff909116105b80610a855750303b158015610a85575060005460ff166001145b610aa15760405162461bcd60e51b81526004016107c9906131b2565b6000805460ff191660011790558015610ac4576000805461ff0019166101001790555b604080516000815260208101909152610ade908890610dae565b610af487600080516020613cb183398151915255565b610b0186868686866117ea565b8015610b4c576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890610b43906001906131d6565b60405180910390a15b50505050505050565b806001600160a01b0381163b151580610b7557506001600160a01b038116155b610b915760405162461bcd60e51b81526004016107c990613159565b610b996117c0565b50606580546001600160a01b0319166001600160a01b0392909216919091179055565b6060610bc86097611a47565b905090565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c155760405162461bcd60e51b81526004016107c99061326d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610c47611850565b6001600160a01b031614610c6d5760405162461bcd60e51b81526004016107c9906132c4565b610c768261186c565b610c8282826001611965565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cd05760405162461bcd60e51b81526004016107c99061332c565b50600080516020613cd183398151915290565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d2b5760405162461bcd60e51b81526004016107c990613378565b6000610d3685611b01565b9050838114610d575760405162461bcd60e51b81526004016107c9906133c8565b5050505050565b6000610bc8611850565b610d8f6040518060400160405280600681526020016555504441544560d01b815250611b4d565b610c8273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8383611b73565b610db6611cff565b6000829050806001600160a01b0316639a06df506040518163ffffffff1660e01b8152600401602060405180830381865afa158015610df9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1d91906133e3565b60cb80546001600160a01b0319166001600160a01b03929092169190911790555033600080516020613cb1833981519152555050565b610e5b6117c0565b610e656000611d53565b565b610e6f6117c0565b8060005b81811015610ebc57610eaa848483818110610e9057610e90613404565b9050602002016020810190610ea59190612b25565b611da5565b610eb5600182613430565b9050610e73565b50505050565b60606040518060600160405280856001600160a01b03168152602001846001600160a01b0316815260200183815250604051602001610f019190613475565b60405160208183030381529060405290509392505050565b600061097b8484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611de092505050565b610f63611cff565b610a4881600080516020613cb183398151915255565b610fa06040518060400160405280600681526020016555504441544560d01b815250611b4d565b610fab838383611b73565b505050565b610fb86117c0565b610c828282611df9565b606060ca8054610fd1906131fa565b80601f0160208091040260200160405190810160405280929190818152602001828054610ffd906131fa565b801561104a5780601f1061101f5761010080835404028352916020019161104a565b820191906000526020600020905b81548152906001019060200180831161102d57829003601f168201915b5050505050905090565b60cb54604051633ca8e36d60e11b81526000916001600160a01b031690637951c6da9061108a90869060ca9087906004016134fd565b602060405180830381865afa1580156110a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cb9190613544565b9392505050565b6110f96040518060400160405280600681526020016555504441544560d01b815250611b4d565b6000826001600160a01b03168260405161111290613565565b60006040518083038185875af1925050503d806000811461114f576040519150601f19603f3d011682016040523d82523d6000602084013e611154565b606091505b5050905080610fab5760405162461bcd60e51b81526004016107c9906135b1565b61117d6117c0565b82811461119c5760405162461bcd60e51b81526004016107c9906135dd565b8260005b818110156108ce576111f08686838181106111bd576111bd613404565b90506020020160208101906111d29190612b25565b8585848181106111e4576111e4613404565b90506020020135611df9565b6111fb600182613430565b90506111a0565b61120a6117c0565b610a4881611da5565b60408051600380825260808201909252606091816020015b61124f60405180606001604052806060815260200160608152602001606081525090565b81526020019060019003908161122b57905050905060006112c860405180604001604052806040518060400160405280600d81526020016c4352454154455f564f54494e4760981b8152508152602001604051806040016040528060088152602001672b27aa22afa327a960c11b815250815250611e0f565b9050604051806060016040528061136860cc80546112e5906131fa565b80601f0160208091040260200160405190810160405280929190818152602001828054611311906131fa565b801561135e5780601f106113335761010080835404028352916020019161135e565b820191906000526020600020905b81548152906001019060200180831161134157829003601f168201915b5050505050611e88565b60008151811061137a5761137a613404565b6020026020010151815260200160ca8054611394906131fa565b80601f01602080910402602001604051908101604052809291908181526020018280546113c0906131fa565b801561140d5780601f106113e25761010080835404028352916020019161140d565b820191906000526020600020905b8154815290600101906020018083116113f057829003601f168201915b50505050508152602001828152508260008151811061142e5761142e613404565b6020026020010181905250600061147060405180602001604052806040518060400160405280600681526020016511561411549560d21b815250815250611ebc565b9050604051806060016040528061151060cc805461148d906131fa565b80601f01602080910402602001604051908101604052809291908181526020018280546114b9906131fa565b80156115065780601f106114db57610100808354040283529160200191611506565b820191906000526020600020905b8154815290600101906020018083116114e957829003601f168201915b5050505050611f00565b60008151811061152257611522613404565b6020026020010151815260200160ca805461153c906131fa565b80601f0160208091040260200160405190810160405280929190818152602001828054611568906131fa565b80156115b55780601f1061158a576101008083540402835291602001916115b5565b820191906000526020600020905b81548152906001019060200180831161159857829003601f168201915b5050505050815260200182815250836001815181106115d6576115d6613404565b6020026020010181905250604051806060016040528061167f60cc80546115fc906131fa565b80601f0160208091040260200160405190810160405280929190818152602001828054611628906131fa565b80156116755780601f1061164a57610100808354040283529160200191611675565b820191906000526020600020905b81548152906001019060200180831161165857829003601f168201915b5050505050611f21565b60008151811061169157611691613404565b6020026020010151815260200160ca80546116ab906131fa565b80601f01602080910402602001604051908101604052809291908181526020018280546116d7906131fa565b80156117245780601f106116f957610100808354040283529160200191611724565b820191906000526020600020905b81548152906001019060200180831161170757829003601f168201915b5050505050815260200161176360405180602001604052806040518060400160405280600681526020016555504441544560d01b815250815250611ebc565b8152508360028151811061177957611779613404565b6020026020010181905250505090565b6117916117c0565b6001600160a01b0381166117b75760405162461bcd60e51b81526004016107c99061362e565b610a4881611d53565b6033546001600160a01b03163314610e655760405162461bcd60e51b81526004016107c99061366e565b6117f660008533611f42565b60cb805463ffffffff60a01b1916600160a01b63ffffffff88160217905561181e8584611df9565b60cc61182a828261370f565b5060ca6108ce838261370f565b6000806118448484611f8c565b915091505b9250929050565b600080516020613cd1833981519152546001600160a01b031690565b60cb5460408051631082599b60e31b815290516000926001600160a01b031691638412ccd89160048083019260209291908290030181865afa1580156118b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118da91906137ed565b6001600160a01b031663d10611fc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611917573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193b91906133e3565b9050336001600160a01b03821614610c825760405162461bcd60e51b81526004016107c990613851565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561199857610fab83611fc6565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156119f2575060408051601f3d908101601f191682019092526119ef9181019061386c565b60015b611a0e5760405162461bcd60e51b81526004016107c9906138d6565b600080516020613cd18339815191528114611a3b5760405162461bcd60e51b81526004016107c99061392a565b50610fab83838361201c565b60606000611a5483612041565b905080516001600160401b03811115611a6f57611a6f612907565b604051908082528060200260200182016040528015611a98578160200160208202803683370190505b50915060005b8151811015611afa57818181518110611ab957611ab9613404565b6020026020010151838281518110611ad357611ad3613404565b63ffffffff9092166020928302919091019091015280611af28161393a565b915050611a9e565b5050919050565b60008080611b19609763ffffffff8087169061183716565b9150915081611b27856120db565b90611b455760405162461bcd60e51b81526004016107c99190612b14565b509392505050565b611b573382611054565b610a485760405162461bcd60e51b81526004016107c99061399a565b60006040518060600160405280856001600160a01b03168152602001846001600160a01b031681526020018381525090506000611be160cb60149054906101000a900463ffffffff1683604051602001611bcd9190613475565b604051602081830303815290604052611de0565b9050611c1f60cb60149054906101000a900463ffffffff168284604051602001611c0b9190613475565b604051602081830303815290604052612112565b5060cb60149054906101000a900463ffffffff1663ffffffff167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638d3638f46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cbb91906139b5565b63ffffffff167f26619d610919156fbcc23a65593639210944fac043a5e756e8e1bdf4df705d7084604051611cf09190613475565b60405180910390a35050505050565b6000611d17600080516020613cb18339815191525490565b90506001600160a01b0381161580611d3757506001600160a01b03811633145b610a485760405162461bcd60e51b81526004016107c990613a08565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611db9609763ffffffff8084169061213516565b611dc2826120db565b90610c825760405162461bcd60e51b81526004016107c99190612b14565b600080611dec84611b01565b905061097b848285612141565b610c82609763ffffffff8085169084906121f016565b6040805160028082526060828101909352816020015b6060815260200190600190039081611e2557505082518151919250908290600090611e5257611e52613404565b6020908102919091010152816001602002015181600181518110611e7857611e78613404565b6020026020010181905250919050565b6060610787604051806020016040528084604051602001611ea99190613a3a565b6040516020818303038152906040528152505b604080516001808252818301909252606091816020015b6060815260200190600190039081611ed357505082518151919250908290600090611e7857611e78613404565b6060610787604051806020016040528084604051602001611ea99190613a5c565b6060610787604051806020016040528084604051602001611ea99190613a75565b600054610100900460ff16611f695760405162461bcd60e51b81526004016107c990613ad4565b611f716121fb565b611f7a83610b55565b611f838261078d565b610fab81611d53565b6000818152600283016020526040812054819080611fbb57611fae858561222a565b9250600091506118499050565b600192509050611849565b6001600160a01b0381163b611fed5760405162461bcd60e51b81526004016107c990613b2c565b600080516020613cd183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61202583612236565b6000825111806120325750805b15610fab57610ebc8383612276565b6060600061204e8361229b565b9050806001600160401b0381111561206857612068612907565b604051908082528060200260200182016040528015612091578160200160208202803683370190505b50915060005b81811015611afa576120a984826122a6565b60001c8382815181106120be576120be613404565b6020908102919091010152806120d38161393a565b915050612097565b60606120ec8263ffffffff166122b2565b6040516020016120fc9190613b3c565b6040516020818303038152906040529050919050565b60008061211e85611b01565b905061212c85828686612344565b95945050505050565b60006110cb83836123f6565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166381d2ea9585858561217e89612413565b6065546040516001600160e01b031960e088901b1681526121af95949392916001600160a01b031690600401613b6c565b602060405180830381865afa1580156121cc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097b919061386c565b610ebc838383612421565b600054610100900460ff166122225760405162461bcd60e51b81526004016107c990613ad4565b610e6561243e565b60006110cb838361246e565b61223f81611fc6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606110cb8383604051806060016040528060278152602001613cf160279139612486565b6000610787826124fe565b60006110cb8383612508565b606060006122bf83612532565b60010190506000816001600160401b038111156122de576122de612907565b6040519080825280601f01601f191660200182016040528015612308576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461231257509392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166310b83dc0848787866123828b612413565b6065546040516001600160e01b031960e089901b1681526123b395949392916001600160a01b031690600401613b6c565b60206040518083038185885af11580156123d1573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061212c919061386c565b600081815260028301602052604081208190556110cb838361260a565b6060610787620e7ef0612616565b6000828152600284016020526040812082905561097b8484612634565b600054610100900460ff166124655760405162461bcd60e51b81526004016107c990613ad4565b610e6533611d53565b600081815260018301602052604081205415156110cb565b6060600080856001600160a01b0316856040516124a39190613bbc565b600060405180830381855af49150503d80600081146124de576040519150601f19603f3d011682016040523d82523d6000602084013e6124e3565b606091505b50915091506124f486838387612640565b9695505050505050565b6000610787825490565b600082600001828154811061251f5761251f613404565b9060005260206000200154905092915050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106125715772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061259d576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106125bb57662386f26fc10000830492506010015b6305f5e10083106125d3576305f5e100830492506008015b61271083106125e757612710830492506004015b606483106125f9576064830492506002015b600a83106107875760010192915050565b60006110cb8383612689565b6060610787600083336040518060200160405280600081525061277c565b60006110cb83836127b1565b6060831561267f578251600003612678576001600160a01b0385163b6126785760405162461bcd60e51b81526004016107c990613bf8565b508161097b565b61097b8383612800565b600081815260018301602052604081205480156127725760006126ad600183613c08565b85549091506000906126c190600190613c08565b90508181146127265760008660000182815481106126e1576126e1613404565b906000526020600020015490508087600001848154811061270457612704613404565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061273757612737613c1b565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610787565b6000915050610787565b6060600185858585604051602001612798959493929190613c72565b6040516020818303038152906040529050949350505050565b60008181526001830160205260408120546127f857508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610787565b506000610787565b8151156128105781518083602001fd5b8060405162461bcd60e51b81526004016107c99190612b14565b6001600160e01b031981165b8114610a4857600080fd5b80356107878161282a565b60006020828403121561286157612861600080fd5b600061097b8484612841565b8015155b82525050565b60208101610787828461286d565b60006001600160a01b038216610787565b61283681612885565b803561078781612896565b6000602082840312156128bf576128bf600080fd5b600061097b848461289f565b80612871565b6020810161078782846128cb565b63ffffffff8116612836565b8035610787816128df565b80612836565b8035610787816128f6565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681018181106001600160401b038211171561294257612942612907565b6040525050565b600061295460405190565b9050612960828261291d565b919050565b60006001600160401b0382111561297e5761297e612907565b601f19601f83011660200192915050565b82818337506000910152565b60006129ae6129a984612965565b612949565b9050828152602081018484840111156129c9576129c9600080fd5b611b4584828561298f565b600082601f8301126129e8576129e8600080fd5b813561097b84826020860161299b565b600080600080600060a08688031215612a1357612a13600080fd5b6000612a1f88886128eb565b9550506020612a308882890161289f565b9450506040612a41888289016128fc565b93505060608601356001600160401b03811115612a6057612a60600080fd5b612a6c888289016129d4565b92505060808601356001600160401b03811115612a8b57612a8b600080fd5b612a97888289016129d4565b9150509295509295909350565b63ffffffff8116612871565b602081016107878284612aa4565b60005b83811015612ad9578181015183820152602001612ac1565b50506000910152565b6000612aec825190565b808452602084019350612b03818560208601612abe565b601f01601f19169290920192915050565b602080825281016110cb8184612ae2565b600060208284031215612b3a57612b3a600080fd5b600061097b84846128eb565b60008060008060008060c08789031215612b6257612b62600080fd5b6000612b6e898961289f565b9650506020612b7f89828a016128eb565b9550506040612b9089828a0161289f565b9450506060612ba189828a016128fc565b93505060808701356001600160401b03811115612bc057612bc0600080fd5b612bcc89828a016129d4565b92505060a08701356001600160401b03811115612beb57612beb600080fd5b612bf789828a016129d4565b9150509295509295509295565b61287181612885565b602081016107878284612c04565b612c258282612aa4565b5060200190565b60200190565b6000612c3c825190565b808452602093840193830160005b82811015612c6f578151612c5e8782612c1b565b965050602082019150600101612c4a565b5093949350505050565b602080825281016110cb8184612c32565b60008060408385031215612ca057612ca0600080fd5b6000612cac858561289f565b92505060208301356001600160401b03811115612ccb57612ccb600080fd5b612cd7858286016129d4565b9150509250929050565b60008083601f840112612cf657612cf6600080fd5b5081356001600160401b03811115612d1057612d10600080fd5b60208301915083600182028301111561184957611849600080fd5b60008060008060608587031215612d4457612d44600080fd5b6000612d5087876128eb565b9450506020612d61878288016128fc565b93505060408501356001600160401b03811115612d8057612d80600080fd5b612d8c87828801612ce1565b95989497509550505050565b60008060408385031215612dae57612dae600080fd5b6000612dba858561289f565b9250506020612cd7858286016128fc565b60008083601f840112612de057612de0600080fd5b5081356001600160401b03811115612dfa57612dfa600080fd5b60208301915083602082028301111561184957611849600080fd5b60008060208385031215612e2b57612e2b600080fd5b82356001600160401b03811115612e4457612e44600080fd5b612e5085828601612dcb565b92509250509250929050565b600080600060608486031215612e7457612e74600080fd5b6000612e80868661289f565b9350506020612e918682870161289f565b9250506040612ea2868287016128fc565b9150509250925092565b60006107876001600160a01b038316612ec3565b90565b6001600160a01b031690565b600061078782612eac565b600061078782612ecf565b61287181612eda565b602081016107878284612ee5565b600080600060408486031215612f1457612f14600080fd5b6000612f2086866128eb565b93505060208401356001600160401b03811115612f3f57612f3f600080fd5b612f4b86828701612ce1565b92509250509250925092565b60008060408385031215612f6d57612f6d600080fd5b6000612dba85856128eb565b60008060008060408587031215612f9257612f92600080fd5b84356001600160401b03811115612fab57612fab600080fd5b612fb787828801612dcb565b945094505060208501356001600160401b03811115612fd857612fd8600080fd5b612d8c87828801612dcb565b60006110cb8383612ae2565b6000612ffa825190565b808452602084019350836020820285016130148560200190565b60005b8481101561304857838303885281516130308482612fe4565b93505060208201602098909801979150600101613017565b50909695505050505050565b805160608084526000919084019061306c8282612ae2565b915050602083015184820360208601526130868282612ae2565b9150506040830151848203604086015261212c8282612ff0565b60006110cb8383613054565b60006130b6825190565b808452602084019350836020820285016130d08560200190565b60005b8481101561304857838303885281516130ec84826130a0565b935050602082016020989098019791506001016130d3565b602080825281016110cb81846130ac565b60278152602081017f4d61696c626f78436c69656e743a20696e76616c696420636f6e74726163742081526673657474696e6760c81b602082015290505b60400190565b6020808252810161078781613115565b602e8152602081017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b60208201529050613153565b6020808252810161078781613169565b600060ff8216610787565b612871816131c2565b6020810161078782846131cd565b634e487b7160e01b600052602260045260246000fd5b60028104600182168061320e57607f821691505b602082108103613220576132206131e4565b50919050565b602c8152602081017f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682081526b19195b1959d85d1958d85b1b60a21b60208201529050613153565b6020808252810161078781613226565b602c8152602081017f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682081526b6163746976652070726f787960a01b60208201529050613153565b602080825281016107878161327d565b60388152602081017f555550535570677261646561626c653a206d757374206e6f742062652063616c81527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060208201529050613153565b60208082528101610787816132d4565b60218152602081017f4d61696c626f78436c69656e743a2073656e646572206e6f74206d61696c626f8152600f60fb1b60208201529050613153565b602080825281016107878161333c565b60258152602081017f456e726f6c6c656420726f7574657220646f6573206e6f74206d61746368207381526432b73232b960d91b60208201529050613153565b6020808252810161078781613388565b805161078781612896565b6000602082840312156133f8576133f8600080fd5b600061097b84846133d8565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156107875761078761341a565b805161344f8382612c04565b5060208101516134626020840182612c04565b506040810151610fab60408401826128cb565b606081016107878284613443565b60008154613490816131fa565b8085526020850194506001821680156134b057600181146134c6576134f4565b60ff1983168652602082151502860193506134f4565b60008581526020902060005b838110156134ee578154888201526001909101906020016134d2565b87019450505b50505092915050565b6060810161350b8286612c04565b818103602083015261351d8185613483565b9050818103604083015261212c8184612ae2565b801515612836565b805161078781613531565b60006020828403121561355957613559600080fd5b600061097b8484613539565b61296081612ec0565b60288152602081017f43726f7373436861696e54726561737572794d6f64756c653a2073656e64696e815267339032b93937b91760c11b60208201529050613153565b602080825281016107878161356e565b600781526020810166042d8cadccee8d60cb1b81529050612c2c565b60208082528101610787816135c1565b60268152602081017f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b60208201529050613153565b60208082528101610787816135ed565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65729101908152612c2c565b602080825281016107878161363e565b6000610787612ec08381565b6136938361367e565b815460001960089490940293841b1916921b91909117905550565b6000610fab81848461368a565b81811015610c82576136ce6000826136ae565b6001016136bb565b601f821115610fab576000818152602090206020601f850104810160208510156136fd5750805b610d576020601f8601048301826136bb565b81516001600160401b0381111561372857613728612907565b61373282546131fa565b61373d8282856136d6565b506020601f821160018114613772576000831561375a5750848201515b600019600885021c1981166002850217855550610d57565b600084815260208120601f198516915b828110156137a25787850151825560209485019460019092019101613782565b50848210156137bf5783870151600019601f87166008021c191681555b50505050600202600101905550565b600061078782612885565b612836816137ce565b8051610787816137d9565b60006020828403121561380257613802600080fd5b600061097b84846137e2565b60288152602081017f5b5147444b2d3030363030355d2d4e6f7420617574686f72697a656420746f208152673ab833b930b2329760c11b60208201529050613153565b602080825281016107878161380e565b8051610787816128f6565b60006020828403121561388157613881600080fd5b600061097b8484613861565b602e8152602081017f45524331393637557067726164653a206e657720696d706c656d656e7461746981526d6f6e206973206e6f74205555505360901b60208201529050613153565b602080825281016107878161388d565b60298152602081017f45524331393637557067726164653a20756e737570706f727465642070726f788152681a58589b195555525160ba1b60208201529050613153565b60208082528101610787816138e6565b60006001820161394c5761394c61341a565b5060010190565b602c8152602081017f43726f7373436861696e54726561737572794d6f64756c653a207065726d697381526b39b4b7b7103232b734b2b21760a11b60208201529050613153565b6020808252810161078781613953565b8051610787816128df565b6000602082840312156139ca576139ca600080fd5b600061097b84846139aa565b601a8152602081017f446570656e64616e743a206e6f7420616e20696e6a6563746f7200000000000081529050612c2c565b60208082528101610787816139d6565b6000613a22825190565b613a30818560208601612abe565b9290920192915050565b6d2220a7a6b2b6b132b92937b6329d60911b81525b600e016107878183613a18565b6d2220a7a2bc3832b93a2937b6329d60911b8152613a4f565b6d2220a7ab37ba34b733a937b6329d60911b8152613a4f565b602b8152602081017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b60208201529050613153565b6020808252810161078781613a8e565b602d8152602081017f455243313936373a206e657720696d706c656d656e746174696f6e206973206e81526c1bdd08184818dbdb9d1c9858dd609a1b60208201529050613153565b6020808252810161078781613ae4565b7f4e6f20726f7574657220656e726f6c6c656420666f7220646f6d61696e3a20008152601f016107878183613a18565b60a08101613b7a8288612aa4565b613b8760208301876128cb565b8181036040830152613b998186612ae2565b90508181036060830152613bad8185612ae2565b90506124f46080830184612ee5565b6107878183613a18565b601d8152602081017f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081529050612c2c565b6020808252810161078781613bc6565b818103818111156107875761078761341a565b634e487b7160e01b600052603160045260246000fd5b60006107878260f01b90565b61287161ffff8216613c31565b60006107878260601b90565b600061078782613c4a565b612871613c6d82612885565b613c56565b613c7c8187613c3d565b600201613c8981866128cb565b602001613c9681856128cb565b602001613ca38184613c61565b6014016124f48183613a1856fe3d1f25f1ac447e55e7fec744471c4dab1c6a2b6ffb897825f9ea3d2e8c9be583360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706