[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "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": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "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": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "tokenUri", "type": "string" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "gift_mint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "payable", "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": "string", "name": "tokenUri", "type": "string" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "payable", "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": "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": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenIds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdrawBalance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b5060405162003ea938038062003ea9833981810160405281019062000037919062000303565b8181816000908051906020019062000051929190620000b6565b5080600190805190602001906200006a929190620000b6565b50505033600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620003ec565b828054620000c490620003b7565b90600052602060002090601f016020900481019282620000e8576000855562000134565b82601f106200010357805160ff191683800117855562000134565b8280016001018555821562000134579182015b828111156200013357825182559160200191906001019062000116565b5b50905062000143919062000147565b5090565b5b808211156200016257600081600090555060010162000148565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620001cf8262000184565b810181811067ffffffffffffffff82111715620001f157620001f062000195565b5b80604052505050565b60006200020662000166565b9050620002148282620001c4565b919050565b600067ffffffffffffffff82111562000237576200023662000195565b5b620002428262000184565b9050602081019050919050565b60005b838110156200026f57808201518184015260208101905062000252565b838111156200027f576000848401525b50505050565b60006200029c620002968462000219565b620001fa565b905082815260208101848484011115620002bb57620002ba6200017f565b5b620002c88482856200024f565b509392505050565b600082601f830112620002e857620002e76200017a565b5b8151620002fa84826020860162000285565b91505092915050565b600080604083850312156200031d576200031c62000170565b5b600083015167ffffffffffffffff8111156200033e576200033d62000175565b5b6200034c85828601620002d0565b925050602083015167ffffffffffffffff81111562000370576200036f62000175565b5b6200037e85828601620002d0565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003d057607f821691505b602082108103620003e657620003e562000388565b5b50919050565b613aad80620003fc6000396000f3fe6080604052600436106101355760003560e01c80634f6ccce7116100ab57806395d89b411161006f57806395d89b4114610453578063a22cb4651461047e578063b88d4fde146104a7578063c87b56dd146104d0578063d85d3d271461050d578063e985e9c51461053d57610135565b80634f6ccce7146103465780635fd8c710146103835780636352211e146103ae57806370a08231146103eb578063714cff561461042857610135565b806318160ddd116100fd57806318160ddd1461023357806323b872dd1461025e578063272a79a9146102875780632f745c59146102b757806342842e0e146102f457806342966c681461031d57610135565b806301ffc9a71461013a57806306fdde0314610177578063081812fc146101a2578063095ea7b3146101df57806312065fe014610208575b600080fd5b34801561014657600080fd5b50610161600480360381019061015c91906127db565b61057a565b60405161016e9190612823565b60405180910390f35b34801561018357600080fd5b5061018c61058c565b60405161019991906128d7565b60405180910390f35b3480156101ae57600080fd5b506101c960048036038101906101c4919061292f565b61061e565b6040516101d6919061299d565b60405180910390f35b3480156101eb57600080fd5b50610206600480360381019061020191906129e4565b610664565b005b34801561021457600080fd5b5061021d61077b565b60405161022a9190612a33565b60405180910390f35b34801561023f57600080fd5b50610248610783565b6040516102559190612a33565b60405180910390f35b34801561026a57600080fd5b5061028560048036038101906102809190612a4e565b610790565b005b6102a1600480360381019061029c9190612bd6565b6107f0565b6040516102ae9190612a33565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d991906129e4565b61082f565b6040516102eb9190612a33565b60405180910390f35b34801561030057600080fd5b5061031b60048036038101906103169190612a4e565b6108d4565b005b34801561032957600080fd5b50610344600480360381019061033f919061292f565b6108f4565b005b34801561035257600080fd5b5061036d6004803603810190610368919061292f565b610987565b60405161037a9190612a33565b60405180910390f35b34801561038f57600080fd5b506103986109f8565b6040516103a59190612823565b60405180910390f35b3480156103ba57600080fd5b506103d560048036038101906103d0919061292f565b610b00565b6040516103e2919061299d565b60405180910390f35b3480156103f757600080fd5b50610412600480360381019061040d9190612c32565b610b86565b60405161041f9190612a33565b60405180910390f35b34801561043457600080fd5b5061043d610c3d565b60405161044a9190612a33565b60405180910390f35b34801561045f57600080fd5b50610468610c43565b60405161047591906128d7565b60405180910390f35b34801561048a57600080fd5b506104a560048036038101906104a09190612c8b565b610cd5565b005b3480156104b357600080fd5b506104ce60048036038101906104c99190612d6c565b610ceb565b005b3480156104dc57600080fd5b506104f760048036038101906104f2919061292f565b610d4d565b60405161050491906128d7565b60405180910390f35b61052760048036038101906105229190612def565b610d5f565b6040516105349190612a33565b60405180910390f35b34801561054957600080fd5b50610564600480360381019061055f9190612e38565b610d9d565b6040516105719190612823565b60405180910390f35b600061058582610e31565b9050919050565b60606000805461059b90612ea7565b80601f01602080910402602001604051908101604052809291908181526020018280546105c790612ea7565b80156106145780601f106105e957610100808354040283529160200191610614565b820191906000526020600020905b8154815290600101906020018083116105f757829003601f168201915b5050505050905090565b600061062982610eab565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061066f82610b00565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036106df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d690612f4a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166106fe610ef6565b73ffffffffffffffffffffffffffffffffffffffff16148061072d575061072c81610727610ef6565b610d9d565b5b61076c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076390612fdc565b60405180910390fd5b6107768383610efe565b505050565b600047905090565b6000600880549050905090565b6107a161079b610ef6565b82610fb7565b6107e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d79061306e565b60405180910390fd5b6107eb83838361104c565b505050565b6000600c6000815480929190610805906130bd565b91905055506000600c54905061081b8382611345565b6108258185611363565b8091505092915050565b600061083a83610b86565b821061087b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087290613177565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b6108ef83838360405180602001604052806000815250610ceb565b505050565b6108fd81610b00565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614801561093c575061093b816113d7565b5b61097b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610972906131e3565b60405180910390fd5b61098481611418565b50565b6000610991610783565b82106109d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c990613275565b60405180910390fd5b600882815481106109e6576109e5613295565b5b90600052602060002001549050919050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8190613310565b60405180910390fd5b6000479050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610af7573d6000803e3d6000fd5b50600191505090565b600080610b0c83611424565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b749061337c565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bed9061340e565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c5481565b606060018054610c5290612ea7565b80601f0160208091040260200160405190810160405280929190818152602001828054610c7e90612ea7565b8015610ccb5780601f10610ca057610100808354040283529160200191610ccb565b820191906000526020600020905b815481529060010190602001808311610cae57829003601f168201915b5050505050905090565b610ce7610ce0610ef6565b8383611461565b5050565b610cfc610cf6610ef6565b83610fb7565b610d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d329061306e565b60405180910390fd5b610d47848484846115cd565b50505050565b6060610d5882611629565b9050919050565b6000600c6000815480929190610d74906130bd565b91905055506000600c549050610d8a3382611345565b610d948184611363565b80915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610ea45750610ea38261173b565b5b9050919050565b610eb4816113d7565b610ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eea9061337c565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610f7183610b00565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610fc383610b00565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061100557506110048185610d9d565b5b8061104357508373ffffffffffffffffffffffffffffffffffffffff1661102b8461061e565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661106c82610b00565b73ffffffffffffffffffffffffffffffffffffffff16146110c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b9906134a0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611131576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112890613532565b60405180910390fd5b61113e838383600161181d565b8273ffffffffffffffffffffffffffffffffffffffff1661115e82610b00565b73ffffffffffffffffffffffffffffffffffffffff16146111b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ab906134a0565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611340838383600161182f565b505050565b61135f828260405180602001604052806000815250611835565b5050565b61136c826113d7565b6113ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a2906135c4565b60405180910390fd5b80600a600084815260200190815260200160002090805190602001906113d292919061268c565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff166113f983611424565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b61142181611890565b50565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c690613630565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516115c09190612823565b60405180910390a3505050565b6115d884848461104c565b6115e4848484846118e3565b611623576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161a906136c2565b60405180910390fd5b50505050565b606061163482610eab565b6000600a6000848152602001908152602001600020805461165490612ea7565b80601f016020809104026020016040519081016040528092919081815260200182805461168090612ea7565b80156116cd5780601f106116a2576101008083540402835291602001916116cd565b820191906000526020600020905b8154815290600101906020018083116116b057829003601f168201915b5050505050905060006116de611a6a565b905060008151036116f3578192505050611736565b60008251111561172857808260405160200161171092919061371e565b60405160208183030381529060405292505050611736565b61173184611a81565b925050505b919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061180657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611816575061181582611ae9565b5b9050919050565b61182984848484611b53565b50505050565b50505050565b61183f8383611cb1565b61184c60008484846118e3565b61188b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611882906136c2565b60405180910390fd5b505050565b61189981611ece565b6000600a600083815260200190815260200160002080546118b990612ea7565b9050146118e057600a600082815260200190815260200160002060006118df9190612712565b5b50565b60006119048473ffffffffffffffffffffffffffffffffffffffff1661201c565b15611a5d578373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261192d610ef6565b8786866040518563ffffffff1660e01b815260040161194f9493929190613797565b6020604051808303816000875af192505050801561198b57506040513d601f19601f8201168201806040525081019061198891906137f8565b60015b611a0d573d80600081146119bb576040519150601f19603f3d011682016040523d82523d6000602084013e6119c0565b606091505b506000815103611a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fc906136c2565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611a62565b600190505b949350505050565b606060405180602001604052806000815250905090565b6060611a8c82610eab565b6000611a96611a6a565b90506000815111611ab65760405180602001604052806000815250611ae1565b80611ac08461203f565b604051602001611ad192919061371e565b6040516020818303038152906040525b915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611b5f8484848461210d565b6001811115611ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9a90613897565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611bea57611be581612233565b611c29565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611c2857611c27858261227c565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611c6b57611c66816123e9565b611caa565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611ca957611ca884826124ba565b5b5b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1790613903565b60405180910390fd5b611d29816113d7565b15611d69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d609061396f565b60405180910390fd5b611d7760008383600161181d565b611d80816113d7565b15611dc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db79061396f565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611eca60008383600161182f565b5050565b6000611ed982610b00565b9050611ee981600084600161181d565b611ef282610b00565b90506004600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461201881600084600161182f565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60606000600161204e84612539565b01905060008167ffffffffffffffff81111561206d5761206c612aab565b5b6040519080825280601f01601f19166020018201604052801561209f5781602001600182028036833780820191505090505b509050600082602001820190505b600115612102578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816120f6576120f561398f565b5b049450600085036120ad575b819350505050919050565b600181111561222d57600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146121a15780600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461219991906139be565b925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461222c5780600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461222491906139f2565b925050819055505b5b50505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161228984610b86565b61229391906139be565b9050600060076000848152602001908152602001600020549050818114612378576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506123fd91906139be565b905060006009600084815260200190815260200160002054905060006008838154811061242d5761242c613295565b5b90600052602060002001549050806008838154811061244f5761244e613295565b5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548061249e5761249d613a48565b5b6001900381819060005260206000200160009055905550505050565b60006124c583610b86565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612597577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161258d5761258c61398f565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106125d4576d04ee2d6d415b85acef810000000083816125ca576125c961398f565b5b0492506020810190505b662386f26fc10000831061260357662386f26fc1000083816125f9576125f861398f565b5b0492506010810190505b6305f5e100831061262c576305f5e10083816126225761262161398f565b5b0492506008810190505b61271083106126515761271083816126475761264661398f565b5b0492506004810190505b60648310612674576064838161266a5761266961398f565b5b0492506002810190505b600a8310612683576001810190505b80915050919050565b82805461269890612ea7565b90600052602060002090601f0160209004810192826126ba5760008555612701565b82601f106126d357805160ff1916838001178555612701565b82800160010185558215612701579182015b828111156127005782518255916020019190600101906126e5565b5b50905061270e9190612752565b5090565b50805461271e90612ea7565b6000825580601f10612730575061274f565b601f01602090049060005260206000209081019061274e9190612752565b5b50565b5b8082111561276b576000816000905550600101612753565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6127b881612783565b81146127c357600080fd5b50565b6000813590506127d5816127af565b92915050565b6000602082840312156127f1576127f0612779565b5b60006127ff848285016127c6565b91505092915050565b60008115159050919050565b61281d81612808565b82525050565b60006020820190506128386000830184612814565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561287857808201518184015260208101905061285d565b83811115612887576000848401525b50505050565b6000601f19601f8301169050919050565b60006128a98261283e565b6128b38185612849565b93506128c381856020860161285a565b6128cc8161288d565b840191505092915050565b600060208201905081810360008301526128f1818461289e565b905092915050565b6000819050919050565b61290c816128f9565b811461291757600080fd5b50565b60008135905061292981612903565b92915050565b60006020828403121561294557612944612779565b5b60006129538482850161291a565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129878261295c565b9050919050565b6129978161297c565b82525050565b60006020820190506129b2600083018461298e565b92915050565b6129c18161297c565b81146129cc57600080fd5b50565b6000813590506129de816129b8565b92915050565b600080604083850312156129fb576129fa612779565b5b6000612a09858286016129cf565b9250506020612a1a8582860161291a565b9150509250929050565b612a2d816128f9565b82525050565b6000602082019050612a486000830184612a24565b92915050565b600080600060608486031215612a6757612a66612779565b5b6000612a75868287016129cf565b9350506020612a86868287016129cf565b9250506040612a978682870161291a565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612ae38261288d565b810181811067ffffffffffffffff82111715612b0257612b01612aab565b5b80604052505050565b6000612b1561276f565b9050612b218282612ada565b919050565b600067ffffffffffffffff821115612b4157612b40612aab565b5b612b4a8261288d565b9050602081019050919050565b82818337600083830152505050565b6000612b79612b7484612b26565b612b0b565b905082815260208101848484011115612b9557612b94612aa6565b5b612ba0848285612b57565b509392505050565b600082601f830112612bbd57612bbc612aa1565b5b8135612bcd848260208601612b66565b91505092915050565b60008060408385031215612bed57612bec612779565b5b600083013567ffffffffffffffff811115612c0b57612c0a61277e565b5b612c1785828601612ba8565b9250506020612c28858286016129cf565b9150509250929050565b600060208284031215612c4857612c47612779565b5b6000612c56848285016129cf565b91505092915050565b612c6881612808565b8114612c7357600080fd5b50565b600081359050612c8581612c5f565b92915050565b60008060408385031215612ca257612ca1612779565b5b6000612cb0858286016129cf565b9250506020612cc185828601612c76565b9150509250929050565b600067ffffffffffffffff821115612ce657612ce5612aab565b5b612cef8261288d565b9050602081019050919050565b6000612d0f612d0a84612ccb565b612b0b565b905082815260208101848484011115612d2b57612d2a612aa6565b5b612d36848285612b57565b509392505050565b600082601f830112612d5357612d52612aa1565b5b8135612d63848260208601612cfc565b91505092915050565b60008060008060808587031215612d8657612d85612779565b5b6000612d94878288016129cf565b9450506020612da5878288016129cf565b9350506040612db68782880161291a565b925050606085013567ffffffffffffffff811115612dd757612dd661277e565b5b612de387828801612d3e565b91505092959194509250565b600060208284031215612e0557612e04612779565b5b600082013567ffffffffffffffff811115612e2357612e2261277e565b5b612e2f84828501612ba8565b91505092915050565b60008060408385031215612e4f57612e4e612779565b5b6000612e5d858286016129cf565b9250506020612e6e858286016129cf565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612ebf57607f821691505b602082108103612ed257612ed1612e78565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f34602183612849565b9150612f3f82612ed8565b604082019050919050565b60006020820190508181036000830152612f6381612f27565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000612fc6603d83612849565b9150612fd182612f6a565b604082019050919050565b60006020820190508181036000830152612ff581612fb9565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b6000613058602d83612849565b915061306382612ffc565b604082019050919050565b600060208201905081810360008301526130878161304b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006130c8826128f9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036130fa576130f961308e565b5b600182019050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000613161602b83612849565b915061316c82613105565b604082019050919050565b6000602082019050818103600083015261319081613154565b9050919050565b7f4e6f74206f776e6572206f72206e6f74206578697374732e0000000000000000600082015250565b60006131cd601883612849565b91506131d882613197565b602082019050919050565b600060208201905081810360008301526131fc816131c0565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b600061325f602c83612849565b915061326a82613203565b604082019050919050565b6000602082019050818103600083015261328e81613252565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e6f742061646d696e0000000000000000000000000000000000000000000000600082015250565b60006132fa600983612849565b9150613305826132c4565b602082019050919050565b60006020820190508181036000830152613329816132ed565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000613366601883612849565b915061337182613330565b602082019050919050565b6000602082019050818103600083015261339581613359565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006133f8602983612849565b91506134038261339c565b604082019050919050565b60006020820190508181036000830152613427816133eb565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b600061348a602583612849565b91506134958261342e565b604082019050919050565b600060208201905081810360008301526134b98161347d565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061351c602483612849565b9150613527826134c0565b604082019050919050565b6000602082019050818103600083015261354b8161350f565b9050919050565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b60006135ae602e83612849565b91506135b982613552565b604082019050919050565b600060208201905081810360008301526135dd816135a1565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b600061361a601983612849565b9150613625826135e4565b602082019050919050565b600060208201905081810360008301526136498161360d565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b60006136ac603283612849565b91506136b782613650565b604082019050919050565b600060208201905081810360008301526136db8161369f565b9050919050565b600081905092915050565b60006136f88261283e565b61370281856136e2565b935061371281856020860161285a565b80840191505092915050565b600061372a82856136ed565b915061373682846136ed565b91508190509392505050565b600081519050919050565b600082825260208201905092915050565b600061376982613742565b613773818561374d565b935061378381856020860161285a565b61378c8161288d565b840191505092915050565b60006080820190506137ac600083018761298e565b6137b9602083018661298e565b6137c66040830185612a24565b81810360608301526137d8818461375e565b905095945050505050565b6000815190506137f2816127af565b92915050565b60006020828403121561380e5761380d612779565b5b600061381c848285016137e3565b91505092915050565b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b6000613881603583612849565b915061388c82613825565b604082019050919050565b600060208201905081810360008301526138b081613874565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006138ed602083612849565b91506138f8826138b7565b602082019050919050565b6000602082019050818103600083015261391c816138e0565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000613959601c83612849565b915061396482613923565b602082019050919050565b600060208201905081810360008301526139888161394c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006139c9826128f9565b91506139d4836128f9565b9250828210156139e7576139e661308e565b5b828203905092915050565b60006139fd826128f9565b9150613a08836128f9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a3d57613a3c61308e565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220a4fa150e10a95bf9ab0ef56046abd8c945f7eec6cb2179df821b1de36012a75f64736f6c634300080d003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001643727970746f666f7263652043686172616374657273000000000000000000000000000000000000000000000000000000000000000000000000000000000003434f460000000000000000000000000000000000000000000000000000000000