UNPKG

openzeppelin-contracts

Version:

Secure Smart Contract library for Solidity

333 lines (332 loc) 47.9 kB
{ "contractName": "ERC1155", "abi": [ { "inputs": [ { "internalType": "string", "name": "uri_", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "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": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x60806040523480156200001157600080fd5b5060405162002a5138038062002a518339818101604052810190620000379190620002ad565b6200004f6301ffc9a760e01b6200009760201b60201c565b62000060816200016f60201b60201c565b6200007863d9b67a2660e01b6200009760201b60201c565b62000090630e89341c60e01b6200009760201b60201c565b5062000498565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141562000103576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000fa9062000334565b60405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b8060039080519060200190620001879291906200018b565b5050565b828054620001999062000404565b90600052602060002090601f016020900481019282620001bd576000855562000209565b82601f10620001d857805160ff191683800117855562000209565b8280016001018555821562000209579182015b8281111562000208578251825591602001919060010190620001eb565b5b5090506200021891906200021c565b5090565b5b80821115620002375760008160009055506001016200021d565b5090565b6000620002526200024c846200038a565b62000356565b9050828152602081018484840111156200026b57600080fd5b62000278848285620003ce565b509392505050565b600082601f8301126200029257600080fd5b8151620002a48482602086016200023b565b91505092915050565b600060208284031215620002c057600080fd5b600082015167ffffffffffffffff811115620002db57600080fd5b620002e98482850162000280565b91505092915050565b600062000301601c83620003bd565b91507f4552433136353a20696e76616c696420696e74657266616365206964000000006000830152602082019050919050565b600060208201905081810360008301526200034f81620002f2565b9050919050565b6000604051905081810181811067ffffffffffffffff8211171562000380576200037f62000469565b5b8060405250919050565b600067ffffffffffffffff821115620003a857620003a762000469565b5b601f19601f8301169050602081019050919050565b600082825260208201905092915050565b60005b83811015620003ee578082015181840152602081019050620003d1565b83811115620003fe576000848401525b50505050565b600060028204905060018216806200041d57607f821691505b602082108114156200043457620004336200043a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6125a980620004a86000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f414610138578063a22cb46514610168578063e985e9c514610184578063f242432a146101b457610087565b8062fdd58e1461008c57806301ffc9a7146100bc5780630e89341c146100ec5780632eb2c2d61461011c575b600080fd5b6100a660048036038101906100a191906117b2565b6101d0565b6040516100b3919061208d565b60405180910390f35b6100d660048036038101906100d1919061185a565b61029a565b6040516100e39190611f10565b60405180910390f35b610106600480360381019061010191906118ac565b610301565b6040516101139190611f2b565b60405180910390f35b61013660048036038101906101319190611628565b610395565b005b610152600480360381019061014d91906117ee565b61078e565b60405161015f9190611eb7565b60405180910390f35b610182600480360381019061017d9190611776565b610a36565b005b61019e600480360381019061019991906115ec565b610bb7565b6040516101ab9190611f10565b60405180910390f35b6101ce60048036038101906101c991906116e7565b610c4b565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610241576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161023890611f8d565b60405180910390fd5b6001600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b6060600380546103109061233b565b80601f016020809104026020016040519081016040528092919081815260200182805461033c9061233b565b80156103895780601f1061035e57610100808354040283529160200191610389565b820191906000526020600020905b81548152906001019060200180831161036c57829003601f168201915b50505050509050919050565b81518351146103d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d09061206d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610449576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044090611fed565b60405180910390fd5b610451610f66565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610497575061049685610491610f66565b610bb7565b5b6104d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104cd9061200d565b60405180910390fd5b60006104e0610f66565b90506104f0818787878787610f6e565b60005b84518110156106f9576000858281518110610537577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050600085838151811061057c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050806001600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105e29190612251565b6001600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806001600084815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461069291906121fb565b6001600084815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050806106f29061236d565b90506104f3565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610770929190611ed9565b60405180910390a4610786818787878787610f76565b505050505050565b606081518351146107d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cb9061204d565b60405180910390fd5b6000835167ffffffffffffffff811115610817577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156108455781602001602082028036833780820191505090505b50905060005b8451811015610a2b57600073ffffffffffffffffffffffffffffffffffffffff168582815181106108a5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415610904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fb90611fad565b60405180910390fd5b60016000858381518110610941577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015181526020019081526020016000206000868381518110610992577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054828281518110610a0e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080610a249061236d565b905061084b565b508091505092915050565b8173ffffffffffffffffffffffffffffffffffffffff16610a55610f66565b73ffffffffffffffffffffffffffffffffffffffff161415610aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa39061202d565b60405180910390fd5b8060026000610ab9610f66565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16610b66610f66565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610bab9190611f10565b60405180910390a35050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb290611fed565b60405180910390fd5b610cc3610f66565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610d095750610d0885610d03610f66565b610bb7565b5b610d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3f90611fcd565b60405180910390fd5b6000610d52610f66565b9050610d72818787610d6388611146565b610d6c88611146565b87610f6e565b826001600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dce9190612251565b6001600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550826001600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e7e91906121fb565b6001600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051610f489291906120a8565b60405180910390a4610f5e81878787878761120c565b505050505050565b600033905090565b505050505050565b610f958473ffffffffffffffffffffffffffffffffffffffff166113dc565b1561113e578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401610fdb959493929190611df5565b602060405180830381600087803b158015610ff557600080fd5b505af192505050801561102657506040513d601f19601f820116820180604052508101906110239190611883565b60015b6110b557611032612461565b8061103d575061107a565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110719190611f2b565b60405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac90611f4d565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461113c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113390611f6d565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff81111561118b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156111b95781602001602082028036833780820191505090505b50905082816000815181106111f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080915050919050565b61122b8473ffffffffffffffffffffffffffffffffffffffff166113dc565b156113d4578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401611271959493929190611e5d565b602060405180830381600087803b15801561128b57600080fd5b505af19250505080156112bc57506040513d601f19601f820116820180604052508101906112b99190611883565b60015b61134b576112c8612461565b806112d35750611310565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113079190611f2b565b60405180910390fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134290611f4d565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146113d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c990611f6d565b60405180910390fd5b505b505050505050565b600080823b905060008111915050919050565b60006114026113fd84612102565b6120d1565b9050808382526020820190508285602086028201111561142157600080fd5b60005b8581101561145157816114378882611505565b845260208401935060208301925050600181019050611424565b5050509392505050565b600061146e6114698461212e565b6120d1565b9050808382526020820190508285602086028201111561148d57600080fd5b60005b858110156114bd57816114a388826115d7565b845260208401935060208301925050600181019050611490565b5050509392505050565b60006114da6114d58461215a565b6120d1565b9050828152602081018484840111156114f257600080fd5b6114fd8482856122f9565b509392505050565b60008135905061151481612517565b92915050565b600082601f83011261152b57600080fd5b813561153b8482602086016113ef565b91505092915050565b600082601f83011261155557600080fd5b813561156584826020860161145b565b91505092915050565b60008135905061157d8161252e565b92915050565b60008135905061159281612545565b92915050565b6000815190506115a781612545565b92915050565b600082601f8301126115be57600080fd5b81356115ce8482602086016114c7565b91505092915050565b6000813590506115e68161255c565b92915050565b600080604083850312156115ff57600080fd5b600061160d85828601611505565b925050602061161e85828601611505565b9150509250929050565b600080600080600060a0868803121561164057600080fd5b600061164e88828901611505565b955050602061165f88828901611505565b945050604086013567ffffffffffffffff81111561167c57600080fd5b61168888828901611544565b935050606086013567ffffffffffffffff8111156116a557600080fd5b6116b188828901611544565b925050608086013567ffffffffffffffff8111156116ce57600080fd5b6116da888289016115ad565b9150509295509295909350565b600080600080600060a086880312156116ff57600080fd5b600061170d88828901611505565b955050602061171e88828901611505565b945050604061172f888289016115d7565b9350506060611740888289016115d7565b925050608086013567ffffffffffffffff81111561175d57600080fd5b611769888289016115ad565b9150509295509295909350565b6000806040838503121561178957600080fd5b600061179785828601611505565b92505060206117a88582860161156e565b9150509250929050565b600080604083850312156117c557600080fd5b60006117d385828601611505565b92505060206117e4858286016115d7565b9150509250929050565b6000806040838503121561180157600080fd5b600083013567ffffffffffffffff81111561181b57600080fd5b6118278582860161151a565b925050602083013567ffffffffffffffff81111561184457600080fd5b61185085828601611544565b9150509250929050565b60006020828403121561186c57600080fd5b600061187a84828501611583565b91505092915050565b60006020828403121561189557600080fd5b60006118a384828501611598565b91505092915050565b6000602082840312156118be57600080fd5b60006118cc848285016115d7565b91505092915050565b60006118e18383611dd7565b60208301905092915050565b6118f681612285565b82525050565b60006119078261219a565b61191181856121c8565b935061191c8361218a565b8060005b8381101561194d57815161193488826118d5565b975061193f836121bb565b925050600181019050611920565b5085935050505092915050565b61196381612297565b82525050565b6000611974826121a5565b61197e81856121d9565b935061198e818560208601612308565b61199781612443565b840191505092915050565b60006119ad826121b0565b6119b781856121ea565b93506119c7818560208601612308565b6119d081612443565b840191505092915050565b60006119e86034836121ea565b91507f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008301527f526563656976657220696d706c656d656e7465720000000000000000000000006020830152604082019050919050565b6000611a4e6028836121ea565b91507f455243313135353a204552433131353552656365697665722072656a6563746560008301527f6420746f6b656e730000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611ab4602b836121ea565b91507f455243313135353a2062616c616e636520717565727920666f7220746865207a60008301527f65726f20616464726573730000000000000000000000000000000000000000006020830152604082019050919050565b6000611b1a6031836121ea565b91507f455243313135353a2062617463682062616c616e636520717565727920666f7260008301527f20746865207a65726f20616464726573730000000000000000000000000000006020830152604082019050919050565b6000611b806029836121ea565b91507f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008301527f20617070726f76656400000000000000000000000000000000000000000000006020830152604082019050919050565b6000611be66025836121ea565b91507f455243313135353a207472616e7366657220746f20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611c4c6032836121ea565b91507f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008301527f6f776e6572206e6f7220617070726f76656400000000000000000000000000006020830152604082019050919050565b6000611cb26029836121ea565b91507f455243313135353a2073657474696e6720617070726f76616c2073746174757360008301527f20666f722073656c6600000000000000000000000000000000000000000000006020830152604082019050919050565b6000611d186029836121ea565b91507f455243313135353a206163636f756e747320616e6420696473206c656e67746860008301527f206d69736d6174636800000000000000000000000000000000000000000000006020830152604082019050919050565b6000611d7e6028836121ea565b91507f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008301527f6d69736d617463680000000000000000000000000000000000000000000000006020830152604082019050919050565b611de0816122ef565b82525050565b611def816122ef565b82525050565b600060a082019050611e0a60008301886118ed565b611e1760208301876118ed565b8181036040830152611e2981866118fc565b90508181036060830152611e3d81856118fc565b90508181036080830152611e518184611969565b90509695505050505050565b600060a082019050611e7260008301886118ed565b611e7f60208301876118ed565b611e8c6040830186611de6565b611e996060830185611de6565b8181036080830152611eab8184611969565b90509695505050505050565b60006020820190508181036000830152611ed181846118fc565b905092915050565b60006040820190508181036000830152611ef381856118fc565b90508181036020830152611f0781846118fc565b90509392505050565b6000602082019050611f25600083018461195a565b92915050565b60006020820190508181036000830152611f4581846119a2565b905092915050565b60006020820190508181036000830152611f66816119db565b9050919050565b60006020820190508181036000830152611f8681611a41565b9050919050565b60006020820190508181036000830152611fa681611aa7565b9050919050565b60006020820190508181036000830152611fc681611b0d565b9050919050565b60006020820190508181036000830152611fe681611b73565b9050919050565b6000602082019050818103600083015261200681611bd9565b9050919050565b6000602082019050818103600083015261202681611c3f565b9050919050565b6000602082019050818103600083015261204681611ca5565b9050919050565b6000602082019050818103600083015261206681611d0b565b9050919050565b6000602082019050818103600083015261208681611d71565b9050919050565b60006020820190506120a26000830184611de6565b92915050565b60006040820190506120bd6000830185611de6565b6120ca6020830184611de6565b9392505050565b6000604051905081810181811067ffffffffffffffff821117156120f8576120f7612414565b5b8060405250919050565b600067ffffffffffffffff82111561211d5761211c612414565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561214957612148612414565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561217557612174612414565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612206826122ef565b9150612211836122ef565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612246576122456123b6565b5b828201905092915050565b600061225c826122ef565b9150612267836122ef565b92508282101561227a576122796123b6565b5b828203905092915050565b6000612290826122cf565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561232657808201518184015260208101905061230b565b83811115612335576000848401525b50505050565b6000600282049050600182168061235357607f821691505b60208210811415612367576123666123e5565b5b50919050565b6000612378826122ef565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156123ab576123aa6123b6565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b600060443d101561247157612514565b60046000803e612482600051612454565b6308c379a081146124935750612514565b60405160043d036004823e80513d602482011167ffffffffffffffff821117156124bf57505050612514565b808201805167ffffffffffffffff8111156124de575050505050612514565b8060208301013d85018111156124f957505050505050612514565b61250282612443565b60208401016040528296505050505050505b90565b61252081612285565b811461252b57600080fd5b50565b61253781612297565b811461254257600080fd5b50565b61254e816122a3565b811461255957600080fd5b50565b612565816122ef565b811461257057600080fd5b5056fea264697066735822122067096829e515b6ce3265f24a840b48858f0ec6d8f551464aded6cb672565f10764736f6c63430008000033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f414610138578063a22cb46514610168578063e985e9c514610184578063f242432a146101b457610087565b8062fdd58e1461008c57806301ffc9a7146100bc5780630e89341c146100ec5780632eb2c2d61461011c575b600080fd5b6100a660048036038101906100a191906117b2565b6101d0565b6040516100b3919061208d565b60405180910390f35b6100d660048036038101906100d1919061185a565b61029a565b6040516100e39190611f10565b60405180910390f35b610106600480360381019061010191906118ac565b610301565b6040516101139190611f2b565b60405180910390f35b61013660048036038101906101319190611628565b610395565b005b610152600480360381019061014d91906117ee565b61078e565b60405161015f9190611eb7565b60405180910390f35b610182600480360381019061017d9190611776565b610a36565b005b61019e600480360381019061019991906115ec565b610bb7565b6040516101ab9190611f10565b60405180910390f35b6101ce60048036038101906101c991906116e7565b610c4b565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610241576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161023890611f8d565b60405180910390fd5b6001600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b6060600380546103109061233b565b80601f016020809104026020016040519081016040528092919081815260200182805461033c9061233b565b80156103895780601f1061035e57610100808354040283529160200191610389565b820191906000526020600020905b81548152906001019060200180831161036c57829003601f168201915b50505050509050919050565b81518351146103d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d09061206d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610449576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044090611fed565b60405180910390fd5b610451610f66565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610497575061049685610491610f66565b610bb7565b5b6104d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104cd9061200d565b60405180910390fd5b60006104e0610f66565b90506104f0818787878787610f6e565b60005b84518110156106f9576000858281518110610537577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050600085838151811061057c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101519050806001600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105e29190612251565b6001600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806001600084815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461069291906121fb565b6001600084815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050806106f29061236d565b90506104f3565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610770929190611ed9565b60405180910390a4610786818787878787610f76565b505050505050565b606081518351146107d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107cb9061204d565b60405180910390fd5b6000835167ffffffffffffffff811115610817577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156108455781602001602082028036833780820191505090505b50905060005b8451811015610a2b57600073ffffffffffffffffffffffffffffffffffffffff168582815181106108a5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415610904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fb90611fad565b60405180910390fd5b60016000858381518110610941577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015181526020019081526020016000206000868381518110610992577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054828281518110610a0e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080610a249061236d565b905061084b565b508091505092915050565b8173ffffffffffffffffffffffffffffffffffffffff16610a55610f66565b73ffffffffffffffffffffffffffffffffffffffff161415610aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa39061202d565b60405180910390fd5b8060026000610ab9610f66565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16610b66610f66565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610bab9190611f10565b60405180910390a35050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb290611fed565b60405180910390fd5b610cc3610f66565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610d095750610d0885610d03610f66565b610bb7565b5b610d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3f90611fcd565b60405180910390fd5b6000610d52610f66565b9050610d72818787610d6388611146565b610d6c88611146565b87610f6e565b826001600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dce9190612251565b6001600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550826001600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e7e91906121fb565b6001600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628787604051610f489291906120a8565b60405180910390a4610f5e81878787878761120c565b505050505050565b600033905090565b505050505050565b610f958473ffffffffffffffffffffffffffffffffffffffff166113dc565b1561113e578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401610fdb959493929190611df5565b602060405180830381600087803b158015610ff557600080fd5b505af192505050801561102657506040513d601f19601f820116820180604052508101906110239190611883565b60015b6110b557611032612461565b8061103d575061107a565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110719190611f2b565b60405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac90611f4d565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461113c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113390611f6d565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff81111561118b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156111b95781602001602082028036833780820191505090505b50905082816000815181106111f7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080915050919050565b61122b8473ffffffffffffffffffffffffffffffffffffffff166113dc565b156113d4578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401611271959493929190611e5d565b602060405180830381600087803b15801561128b57600080fd5b505af19250505080156112bc57506040513d601f19601f820116820180604052508101906112b99190611883565b60015b61134b576112c8612461565b806112d35750611310565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113079190611f2b565b60405180910390fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134290611f4d565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146113d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c990611f6d565b60405180910390fd5b505b505050505050565b600080823b905060008111915050919050565b60006114026113fd84612102565b6120d1565b9050808382526020820190508285602086028201111561142157600080fd5b60005b8581101561145157816114378882611505565b845260208401935060208301925050600181019050611424565b5050509392505050565b600061146e6114698461212e565b6120d1565b9050808382526020820190508285602086028201111561148d57600080fd5b60005b858110156114bd57816114a388826115d7565b845260208401935060208301925050600181019050611490565b5050509392505050565b60006114da6114d58461215a565b6120d1565b9050828152602081018484840111156114f257600080fd5b6114fd8482856122f9565b509392505050565b60008135905061151481612517565b92915050565b600082601f83011261152b57600080fd5b813561153b8482602086016113ef565b91505092915050565b600082601f83011261155557600080fd5b813561156584826020860161145b565b91505092915050565b60008135905061157d8161252e565b92915050565b60008135905061159281612545565b92915050565b6000815190506115a781612545565b92915050565b600082601f8301126115be57600080fd5b81356115ce8482602086016114c7565b91505092915050565b6000813590506115e68161255c565b92915050565b600080604083850312156115ff57600080fd5b600061160d85828601611505565b925050602061161e85828601611505565b9150509250929050565b600080600080600060a0868803121561164057600080fd5b600061164e88828901611505565b955050602061165f88828901611505565b945050604086013567ffffffffffffffff81111561167c57600080fd5b61168888828901611544565b935050606086013567ffffffffffffffff8111156116a557600080fd5b6116b188828901611544565b925050608086013567ffffffffffffffff8111156116ce57600080fd5b6116da888289016115ad565b9150509295509295909350565b600080600080600060a086880312156116ff57600080fd5b600061170d88828901611505565b955050602061171e88828901611505565b945050604061172f888289016115d7565b9350506060611740888289016115d7565b925050608086013567ffffffffffffffff81111561175d57600080fd5b611769888289016115ad565b9150509295509295909350565b6000806040838503121561178957600080fd5b600061179785828601611505565b92505060206117a88582860161156e565b9150509250929050565b600080604083850312156117c557600080fd5b60006117d385828601611505565b92505060206117e4858286016115d7565b9150509250929050565b6000806040838503121561180157600080fd5b600083013567ffffffffffffffff81111561181b57600080fd5b6118278582860161151a565b925050602083013567ffffffffffffffff81111561184457600080fd5b61185085828601611544565b9150509250929050565b60006020828403121561186c57600080fd5b600061187a84828501611583565b91505092915050565b60006020828403121561189557600080fd5b60006118a384828501611598565b91505092915050565b6000602082840312156118be57600080fd5b60006118cc848285016115d7565b91505092915050565b60006118e18383611dd7565b60208301905092915050565b6118f681612285565b82525050565b60006119078261219a565b61191181856121c8565b935061191c8361218a565b8060005b8381101561194d57815161193488826118d5565b975061193f836121bb565b925050600181019050611920565b5085935050505092915050565b61196381612297565b82525050565b6000611974826121a5565b61197e81856121d9565b935061198e818560208601612308565b61199781612443565b840191505092915050565b60006119ad826121b0565b6119b781856121ea565b93506119c7818560208601612308565b6119d081612443565b840191505092915050565b60006119e86034836121ea565b91507f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008301527f526563656976657220696d706c656d656e7465720000000000000000000000006020830152604082019050919050565b6000611a4e6028836121ea565b91507f455243313135353a204552433131353552656365697665722072656a6563746560008301527f6420746f6b656e730000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611ab4602b836121ea565b91507f455243313135353a2062616c616e636520717565727920666f7220746865207a60008301527f65726f20616464726573730000000000000000000000000000000000000000006020830152604082019050919050565b6000611b1a6031836121ea565b91507f455243313135353a2062617463682062616c616e636520717565727920666f7260008301527f20746865207a65726f20616464726573730000000000000000000000000000006020830152604082019050919050565b6000611b806029836121ea565b91507f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008301527f20617070726f76656400000000000000000000000000000000000000000000006020830152604082019050919050565b6000611be66025836121ea565b91507f455243313135353a207472616e7366657220746f20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611c4c6032836121ea565b91507f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008301527f6f776e6572206e6f7220617070726f76656400000000000000000000000000006020830152604082019050919050565b6000611cb26029836121ea565b91507f455243313135353a2073657474696e6720617070726f76616c2073746174757360008301527f20666f722073656c6600000000000000000000000000000000000000000000006020830152604082019050919050565b6000611d186029836121ea565b91507f455243313135353a206163636f756e747320616e6420696473206c656e67746860008301527f206d69736d6174636800000000000000000000000000000000000000000000006020830152604082019050919050565b6000611d7e6028836121ea565b91507f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008301527f6d69736d617463680000000000000000000000000000000000000000000000006020830152604082019050919050565b611de0816122ef565b82525050565b611def816122ef565b82525050565b600060a082019050611e0a60008301886118ed565b611e1760208301876118ed565b8181036040830152611e2981866118fc565b90508181036060830152611e3d81856118fc565b90508181036080830152611e518184611969565b90509695505050505050565b600060a082019050611e7260008301886118ed565b611e7f60208301876118ed565b611e8c6040830186611de6565b611e996060830185611de6565b8181036080830152611eab8184611969565b90509695505050505050565b60006020820190508181036000830152611ed181846118fc565b905092915050565b60006040820190508181036000830152611ef381856118fc565b90508181036020830152611f0781846118fc565b90509392505050565b6000602082019050611f25600083018461195a565b92915050565b60006020820190508181036000830152611f4581846119a2565b905092915050565b60006020820190508181036000830152611f66816119db565b9050919050565b60006020820190508181036000830152611f8681611a41565b9050919050565b60006020820190508181036000830152611fa681611aa7565b9050919050565b60006020820190508181036000830152611fc681611b0d565b9050919050565b60006020820190508181036000830152611fe681611b73565b9050919050565b6000602082019050818103600083015261200681611bd9565b9050919050565b6000602082019050818103600083015261202681611c3f565b9050919050565b6000602082019050818103600083015261204681611ca5565b9050919050565b6000602082019050818103600083015261206681611d0b565b9050919050565b6000602082019050818103600083015261208681611d71565b9050919050565b60006020820190506120a26000830184611de6565b92915050565b60006040820190506120bd6000830185611de6565b6120ca6020830184611de6565b9392505050565b6000604051905081810181811067ffffffffffffffff821117156120f8576120f7612414565b5b8060405250919050565b600067ffffffffffffffff82111561211d5761211c612414565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561214957612148612414565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561217557612174612414565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612206826122ef565b9150612211836122ef565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612246576122456123b6565b5b828201905092915050565b600061225c826122ef565b9150612267836122ef565b92508282101561227a576122796123b6565b5b828203905092915050565b6000612290826122cf565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561232657808201518184015260208101905061230b565b83811115612335576000848401525b50505050565b6000600282049050600182168061235357607f821691505b60208210811415612367576123666123e5565b5b50919050565b6000612378826122ef565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156123ab576123aa6123b6565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b600060443d101561247157612514565b60046000803e612482600051612454565b6308c379a081146124935750612514565b60405160043d036004823e80513d602482011167ffffffffffffffff821117156124bf57505050612514565b808201805167ffffffffffffffff8111156124de575050505050612514565b8060208301013d85018111156124f957505050505050612514565b61250282612443565b60208401016040528296505050505050505b90565b61252081612285565b811461252b57600080fd5b50565b61253781612297565b811461254257600080fd5b50565b61254e816122a3565b811461255957600080fd5b50565b612565816122ef565b811461257057600080fd5b5056fea264697066735822122067096829e515b6ce3265f24a840b48858f0ec6d8f551464aded6cb672565f10764736f6c63430008000033", "linkReferences": {}, "deployedLinkReferences": {} }