[ { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "address", "name": "_whitelisting", "type": "address" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [], "name": "OnlyAdmin", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "AdminAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "AdminRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "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": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "ADMIN_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": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "addAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "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": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "guardAdmin", "outputs": [], "stateMutability": "view", "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": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "isAdmin", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "removeAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "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": "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": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "whitelisting", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b50604051620025a2380380620025a2833981810160405281019062000037919062000431565b83828281600390816200004b91906200072c565b5080600490816200005d91906200072c565b505050620000756000801b82620000c260201b60201c565b505082600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000813565b6000620000d68383620001c660201b60201c565b620001bb5760016005600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620001576200023160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050620001c0565b600090505b92915050565b60006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200027a826200024d565b9050919050565b6200028c816200026d565b81146200029857600080fd5b50565b600081519050620002ac8162000281565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200030782620002bc565b810181811067ffffffffffffffff82111715620003295762000328620002cd565b5b80604052505050565b60006200033e62000239565b90506200034c8282620002fc565b919050565b600067ffffffffffffffff8211156200036f576200036e620002cd565b5b6200037a82620002bc565b9050602081019050919050565b60005b83811015620003a75780820151818401526020810190506200038a565b60008484015250505050565b6000620003ca620003c48462000351565b62000332565b905082815260208101848484011115620003e957620003e8620002b7565b5b620003f684828562000387565b509392505050565b600082601f830112620004165762000415620002b2565b5b815162000428848260208601620003b3565b91505092915050565b600080600080608085870312156200044e576200044d62000243565b5b60006200045e878288016200029b565b945050602062000471878288016200029b565b935050604085015167ffffffffffffffff81111562000495576200049462000248565b5b620004a387828801620003fe565b925050606085015167ffffffffffffffff811115620004c757620004c662000248565b5b620004d587828801620003fe565b91505092959194509250565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200053457607f821691505b6020821081036200054a5762000549620004ec565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005b47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000575565b620005c0868362000575565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200060d620006076200060184620005d8565b620005e2565b620005d8565b9050919050565b6000819050919050565b6200062983620005ec565b62000641620006388262000614565b84845462000582565b825550505050565b600090565b6200065862000649565b620006658184846200061e565b505050565b5b818110156200068d57620006816000826200064e565b6001810190506200066b565b5050565b601f821115620006dc57620006a68162000550565b620006b18462000565565b81016020851015620006c1578190505b620006d9620006d08562000565565b8301826200066a565b50505b505050565b600082821c905092915050565b60006200070160001984600802620006e1565b1980831691505092915050565b60006200071c8383620006ee565b9150826002028217905092915050565b6200073782620004e1565b67ffffffffffffffff811115620007535762000752620002cd565b5b6200075f82546200051b565b6200076c82828562000691565b600060209050601f831160018114620007a457600084156200078f578287015190505b6200079b85826200070e565b8655506200080b565b601f198416620007b48662000550565b60005b82811015620007de57848901518255600182019150602085019450602081019050620007b7565b86831015620007fe5784890151620007fa601f891682620006ee565b8355505b6001600288020188555050505b505050505050565b611d7f80620008236000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c8063520c5828116100c35780639dc29fac1161007c5780639dc29fac146103ed578063a217fddf14610409578063a9059cbb14610427578063d547741f14610457578063dd62ed3e14610473578063e0b60c65146104a357610158565b8063520c582814610317578063704802751461033557806370a082311461035157806375b238fc1461038157806391d148541461039f57806395d89b41146103cf57610158565b8063248a9ca311610115578063248a9ca31461024557806324d7806c146102755780632f2ff15d146102a5578063313ce567146102c157806336568abe146102df57806340c10f19146102fb57610158565b806301ffc9a71461015d57806306fdde031461018d578063095ea7b3146101ab5780631785f53c146101db57806318160ddd146101f757806323b872dd14610215575b600080fd5b610177600480360381019061017291906117cc565b6104bf565b6040516101849190611814565b60405180910390f35b610195610539565b6040516101a291906118bf565b60405180910390f35b6101c560048036038101906101c09190611975565b6105cb565b6040516101d29190611814565b60405180910390f35b6101f560048036038101906101f091906119b5565b6105ee565b005b6101ff6106af565b60405161020c91906119f1565b60405180910390f35b61022f600480360381019061022a9190611a0c565b6106b9565b60405161023c9190611814565b60405180910390f35b61025f600480360381019061025a9190611a95565b61081a565b60405161026c9190611ad1565b60405180910390f35b61028f600480360381019061028a91906119b5565b61083a565b60405161029c9190611814565b60405180910390f35b6102bf60048036038101906102ba9190611aec565b61088c565b005b6102c96108ae565b6040516102d69190611b48565b60405180910390f35b6102f960048036038101906102f49190611aec565b6108b7565b005b61031560048036038101906103109190611975565b610932565b005b61031f610949565b60405161032c9190611b72565b60405180910390f35b61034f600480360381019061034a91906119b5565b61096f565b005b61036b600480360381019061036691906119b5565b610a00565b60405161037891906119f1565b60405180910390f35b610389610a48565b6040516103969190611ad1565b60405180910390f35b6103b960048036038101906103b49190611aec565b610a6c565b6040516103c69190611814565b60405180910390f35b6103d7610ad7565b6040516103e491906118bf565b60405180910390f35b61040760048036038101906104029190611975565b610b69565b005b610411610b80565b60405161041e9190611ad1565b60405180910390f35b610441600480360381019061043c9190611975565b610b87565b60405161044e9190611814565b60405180910390f35b610471600480360381019061046c9190611aec565b610ce9565b005b61048d60048036038101906104889190611b8d565b610d0b565b60405161049a91906119f1565b60405180910390f35b6104bd60048036038101906104b891906119b5565b610d92565b005b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610532575061053182610e19565b5b9050919050565b60606003805461054890611bfc565b80601f016020809104026020016040519081016040528092919081815260200182805461057490611bfc565b80156105c15780601f10610596576101008083540402835291602001916105c1565b820191906000526020600020905b8154815290600101906020018083116105a457829003601f168201915b5050505050905090565b6000806105d6610e83565b90506105e3818585610e8b565b600191505092915050565b6105f733610d92565b6106217fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177582610a6c565b156106ac576106507fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177582610e9d565b503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce60405160405180910390a35b50565b6000600254905090565b600033600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ba137713826040518263ffffffff1660e01b81526004016107179190611b72565b602060405180830381865afa158015610734573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107589190611c59565b5083600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ba137713826040518263ffffffff1660e01b81526004016107b59190611b72565b602060405180830381865afa1580156107d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f69190611c59565b50610802868686610f90565b61080d868686611024565b6001925050509392505050565b600060056000838152602001908152602001600020600101549050919050565b6000806108677fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177584610a6c565b905060006108786000801b85610a6c565b905081806108835750805b92505050919050565b6108958261081a565b61089e81611118565b6108a8838361112c565b50505050565b60006012905090565b6108bf610e83565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610923576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61092d8282610e9d565b505050565b61093b33610d92565b610945828261121e565b5050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61097833610d92565b6109a27fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217758261112c565b503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fbf3f493c772c8c283fd124432c2d0f539ab343faa04258fe88e52912d36b102b60405160405180910390a350565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b60006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060048054610ae690611bfc565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1290611bfc565b8015610b5f5780601f10610b3457610100808354040283529160200191610b5f565b820191906000526020600020905b815481529060010190602001808311610b4257829003601f168201915b5050505050905090565b610b7233610d92565b610b7c82826112a0565b5050565b6000801b81565b600033600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ba137713826040518263ffffffff1660e01b8152600401610be59190611b72565b602060405180830381865afa158015610c02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c269190611c59565b5083600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ba137713826040518263ffffffff1660e01b8152600401610c839190611b72565b602060405180830381865afa158015610ca0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc49190611c59565b506000610ccf610e83565b9050610cdc818787611024565b6001935050505092915050565b610cf28261081a565b610cfb81611118565b610d058383610e9d565b50505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000610dbe7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177583610a6c565b90506000610dcf6000801b84610a6c565b905081158015610ddd575080155b15610e14576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b610e988383836001611322565b505050565b6000610ea98383610a6c565b15610f855760006005600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610f22610e83565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a460019050610f8a565b600090505b92915050565b6000610f9c8484610d0b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461101e578181101561100e578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161100593929190611c86565b60405180910390fd5b61101d84848484036000611322565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110965760006040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161108d9190611b72565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111085760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016110ff9190611b72565b60405180910390fd5b6111138383836114f9565b505050565b61112981611124610e83565b61171e565b50565b60006111388383610a6c565b6112135760016005600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506111b0610e83565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050611218565b600090505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112905760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016112879190611b72565b60405180910390fd5b61129c600083836114f9565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113125760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016113099190611b72565b60405180910390fd5b61131e826000836114f9565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036113945760006040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161138b9190611b72565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114065760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016113fd9190611b72565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080156114f3578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516114ea91906119f1565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361154b57806002600082825461153f9190611cec565b9250508190555061161e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156115d7578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016115ce93929190611c86565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361166757806002600082825403925050819055506116b4565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161171191906119f1565b60405180910390a3505050565b6117288282610a6c565b61176b5780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401611762929190611d20565b60405180910390fd5b5050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6117a981611774565b81146117b457600080fd5b50565b6000813590506117c6816117a0565b92915050565b6000602082840312156117e2576117e161176f565b5b60006117f0848285016117b7565b91505092915050565b60008115159050919050565b61180e816117f9565b82525050565b60006020820190506118296000830184611805565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561186957808201518184015260208101905061184e565b60008484015250505050565b6000601f19601f8301169050919050565b60006118918261182f565b61189b818561183a565b93506118ab81856020860161184b565b6118b481611875565b840191505092915050565b600060208201905081810360008301526118d98184611886565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061190c826118e1565b9050919050565b61191c81611901565b811461192757600080fd5b50565b60008135905061193981611913565b92915050565b6000819050919050565b6119528161193f565b811461195d57600080fd5b50565b60008135905061196f81611949565b92915050565b6000806040838503121561198c5761198b61176f565b5b600061199a8582860161192a565b92505060206119ab85828601611960565b9150509250929050565b6000602082840312156119cb576119ca61176f565b5b60006119d98482850161192a565b91505092915050565b6119eb8161193f565b82525050565b6000602082019050611a0660008301846119e2565b92915050565b600080600060608486031215611a2557611a2461176f565b5b6000611a338682870161192a565b9350506020611a448682870161192a565b9250506040611a5586828701611960565b9150509250925092565b6000819050919050565b611a7281611a5f565b8114611a7d57600080fd5b50565b600081359050611a8f81611a69565b92915050565b600060208284031215611aab57611aaa61176f565b5b6000611ab984828501611a80565b91505092915050565b611acb81611a5f565b82525050565b6000602082019050611ae66000830184611ac2565b92915050565b60008060408385031215611b0357611b0261176f565b5b6000611b1185828601611a80565b9250506020611b228582860161192a565b9150509250929050565b600060ff82169050919050565b611b4281611b2c565b82525050565b6000602082019050611b5d6000830184611b39565b92915050565b611b6c81611901565b82525050565b6000602082019050611b876000830184611b63565b92915050565b60008060408385031215611ba457611ba361176f565b5b6000611bb28582860161192a565b9250506020611bc38582860161192a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611c1457607f821691505b602082108103611c2757611c26611bcd565b5b50919050565b611c36816117f9565b8114611c4157600080fd5b50565b600081519050611c5381611c2d565b92915050565b600060208284031215611c6f57611c6e61176f565b5b6000611c7d84828501611c44565b91505092915050565b6000606082019050611c9b6000830186611b63565b611ca860208301856119e2565b611cb560408301846119e2565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611cf78261193f565b9150611d028361193f565b9250828201905080821115611d1a57611d19611cbd565b5b92915050565b6000604082019050611d356000830185611b63565b611d426020830184611ac2565b939250505056fea264697066735822122025660e41696ff0d25c8728c8cac1357904a00e1238546b287f67088c65a1317964736f6c634300081800330000000000000000000000002cfc3c6b4d058c5b0f823c9fcd65198bfedeaf85000000000000000000000000124a57b9fb795f9a4956d5cd35bc2a7efc93bb1c000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000843524f574e434154000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000543524f574e000000000000000000000000000000000000000000000000000000