skill-wallet
Version:
The SkillWallet is a permissionless, open-source protocol for the creation of universal, self-sovereign Identities - based on Skills instead of personal data. <br/> It comes as an upgradable, Non-Transferable, Non-Fungible-Token (U-NT-NFT) - and it entile
1,025 lines • 116 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "SkillWalletID",
"sourceName": "contracts/main/SkillWallet.sol",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "approved",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "ApprovalForAll",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "discordId",
"type": "string"
}
],
"name": "DiscordIDConnectedToSkillWallet",
"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": "uint256",
"name": "skillWalletId",
"type": "uint256"
}
],
"name": "PubKeyAddedToSkillWallet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "skillWalletId",
"type": "uint256"
}
],
"name": "SkillWalletActivated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "SkillWalletClaimed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "skillWalletId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "newCommunity",
"type": "address"
}
],
"name": "SkillWalletCommunityChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "skillWalletOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "community",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "skillWalletId",
"type": "uint256"
}
],
"name": "SkillWalletCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "skillWalletId",
"type": "uint256"
}
],
"name": "activateSkillWallet",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "discordID",
"type": "string"
}
],
"name": "addDiscordIDToSkillWallet",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "skillWalletId",
"type": "uint256"
},
{
"internalType": "string",
"name": "pubKey",
"type": "string"
}
],
"name": "addPubKeyToSkillWallet",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "approve",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "baseURI",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "claim",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "skillWalletOwner",
"type": "address"
},
{
"internalType": "string",
"name": "url",
"type": "string"
},
{
"internalType": "enum RoleUtils.Roles",
"name": "role",
"type": "uint8"
},
{
"internalType": "bool",
"name": "isClaimable",
"type": "bool"
}
],
"name": "create",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "skillWalletId",
"type": "uint256"
}
],
"name": "getActiveCommunity",
"outputs": [
{
"internalType": "address",
"name": "community",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "getApproved",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "skillWalletOwner",
"type": "address"
}
],
"name": "getClaimableSkillWalletId",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "skillWalletId",
"type": "uint256"
}
],
"name": "getCommunityHistory",
"outputs": [
{
"internalType": "address[]",
"name": "communities",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getOSMAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "skillWalletId",
"type": "uint256"
}
],
"name": "getPubKeyBySkillWalletId",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "skillWalletHolderAddress",
"type": "address"
}
],
"name": "getRole",
"outputs": [
{
"internalType": "enum RoleUtils.Roles",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "skillWalletOwner",
"type": "address"
}
],
"name": "getSkillWalletIdByOwner",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getTotalSkillWalletsRegistered",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_linkToken",
"type": "address"
},
{
"internalType": "address",
"name": "_oracle",
"type": "address"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "isApprovedForAll",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "requestId",
"type": "bytes32"
}
],
"name": "isRequestIdValid",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "skillWalletId",
"type": "uint256"
}
],
"name": "isSkillWalletActivated",
"outputs": [
{
"internalType": "bool",
"name": "status",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "skillWalletOwner",
"type": "address"
}
],
"name": "isSkillWalletClaimable",
"outputs": [
{
"internalType": "bool",
"name": "status",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "skillWalletOwner",
"type": "address"
}
],
"name": "isSkillWalletRegistered",
"outputs": [
{
"internalType": "bool",
"name": "status",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "onERC721Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "osmAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "ownerOf",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "safeTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "_data",
"type": "bytes"
}
],
"name": "safeTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "setApprovalForAll",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "oracle",
"type": "address"
},
{
"internalType": "bytes32",
"name": "jobID",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "fee",
"type": "uint256"
}
],
"name": "setChainlinkDetails",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "skillWalletClaimers",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "skillWalletToDiscordID",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "skillWalletToPubKey",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "skillWalletToRole",
"outputs": [
{
"internalType": "enum RoleUtils.Roles",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
}
],
"name": "tokenByIndex",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
}
],
"name": "tokenOfOwnerByIndex",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "tokenURI",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x608060405234801561001057600080fd5b50615c7a806100206000396000f3fe60806040523480156200001157600080fd5b5060043610620002bc5760003560e01c8063588bf7a9116200017d5780638da5cb5b11620000e1578063b88d4fde1162000093578063b88d4fde1462000641578063c71ae3021462000658578063c87b56dd1462000662578063e985e9c51462000679578063ec660fd91462000690578063f2fde38b14620006a757620002bc565b80638da5cb5b14620005d15780638ec4ad9e14620005db5780638f4b3f5914620005f257806395d89b411462000609578063a1a366f31462000613578063a22cb465146200062a57620002bc565b80636eba3dce116200013b5780636eba3dce14620005545780636f7e85eb146200056b57806370a082311462000582578063715018a61462000599578063739c1cba14620005a357806388f683f614620005ba57620002bc565b8063588bf7a914620004ee578063617fc19d14620005055780636352211e146200051c57806365cbb7aa14620005335780636c0360eb146200054a57620002bc565b80632c18ee73116200022557806342842e0e11620001e357806342842e0e146200047157806342ca9629146200048857806344276733146200049f578063485cc95514620004b65780634e71d92d14620004cd5780634f6ccce714620004d757620002bc565b80632c18ee7314620003e05780632f745c5914620003f7578063388620d3146200040e578063407ca1c7146200042557806341df66d4146200044b57620002bc565b80630fddba5f116200027f5780630fddba5f146200035f578063150b7a02146200037657806318160ddd146200039c5780631b6989b514620003b557806323b872dd14620003bf5780632b32da9014620003d657620002bc565b806301ffc9a714620002c157806305eb4ec214620002f057806306fdde031462000309578063081812fc1462000322578063095ea7b31462000348575b600080fd5b620002d8620002d236600462002fca565b620006be565b604051620002e79190620031f5565b60405180910390f35b620003076200030136600462003008565b620006e1565b005b62000313620007c0565b604051620002e791906200322a565b620003396200033336600462002fb1565b6200085b565b604051620002e7919062003118565b620003076200035936600462002f84565b620008a3565b620003076200037036600462002ecc565b6200094b565b6200038d6200038736600462002da6565b62000a00565b604051620002e7919062003200565b620003a662000a11565b604051620002e7919062003d3e565b6200033962000a24565b62000307620003d036600462002d61565b62000a33565b6200033962000a74565b62000307620003f136600462002f03565b62000a83565b620003a66200040836600462002f84565b62000c12565b620003136200041f36600462002fb1565b62000c45565b6200043c6200043636600462002fb1565b62000cea565b604051620002e79190620031a6565b620004626200045c36600462002fb1565b62000db2565b604051620002e7919062003215565b620003076200048236600462002d61565b62000dc7565b620003a66200049936600462002d0a565b62000de4565b62000462620004b036600462002d0a565b62000e2f565b62000307620004c736600462002d28565b62000e8a565b6200030762000fd5565b620003a6620004e836600462002fb1565b62001098565b62000307620004ff3660046200304c565b620010b6565b620003076200051636600462002fb1565b62001256565b620003396200052d36600462002fb1565b6200135c565b620003396200054436600462002fb1565b6200138d565b620003136200140f565b620003136200056536600462002fb1565b62001473565b620002d86200057c36600462002fb1565b62001512565b620003a66200059336600462002d0a565b62001527565b6200030762001575565b620002d8620005b436600462002d0a565b62001605565b620002d8620005cb36600462002d0a565b62001644565b620003396200168d565b620003a6620005ec36600462002d0a565b6200169c565b620002d86200060336600462002fb1565b620016f0565b620003136200176c565b620003136200062436600462002fb1565b620017d0565b620003076200063b36600462002e8d565b6200183b565b620003076200065236600462002e1d565b62001914565b620003a66200195c565b620003136200067336600462002fb1565b6200196a565b620002d86200068a36600462002d28565b62001ac5565b620003a6620006a136600462002d0a565b62001af3565b62000307620006b836600462002d0a565b62001b05565b6001600160e01b0319811660009081526033602052604090205460ff165b919050565b33600090815260cc602090815260408083205480845260c9909252909120546001600160a01b0316620007315760405162461bcd60e51b815260040162000728906200350a565b60405180910390fd5b600081815260cd602052604090205460ff16620007625760405162461bcd60e51b8152600401620007289062003787565b600081815260cf602052604090206200077d90848462002b0a565b507f6446b2d7ea6c1205b2b18097bd5eb8014ddc1a8c403ec673bce2d31432d2406b818484604051620007b39392919062003d5e565b60405180910390a1505050565b606a8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015620008505780601f10620008245761010080835404028352916020019162000850565b820191906000526020600020905b8154815290600101906020018083116200083257829003601f168201915b505050505090505b90565b6000620008688262001bd0565b620008875760405162461bcd60e51b815260040162000728906200397b565b506000908152606860205260409020546001600160a01b031690565b6000620008b0826200135c565b9050806001600160a01b0316836001600160a01b03161415620008e75760405162461bcd60e51b8152600401620007289062003ae0565b806001600160a01b0316620008fb62001be5565b6001600160a01b031614806200091b57506200091b816200068a62001be5565b6200093a5760405162461bcd60e51b815260040162000728906200372a565b62000946838362001be9565b505050565b6200095562001be5565b6001600160a01b0316620009686200168d565b6001600160a01b031614620009915760405162461bcd60e51b8152600401620007289062003a13565b60d254604051630fddba5f60e01b81526001600160a01b0390911690630fddba5f90620009c79086908690869060040162003185565b600060405180830381600087803b158015620009e257600080fd5b505af1158015620009f7573d6000803e3d6000fd5b50505050505050565b630a85bd0160e11b95945050505050565b600062000a1f606662001c59565b905090565b60d2546001600160a01b031690565b62000a4862000a4162001be5565b8262001c66565b62000a675760405162461bcd60e51b8152600401620007289062003bb9565b6200094683838362001cf8565b60d2546001600160a01b031681565b62000a8e8462001527565b1562000aae5760405162461bcd60e51b815260040162000728906200323f565b6001600160a01b038416600090815260d060205260409020541562000ae75760405162461bcd60e51b81526004016200072890620034ac565b600062000af560d162001d30565b9050811562000b2b5762000b0a308262001d34565b6001600160a01b038516600090815260d06020526040902081905562000b37565b62000b37858262001d34565b62000b43818562001d54565b600081815260c9602090815260408083208054336001600160a01b0319918216811790925560cb845282852080546001818101835591875285872001805490921690921790556001600160a01b038916845260cc835281842085905584845260ca9092529091208054859260ff199091169083600681111562000bc257fe5b021790555062000bd360d162001d9f565b604051819033906001600160a01b038816907f66ac2c421746d22be0909c7dcc105fafb6df697e7bd8b5489e5df0fca2bb0b8c90600090a45050505050565b6001600160a01b038216600090815260656020526040812062000c3c908363ffffffff62001da816565b90505b92915050565b600081815260ce602090815260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084526060939283018282801562000cde5780601f1062000cb25761010080835404028352916020019162000cde565b820191906000526020600020905b81548152906001019060200180831162000cc057829003601f168201915b50505050509050919050565b606062000cf860d162001d30565b821062000d195760405162461bcd60e51b815260040162000728906200381c565b600082815260cb602052604090205462000d475760405162461bcd60e51b8152600401620007289062003c8b565b600082815260cb60209081526040918290208054835181840281018401909452808452909183018282801562000cde57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000d885750505050509050919050565b60ca6020526000908152604090205460ff1681565b620009468383836040518060200160405280600081525062001914565b600062000df18262001527565b60011462000e135760405162461bcd60e51b815260040162000728906200357a565b506001600160a01b0316600090815260cc602052604090205490565b600062000e3c8262001527565b60011462000e5e5760405162461bcd60e51b815260040162000728906200357a565b506001600160a01b0316600090815260cc6020908152604080832054835260ca90915290205460ff1690565b600054610100900460ff168062000ea6575062000ea662001db6565b8062000eb5575060005460ff16155b62000ed45760405162461bcd60e51b8152600401620007289062003864565b600054610100900460ff1615801562000f00576000805460ff1961ff0019909116610100171660011790555b62000f0a62001dc9565b62000f576040518060400160405280600d81526020016c14dada5b1b15d85b1b195d1251609a1b8152506040518060400160405280600481526020016314d5d25160e21b81525062001e69565b62000f6360d162001d9f565b828260405162000f739062002b8f565b62000f809291906200316b565b604051809103906000f08015801562000f9d573d6000803e3d6000fd5b5060d280546001600160a01b0319166001600160a01b0392909216919091179055801562000946576000805461ff0019169055505050565b62000fe03362001527565b15620010005760405162461bcd60e51b815260040162000728906200323f565b33600090815260d060205260409020546200102f5760405162461bcd60e51b8152600401620007289062003385565b33600081815260d060205260409020546200104c91309162001cf8565b33600081815260d06020526040908190205490517f9bfc3cadf48744b6422b7ce9665cb9c6677f11494a78d74faab3abebe3c6afa2926200108e929162003d47565b60405180910390a1565b600080620010ae60668463ffffffff62001f1616565b509392505050565b620010c062001be5565b6001600160a01b0316620010d36200168d565b6001600160a01b031614620010fc5760405162461bcd60e51b8152600401620007289062003a13565b6200110860d162001d30565b8310620011295760405162461bcd60e51b815260040162000728906200381c565b600083815260c960205260409020546001600160a01b0316620011605760405162461bcd60e51b815260040162000728906200350a565b600083815260cd602052604090205460ff1615620011925760405162461bcd60e51b8152600401620007289062003b6e565b600083815260ce60205260409020546002600019610100600184161502019091160415620011d45760405162461bcd60e51b8152600401620007289062003ce8565b30620011e0846200135c565b6001600160a01b031614156200120a5760405162461bcd60e51b81526004016200072890620038b2565b600083815260ce602052604090206200122590838362002b0a565b5060405183907f46720ddbef9dfaafeff045ae333e447ae69c7560cb5982ce5f6c1c55471db14190600090a2505050565b60d2546001600160a01b03163314620012835760405162461bcd60e51b81526004016200072890620036d5565b6200128f60d162001d30565b8110620012b05760405162461bcd60e51b815260040162000728906200381c565b600081815260c960205260409020546001600160a01b0316620012e75760405162461bcd60e51b815260040162000728906200350a565b600081815260cd602052604090205460ff1615620013195760405162461bcd60e51b8152600401620007289062003b6e565b600081815260cd6020526040808220805460ff191660011790555182917f3b9fa7eba99fc1e57dd4fc92ee03c32e0766a7c33c9f6222a3e3d72788fe4ff691a250565b600062000c3f8260405180606001604052806029815260200162005c1c602991396066919063ffffffff62001f3616565b60006200139b60d162001d30565b8210620013bc5760405162461bcd60e51b815260040162000728906200381c565b600082815260c960205260409020546001600160a01b0316620013f35760405162461bcd60e51b815260040162000728906200350a565b50600090815260c960205260409020546001600160a01b031690565b606d8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015620008505780601f10620008245761010080835404028352916020019162000850565b60cf6020908152600091825260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156200150a5780601f10620014de576101008083540402835291602001916200150a565b820191906000526020600020905b815481529060010190602001808311620014ec57829003601f168201915b505050505081565b600090815260d4602052604090205460ff1690565b60006001600160a01b038216620015525760405162461bcd60e51b81526004016200072890620037d2565b6001600160a01b038216600090815260656020526040902062000c3f9062001c59565b6200157f62001be5565b6001600160a01b0316620015926200168d565b6001600160a01b031614620015bb5760405162461bcd60e51b8152600401620007289062003a13565b6097546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3609780546001600160a01b0319169055565b60006001600160a01b038216620016305760405162461bcd60e51b8152600401620007289062003b21565b6200163b8262001527565b60011492915050565b60006001600160a01b0382166200166f5760405162461bcd60e51b8152600401620007289062003b21565b506001600160a01b0316600090815260d06020526040902054151590565b6097546001600160a01b031690565b6001600160a01b038116600090815260d06020526040812054620016d45760405162461bcd60e51b815260040162000728906200345c565b506001600160a01b0316600090815260d0602052604090205490565b6000620016fe60d162001d30565b82106200171f5760405162461bcd60e51b815260040162000728906200381c565b600082815260c960205260409020546001600160a01b0316620017565760405162461bcd60e51b815260040162000728906200350a565b50600090815260cd602052604090205460ff1690565b606b8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015620008505780601f10620008245761010080835404028352916020019162000850565b60ce6020908152600091825260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156200150a5780601f10620014de576101008083540402835291602001916200150a565b6200184562001be5565b6001600160a01b0316826001600160a01b03161415620018795760405162461bcd60e51b815260040162000728906200360c565b80606960006200188862001be5565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155620018ce62001be5565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051620019089190620031f5565b60405180910390a35050565b620019296200192262001be5565b8362001c66565b620019485760405162461bcd60e51b8152600401620007289062003bb9565b620019568484848462001f4f565b50505050565b600062000a1f60d162001d30565b6060620019778262001bd0565b620019965760405162461bcd60e51b8152600401620007289062003a91565b6000828152606c602090815260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084526060939283018282801562001a2f5780601f1062001a035761010080835404028352916020019162001a2f565b820191906000526020600020905b81548152906001019060200180831162001a1157829003601f168201915b50505050509050606062001a426200140f565b905080516000141562001a5857509050620006dc565b81511562001a8e57808260405160200162001a75929190620030e6565b60405160208183030381529060405292505050620006dc565b8062001a9a8562001f89565b60405160200162001aad929190620030e6565b60405160208183030381529060405292505050919050565b6001600160a01b03918216600090815260696020908152604080832093909416825291909152205460ff1690565b60d06020526000908152604090205481565b62001b0f62001be5565b6001600160a01b031662001b226200168d565b6001600160a01b03161462001b4b5760405162461bcd60e51b8152600401620007289062003a13565b6001600160a01b03811662001b745760405162461bcd60e51b815260040162000728906200333f565b6097546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3609780546001600160a01b0319166001600160a01b0392909216919091179055565b600062000c3f60668363ffffffff6200206d16565b3390565b600081815260686020526040902080546001600160a01b0319166001600160a01b038416908117909155819062001c20826200135c565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600062000c3f8262001d30565b600062001c738262001bd0565b62001c925760405162461bcd60e51b8152600401620007289062003689565b600062001c9f836200135c565b9050806001600160a01b0316846001600160a01b0316148062001cdd5750836001600160a01b031662001cd2846200085b565b6001600160a01b0316145b8062001cf0575062001cf0818562001ac5565b949350505050565b6001600160a01b038316301462001d235760405162461bcd60e51b8152600401620007289062003c41565b620009468383836200207b565b5490565b62001d50828260405180602001604052806000815250620021ad565b5050565b62001d5f8262001bd0565b62001d7e5760405162461bcd60e51b81526004016200072890620039c7565b6000828152606c602090815260409091208251620009469284019062002b9d565b80546001019055565b600062000c3c8383620021e7565b600062001dc33062002230565b15905090565b600054610100900460ff168062001de5575062001de562001db6565b8062001df4575060005460ff16155b62001e135760405162461bcd60e51b8152600401620007289062003864565b600054610100900460ff1615801562001e3f576000805460ff1961ff0019909116610100171660011790555b62001e4962002236565b62001e53620022c0565b801562001e66576000805461ff00191690555b50565b600054610100900460ff168062001e85575062001e8562001db6565b8062001e94575060005460ff16155b62001eb35760405162461bcd60e51b8152600401620007289062003864565b600054610100900460ff1615801562001edf576000805460ff1961ff0019909116610100171660011790555b62001ee962002236565b62001ef3620023a5565b62001eff83836200242d565b801562000946576000805461ff0019169055505050565b600080808062001f27868662002505565b909450925050505b9250929050565b600062001f4584848462002565565b90505b9392505050565b62001f5c84848462001cf8565b62001f6a84848484620025c8565b620019565760405162461bcd60e51b81526004016200072890620032ed565b60608162001fb057506040805180820190915260018152600360fc1b6020820152620006dc565b8160005b811562001fca57600101600a8204915062001fb4565b60608167ffffffffffffffff8111801562001fe457600080fd5b506040519080825280601f01601f19166020018201604052801562002010576020820181803683370190505b50859350905060001982015b83156200206457600a840660300160f81b828280600190039350815181106200204157fe5b60200101906001600160f81b031916908160001a905350600a840493506200201c565b50949350505050565b600062000c3c8383620026ba565b826001600160a01b031662002090826200135c565b6001600160a01b031614620020b95760405162461bcd60e51b8152600401620007289062003a48565b6001600160a01b038216620020e25760405162461bcd60e51b81526004016200072890620035c8565b620020ef83838362000946565b620020fc60008262001be9565b6001600160a01b038316600090815260656020526040902062002126908263ffffffff620026d216565b506001600160a01b038216600090815260656020526040902062002151908263ffffffff620026e016565b50620021666066828463ffffffff620026ee16565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b620021b9838362002706565b620021c86000848484620025c8565b620009465760405162461bcd60e51b81526004016200072890620032ed565b815460009082106200220d5760405162461bcd60e51b81526004016200072890620032ab565b8260000182815481106200221d57fe5b9060005260206000200154905092915050565b3b151590565b600054610100900460ff16806200225257506200225262001db6565b8062002261575060005460ff16155b620022805760405162461bcd60e51b8152600401620007289062003864565b600054610100900460ff1615801562001e53576000805460ff1961ff001990911661010017166001179055801562001e66576000805461ff001916905550565b600054610100900460ff1680620022dc5750620022dc62001db6565b80620022eb575060005460ff16155b6200230a5760405162461bcd60e51b8152600401620007289062003864565b600054610100900460ff1615801562002336576000805460ff1961ff0019909116610100171660011790555b60006200234262001be5565b609780546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350801562001e66576000805461ff001916905550565b600054610100900460ff1680620023c15750620023c162001db6565b80620023d0575060005460ff16155b620023ef5760405162461bcd60e51b8152600401620007289062003864565b600054610100900460ff161580156200241b576000805460ff1961ff0019909116610100171660011790555b62001e536301ffc9a760e01b620027e4565b600054610100900460ff16806200244957506200244962001db6565b8062002458575060005460ff16155b620024775760405162461bcd60e51b8152600401620007289062003864565b600054610100900460ff16158015620024a3576000805460ff1961ff0019909116610100171660011790555b8251620024b890606a90602086019062002b9d565b508151620024ce90606b90602085019062002b9d565b50620024e16380ac58cd60e01b620027e4565b620024f3635b5e139f60e01b620027e4565b62001eff63780e9d6360e01b620027e4565b8154600090819083106200252d5760405162461bcd60e51b8152600401620007289062003904565b60008460000184815481106200253f57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b60008281526001840160205260408120548281620025985760405162461bcd60e51b81526004016200072891906200322a565b50846000016001820381548110620025ac57fe5b9060005260206000209060020201600101549150509392505050565b6000620025de846001600160a01b031662002230565b620025ec5750600162001cf0565b606062002681630a85bd0160e11b6200260462001be5565b8887876040516024016200261c94939291906200312c565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505060405180606001604052806032815260200162005bea603291396001600160a01b038816919063ffffffff6200283616565b90506000818060200190518101906200269b919062002fe9565b6001600160e01b031916630a85bd0160e11b1492505050949350505050565b60009081526001919091016020526040902054151590565b600062000c3c838362002847565b600062000c3c838362002913565b600062001f4584846001600160a01b03851662002962565b6001600160a01b0382166200272f5760405162461bcd60e51b8152600401620007289062003946565b6200273a8162001bd0565b156200275a5760405162461bcd60e51b8152600401620007289062003425565b620027686000838362000946565b6001600160a01b038216600090815260656020526040902062002792908263ffffffff620026e016565b50620027a76066828463ffffffff620026ee16565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b03198082161415620028115760405162461bcd60e51b81526004016200072890620033ee565b6001600160e01b0319166000908152603360205260409020805460ff19166001179055565b606062001f458484600085620029fd565b600081815260018301602052604081205480156200290857835460001980830191908101906000908790839081106200287c57fe5b90600052602060002001549050808760000184815481106200289a57fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080620028cb57fe5b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505062000c3f565b600091505062000c3f565b6000620029218383620026ba565b620029595750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000c3f565b50600062000c3f565b600082815260018401602052604081205480620029c957505060408051808201825283815260208082018481528654600181810189556000898152848120955160029093029095019182559151908201558654868452818801909252929091205562001f48565b82856000016001830381548110620029dd57fe5b906000526020600020906002020160010181905550600091505062001f48565b60608247101562002a225760405162461bcd60e51b8152600401620007289062003643565b62002a2d8562002230565b62002a4c5760405162461bcd60e51b8152600401620007289062003c0a565b60006060866001600160a01b0316858760405162002a6b9190620030c8565b60006040518083038185875af1925050503d806000811462002aaa576040519150601f19603f3d011682016040523d82523d6000602084013e62002aaf565b606091505b509150915062002ac182828662002acc565b979650505050505050565b6060831562002add57508162001f48565b82511562002aee5782518084602001fd5b8160405162461bcd60e51b81526004016200072891906200322a565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062002b4d5782800160ff1982351617855562002b7d565b8280016001018555821562002b7d579182015b8281111562002b7d57823582559160200191906001019062002b60565b5062002b8b92915062002c10565b5090565b611df98062003df183390190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062002be057805160ff191683800117855562002b7d565b8280016001018555821562002b7d579182015b8281111562002b7d57825182559160200191906001019062002bf3565b6200085891905b8082111562002b8b576000815560010162002c17565b80356001600160a01b038116811462000c3f57600080fd5b60008083601f84011262002c57578182fd5b50813567ffffffffffffffff81111562002c6f578182fd5b60208301915083602082850101111562001f2f57600080fd5b600082601f83011262002c99578081fd5b813567ffffffffffffffff8082111562002cb1578283fd5b604051601f8301601f19168101602001828111828210171562002cd2578485fd5b60405282815292508284830160200186101562002cee57600080fd5b8260208601602083013760006020848301015250505092915050565b60006020828403121562002d1c578081fd5b62000c3c838362002c2d565b6000806040838503121562002d3b578081fd5b62002d47848462002c2d565b915062002d58846020850162002c2d565b90509250929050565b60008060006060848603121562002d76578081fd5b833562002d838162003dc3565b9250602084013562002d958162003dc3565b929592945050506040919091013590565b60008060008060006080868803121562002dbe578081fd5b62002dca878762002c2d565b945062002ddb876020880162002c2d565b935060408601359250606086013567ffffffffffffffff81111562002dfe578182fd5b62002e0c8882890162002c45565b969995985093965092949392505050565b6000806000806080858703121562002e33578384fd5b62002e3f868662002c2d565b935062002e50866020870162002c2d565b925060408501359150606085013567ffffffffffffffff81111562002e73578182fd5b62002e818782880162002c88565b91505092959194509250565b6000806040838503121562002ea0578182fd5b62002eac848462002c2d565b91506020830135801515811462002ec1578182fd5b809150509250929050565b60008060006060848603121562002ee1578283fd5b833562002eee8162003dc3565b95602085013595506040909401359392505050565b6000806000806080858703121562002f19578384fd5b62002f25868662002c2d565b9350602085013567ffffffffffffffff81111562002f41578384fd5b62002f4f8782880162002c88565b93505060408501356007811062002f64578283fd5b91506060850135801515811462002f79578182fd5b939692955090935050565b6000806040838503121562002f97578182fd5b62002fa3848462002c2d565b946020939093013593505050565b60006020828403121562002fc3578081fd5b5035919050565b60006020828403121562002fdc578081fd5b813562001f488162003dd9565b60006020828403121562002ffb578081fd5b815162001f488162003dd9565b600080602083850312156200301b578182fd5b823567ffffffffffffffff81111562003032578283fd5b620030408582860162002c45565b90969095509350505050565b60008060006040848603121562003061578081fd5b83359250602084013567ffffffffffffffff8111156200307f578182fd5b6200308d8682870162002c45565b9497909650939450505050565b60008151808452620030b481602086016020860162003d94565b601f01601f19169290920160200192915050565b60008251620030dc81846020870162003d94565b9190910192915050565b60008351620030fa81846020880162003d94565b83519083016200310f82826020880162003d94565b01949350505050565b6001600160a01b0391909116815260200190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009062003161908301846200309a565b9695505050505050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039390931683526020830191909152604082015260600190565b6020808252825182820181905260009190848201906040850190845b81811015620031e95783516001600160a01b031683529284019291840191600101620031c2565b50909695505050505050565b901515815260200190565b6001600160e01b031991909116815260200190565b60208101600783106200322457fe5b91905290565b60006020825262000c3c60208301846200309a565b60208082526046908201527f536b696c6c57616c6c65743a20546865726520697320536b696c6c57616c6c6560408201527f7420616c7265616479207265676973746572656420666f722074686973206164606082015265323932b9b99760d11b608082015260a00190565b60208082526022908201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604082015261647360f01b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526043908201527f536b696c6c57616c6c65743a205468657265206973206e6f20536b696c6c576160408201527f6c6c657420746f20626520636c61696d6564206279207468697320616464726560608201526239b99760e91b608082015260a00190565b6020808252601c908201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604082015260600190565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b60208082526030908201527f536b696c6c57616c6c65743a2054686520536b696c6c57616c6c657420636c6160408201526f34b6b2b91034b99034b73b30b634b21760811b606082015260800190565b602080825260409082018190527f536b696c6c57616c6c65743a20546865726520697320536b696c6c57616c6c65908201527f7420746f20626520636c61696d6564206279207468697320616464726573732e606082015260800190565b6020808252604a908201527f536b696c6c57616c6c65743a2054686520536b696c6c57616c6c65742069732060408201527f6e6f7420696e20616e7920636f6d6d756e6974792c20696e76616c696420536b60608201526934b6362bb0b63632ba1760b11b608082015260a00190565b6020808252602e908201527f536b696c6c57616c6c65743a2054686520536b696c6c57616c6c6574206f776e60408201526d32b91034b99034b73b30b634b21760911b606082015260800190565b60208082526024908201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526019908201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604082015260600190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6040820152651c8818d85b1b60d21b606082015260800190565b6020808252602c908201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b60208082526035908201527f546869732066756e6374696f6e2063616e2062652063616c6c6564206f6e6c7960408201527420627920746865204f534d20636f6e74726163742160581b606082015260800190565b60208082526038908201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760408201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606082015260800190565b6020808252602b908201527f536b696c6c57616c6c65743a20536b696c6c2077616c6c6574206e6f7420796560408201526a1d081858dd1a5d985d195