[ { "inputs": [], "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": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "tokenHolder", "type": "address" } ], "name": "AuthorizedOperator", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "bytes", "name": "data", "type": "bytes" }, { "indexed": false, "internalType": "bytes", "name": "operatorData", "type": "bytes" } ], "name": "Burned", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "bytes", "name": "data", "type": "bytes" }, { "indexed": false, "internalType": "bytes", "name": "operatorData", "type": "bytes" } ], "name": "Minted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "tokenHolder", "type": "address" } ], "name": "RevokedOperator", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "bytes", "name": "data", "type": "bytes" }, { "indexed": false, "internalType": "bytes", "name": "operatorData", "type": "bytes" } ], "name": "Sent", "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": [ { "internalType": "address", "name": "holder", "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": "operator", "type": "address" } ], "name": "authorizeOperator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenHolder", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "defaultOperators", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "granularity", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "address", "name": "tokenHolder", "type": "address" } ], "name": "isOperatorFor", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" }, { "internalType": "bytes", "name": "operatorData", "type": "bytes" } ], "name": "operatorBurn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" }, { "internalType": "bytes", "name": "operatorData", "type": "bytes" } ], "name": "operatorSend", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "revokeOperator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "send", "outputs": [], "stateMutability": "nonpayable", "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": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "holder", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
60806040527384187c897d8e196277af2a9e80d1b8f4884d20116000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006557600080fd5b506040518060400160405280600581526020017f53544152580000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f5354415258000000000000000000000000000000000000000000000000000000815250600067ffffffffffffffff811115620000f057620000ef62000902565b5b6040519080825280602002602001820160405280156200011f5781602001602082028036833780820191505090505b50826003908162000131919062000b7c565b50816004908162000143919062000b7c565b5080600590805190602001906200015c92919062000854565b5060005b6005805490508110156200021d57600160066000600584815481106200018b576200018a62000c63565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080620002149062000cc1565b91505062000160565b5060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329965a1d307fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce2177054306040518463ffffffff1660e01b81526004016200029d9392919062000d6e565b600060405180830381600087803b158015620002b857600080fd5b505af1158015620002cd573d6000803e3d6000fd5b5050505060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329965a1d307faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a306040518463ffffffff1660e01b8152600401620003509392919062000d6e565b600060405180830381600087803b1580156200036b57600080fd5b505af115801562000380573d6000803e3d6000fd5b50505050505050620003c633336b033b2e3c9fd0803ce80000006040518060200160405280600081525060405180602001604052806000815250620003cc60201b60201c565b620011bc565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036200043e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004359062000e0c565b60405180910390fd5b6200045583600254620005e560201b90919060201c565b600281905550620004af83600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620005e560201b90919060201c565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200050b8560008686868660016200064860201b60201c565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d8585856040516200056e9392919062000ed9565b60405180910390a38373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051620005d6919062000f24565b60405180910390a35050505050565b6000808284620005f6919062000f41565b9050838110156200063e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006359062000fcc565b60405180910390fd5b8091505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b60001b6040518363ffffffff1660e01b8152600401620006cb92919062000fee565b602060405180830381865afa158015620006e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200070f919062001051565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614620007c4578073ffffffffffffffffffffffffffffffffffffffff166223de298989898989896040518763ffffffff1660e01b81526004016200078a9695949392919062001083565b600060405180830381600087803b158015620007a557600080fd5b505af1158015620007ba573d6000803e3d6000fd5b5050505062000837565b81156200083657620007f28673ffffffffffffffffffffffffffffffffffffffff166200084160201b60201c565b1562000835576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200082c906200119a565b60405180910390fd5b5b5b5050505050505050565b600080823b905060008111915050919050565b828054828255906000526020600020908101928215620008d0579160200282015b82811115620008cf5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000875565b5b509050620008df9190620008e3565b5090565b5b80821115620008fe576000816000905550600101620008e4565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200098457607f821691505b6020821081036200099a57620009996200093c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000a047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620009c5565b62000a108683620009c5565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000a5d62000a5762000a518462000a28565b62000a32565b62000a28565b9050919050565b6000819050919050565b62000a798362000a3c565b62000a9162000a888262000a64565b848454620009d2565b825550505050565b600090565b62000aa862000a99565b62000ab581848462000a6e565b505050565b5b8181101562000add5762000ad160008262000a9e565b60018101905062000abb565b5050565b601f82111562000b2c5762000af681620009a0565b62000b0184620009b5565b8101602085101562000b11578190505b62000b2962000b2085620009b5565b83018262000aba565b50505b505050565b600082821c905092915050565b600062000b516000198460080262000b31565b1980831691505092915050565b600062000b6c838362000b3e565b9150826002028217905092915050565b62000b878262000931565b67ffffffffffffffff81111562000ba35762000ba262000902565b5b62000baf82546200096b565b62000bbc82828562000ae1565b600060209050601f83116001811462000bf4576000841562000bdf578287015190505b62000beb858262000b5e565b86555062000c5b565b601f19841662000c0486620009a0565b60005b8281101562000c2e5784890151825560018201915060208501945060208101905062000c07565b8683101562000c4e578489015162000c4a601f89168262000b3e565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000cce8262000a28565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362000d035762000d0262000c92565b5b600182019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d3b8262000d0e565b9050919050565b62000d4d8162000d2e565b82525050565b6000819050919050565b62000d688162000d53565b82525050565b600060608201905062000d85600083018662000d42565b62000d94602083018562000d5d565b62000da3604083018462000d42565b949350505050565b600082825260208201905092915050565b7f4552433737373a206d696e7420746f20746865207a65726f2061646472657373600082015250565b600062000df460208362000dab565b915062000e018262000dbc565b602082019050919050565b6000602082019050818103600083015262000e278162000de5565b9050919050565b62000e398162000a28565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101562000e7b57808201518184015260208101905062000e5e565b60008484015250505050565b6000601f19601f8301169050919050565b600062000ea58262000e3f565b62000eb1818562000e4a565b935062000ec381856020860162000e5b565b62000ece8162000e87565b840191505092915050565b600060608201905062000ef0600083018662000e2e565b818103602083015262000f04818562000e98565b9050818103604083015262000f1a818462000e98565b9050949350505050565b600060208201905062000f3b600083018462000e2e565b92915050565b600062000f4e8262000a28565b915062000f5b8362000a28565b925082820190508082111562000f765762000f7562000c92565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000fb4601b8362000dab565b915062000fc18262000f7c565b602082019050919050565b6000602082019050818103600083015262000fe78162000fa5565b9050919050565b600060408201905062001005600083018562000d42565b62001014602083018462000d5d565b9392505050565b600080fd5b6200102b8162000d2e565b81146200103757600080fd5b50565b6000815190506200104b8162001020565b92915050565b6000602082840312156200106a57620010696200101b565b5b60006200107a848285016200103a565b91505092915050565b600060c0820190506200109a600083018962000d42565b620010a9602083018862000d42565b620010b8604083018762000d42565b620010c7606083018662000e2e565b8181036080830152620010db818562000e98565b905081810360a0830152620010f1818462000e98565b9050979650505050505050565b7f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460008201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60208201527f6b656e73526563697069656e7400000000000000000000000000000000000000604082015250565b600062001182604d8362000dab565b91506200118f82620010fe565b606082019050919050565b60006020820190508181036000830152620011b58162001173565b9050919050565b612ca580620011cc6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063959b8c3f116100a2578063d95b637111610071578063d95b6371146102e3578063dd62ed3e14610313578063fad8b32a14610343578063fc673c4f1461035f578063fe9d93031461037b57610116565b8063959b8c3f1461025d57806395d89b41146102795780639bd9bbc614610297578063a9059cbb146102b357610116565b806323b872dd116100e957806323b872dd146101a5578063313ce567146101d5578063556f0dc7146101f357806362ad1b831461021157806370a082311461022d57610116565b806306e485381461011b57806306fdde0314610139578063095ea7b31461015757806318160ddd14610187575b600080fd5b610123610397565b6040516101309190611ddd565b60405180910390f35b610141610425565b60405161014e9190611e8f565b60405180910390f35b610171600480360381019061016c9190611f1d565b6104b7565b60405161017e9190611f78565b60405180910390f35b61018f6104d3565b60405161019c9190611fa2565b60405180910390f35b6101bf60048036038101906101ba9190611fbd565b6104dd565b6040516101cc9190611f78565b60405180910390f35b6101dd6106ec565b6040516101ea919061202c565b60405180910390f35b6101fb6106f5565b6040516102089190611fa2565b60405180910390f35b61022b600480360381019061022691906120ac565b6106fe565b005b61024760048036038101906102429190612168565b6107e8565b6040516102549190611fa2565b60405180910390f35b61027760048036038101906102729190612168565b610831565b005b610281610a75565b60405161028e9190611e8f565b60405180910390f35b6102b160048036038101906102ac9190612195565b610b07565b005b6102cd60048036038101906102c89190611f1d565b610b70565b6040516102da9190611f78565b60405180910390f35b6102fd60048036038101906102f89190612209565b610c76565b60405161030a9190611f78565b60405180910390f35b61032d60048036038101906103289190612209565b610e27565b60405161033a9190611fa2565b60405180910390f35b61035d60048036038101906103589190612168565b610eae565b005b61037960048036038101906103749190612249565b6110f2565b005b610395600480360381019061039091906122f0565b6111d8565b005b6060600580548060200260200160405190810160405280929190818152602001828054801561041b57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116103d1575b5050505050905090565b6060600380546104349061237f565b80601f01602080910402602001604051908101604052809291908181526020018280546104609061237f565b80156104ad5780601f10610482576101008083540402835291602001916104ad565b820191906000526020600020905b81548152906001019060200180831161049057829003601f168201915b5050505050905090565b6000803390506104c881858561123d565b600191505092915050565b6000600254905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361054d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054490612422565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036105bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b3906124b4565b60405180910390fd5b60003390506105ed818686866040518060200160405280600081525060405180602001604052806000815250611397565b61061981868686604051806020016040528060008152506040518060200160405280600081525061150e565b6106b285826106ad86600960008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461172590919063ffffffff16565b61123d565b6106e08186868660405180602001604052806000815250604051806020016040528060008152506000611784565b60019150509392505050565b60006012905090565b60006012905090565b6107083388610c76565b610747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073e90612546565b60405180910390fd5b6107df3388888888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506001611966565b50505050505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361089f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610896906125d8565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561098257600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055610a18565b6001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f960405160405180910390a350565b606060048054610a849061237f565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab09061237f565b8015610afd5780601f10610ad257610100808354040283529160200191610afd565b820191906000526020600020905b815481529060010190602001808311610ae057829003601f168201915b5050505050905090565b610b6a3333868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050604051806020016040528060008152506001611966565b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610be0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd790612422565b60405180910390fd5b6000339050610c11818286866040518060200160405280600081525060405180602001604052806000815250611397565b610c3d81828686604051806020016040528060008152506040518060200160405280600081525061150e565b610c6b8182868660405180602001604052806000815250604051806020016040528060008152506000611784565b600191505092915050565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610d8e5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015610d8d5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b80610e1f5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b905092915050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f139061266a565b60405180910390fd5b600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611008576001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611095565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa160405160405180910390a350565b6110fc3387610c76565b61113b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113290612546565b60405180910390fd5b6111d033878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050611a78565b505050505050565b61123833338585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060405180602001604052806000815250611a78565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a3906126fc565b60405180910390fd5b80600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161138a9190611fa2565b60405180910390a3505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe89560001b6040518363ffffffff1660e01b8152600401611418929190612744565b602060405180830381865afa158015611435573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114599190612782565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611505578073ffffffffffffffffffffffffffffffffffffffff166375ab97828888888888886040518763ffffffff1660e01b81526004016114d296959493929190612804565b600060405180830381600087803b1580156114ec57600080fd5b505af1158015611500573d6000803e3d6000fd5b505050505b50505050505050565b61156083600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461172590919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115f583600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7c90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc826146779878686866040516116b093929190612873565b60405180910390a48373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516117159190611fa2565b60405180910390a3505050505050565b60008282111561176a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176190612904565b60405180910390fd5b600082846117789190612953565b90508091505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b60001b6040518363ffffffff1660e01b8152600401611805929190612744565b602060405180830381865afa158015611822573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118469190612782565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146118f5578073ffffffffffffffffffffffffffffffffffffffff166223de298989898989896040518763ffffffff1660e01b81526004016118be96959493929190612804565b600060405180830381600087803b1580156118d857600080fd5b505af11580156118ec573d6000803e3d6000fd5b5050505061195c565b811561195b5761191a8673ffffffffffffffffffffffffffffffffffffffff16611cda565b1561195a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195190612a1f565b60405180910390fd5b5b5b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc90612ab1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3b90612b1d565b60405180910390fd5b611a52878787878787611397565b611a6087878787878761150e565b611a6f87878787878787611784565b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ade90612baf565b60405180910390fd5b611af685856000868686611397565b611b0b8360025461172590919063ffffffff16565b600281905550611b6383600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461172590919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098858585604051611c0793929190612873565b60405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611c6d9190611fa2565b60405180910390a35050505050565b6000808284611c8b9190612bcf565b905083811015611cd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc790612c4f565b60405180910390fd5b8091505092915050565b600080823b905060008111915050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611d4482611d19565b9050919050565b611d5481611d39565b82525050565b6000611d668383611d4b565b60208301905092915050565b6000602082019050919050565b6000611d8a82611ced565b611d948185611cf8565b9350611d9f83611d09565b8060005b83811015611dd0578151611db78882611d5a565b9750611dc283611d72565b925050600181019050611da3565b5085935050505092915050565b60006020820190508181036000830152611df78184611d7f565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611e39578082015181840152602081019050611e1e565b60008484015250505050565b6000601f19601f8301169050919050565b6000611e6182611dff565b611e6b8185611e0a565b9350611e7b818560208601611e1b565b611e8481611e45565b840191505092915050565b60006020820190508181036000830152611ea98184611e56565b905092915050565b600080fd5b600080fd5b611ec481611d39565b8114611ecf57600080fd5b50565b600081359050611ee181611ebb565b92915050565b6000819050919050565b611efa81611ee7565b8114611f0557600080fd5b50565b600081359050611f1781611ef1565b92915050565b60008060408385031215611f3457611f33611eb1565b5b6000611f4285828601611ed2565b9250506020611f5385828601611f08565b9150509250929050565b60008115159050919050565b611f7281611f5d565b82525050565b6000602082019050611f8d6000830184611f69565b92915050565b611f9c81611ee7565b82525050565b6000602082019050611fb76000830184611f93565b92915050565b600080600060608486031215611fd657611fd5611eb1565b5b6000611fe486828701611ed2565b9350506020611ff586828701611ed2565b925050604061200686828701611f08565b9150509250925092565b600060ff82169050919050565b61202681612010565b82525050565b6000602082019050612041600083018461201d565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261206c5761206b612047565b5b8235905067ffffffffffffffff8111156120895761208861204c565b5b6020830191508360018202830111156120a5576120a4612051565b5b9250929050565b600080600080600080600060a0888a0312156120cb576120ca611eb1565b5b60006120d98a828b01611ed2565b97505060206120ea8a828b01611ed2565b96505060406120fb8a828b01611f08565b955050606088013567ffffffffffffffff81111561211c5761211b611eb6565b5b6121288a828b01612056565b9450945050608088013567ffffffffffffffff81111561214b5761214a611eb6565b5b6121578a828b01612056565b925092505092959891949750929550565b60006020828403121561217e5761217d611eb1565b5b600061218c84828501611ed2565b91505092915050565b600080600080606085870312156121af576121ae611eb1565b5b60006121bd87828801611ed2565b94505060206121ce87828801611f08565b935050604085013567ffffffffffffffff8111156121ef576121ee611eb6565b5b6121fb87828801612056565b925092505092959194509250565b600080604083850312156122205761221f611eb1565b5b600061222e85828601611ed2565b925050602061223f85828601611ed2565b9150509250929050565b6000806000806000806080878903121561226657612265611eb1565b5b600061227489828a01611ed2565b965050602061228589828a01611f08565b955050604087013567ffffffffffffffff8111156122a6576122a5611eb6565b5b6122b289828a01612056565b9450945050606087013567ffffffffffffffff8111156122d5576122d4611eb6565b5b6122e189828a01612056565b92509250509295509295509295565b60008060006040848603121561230957612308611eb1565b5b600061231786828701611f08565b935050602084013567ffffffffffffffff81111561233857612337611eb6565b5b61234486828701612056565b92509250509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061239757607f821691505b6020821081036123aa576123a9612350565b5b50919050565b7f4552433737373a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061240c602483611e0a565b9150612417826123b0565b604082019050919050565b6000602082019050818103600083015261243b816123ff565b9050919050565b7f4552433737373a207472616e736665722066726f6d20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061249e602683611e0a565b91506124a982612442565b604082019050919050565b600060208201905081810360008301526124cd81612491565b9050919050565b7f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60008201527f7220666f7220686f6c6465720000000000000000000000000000000000000000602082015250565b6000612530602c83611e0a565b915061253b826124d4565b604082019050919050565b6000602082019050818103600083015261255f81612523565b9050919050565b7f4552433737373a20617574686f72697a696e672073656c66206173206f70657260008201527f61746f7200000000000000000000000000000000000000000000000000000000602082015250565b60006125c2602483611e0a565b91506125cd82612566565b604082019050919050565b600060208201905081810360008301526125f1816125b5565b9050919050565b7f4552433737373a207265766f6b696e672073656c66206173206f70657261746f60008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612654602183611e0a565b915061265f826125f8565b604082019050919050565b6000602082019050818103600083015261268381612647565b9050919050565b7f4552433737373a20617070726f766520746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006126e6602383611e0a565b91506126f18261268a565b604082019050919050565b60006020820190508181036000830152612715816126d9565b9050919050565b61272581611d39565b82525050565b6000819050919050565b61273e8161272b565b82525050565b6000604082019050612759600083018561271c565b6127666020830184612735565b9392505050565b60008151905061277c81611ebb565b92915050565b60006020828403121561279857612797611eb1565b5b60006127a68482850161276d565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60006127d6826127af565b6127e081856127ba565b93506127f0818560208601611e1b565b6127f981611e45565b840191505092915050565b600060c082019050612819600083018961271c565b612826602083018861271c565b612833604083018761271c565b6128406060830186611f93565b818103608083015261285281856127cb565b905081810360a083015261286681846127cb565b9050979650505050505050565b60006060820190506128886000830186611f93565b818103602083015261289a81856127cb565b905081810360408301526128ae81846127cb565b9050949350505050565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f770000600082015250565b60006128ee601e83611e0a565b91506128f9826128b8565b602082019050919050565b6000602082019050818103600083015261291d816128e1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061295e82611ee7565b915061296983611ee7565b925082820390508181111561298157612980612924565b5b92915050565b7f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460008201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60208201527f6b656e73526563697069656e7400000000000000000000000000000000000000604082015250565b6000612a09604d83611e0a565b9150612a1482612987565b606082019050919050565b60006020820190508181036000830152612a38816129fc565b9050919050565b7f4552433737373a2073656e642066726f6d20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612a9b602283611e0a565b9150612aa682612a3f565b604082019050919050565b60006020820190508181036000830152612aca81612a8e565b9050919050565b7f4552433737373a2073656e6420746f20746865207a65726f2061646472657373600082015250565b6000612b07602083611e0a565b9150612b1282612ad1565b602082019050919050565b60006020820190508181036000830152612b3681612afa565b9050919050565b7f4552433737373a206275726e2066726f6d20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b99602283611e0a565b9150612ba482612b3d565b604082019050919050565b60006020820190508181036000830152612bc881612b8c565b9050919050565b6000612bda82611ee7565b9150612be583611ee7565b9250828201905080821115612bfd57612bfc612924565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612c39601b83611e0a565b9150612c4482612c03565b602082019050919050565b60006020820190508181036000830152612c6881612c2c565b905091905056fea2646970667358221220f7c5364b31377e3296927edc431542bf097bc682d7c365d58f0c9187ed1bb00f64736f6c63430008140033