Loading
[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "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": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "attributeId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "name", "type": "string" } ], "name": "NameUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256[]", "name": "attributeIds", "type": "uint256[]" }, { "indexed": false, "internalType": "string[]", "name": "names", "type": "string[]" } ], "name": "NamesUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "attributeId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "ValueUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256[]", "name": "attributeIds", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "ValuesUpdated", "type": "event" }, { "inputs": [], "name": "CONTRACT_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "SOULBOUND_WHITELIST_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "activeIds", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "balanceOfAll", "outputs": [ { "internalType": "address[]", "name": "owners", "type": "address[]" }, { "internalType": "uint256[][]", "name": "tokenIds", "type": "uint256[][]" }, { "internalType": "uint256[][]", "name": "balances", "type": "uint256[][]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256[]", "name": "attributeIds", "type": "uint256[]" } ], "name": "batchGetAttribute", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256[]", "name": "attributeIds", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "batchSetAttribute", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256[]", "name": "attributeIds", "type": "uint256[]" }, { "internalType": "string[]", "name": "names", "type": "string[]" } ], "name": "batchSetAttributeName", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "attributeIds", "type": "uint256[]" }, { "internalType": "string[]", "name": "names", "type": "string[]" } ], "name": "batchSetAttributeNames", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "batchTokenURI", "outputs": [ { "internalType": "string[]", "name": "", "type": "string[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "batchUri", "outputs": [ { "internalType": "string[]", "name": "", "type": "string[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "bridgeContract", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "bridgeExtraData", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "burnBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "exists", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "attributeId", "type": "uint256" } ], "name": "getAttribute", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getBlacklisted", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getRoleMember", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleMemberCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "imageBaseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "isBlacklisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "isSoulbound", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "mintBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "address[]", "name": "to", "type": "address[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "mintBatchOf", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "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": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "attributeId", "type": "uint256" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "setAttribute", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "attributeId", "type": "uint256" }, { "internalType": "string", "name": "name", "type": "string" } ], "name": "setAttributeName", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_bridgeContract", "type": "address" } ], "name": "setBridgeContract", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "setSoulbound", "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": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "wallet", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "teleport", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "tokensOf", "outputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "balances", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "unsetSoulbound", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6153a180620000f36000396000f3fe608060405234801561001057600080fd5b50600436106103265760003560e01c80638456cb59116101b8578063bd85b03911610104578063d547741f116100a2578063f5298aca1161007c578063f5298aca14610725578063fb95ac2d14610738578063fd5eea4e1461075a578063fe575a871461076d57600080fd5b8063d547741f146106c3578063e985e9c5146106d6578063f242432a1461071257600080fd5b8063ca15c873116100de578063ca15c87314610674578063cd59658314610687578063ce3675ad1461069b578063d179191a146106b057600080fd5b8063bd85b0391461063b578063be1ad65c1461064e578063c385ce251461066157600080fd5b806396c45e2f11610171578063a217fddf1161014b578063a217fddf14610605578063a22cb4651461060d578063b0fe60d514610620578063b198ce461461063357600080fd5b806396c45e2f146105ca578063994a95be146105dd578063a17d79ec146105f057600080fd5b80638456cb591461055657806387be85d31461055e5780639010d07c14610571578063911ec4701461059c57806391d14854146105af57806395d89b41146105c257600080fd5b80633f4ba83a116102775780636b20c454116102305780637685945e1161020a5780637685945e1461052057806377645839146105335780637d7a6d131461053b5780638129fc1c1461054e57600080fd5b80636b20c454146104da5780636d94f13a146104ed578063731133e91461050d57600080fd5b80633f4ba83a1461045f5780634e1273f4146104675780634f558e791461048757806358870da11461049a5780635a3f2672146104ad5780635c975abb146104ce57600080fd5b80631f7fdffa116102e4578063248a9ca3116102be578063248a9ca3146104035780632eb2c2d6146104265780632f2ff15d1461043957806336568abe1461044c57600080fd5b80631f7fdffa146103c6578063208e509f146103d957806321e5548c146103f057600080fd5b8062fdd58e1461032b57806301ffc9a71461035157806303fe46ab1461037457806306fdde03146103895780630b26cf661461039e5780630e89341c146103b3575b600080fd5b61033e610339366004613bbc565b610780565b6040519081526020015b60405180910390f35b61036461035f366004613bfc565b61081b565b6040519015158152602001610348565b61033e60008051602061534c83398151915281565b610391610840565b6040516103489190613c69565b6103b16103ac366004613c7c565b6108cf565b005b6103916103c1366004613c97565b610909565b6103b16103d4366004613cf4565b610b2b565b6103e1610bed565b60405161034893929190613e94565b6103b16103fe366004613ed7565b610d1e565b61033e610411366004613c97565b60009081526097602052604090206001015490565b6103b16104343660046140b9565b610de4565b6103b1610447366004614162565b610e30565b6103b161045a366004614162565b610e5a565b6103b1610ed8565b61047a61047536600461418e565b610ef9565b6040516103489190614258565b610364610495366004613c97565b611022565b6103b16104a836600461426b565b611035565b6104c06104bb366004613c7c565b6110b2565b6040516103489291906142ba565b6101295460ff16610364565b6103b16104e83660046142df565b611177565b6105006104fb366004614348565b611199565b60405161034891906143c4565b6103b161051b3660046143d7565b6111a4565b61033e61052e366004614437565b6111cd565b6103916111ed565b6103b1610549366004614459565b6111fb565b6103b16112bf565b6103b1611488565b6103b161056c36600461448c565b6114a7565b61058461057f366004614437565b61153c565b6040516001600160a01b039091168152602001610348565b6103646105aa366004613c97565b611554565b6103646105bd366004614162565b611578565b6103916115a3565b6103b16105d8366004613c97565b6115b1565b61047a6105eb366004614505565b6115ee565b61033e60008051602061530c83398151915281565b61033e600081565b6103b161061b366004614541565b6116b1565b61050061062e366004614348565b6116bc565b61047a611774565b61033e610649366004613c97565b611812565b6103b161065c36600461457d565b611829565b6103b161066f366004613c97565b61184b565b61033e610682366004613c97565b611887565b6102ba54610584906001600160a01b031681565b6106a361189e565b60405161034891906145b0565b6103b16106be3660046145c3565b6118b0565b6103b16106d1366004614162565b61197e565b6103646106e43660046146ae565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205460ff1690565b6103b16107203660046146d8565b6119a3565b6103b161073336600461457d565b6119e8565b610391610746366004614437565b505060408051602081019091526000815290565b6103b161076836600461473c565b6119f3565b61036461077b366004613c7c565b611a5e565b60006001600160a01b0383166107f05760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b5060008181526065602090815260408083206001600160a01b03861684529091529020545b92915050565b600063b0f4708d60e01b6001600160e01b031983161480610815575061081582611a6c565b610288805461084e90614768565b80601f016020809104026020016040519081016040528092919081815260200182805461087a90614768565b80156108c75780601f1061089c576101008083540402835291602001916108c7565b820191906000526020600020905b8154815290600101906020018083116108aa57829003601f168201915b505050505081565b6108e660008051602061532c833981519152611a91565b6102ba80546001600160a01b0319166001600160a01b0392909216919091179055565b60606000610919836103e8611a9b565b90506000610929846103e9611a9b565b6040805160038082526080820190925291925060009190816020015b61096960405180606001604052806060815260200160608152602001606081525090565b8152602001906001900390816109455790505090506040518060600160405280604051806040016040528060048152602001635479706560e01b81525081526020016040518060200160405280600081525081526020016109cb876000611a9b565b815250816000815181106109e1576109e16147a2565b602002602001018190525060405180606001604052806040518060400160405280600881526020016726b7b234b334b2b960c11b8152508152602001604051806020016040528060008152508152602001610a3d876001611a9b565b81525081600181518110610a5357610a536147a2565b60200260200101819052506040518060600160405280610a74876002611a9b565b815260200186600314610aaf576040518060400160405280601081526020016f626f6f73745f70657263656e7461676560801b815250610ad5565b6040518060400160405280600c81526020016b3137b7b9ba2fb73ab6b132b960a11b8152505b8152602001610aed610ae88860026111cd565b611b4a565b81525081600281518110610b0357610b036147a2565b6020026020010181905250610b22610b1d86858585611bdc565b611c28565b95945050505050565b610b426000805160206152ec833981519152611a91565b610be48787878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808b0282810182019093528a82529093508a92508991829185019084908082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250611c5992505050565b50505050505050565b6060806060610bfd610190611db4565b925082516001600160401b03811115610c1857610c18613f70565b604051908082528060200260200182016040528015610c4b57816020015b6060815260200190600190039081610c365790505b50915082516001600160401b03811115610c6757610c67613f70565b604051908082528060200260200182016040528015610c9a57816020015b6060815260200190600190039081610c855790505b50905060005b8351811015610d1857610ccb848281518110610cbe57610cbe6147a2565b60200260200101516110b2565b848381518110610cdd57610cdd6147a2565b60200260200101848481518110610cf657610cf66147a2565b6020026020010182905282905250508080610d10906147ce565b915050610ca0565b50909192565b60008051602061534c833981519152610d3681611a91565b60005b86811015610dda57838382818110610d5357610d536147a2565b9050602002810190610d6591906147e7565b6101f560008b8b86818110610d7c57610d7c6147a2565b9050602002013581526020019081526020016000206000898986818110610da557610da56147a2565b9050602002013581526020019081526020016000209182610dc7929190614873565b5080610dd2816147ce565b915050610d39565b5050505050505050565b6001600160a01b038516331480610e005750610e0085336106e4565b610e1c5760405162461bcd60e51b81526004016107e790614932565b610e298585858585611dc1565b5050505050565b600082815260976020526040902060010154610e4b81611a91565b610e558383611f66565b505050565b6001600160a01b0381163314610eca5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016107e7565b610ed48282611f88565b5050565b610eef60008051602061532c833981519152611a91565b610ef7611faa565b565b60608151835114610f5e5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b60648201526084016107e7565b600083516001600160401b03811115610f7957610f79613f70565b604051908082528060200260200182016040528015610fa2578160200160208202803683370190505b50905060005b845181101561101a57610fed858281518110610fc657610fc66147a2565b6020026020010151858381518110610fe057610fe06147a2565b6020026020010151610780565b828281518110610fff57610fff6147a2565b6020908102919091010152611013816147ce565b9050610fa8565b509392505050565b60008061102e83611812565b1192915050565b60008051602061534c83398151915261104d81611a91565b60008481526101f56020908152604080832086845290915290206110718382614980565b50837ffdbb964a9a1d2ac903ed7ebf85795be6728c27e96237552b2805596c759e088184846040516110a4929190614a3f565b60405180910390a250505050565b6001600160a01b03811660009081526101926020526040902060609081906110d990611db4565b915081516001600160401b038111156110f4576110f4613f70565b60405190808252806020026020018201604052801561111d578160200160208202803683370190505b50905060005b82518110156111715761114284848381518110610fe057610fe06147a2565b828281518110611154576111546147a2565b602090810291909101015280611169816147ce565b915050611123565b50915091565b61118e60008051602061532c833981519152611a91565b610e55838383611ffd565b6060610815826116bc565b6111bb6000805160206152ec833981519152611a91565b6111c78484848461219c565b50505050565b60008281526101f4602052604081206111e6908361227e565b9392505050565b610225805461084e90614768565b60008051602061534c83398151915261121381611a91565b60005b835181101561128c57611279848281518110611234576112346147a2565b602002602001015184838151811061124e5761124e6147a2565b60200260200101516101f4600089815260200190815260200160002061228a9092919063ffffffff16565b5080611284816147ce565b915050611216565b50837f383bcccfd5e9b61afe7e6832ca2201fe34d7766a9bbf90fb7152082ddbcd342b84846040516110a49291906142ba565b600054610100900460ff16158080156112df5750600054600160ff909116105b806112f95750303b1580156112f9575060005460ff166001145b61135c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107e7565b6000805460ff19166001179055801561137f576000805461ff0019166101001790555b61139760405180602001604052806000815250612297565b61139f6122c7565b6113a761239d565b6113af6123cc565b6113b76123cc565b6113bf6123cc565b6113c76123f3565b6113e860405180606001604052806030815260200161527c60309139612452565b6113f0612486565b61143f6040518060400160405280600e81526020016d436f736d696320506f74696f6e7360901b81525060405180604001604052806007815260200166504f54494f4e5360c81b8152506124cd565b8015611485576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b61149f60008051602061532c833981519152611a91565b610ef761250f565b6114be6000805160206152ec833981519152611a91565b60005b83811015611534576115228585838181106114de576114de6147a2565b90506020020160208101906114f39190613c7c565b87858585818110611506576115066147a2565b905060200201356040518060200160405280600081525061219c565b8061152c816147ce565b9150506114c1565b505050505050565b600082815260c9602052604081206111e6908361254d565b600881901c60009081526102576020526040812054600160ff84161b161515610815565b60009182526097602090815260408084206001600160a01b0393909316845291905290205460ff1690565b610289805461084e90614768565b60008051602061532c8339815191526115c981611a91565b600882901c6000908152610257602052604090208054600160ff85161b191690555050565b6060600082516001600160401b0381111561160b5761160b613f70565b604051908082528060200260200182016040528015611634578160200160208202803683370190505b50905060005b835181101561101a57611682848281518110611658576116586147a2565b60200260200101516101f4600088815260200190815260200160002061227e90919063ffffffff16565b828281518110611694576116946147a2565b6020908102919091010152806116a9816147ce565b91505061163a565b610ed433838361257d565b6060600082516001600160401b038111156116d9576116d9613f70565b60405190808252806020026020018201604052801561170c57816020015b60608152602001906001900390816116f75790505b50905060005b835181101561176d5761173d848281518110611730576117306147a2565b6020026020010151610909565b82828151811061174f5761174f6147a2565b60200260200101819052508080611765906147ce565b915050611712565b5092915050565b6060600061178361018d61265d565b90506000816001600160401b0381111561179f5761179f613f70565b6040519080825280602002602001820160405280156117c8578160200160208202803683370190505b50905060005b8281101561176d576117e261018d82612668565b508282815181106117f5576117f56147a2565b60209081029190910101528061180a816147ce565b9150506117ce565b60008061182161018d84612686565b949350505050565b61184060008051602061532c833981519152611a91565b610e55838383612695565b60008051602061532c83398151915261186381611a91565b600882901c6000908152610257602052604090208054600160ff85161b1790555050565b600081815260c960205260408120610815906127b1565b60606118ab6101c1611db4565b905090565b60008051602061534c8339815191526118c881611a91565b60005b835181101561194b578281815181106118e6576118e66147a2565b60200260200101516101f560008781526020019081526020016000206000868481518110611916576119166147a2565b6020026020010151815260200190815260200160002090816119389190614980565b5080611943816147ce565b9150506118cb565b50837f9d69ed3cc764cf4f579cfc28312dded7bb202f17cc77aa4d0eb3f8bbaecd88e384846040516110a4929190614a58565b60008281526097602052604090206001015461199981611a91565b610e558383611f88565b6001600160a01b0385163314806119bf57506119bf85336106e4565b6119db5760405162461bcd60e51b81526004016107e790614932565b610e2985858585856127bb565b610e558383836128f7565b60008051602061534c833981519152611a0b81611a91565b60008481526101f460205260409020611a2590848461228a565b50604080518481526020810184905285917f5cb4c5f05283d5a84da3f9f1b0fe8b00d7ea8e1fb833812b52114799bdf1acc791016110a4565b60006108156101c18361292f565b60006001600160e01b03198216635a05180f60e01b1480610815575061081582612951565b6114858133612976565b60008281526101f5602090815260408083208484529091529020805460609190611ac490614768565b80601f0160208091040260200160405190810160405280929190818152602001828054611af090614768565b8015611b3d5780601f10611b1257610100808354040283529160200191611b3d565b820191906000526020600020905b815481529060010190602001808311611b2057829003601f168201915b5050505050905092915050565b60606000611b57836129cf565b60010190506000816001600160401b03811115611b7657611b76613f70565b6040519080825280601f01601f191660200182016040528015611ba0576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611baa57509392505050565b60606000611beb868686612aa7565b90506000611bf884612b11565b90508181604051602001611c0d929190614a99565b60405160208183030381529060405292505050949350505050565b6060611c3382612c9c565b604051602001611c439190614ae6565b6040516020818303038152906040529050919050565b6001600160a01b038416611c7f5760405162461bcd60e51b81526004016107e790614b2b565b8151835114611ca05760405162461bcd60e51b81526004016107e790614b6c565b33611cb081600087878787612dee565b60005b8451811015611d4c57838181518110611cce57611cce6147a2565b602002602001015160656000878481518110611cec57611cec6147a2565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254611d349190614bb4565b90915550819050611d44816147ce565b915050611cb3565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611d9d9291906142ba565b60405180910390a4610e2981600087878787612ef6565b606060006111e683613051565b8151835114611de25760405162461bcd60e51b81526004016107e790614b6c565b6001600160a01b038416611e085760405162461bcd60e51b81526004016107e790614bc7565b33611e17818787878787612dee565b60005b8451811015611f00576000858281518110611e3757611e376147a2565b602002602001015190506000858381518110611e5557611e556147a2565b60209081029190910181015160008481526065835260408082206001600160a01b038e168352909352919091205490915081811015611ea65760405162461bcd60e51b81526004016107e790614c0c565b60008381526065602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290611ee5908490614bb4565b9250508190555050505080611ef9906147ce565b9050611e1a565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611f509291906142ba565b60405180910390a4611534818787878787612ef6565b611f7082826130ad565b600082815260c960205260409020610e559082613133565b611f928282613148565b600082815260c960205260409020610e5590826131af565b611fb26131c4565b610129805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b0383166120235760405162461bcd60e51b81526004016107e790614c56565b80518251146120445760405162461bcd60e51b81526004016107e790614b6c565b600033905061206781856000868660405180602001604052806000815250612dee565b60005b835181101561212f576000848281518110612087576120876147a2565b6020026020010151905060008483815181106120a5576120a56147a2565b60209081029190910181015160008481526065835260408082206001600160a01b038c1683529093529190912054909150818110156120f65760405162461bcd60e51b81526004016107e790614c99565b60009283526065602090815260408085206001600160a01b038b1686529091529092209103905580612127816147ce565b91505061206a565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516121809291906142ba565b60405180910390a46040805160208101909152600090526111c7565b6001600160a01b0384166121c25760405162461bcd60e51b81526004016107e790614b2b565b3360006121ce8561320e565b905060006121db8561320e565b90506121ec83600089858589612dee565b60008681526065602090815260408083206001600160a01b038b1684529091528120805487929061221e908490614bb4565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610be483600089898989613259565b60006111e68383613314565b6000611821848484613384565b600054610100900460ff166122be5760405162461bcd60e51b81526004016107e790614cdd565b611485816133a1565b600054610100900460ff166122ee5760405162461bcd60e51b81526004016107e790614cdd565b6122f66123cc565b612301600033611f66565b61231960008051602061532c83398151915233611f66565b61233160008051602061534c83398151915233611f66565b6123496000805160206152ec83398151915233611f66565b6123737ff18b77e1ef402111bacb54bd5e03494cbdba92fbd1bd3bbcc1ce77e69b42ea6c33611f66565b610ef77f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f33611f66565b600054610100900460ff166123c45760405162461bcd60e51b81526004016107e790614cdd565b610ef76133d1565b600054610100900460ff16610ef75760405162461bcd60e51b81526004016107e790614cdd565b600054610100900460ff1661241a5760405162461bcd60e51b81526004016107e790614cdd565b6124226123cc565b61243a60008051602061532c83398151915233611f66565b610ef760008051602061530c83398151915233611f66565b600054610100900460ff166124795760405162461bcd60e51b81526004016107e790614cdd565b610225610ed48282614980565b600054610100900460ff166124ad5760405162461bcd60e51b81526004016107e790614cdd565b6124b56123cc565b610ef760008051602061534c83398151915233611f66565b600054610100900460ff166124f45760405162461bcd60e51b81526004016107e790614cdd565b6102886125018382614980565b50610289610e558282614980565b612517613405565b610129805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611fe03390565b60006111e6838361344c565b600881901c600090815260208390526040902054600160ff83161b16151592915050565b816001600160a01b0316836001600160a01b0316036125f05760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b60648201526084016107e7565b6001600160a01b03838116600081815260666020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600061081582613476565b60008080806126778686613481565b909450925050505b9250929050565b600080808061267786866134ac565b6001600160a01b0383166126bb5760405162461bcd60e51b81526004016107e790614c56565b3360006126c78461320e565b905060006126d48461320e565b90506126f483876000858560405180602001604052806000815250612dee565b60008581526065602090815260408083206001600160a01b038a168452909152902054848110156127375760405162461bcd60e51b81526004016107e790614c99565b60008681526065602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4604080516020810190915260009052610be4565b6000610815825490565b6001600160a01b0384166127e15760405162461bcd60e51b81526004016107e790614bc7565b3360006127ed8561320e565b905060006127fa8561320e565b905061280a838989858589612dee565b60008681526065602090815260408083206001600160a01b038c1684529091529020548581101561284d5760405162461bcd60e51b81526004016107e790614c0c565b60008781526065602090815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061288c908490614bb4565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46128ec848a8a8a8a8a613259565b505050505050505050565b6001600160a01b038316331480612913575061291383336106e4565b6118405760405162461bcd60e51b81526004016107e790614932565b6001600160a01b038116600090815260018301602052604081205415156111e6565b60006001600160e01b03198216637965db0b60e01b14806108155750610815826134e6565b6129808282611578565b610ed45761298d81613536565b612998836020613548565b6040516020016129a9929190614d28565b60408051601f198184030181529082905262461bcd60e51b82526107e791600401613c69565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310612a0e5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612a3a576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310612a5857662386f26fc10000830492506010015b6305f5e1008310612a70576305f5e100830492506008015b6127108310612a8457612710830492506004015b60648310612a96576064830492506002015b600a83106108155760010192915050565b60606000610225612ab786611b4a565b604051602001612ac8929190614d9d565b604051602081830303815290604052905083612ae386611b4a565b8483604051602001612af89493929190614e24565b6040516020818303038152906040529150509392505050565b60408051602081019091526000808252606091905b8351811015612c7357600060018551612b3f9190614f1c565b8214612b6457604051806040016040528060018152602001600b60fa1b815250612b75565b604051806020016040528060008152505b90506000858381518110612b8b57612b8b6147a2565b60200260200101516020015151600014612be157858381518110612bb157612bb16147a2565b602002602001015160200151604051602001612bcd9190614f2f565b604051602081830303815290604052612bf2565b604051806020016040528060008152505b9050600084878581518110612c0957612c096147a2565b60200260200101516000015183898781518110612c2857612c286147a2565b60200260200101516040015186604051602001612c49959493929190614f74565b60405160208183030381529060405290508094505050508080612c6b906147ce565b915050612b26565b5080604051602001612c859190615031565b604051602081830303815290604052915050919050565b60608151600003612cbb57505060408051602081019091526000815290565b60006040518060600160405280604081526020016152ac6040913990506000600384516002612cea9190614bb4565b612cf49190615073565b612cff906004615095565b6001600160401b03811115612d1657612d16613f70565b6040519080825280601f01601f191660200182016040528015612d40576020820181803683370190505b509050600182016020820185865187015b80821015612dac576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f8116850151845350600183019250612d51565b5050600386510660018114612dc85760028114612ddb57612de3565b603d6001830353603d6002830353612de3565b603d60018303535b509195945050505050565b612df6613405565b82858560005b8351811015612ee757612e33848281518110612e1a57612e1a6147a2565b602002602001015161025761255990919063ffffffff16565b1580612e4657506001600160a01b038316155b80612e5857506001600160a01b038216155b80612e765750612e7660008051602061530c83398151915284611578565b80612e945750612e9460008051602061530c83398151915283611578565b612ed55760405162461bcd60e51b8152602060048201526012602482015271151bdad95b881a5cc81cdbdd5b189bdd5b9960721b60448201526064016107e7565b80612edf816147ce565b915050612dfc565b506128ec8989898989896136e3565b6001600160a01b0384163b156115345760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190612f3a90899089908890889088906004016150ac565b6020604051808303816000875af1925050508015612f75575060408051601f3d908101601f19168201909252612f729181019061510a565b60015b61302157612f81615127565b806308c379a003612fba5750612f95615143565b80612fa05750612fbc565b8060405162461bcd60e51b81526004016107e79190613c69565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60648201526084016107e7565b6001600160e01b0319811663bc197c8160e01b14610be45760405162461bcd60e51b81526004016107e7906151cc565b6060816000018054806020026020016040519081016040528092919081815260200182805480156130a157602002820191906000526020600020905b81548152602001906001019080831161308d575b50505050509050919050565b6130b78282611578565b610ed45760008281526097602090815260408083206001600160a01b03851684529091529020805460ff191660011790556130ef3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60006111e6836001600160a01b038416613936565b6131528282611578565b15610ed45760008281526097602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006111e6836001600160a01b038416613985565b6101295460ff16610ef75760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016107e7565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613248576132486147a2565b602090810291909101015292915050565b6001600160a01b0384163b156115345760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e619061329d9089908990889088908890600401615214565b6020604051808303816000875af19250505080156132d8575060408051601f3d908101601f191682019092526132d59181019061510a565b60015b6132e457612f81615127565b6001600160e01b0319811663f23a6e6160e01b14610be45760405162461bcd60e51b81526004016107e7906151cc565b60008181526002830160205260408120548015158061333857506133388484613a78565b6111e65760405162461bcd60e51b815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b6579000060448201526064016107e7565b600082815260028401602052604081208290556118218484613a84565b600054610100900460ff166133c85760405162461bcd60e51b81526004016107e790614cdd565b61148581613a90565b600054610100900460ff166133f85760405162461bcd60e51b81526004016107e790614cdd565b610129805460ff19169055565b6101295460ff1615610ef75760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016107e7565b6000826000018281548110613463576134636147a2565b9060005260206000200154905092915050565b6000610815826127b1565b6000808061348f858561254d565b600081815260029690960160205260409095205494959350505050565b60008181526002830160205260408120548190806134db576134ce8585613a78565b92506000915061267f9050565b60019250905061267f565b60006001600160e01b03198216636cdb3d1360e11b148061351757506001600160e01b031982166303a24d0760e21b145b8061081557506301ffc9a760e01b6001600160e01b0319831614610815565b60606108156001600160a01b03831660145b60606000613557836002615095565b613562906002614bb4565b6001600160401b0381111561357957613579613f70565b6040519080825280601f01601f1916602001820160405280156135a3576020820181803683370190505b509050600360fc1b816000815181106135be576135be6147a2565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106135ed576135ed6147a2565b60200101906001600160f81b031916908160001a9053506000613611846002615095565b61361c906001614bb4565b90505b6001811115613694576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613650576136506147a2565b1a60f81b828281518110613666576136666147a2565b60200101906001600160f81b031916908160001a90535060049490941c9361368d8161524e565b905061361f565b5083156111e65760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107e7565b6001600160a01b0385166137945760005b835181101561379257600061372d858381518110613714576137146147a2565b602002602001015161018d61268690919063ffffffff16565b90508091505061377f858381518110613748576137486147a2565b6020026020010151858481518110613762576137626147a2565b6020026020010151836137759190614bb4565b61018d919061228a565b50508061378b906147ce565b90506136f4565b505b6001600160a01b0384166138a75760005b83518110156138a55760008482815181106137c2576137c26147a2565b6020026020010151905060008483815181106137e0576137e06147a2565b6020026020010151905060006138018361018d61227e90919063ffffffff16565b9050818110156138645760405162461bcd60e51b815260206004820152602860248201527f455243313135353a206275726e20616d6f756e74206578636565647320746f74604482015267616c537570706c7960c01b60648201526084016107e7565b8181036000036138805761387a61018d84613a9c565b50613891565b61388f61018d8484840361228a565b505b5050508061389e906147ce565b90506137a5565b505b60005b8351811015613923576138f0868583815181106138c9576138c96147a2565b60200260200101518584815181106138e3576138e36147a2565b6020026020010151613aa8565b61391385858381518110613906576139066147a2565b6020026020010151613afd565b61391c816147ce565b90506138aa565b5061392d85613b3f565b61153484613b3f565b600081815260018301602052604081205461397d57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610815565b506000610815565b60008181526001830160205260408120548015613a6e5760006139a9600183614f1c565b85549091506000906139bd90600190614f1c565b9050818114613a225760008660000182815481106139dd576139dd6147a2565b9060005260206000200154905080876000018481548110613a0057613a006147a2565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613a3357613a33615265565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610815565b6000915050610815565b60006111e68383613b63565b60006111e68383613936565b6067610ed48282614980565b60006111e68383613b7b565b6001600160a01b038316613abb57505050565b6000613ac78484610780565b9050613ad38282614f1c565b6000036111c7576001600160a01b038416600090815261019260205260409020610e299084613b94565b6001600160a01b038216613b0f575050565b6001600160a01b038216600090815261019260205260409020613b329082613a84565b50610e5561019083613133565b6060613b4a826110b2565b508051909150600003610ed457610e55610190836131af565b600081815260018301602052604081205415156111e6565b600081815260028301602052604081208190556111e683835b60006111e68383613985565b80356001600160a01b0381168114613bb757600080fd5b919050565b60008060408385031215613bcf57600080fd5b613bd883613ba0565b946020939093013593505050565b6001600160e01b03198116811461148557600080fd5b600060208284031215613c0e57600080fd5b81356111e681613be6565b60005b83811015613c34578181015183820152602001613c1c565b50506000910152565b60008151808452613c55816020860160208601613c19565b601f01601f19169290920160200192915050565b6020815260006111e66020830184613c3d565b600060208284031215613c8e57600080fd5b6111e682613ba0565b600060208284031215613ca957600080fd5b5035919050565b60008083601f840112613cc257600080fd5b5081356001600160401b03811115613cd957600080fd5b6020830191508360208260051b850101111561267f57600080fd5b60008060008060008060006080888a031215613d0f57600080fd5b613d1888613ba0565b965060208801356001600160401b0380821115613d3457600080fd5b613d408b838c01613cb0565b909850965060408a0135915080821115613d5957600080fd5b613d658b838c01613cb0565b909650945060608a0135915080821115613d7e57600080fd5b818a0191508a601f830112613d9257600080fd5b813581811115613da157600080fd5b8b6020828501011115613db357600080fd5b60208301945080935050505092959891949750929550565b600081518084526020808501945080840160005b83811015613e045781516001600160a01b031687529582019590820190600101613ddf565b509495945050505050565b600081518084526020808501945080840160005b83811015613e0457815187529582019590820190600101613e23565b600081518084526020808501808196508360051b8101915082860160005b85811015613e87578284038952613e75848351613e0f565b98850198935090840190600101613e5d565b5091979650505050505050565b606081526000613ea76060830186613dcb565b8281036020840152613eb98186613e3f565b90508281036040840152613ecd8185613e3f565b9695505050505050565b60008060008060008060608789031215613ef057600080fd5b86356001600160401b0380821115613f0757600080fd5b613f138a838b01613cb0565b90985096506020890135915080821115613f2c57600080fd5b613f388a838b01613cb0565b90965094506040890135915080821115613f5157600080fd5b50613f5e89828a01613cb0565b979a9699509497509295939492505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b0381118282101715613fab57613fab613f70565b6040525050565b60006001600160401b03821115613fcb57613fcb613f70565b5060051b60200190565b600082601f830112613fe657600080fd5b81356020613ff382613fb2565b6040516140008282613f86565b83815260059390931b850182019282810191508684111561402057600080fd5b8286015b8481101561403b5780358352918301918301614024565b509695505050505050565b600082601f83011261405757600080fd5b81356001600160401b0381111561407057614070613f70565b604051614087601f8301601f191660200182613f86565b81815284602083860101111561409c57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a086880312156140d157600080fd5b6140da86613ba0565b94506140e860208701613ba0565b935060408601356001600160401b038082111561410457600080fd5b61411089838a01613fd5565b9450606088013591508082111561412657600080fd5b61413289838a01613fd5565b9350608088013591508082111561414857600080fd5b5061415588828901614046565b9150509295509295909350565b6000806040838503121561417557600080fd5b8235915061418560208401613ba0565b90509250929050565b600080604083850312156141a157600080fd5b82356001600160401b03808211156141b857600080fd5b818501915085601f8301126141cc57600080fd5b813560206141d982613fb2565b6040516141e68282613f86565b83815260059390931b850182019282810191508984111561420657600080fd5b948201945b8386101561422b5761421c86613ba0565b8252948201949082019061420b565b9650508601359250508082111561424157600080fd5b5061424e85828601613fd5565b9150509250929050565b6020815260006111e66020830184613e0f565b60008060006060848603121561428057600080fd5b833592506020840135915060408401356001600160401b038111156142a457600080fd5b6142b086828701614046565b9150509250925092565b6040815260006142cd6040830185613e0f565b8281036020840152610b228185613e0f565b6000806000606084860312156142f457600080fd5b6142fd84613ba0565b925060208401356001600160401b038082111561431957600080fd5b61432587838801613fd5565b9350604086013591508082111561433b57600080fd5b506142b086828701613fd5565b60006020828403121561435a57600080fd5b81356001600160401b0381111561437057600080fd5b61182184828501613fd5565b600081518084526020808501808196508360051b8101915082860160005b85811015613e875782840389526143b2848351613c3d565b9885019893509084019060010161439a565b6020815260006111e6602083018461437c565b600080600080608085870312156143ed57600080fd5b6143f685613ba0565b9350602085013592506040850135915060608501356001600160401b0381111561441f57600080fd5b61442b87828801614046565b91505092959194509250565b6000806040838503121561444a57600080fd5b50508035926020909101359150565b60008060006060848603121561446e57600080fd5b8335925060208401356001600160401b038082111561431957600080fd5b6000806000806000606086880312156144a457600080fd5b8535945060208601356001600160401b03808211156144c257600080fd5b6144ce89838a01613cb0565b909650945060408801359150808211156144e757600080fd5b506144f488828901613cb0565b969995985093965092949392505050565b6000806040838503121561451857600080fd5b8235915060208301356001600160401b0381111561453557600080fd5b61424e85828601613fd5565b6000806040838503121561455457600080fd5b61455d83613ba0565b91506020830135801515811461457257600080fd5b809150509250929050565b60008060006060848603121561459257600080fd5b61459b84613ba0565b95602085013595506040909401359392505050565b6020815260006111e66020830184613dcb565b6000806000606084860312156145d857600080fd5b833592506020808501356001600160401b03808211156145f757600080fd5b61460388838901613fd5565b9450604087013591508082111561461957600080fd5b818701915087601f83011261462d57600080fd5b813561463881613fb2565b6040516146458282613f86565b82815260059290921b840185019185810191508a83111561466557600080fd5b8585015b8381101561469d578035858111156146815760008081fd5b61468f8d89838a0101614046565b845250918601918601614669565b508096505050505050509250925092565b600080604083850312156146c157600080fd5b6146ca83613ba0565b915061418560208401613ba0565b600080600080600060a086880312156146f057600080fd5b6146f986613ba0565b945061470760208701613ba0565b9350604086013592506060860135915060808601356001600160401b0381111561473057600080fd5b61415588828901614046565b60008060006060848603121561475157600080fd5b505081359360208301359350604090920135919050565b600181811c9082168061477c57607f821691505b60208210810361479c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016147e0576147e06147b8565b5060010190565b6000808335601e198436030181126147fe57600080fd5b8301803591506001600160401b0382111561481857600080fd5b60200191503681900382131561267f57600080fd5b601f821115610e5557600081815260208120601f850160051c810160208610156148545750805b601f850160051c820191505b8181101561153457828155600101614860565b6001600160401b0383111561488a5761488a613f70565b61489e836148988354614768565b8361482d565b6000601f8411600181146148d257600085156148ba5750838201355b600019600387901b1c1916600186901b178355610e29565b600083815260209020601f19861690835b8281101561490357868501358255602094850194600190920191016148e3565b50868210156149205760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b81516001600160401b0381111561499957614999613f70565b6149ad816149a78454614768565b8461482d565b602080601f8311600181146149e257600084156149ca5750858301515b600019600386901b1c1916600185901b178555611534565b600085815260208120601f198616915b82811015614a11578886015182559484019460019091019084016149f2565b5085821015614a2f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8281526040602082015260006118216040830184613c3d565b604081526000614a6b6040830185613e0f565b8281036020840152610b22818561437c565b60008151614a8f818560208601613c19565b9290920192915050565b607b60f81b815260008351614ab5816001850160208801613c19565b835190830190614acc816001840160208801613c19565b607d60f81b60019290910191820152600201949350505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815260008251614b1e81601d850160208701613c19565b91909101601d0192915050565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b80820180821115610815576108156147b8565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351614d60816017850160208801613c19565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351614d91816028840160208801613c19565b01602801949350505050565b6000808454614dab81614768565b60018281168015614dc35760018114614dd857614e07565b60ff1984168752821515830287019450614e07565b8860005260208060002060005b85811015614dfe5781548a820152908401908201614de5565b50505082870194505b505050508351614e1b818360208801613c19565b01949350505050565b67113730b6b2911d1160c11b81528451600090614e48816008850160208a01613c19565b61088b60f21b600891840191820181905269113a37b5b2b724b2111d60b11b600a8301528651614e7f816014850160208b01613c19565b600b60fa1b601493909101928301526e113232b9b1b934b83a34b7b7111d1160891b60158301528551614eb9816024850160208a01613c19565b6024920191820152681134b6b0b3b2911d1160b91b6026820152614f11614ef4614ee6602f840187614a7d565b61088b60f21b815260020190565b70089d1e5c19488e88915490cc4c4d4d488b607a1b815260110190565b979650505050505050565b81810381811115610815576108156147b8565b6f113234b9b83630bcafba3cb832911d1160811b81528151600090614f5b816010850160208701613c19565b61088b60f21b6010939091019283015250601201919050565b60008651614f86818460208b01613c19565b6e3d913a3930b4ba2fba3cb832911d1160891b9083019081528651614fb281600f840160208b01613c19565b61088b60f21b600f92909101918201528551614fd5816011840160208a01613c19565b68113b30b63ab2911d1160b91b601192909101918201528451614fff81601a840160208901613c19565b61227d60f01b601a9290910191820152835161502281601c840160208801613c19565b01601c01979650505050505050565b6d2261747472696275746573223a5b60901b8152815160009061505b81600e850160208701613c19565b605d60f81b600e939091019283015250600f01919050565b60008261509057634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610815576108156147b8565b6001600160a01b0386811682528516602082015260a0604082018190526000906150d890830186613e0f565b82810360608401526150ea8186613e0f565b905082810360808401526150fe8185613c3d565b98975050505050505050565b60006020828403121561511c57600080fd5b81516111e681613be6565b600060033d11156151405760046000803e5060005160e01c5b90565b600060443d10156151515790565b6040516003193d81016004833e81513d6001600160401b03816024840111818411171561518057505050505090565b82850191508151818111156151985750505050505090565b843d87010160208285010111156151b25750505050505090565b6151c160208286010187613f86565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090614f1190830184613c3d565b60008161525d5761525d6147b8565b506000190190565b634e487b7160e01b600052603160045260246000fdfe68747470733a2f2f696d616765732e636f736d6963756e6976657273652e696f2f636f736d69632d706f74696f6e732f4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6f01ee2eb8c5679535f9dfef3543570e280865ec756856c5772fe3e6718c5c074a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775364d3d7565c7a8300c96fd53e065d19b65848d7b23b3191adcd55621c744223ca2646970667358221220c27b3c58f5fd5ce8a5d6512e5fad1a2c0a481cbaa993c64e66e43d908fa9c00b64736f6c63430008120033