[ { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "uint256", "name": "MAX_SUPPLY_", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_SUPPLY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "OPT_OUT_SKIP_ALLOWANCE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "TOKEN_MAESTRO_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "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": "amount", "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": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "getVolume", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mintTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "internalType": "struct mcv.TransferInput[]", "name": "transfers", "type": "tuple[]" } ], "name": "multiTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "internalType": "struct mcv.TransferFromInput[]", "name": "transferFroms", "type": "tuple[]" } ], "name": "multiTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "optInSkipAllowance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "optOutSkipAllowance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "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": "amount", "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": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b50604051620035e1380380620035e18339818101604052810190620000379190620003e9565b828281600390816200004a9190620006c4565b5080600490816200005c9190620006c4565b505050620000746000801b33620000b660201b60201c565b620000a67f29bf8f8f8232ec08f73c722bd39bfd0fc15f8680e63d1c0fbaac438b9f84ecf633620000b660201b60201c565b80600681905550505050620007ab565b620000c88282620001a860201b60201c565b620001a45760016005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620001496200021360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620002848262000239565b810181811067ffffffffffffffff82111715620002a657620002a56200024a565b5b80604052505050565b6000620002bb6200021b565b9050620002c9828262000279565b919050565b600067ffffffffffffffff821115620002ec57620002eb6200024a565b5b620002f78262000239565b9050602081019050919050565b60005b838110156200032457808201518184015260208101905062000307565b60008484015250505050565b6000620003476200034184620002ce565b620002af565b90508281526020810184848401111562000366576200036562000234565b5b6200037384828562000304565b509392505050565b600082601f8301126200039357620003926200022f565b5b8151620003a584826020860162000330565b91505092915050565b6000819050919050565b620003c381620003ae565b8114620003cf57600080fd5b50565b600081519050620003e381620003b8565b92915050565b60008060006060848603121562000405576200040462000225565b5b600084015167ffffffffffffffff8111156200042657620004256200022a565b5b62000434868287016200037b565b935050602084015167ffffffffffffffff8111156200045857620004576200022a565b5b62000466868287016200037b565b92505060406200047986828701620003d2565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620004d657607f821691505b602082108103620004ec57620004eb6200048e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005567fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000517565b62000562868362000517565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620005a56200059f6200059984620003ae565b6200057a565b620003ae565b9050919050565b6000819050919050565b620005c18362000584565b620005d9620005d082620005ac565b84845462000524565b825550505050565b600090565b620005f0620005e1565b620005fd818484620005b6565b505050565b5b81811015620006255762000619600082620005e6565b60018101905062000603565b5050565b601f82111562000674576200063e81620004f2565b620006498462000507565b8101602085101562000659578190505b62000671620006688562000507565b83018262000602565b50505b505050565b600082821c905092915050565b6000620006996000198460080262000679565b1980831691505092915050565b6000620006b4838362000686565b9150826002028217905092915050565b620006cf8262000483565b67ffffffffffffffff811115620006eb57620006ea6200024a565b5b620006f78254620004bd565b6200070482828562000629565b600060209050601f8311600181146200073c576000841562000727578287015190505b620007338582620006a6565b865550620007a3565b601f1984166200074c86620004f2565b60005b8281101562000776578489015182556001820191506020850194506020810190506200074f565b8683101562000796578489015162000792601f89168262000686565b8355505b6001600288020188555050505b505050505050565b612e2680620007bb6000396000f3fe608060405234801561001057600080fd5b50600436106101d95760003560e01c80635dedabf911610104578063a217fddf116100a2578063cc0b25ec11610071578063cc0b25ec1461057c578063d547741f14610586578063dd62ed3e146105a2578063ebd08753146105d2576101d9565b8063a217fddf146104e0578063a457c2d7146104fe578063a9059cbb1461052e578063abcd741d1461055e576101d9565b806391d14854116100de57806391d1485414610458578063925e24291461048857806395d89b41146104a6578063a0712d68146104c4576101d9565b80635dedabf9146103dc57806370a082311461040c57806379cc67901461043c576101d9565b8063248a9ca31161017c57806336568abe1161014b57806336568abe14610358578063395093511461037457806342966c68146103a4578063449a52f8146103c0576101d9565b8063248a9ca3146102d05780632f2ff15d14610300578063313ce5671461031c57806332cb6b0c1461033a576101d9565b8063095ea7b3116101b8578063095ea7b31461023657806309f796a61461026657806318160ddd1461028257806323b872dd146102a0576101d9565b8062855fbd146101de57806301ffc9a7146101e857806306fdde0314610218575b600080fd5b6101e66105ee565b005b61020260048036038101906101fd9190611dbf565b61061a565b60405161020f9190611e07565b60405180910390f35b610220610694565b60405161022d9190611eb2565b60405180910390f35b610250600480360381019061024b9190611f68565b610726565b60405161025d9190611e07565b60405180910390f35b610280600480360381019061027b919061200d565b610749565b005b61028a6107c6565b6040516102979190612069565b60405180910390f35b6102ba60048036038101906102b59190612084565b6107d0565b6040516102c79190611e07565b60405180910390f35b6102ea60048036038101906102e5919061210d565b610808565b6040516102f79190612149565b60405180910390f35b61031a60048036038101906103159190612164565b610828565b005b61032461087f565b60405161033191906121c0565b60405180910390f35b610342610888565b60405161034f9190612069565b60405180910390f35b610372600480360381019061036d9190612164565b61088e565b005b61038e60048036038101906103899190611f68565b610911565b60405161039b9190611e07565b60405180910390f35b6103be60048036038101906103b991906121db565b610948565b005b6103da60048036038101906103d59190611f68565b61095c565b005b6103f660048036038101906103f19190612208565b610995565b6040516104039190612069565b60405180910390f35b61042660048036038101906104219190612248565b610a1c565b6040516104339190612069565b60405180910390f35b61045660048036038101906104519190611f68565b610a64565b005b610472600480360381019061046d9190612164565b610a8c565b60405161047f9190611e07565b60405180910390f35b610490610af7565b60405161049d9190612149565b60405180910390f35b6104ae610b1b565b6040516104bb9190611eb2565b60405180910390f35b6104de60048036038101906104d991906121db565b610bad565b005b6104e8610be5565b6040516104f59190612149565b60405180910390f35b61051860048036038101906105139190611f68565b610bec565b6040516105259190611e07565b60405180910390f35b61054860048036038101906105439190611f68565b610c63565b6040516105559190611e07565b60405180910390f35b610566610c86565b6040516105739190612149565b60405180910390f35b610584610caa565b005b6105a0600480360381019061059b9190612164565b610cd6565b005b6105bc60048036038101906105b79190612208565b610d2d565b6040516105c99190612069565b60405180910390f35b6105ec60048036038101906105e791906122cb565b610db4565b005b6106187fc8dc67b3e0474bcfd3cfdbc407b5e942f7db47b09025a1615f7e23b77afdb1e833610e1e565b565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061068d575061068c82610eff565b5b9050919050565b6060600380546106a390612347565b80601f01602080910402602001604051908101604052809291908181526020018280546106cf90612347565b801561071c5780601f106106f15761010080835404028352916020019161071c565b820191906000526020600020905b8154815290600101906020018083116106ff57829003601f168201915b5050505050905090565b600080610731610f69565b905061073e818585610f71565b600191505092915050565b600082829050905060005b818110156107c057368484838181106107705761076f612378565b5b90506060020190506107ab81600001602081019061078e9190612248565b8260200160208101906107a19190612248565b83604001356107d0565b505080806107b8906123d6565b915050610754565b50505050565b6000600254905090565b60006107db8461113a565b6107f1576107ea8484846111a0565b9050610801565b6107fc8484846111cf565b600190505b9392505050565b600060056000838152602001908152602001600020600101549050919050565b61083182611445565b15610871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086890612490565b60405180910390fd5b61087b8282611471565b5050565b60006012905090565b60065481565b610896610f69565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fa90612522565b60405180910390fd5b61090d8282611492565b5050565b60008061091c610f69565b905061093d81858561092e8589610d2d565b6109389190612542565b610f71565b600191505092915050565b610959610953610f69565b82611574565b50565b7f29bf8f8f8232ec08f73c722bd39bfd0fc15f8680e63d1c0fbaac438b9f84ecf661098681611741565b6109908383611755565b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a6d8261113a565b15610a7e57610a7d823383610f71565b5b610a8882826117af565b5050565b60006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b7fc8dc67b3e0474bcfd3cfdbc407b5e942f7db47b09025a1615f7e23b77afdb1e881565b606060048054610b2a90612347565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5690612347565b8015610ba35780601f10610b7857610100808354040283529160200191610ba3565b820191906000526020600020905b815481529060010190602001808311610b8657829003601f168201915b5050505050905090565b7f29bf8f8f8232ec08f73c722bd39bfd0fc15f8680e63d1c0fbaac438b9f84ecf6610bd781611741565b610be13383611755565b5050565b6000801b81565b600080610bf7610f69565b90506000610c058286610d2d565b905083811015610c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c41906125e8565b60405180910390fd5b610c578286868403610f71565b60019250505092915050565b600080610c6e610f69565b9050610c7b8185856111cf565b600191505092915050565b7f29bf8f8f8232ec08f73c722bd39bfd0fc15f8680e63d1c0fbaac438b9f84ecf681565b610cd47fc8dc67b3e0474bcfd3cfdbc407b5e942f7db47b09025a1615f7e23b77afdb1e833611492565b565b610cdf82611445565b15610d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d169061267a565b60405180910390fd5b610d2982826117cf565b5050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600082829050905060005b81811015610e185736848483818110610ddb57610dda612378565b5b9050604002019050610e03816000016020810190610df99190612248565b8260200135610c63565b50508080610e10906123d6565b915050610dbf565b50505050565b610e288282610a8c565b610efb5760016005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610ea0610f69565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fe0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd79061270c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361104f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110469061279e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161112d9190612069565b60405180910390a3505050565b60006111667f29bf8f8f8232ec08f73c722bd39bfd0fc15f8680e63d1c0fbaac438b9f84ecf633610a8c565b801561119957506111977fc8dc67b3e0474bcfd3cfdbc407b5e942f7db47b09025a1615f7e23b77afdb1e883610a8c565b155b9050919050565b6000806111ab610f69565b90506111b88582856117f0565b6111c38585856111cf565b60019150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361123e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123590612830565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a4906128c2565b60405180910390fd5b6112b883838361187c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561133e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133590612954565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161142c9190612069565b60405180910390a361143f848484611881565b50505050565b60007fc8dc67b3e0474bcfd3cfdbc407b5e942f7db47b09025a1615f7e23b77afdb1e882149050919050565b61147a82610808565b61148381611741565b61148d8383610e1e565b505050565b61149c8282610a8c565b156115705760006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611515610f69565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115da906129e6565b60405180910390fd5b6115ef8260008361187c565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166c90612a78565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117289190612069565b60405180910390a361173c83600084611881565b505050565b6117528161174d610f69565b611919565b50565b61175f828261199e565b60065461176a6107c6565b11156117ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a290612ae4565b60405180910390fd5b5050565b6117c1826117bb610f69565b836117f0565b6117cb8282611574565b5050565b6117d882610808565b6117e181611741565b6117eb8383611492565b505050565b60006117fc8484610d2d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146118765781811015611868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185f90612b50565b60405180910390fd5b6118758484848403610f71565b5b50505050565b505050565b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461190d9190612542565b92505081905550505050565b6119238282610a8c565b61199a5761193081611af4565b61193e8360001c6020611b21565b60405160200161194f929190612c44565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119919190611eb2565b60405180910390fd5b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0490612cca565b60405180910390fd5b611a196000838361187c565b8060026000828254611a2b9190612542565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611adc9190612069565b60405180910390a3611af060008383611881565b5050565b6060611b1a8273ffffffffffffffffffffffffffffffffffffffff16601460ff16611b21565b9050919050565b606060006002836002611b349190612cea565b611b3e9190612542565b67ffffffffffffffff811115611b5757611b56612d2c565b5b6040519080825280601f01601f191660200182016040528015611b895781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110611bc157611bc0612378565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611c2557611c24612378565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001846002611c659190612cea565b611c6f9190612542565b90505b6001811115611d0f577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110611cb157611cb0612378565b5b1a60f81b828281518110611cc857611cc7612378565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c945080611d0890612d5b565b9050611c72565b5060008414611d53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4a90612dd0565b60405180910390fd5b8091505092915050565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611d9c81611d67565b8114611da757600080fd5b50565b600081359050611db981611d93565b92915050565b600060208284031215611dd557611dd4611d5d565b5b6000611de384828501611daa565b91505092915050565b60008115159050919050565b611e0181611dec565b82525050565b6000602082019050611e1c6000830184611df8565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611e5c578082015181840152602081019050611e41565b60008484015250505050565b6000601f19601f8301169050919050565b6000611e8482611e22565b611e8e8185611e2d565b9350611e9e818560208601611e3e565b611ea781611e68565b840191505092915050565b60006020820190508181036000830152611ecc8184611e79565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611eff82611ed4565b9050919050565b611f0f81611ef4565b8114611f1a57600080fd5b50565b600081359050611f2c81611f06565b92915050565b6000819050919050565b611f4581611f32565b8114611f5057600080fd5b50565b600081359050611f6281611f3c565b92915050565b60008060408385031215611f7f57611f7e611d5d565b5b6000611f8d85828601611f1d565b9250506020611f9e85828601611f53565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112611fcd57611fcc611fa8565b5b8235905067ffffffffffffffff811115611fea57611fe9611fad565b5b60208301915083606082028301111561200657612005611fb2565b5b9250929050565b6000806020838503121561202457612023611d5d565b5b600083013567ffffffffffffffff81111561204257612041611d62565b5b61204e85828601611fb7565b92509250509250929050565b61206381611f32565b82525050565b600060208201905061207e600083018461205a565b92915050565b60008060006060848603121561209d5761209c611d5d565b5b60006120ab86828701611f1d565b93505060206120bc86828701611f1d565b92505060406120cd86828701611f53565b9150509250925092565b6000819050919050565b6120ea816120d7565b81146120f557600080fd5b50565b600081359050612107816120e1565b92915050565b60006020828403121561212357612122611d5d565b5b6000612131848285016120f8565b91505092915050565b612143816120d7565b82525050565b600060208201905061215e600083018461213a565b92915050565b6000806040838503121561217b5761217a611d5d565b5b6000612189858286016120f8565b925050602061219a85828601611f1d565b9150509250929050565b600060ff82169050919050565b6121ba816121a4565b82525050565b60006020820190506121d560008301846121b1565b92915050565b6000602082840312156121f1576121f0611d5d565b5b60006121ff84828501611f53565b91505092915050565b6000806040838503121561221f5761221e611d5d565b5b600061222d85828601611f1d565b925050602061223e85828601611f1d565b9150509250929050565b60006020828403121561225e5761225d611d5d565b5b600061226c84828501611f1d565b91505092915050565b60008083601f84011261228b5761228a611fa8565b5b8235905067ffffffffffffffff8111156122a8576122a7611fad565b5b6020830191508360408202830111156122c4576122c3611fb2565b5b9250929050565b600080602083850312156122e2576122e1611d5d565b5b600083013567ffffffffffffffff811115612300576122ff611d62565b5b61230c85828601612275565b92509250509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061235f57607f821691505b60208210810361237257612371612318565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006123e182611f32565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612413576124126123a7565b5b600182019050919050565b7f43616e6e6f74206772616e74206f7074206f757420736b697020616c6c6f776160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b600061247a602383611e2d565b91506124858261241e565b604082019050919050565b600060208201905081810360008301526124a98161246d565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b600061250c602f83611e2d565b9150612517826124b0565b604082019050919050565b6000602082019050818103600083015261253b816124ff565b9050919050565b600061254d82611f32565b915061255883611f32565b92508282019050808211156125705761256f6123a7565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006125d2602583611e2d565b91506125dd82612576565b604082019050919050565b60006020820190508181036000830152612601816125c5565b9050919050565b7f43616e6e6f74207265766f6b65206f7074206f757420736b697020616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b6000612664602483611e2d565b915061266f82612608565b604082019050919050565b6000602082019050818103600083015261269381612657565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006126f6602483611e2d565b91506127018261269a565b604082019050919050565b60006020820190508181036000830152612725816126e9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612788602283611e2d565b91506127938261272c565b604082019050919050565b600060208201905081810360008301526127b78161277b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061281a602583611e2d565b9150612825826127be565b604082019050919050565b600060208201905081810360008301526128498161280d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006128ac602383611e2d565b91506128b782612850565b604082019050919050565b600060208201905081810360008301526128db8161289f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061293e602683611e2d565b9150612949826128e2565b604082019050919050565b6000602082019050818103600083015261296d81612931565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006129d0602183611e2d565b91506129db82612974565b604082019050919050565b600060208201905081810360008301526129ff816129c3565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612a62602283611e2d565b9150612a6d82612a06565b604082019050919050565b60006020820190508181036000830152612a9181612a55565b9050919050565b7f4d617820737570706c7920726561636865642e00000000000000000000000000600082015250565b6000612ace601383611e2d565b9150612ad982612a98565b602082019050919050565b60006020820190508181036000830152612afd81612ac1565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612b3a601d83611e2d565b9150612b4582612b04565b602082019050919050565b60006020820190508181036000830152612b6981612b2d565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000612bb1601783612b70565b9150612bbc82612b7b565b601782019050919050565b6000612bd282611e22565b612bdc8185612b70565b9350612bec818560208601611e3e565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000612c2e601183612b70565b9150612c3982612bf8565b601182019050919050565b6000612c4f82612ba4565b9150612c5b8285612bc7565b9150612c6682612c21565b9150612c728284612bc7565b91508190509392505050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612cb4601f83611e2d565b9150612cbf82612c7e565b602082019050919050565b60006020820190508181036000830152612ce381612ca7565b9050919050565b6000612cf582611f32565b9150612d0083611f32565b9250828202612d0e81611f32565b91508282048414831517612d2557612d246123a7565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000612d6682611f32565b915060008203612d7957612d786123a7565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000612dba602083611e2d565b9150612dc582612d84565b602082019050919050565b60006020820190508181036000830152612de981612dad565b905091905056fea2646970667358221220ec0a00f1faf3e29c734f53c62f98d5574e9b8c32eade2d0ed2ed19b3b3025dc364736f6c63430008110033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000003e09de2596099e2b000000000000000000000000000000000000000000000000000000000000000000000074d4356455253450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034d43560000000000000000000000000000000000000000000000000000000000