[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "DoesNotExist", "type": "error" }, { "inputs": [], "name": "NotController", "type": "error" }, { "inputs": [], "name": "NotOperator", "type": "error" }, { "inputs": [], "name": "NotOwner", "type": "error" }, { "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": "fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toTokenId", "type": "uint256" } ], "name": "BatchMetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "handle", "type": "string" }, { "indexed": false, "internalType": "string", "name": "namespace", "type": "string" }, { "indexed": false, "internalType": "uint256", "name": "handleId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "HandleMinted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "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": [], "name": "CONTROLLER", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "OPERATOR", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "exists", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getHandle", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getHandleTokenURIContract", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getLocalName", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getNamespace", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getNamespaceHash", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "localName", "type": "string" } ], "name": "getTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "namespace", "type": "string" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "address", "name": "operator", "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": "address", "name": "to", "type": "address" }, { "internalType": "string", "name": "localName", "type": "string" } ], "name": "mintHandle", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "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": "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": "controller", "type": "address" } ], "name": "setController", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "handleTokenURIContract", "type": "address" } ], "name": "setHandleTokenURIContract", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "setOperator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setTokenRoyalty", "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": "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" } ]
608060405234801561001057600080fd5b50613095806100206000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80635944c7531161010f578063b16f1eef116100a2578063e985e9c511610071578063e985e9c514610451578063ec81d1941461049a578063ee0fc121146104ad578063f08e8f5e146104cd57600080fd5b8063b16f1eef14610410578063b3ab15fb14610418578063b88d4fde1461042b578063c87b56dd1461043e57600080fd5b806392eefe9b116100de57806392eefe9b146103c257806395d89b41146103d5578063983d2737146103dd578063a22cb465146103fd57600080fd5b80635944c753146103765780635c6d8da1146103895780636352211e1461039c57806370a08231146103af57600080fd5b806323b872dd1161018757806342842e0e1161015657806342842e0e1461032a57806342966c681461033d5780634985e504146103505780634f558e791461036357600080fd5b806323b872dd146102b257806327ac4b70146102c55780632a55205a146102cd57806335eb3cb91461030c57600080fd5b8063095ea7b3116101c3578063095ea7b31461025f57806318160ddd146102745780631d648cdb146102865780631e7663bc1461029957600080fd5b806301ffc9a7146101ea57806306fdde0314610212578063081812fc14610227575b600080fd5b6101fd6101f8366004612442565b6104e0565b60405190151581526020015b60405180910390f35b61021a6104f1565b60405161020991906124d4565b61023a6102353660046124e7565b610583565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610209565b61027261026d366004612529565b6105b7565b005b609c545b604051908152602001610209565b610272610294366004612553565b610773565b6102786102a7366004612690565b805160209091012090565b6102726102c03660046126c5565b610860565b61021a610901565b6102e06102db366004612701565b610910565b6040805173ffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610209565b609e5473ffffffffffffffffffffffffffffffffffffffff1661023a565b6102726103383660046126c5565b610a07565b61027261034b3660046124e7565b610a22565b61021a61035e3660046124e7565b610ac5565b6101fd6103713660046124e7565b610c3d565b610272610384366004612723565b610c69565b610272610397366004612774565b610cc5565b61023a6103aa3660046124e7565b610eb8565b6102786103bd366004612553565b610f44565b6102726103d0366004612553565b611012565b61021a6110aa565b609a5461023a9073ffffffffffffffffffffffffffffffffffffffff1681565b61027261040b36600461280d565b6110b9565b6102786110c8565b610272610426366004612553565b6110e6565b610272610439366004612849565b61117e565b61021a61044c3660046124e7565b611226565b6101fd61045f3660046128c5565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61021a6104a83660046124e7565b6112fd565b60995461023a9073ffffffffffffffffffffffffffffffffffffffff1681565b6102786104db3660046128f8565b611337565b60006104eb8261139e565b92915050565b6060606580546105009061297b565b80601f016020809104026020016040519081016040528092919081815260200182805461052c9061297b565b80156105795780601f1061054e57610100808354040283529160200191610579565b820191906000526020600020905b81548152906001019060200180831161055c57829003601f168201915b5050505050905090565b600061058e82611481565b5060009081526069602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006105c282610eb8565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff821614806106d8575073ffffffffffffffffffffffffffffffffffffffff81166000908152606a6020908152604080832033845290915290205460ff165b610764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000606482015260840161067b565b61076e838361150c565b505050565b609a5473ffffffffffffffffffffffffffffffffffffffff1633146107c4576040517f7c214f0400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b609e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905560408051600081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208201527f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c910160405180910390a150565b61086a33826115ac565b6108f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f76656400000000000000000000000000000000000000606482015260840161067b565b61076e83838361166b565b6060609b80546105009061297b565b600082815260986020908152604080832081518083019092525473ffffffffffffffffffffffffffffffffffffffff8116808352740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff169282019290925282916109cb57506040805180820190915260975473ffffffffffffffffffffffffffffffffffffffff811682527401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1660208201525b6020810151600090612710906109ef906bffffffffffffffffffffffff16876129fd565b6109f99190612a14565b915196919550909350505050565b61076e8383836040518060200160405280600081525061117e565b610a2b81610eb8565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a8f576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b609c60008154610a9e90612a4f565b90915550610aab81611966565b6000818152609d60205260408120610ac2916123c6565b50565b6000818152609d6020526040812080546060929190610ae39061297b565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0f9061297b565b8015610b5c5780601f10610b3157610100808354040283529160200191610b5c565b820191906000526020600020905b815481529060010190602001808311610b3f57829003601f168201915b505050505090508051600003610b9e576040517fb0ce759100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152609d602052604090208054610bb79061297b565b80601f0160208091040260200160405190810160405280929190818152602001828054610be39061297b565b8015610c305780601f10610c0557610100808354040283529160200191610c30565b820191906000526020600020905b815481529060010190602001808311610c1357829003601f168201915b5050505050915050919050565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff1615156104eb565b609a5473ffffffffffffffffffffffffffffffffffffffff163314610cba576040517f7c214f0400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61076e838383611a3e565b600054610100900460ff1615808015610ce55750600054600160ff909116105b80610cff5750303b158015610cff575060005460ff166001145b610d8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161067b565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610de957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610df38484611bc8565b609b610dff8682612ad4565b5060998054337fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155609a805490911673ffffffffffffffffffffffffffffffffffffffff84161790558015610eb157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff16806104eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e2049440000000000000000604482015260640161067b565b600073ffffffffffffffffffffffffffffffffffffffff8216610fe9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e65720000000000000000000000000000000000000000000000606482015260840161067b565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526068602052604090205490565b609a5473ffffffffffffffffffffffffffffffffffffffff163314611063576040517f7c214f0400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b609980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6060606680546105009061297b565b6110c4338383611c69565b5050565b6000609b6040516110d99190612c7f565b6040518091039020905090565b609a5473ffffffffffffffffffffffffffffffffffffffff163314611137576040517f7c214f0400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b609a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61118833836115ac565b611214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f76656400000000000000000000000000000000000000606482015260840161067b565b61122084848484611d96565b50505050565b606061123182611481565b609e546000838152609d60205260409081902090517fa11f868300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163a11f86839161129a91869190609b90600401612d26565b600060405180830381865afa1580156112b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104eb9190810190612d5b565b6060600061130a83610ac5565b9050609b81604051602001611320929190612dd2565b604051602081830303815290604052915050919050565b60995460009073ffffffffffffffffffffffffffffffffffffffff16331461138b576040517f23019e6700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611396848484611e39565b949350505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061143157507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806104eb57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104eb565b60008181526067602052604090205473ffffffffffffffffffffffffffffffffffffffff16610ac2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e2049440000000000000000604482015260640161067b565b600081815260696020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416908117909155819061156682610eb8565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806115b883610eb8565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611626575073ffffffffffffffffffffffffffffffffffffffff8082166000908152606a602090815260408083209388168352929052205460ff165b8061139657508373ffffffffffffffffffffffffffffffffffffffff1661164c84610583565b73ffffffffffffffffffffffffffffffffffffffff1614949350505050565b8273ffffffffffffffffffffffffffffffffffffffff1661168b82610eb8565b73ffffffffffffffffffffffffffffffffffffffff161461172e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e6572000000000000000000000000000000000000000000000000000000606482015260840161067b565b73ffffffffffffffffffffffffffffffffffffffff82166117d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161067b565b8273ffffffffffffffffffffffffffffffffffffffff166117f082610eb8565b73ffffffffffffffffffffffffffffffffffffffff1614611893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e6572000000000000000000000000000000000000000000000000000000606482015260840161067b565b600081815260696020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915573ffffffffffffffffffffffffffffffffffffffff8781168086526068855283862080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01905590871680865283862080546001019055868652606790945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600061197182610eb8565b905061197c82610eb8565b600083815260696020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915573ffffffffffffffffffffffffffffffffffffffff85168085526068845282852080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190558785526067909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6127106bffffffffffffffffffffffff82161115611ade576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c2065786365656460448201527f2073616c65507269636500000000000000000000000000000000000000000000606482015260840161067b565b73ffffffffffffffffffffffffffffffffffffffff8216611b5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d65746572730000000000604482015260640161067b565b60408051808201825273ffffffffffffffffffffffffffffffffffffffff93841681526bffffffffffffffffffffffff9283166020808301918252600096875260989052919094209351905190911674010000000000000000000000000000000000000000029116179055565b600054610100900460ff16611c5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161067b565b6110c48282611efe565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cfe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161067b565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152606a602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611da184848461166b565b611dad84848484611fae565b611220576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161067b565b600080611e7b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506102a792505050565b9050609c60008154611e8c90612e20565b90915550611e9a85826121a1565b6000818152609d60205260409020611eb3848683612e58565b507f30a132e912787e50de6193fe56a96ea6188c0bbf676679d630a25d3293c3e19a8484609b848942604051611eee96959493929190612f72565b60405180910390a1949350505050565b600054610100900460ff16611f95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161067b565b6065611fa18382612ad4565b50606661076e8282612ad4565b600073ffffffffffffffffffffffffffffffffffffffff84163b15612196576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290612025903390899088908890600401613003565b6020604051808303816000875af192505050801561207e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261207b91810190613042565b60015b61214b573d8080156120ac576040519150601f19603f3d011682016040523d82523d6000602084013e6120b1565b606091505b508051600003612143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161067b565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050611396565b506001949350505050565b73ffffffffffffffffffffffffffffffffffffffff821661221e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161067b565b60008181526067602052604090205473ffffffffffffffffffffffffffffffffffffffff16156122aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161067b565b60008181526067602052604090205473ffffffffffffffffffffffffffffffffffffffff1615612336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161067b565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260686020908152604080832080546001019055848352606790915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5080546123d29061297b565b6000825580601f106123e2575050565b601f016020900490600052602060002090810190610ac291905b8082111561241057600081556001016123fc565b5090565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610ac257600080fd5b60006020828403121561245457600080fd5b813561245f81612414565b9392505050565b60005b83811015612481578181015183820152602001612469565b50506000910152565b600081518084526124a2816020860160208601612466565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061245f602083018461248a565b6000602082840312156124f957600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461252457600080fd5b919050565b6000806040838503121561253c57600080fd5b61254583612500565b946020939093013593505050565b60006020828403121561256557600080fd5b61245f82612500565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156125e4576125e461256e565b604052919050565b600067ffffffffffffffff8211156126065761260661256e565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000612645612640846125ec565b61259d565b905082815283838301111561265957600080fd5b828260208301376000602084830101529392505050565b600082601f83011261268157600080fd5b61245f83833560208501612632565b6000602082840312156126a257600080fd5b813567ffffffffffffffff8111156126b957600080fd5b61139684828501612670565b6000806000606084860312156126da57600080fd5b6126e384612500565b92506126f160208501612500565b9150604084013590509250925092565b6000806040838503121561271457600080fd5b50508035926020909101359150565b60008060006060848603121561273857600080fd5b8335925061274860208501612500565b915060408401356bffffffffffffffffffffffff8116811461276957600080fd5b809150509250925092565b6000806000806080858703121561278a57600080fd5b843567ffffffffffffffff808211156127a257600080fd5b6127ae88838901612670565b955060208701359150808211156127c457600080fd5b6127d088838901612670565b945060408701359150808211156127e657600080fd5b506127f387828801612670565b92505061280260608601612500565b905092959194509250565b6000806040838503121561282057600080fd5b61282983612500565b91506020830135801515811461283e57600080fd5b809150509250929050565b6000806000806080858703121561285f57600080fd5b61286885612500565b935061287660208601612500565b925060408501359150606085013567ffffffffffffffff81111561289957600080fd5b8501601f810187136128aa57600080fd5b6128b987823560208401612632565b91505092959194509250565b600080604083850312156128d857600080fd5b6128e183612500565b91506128ef60208401612500565b90509250929050565b60008060006040848603121561290d57600080fd5b61291684612500565b9250602084013567ffffffffffffffff8082111561293357600080fd5b818601915086601f83011261294757600080fd5b81358181111561295657600080fd5b87602082850101111561296857600080fd5b6020830194508093505050509250925092565b600181811c9082168061298f57607f821691505b6020821081036129c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176104eb576104eb6129ce565b600082612a4a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600081612a5e57612a5e6129ce565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b601f82111561076e576000816000526020600020601f850160051c81016020861015612aad5750805b601f850160051c820191505b81811015612acc57828155600101612ab9565b505050505050565b815167ffffffffffffffff811115612aee57612aee61256e565b612b0281612afc845461297b565b84612a84565b602080601f831160018114612b555760008415612b1f5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612acc565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015612ba257888601518255948401946001909101908401612b83565b5085821015612bde57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60008154612bfb8161297b565b60018281168015612c135760018114612c4657612c75565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450612c75565b8560005260208060002060005b85811015612c6c5781548a820152908401908201612c53565b50505082870194505b5050505092915050565b600061245f8284612bee565b60008154612c988161297b565b808552602060018381168015612cb55760018114612ced57612d1b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516838901528284151560051b8901019550612d1b565b866000528260002060005b85811015612d135781548a8201860152908301908401612cf8565b890184019650505b505050505092915050565b838152606060208201526000612d3f6060830185612c8b565b8281036040840152612d518185612c8b565b9695505050505050565b600060208284031215612d6d57600080fd5b815167ffffffffffffffff811115612d8457600080fd5b8201601f81018413612d9557600080fd5b8051612da3612640826125ec565b818152856020838501011115612db857600080fd5b612dc9826020830160208601612466565b95945050505050565b6000612dde8285612bee565b7f2f4000000000000000000000000000000000000000000000000000000000000081528351612e14816002840160208801612466565b01600201949350505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e5157612e516129ce565b5060010190565b67ffffffffffffffff831115612e7057612e7061256e565b612e8483612e7e835461297b565b83612a84565b6000601f841160018114612ed65760008515612ea05750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355610eb1565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b82811015612f255786850135825560209485019460019092019101612f05565b5086821015612f60577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b60a081528560a0820152858760c0830137600060c0878301015260007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f880116820160c0838203016020840152612fce60c0820188612c8b565b6040840196909652505073ffffffffffffffffffffffffffffffffffffffff9290921660608301526080909101529392505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152612d51608083018461248a565b60006020828403121561305457600080fd5b815161245f8161241456fea264697066735822122082cb97386ff52179274b380d5f4b0548634408fb6153205c50584e9e6042b37b64736f6c63430008170033