[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC1155InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC1155InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "idsLength", "type": "uint256" }, { "internalType": "uint256", "name": "valuesLength", "type": "uint256" } ], "name": "ERC1155InvalidArrayLength", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC1155InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC1155InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC1155InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC1155MissingApprovalForAll", "type": "error" }, { "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": "string", "name": "sku", "type": "string" }, { "internalType": "uint256", "name": "quantity", "type": "uint256" } ], "name": "buyListing", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "string", "name": "sku", "type": "string" }, { "components": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "currency", "type": "address" } ], "internalType": "struct WorldStore.Price", "name": "price", "type": "tuple" }, { "internalType": "uint256", "name": "stock", "type": "uint256" }, { "internalType": "string", "name": "tokenURI", "type": "string" } ], "internalType": "struct WorldStore.CreateListing", "name": "newListing", "type": "tuple" } ], "name": "createListing", "outputs": [ { "components": [ { "internalType": "string", "name": "sku", "type": "string" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "components": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "currency", "type": "address" } ], "internalType": "struct WorldStore.Price", "name": "price", "type": "tuple" }, { "internalType": "uint256", "name": "stock", "type": "uint256" } ], "internalType": "struct WorldStore.Listing", "name": "", "type": "tuple" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "string", "name": "sku", "type": "string" }, { "components": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "currency", "type": "address" } ], "internalType": "struct WorldStore.Price", "name": "price", "type": "tuple" }, { "internalType": "uint256", "name": "stock", "type": "uint256" }, { "internalType": "string", "name": "tokenURI", "type": "string" } ], "internalType": "struct WorldStore.CreateListing[]", "name": "newListings", "type": "tuple[]" } ], "name": "createListingBatch", "outputs": [ { "components": [ { "internalType": "string", "name": "sku", "type": "string" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "components": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "currency", "type": "address" } ], "internalType": "struct WorldStore.Price", "name": "price", "type": "tuple" }, { "internalType": "uint256", "name": "stock", "type": "uint256" } ], "internalType": "struct WorldStore.Listing[]", "name": "", "type": "tuple[]" } ], "stateMutability": "nonpayable", "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": "string", "name": "", "type": "string" } ], "name": "listings", "outputs": [ { "internalType": "string", "name": "sku", "type": "string" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "components": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "currency", "type": "address" } ], "internalType": "struct WorldStore.Price", "name": "price", "type": "tuple" }, { "internalType": "uint256", "name": "stock", "type": "uint256" } ], "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": "values", "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": "value", "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": "string", "name": "sku", "type": "string" }, { "components": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "currency", "type": "address" } ], "internalType": "struct WorldStore.Price", "name": "price", "type": "tuple" } ], "name": "updateListingPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "sku", "type": "string" }, { "internalType": "uint256", "name": "stock", "type": "uint256" } ], "name": "updateListingStock", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "sku", "type": "string" }, { "internalType": "string", "name": "tokenURI", "type": "string" } ], "name": "updateListingTokenURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ]
608060405260405180602001604052805f81525060039081610021919061029f565b5034801561002d575f80fd5b5060405180602001604052805f81525061004c8161005260201b60201c565b5061036e565b8060029081610061919061029f565b5050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806100e057607f821691505b6020821081036100f3576100f261009c565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026101557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261011a565b61015f868361011a565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6101a361019e61019984610177565b610180565b610177565b9050919050565b5f819050919050565b6101bc83610189565b6101d06101c8826101aa565b848454610126565b825550505050565b5f90565b6101e46101d8565b6101ef8184846101b3565b505050565b5b81811015610212576102075f826101dc565b6001810190506101f5565b5050565b601f82111561025757610228816100f9565b6102318461010b565b81016020851015610240578190505b61025461024c8561010b565b8301826101f4565b50505b505050565b5f82821c905092915050565b5f6102775f198460080261025c565b1980831691505092915050565b5f61028f8383610268565b9150826002028217905092915050565b6102a882610065565b67ffffffffffffffff8111156102c1576102c061006f565b5b6102cb82546100c9565b6102d6828285610216565b5f60209050601f831160018114610307575f84156102f5578287015190505b6102ff8582610284565b865550610366565b601f198416610315866100f9565b5f5b8281101561033c57848901518255600182019150602085019450602081019050610317565b868310156103595784890151610355601f891682610268565b8355505b6001600288020188555050505b505050505050565b613a148061037b5f395ff3fe608060405234801561000f575f80fd5b50600436106100f2575f3560e01c806363ea479e116100955780638687ac14116100645780638687ac14146102b9578063a22cb465146102d5578063e985e9c5146102f1578063f242432a14610321576100f2565b806363ea479e14610232578063689b6c311461024e57806377dec6c31461026a578063820ed39b1461029d576100f2565b80632eb2c2d6116100d15780632eb2c2d6146101865780633d09885e146101a25780634e1273f4146101d25780635f9998aa14610202576100f2565b8062fdd58e146100f657806301ffc9a7146101265780630e89341c14610156575b5f80fd5b610110600480360381019061010b9190611fc5565b61033d565b60405161011d9190612012565b60405180910390f35b610140600480360381019061013b9190612080565b610392565b60405161014d91906120c5565b60405180910390f35b610170600480360381019061016b91906120de565b610473565b60405161017d9190612179565b60405180910390f35b6101a0600480360381019061019b9190612389565b610552565b005b6101bc60048036038101906101b791906124ad565b6105f9565b6040516101c991906126a6565b60405180910390f35b6101ec60048036038101906101e79190612786565b6106c5565b6040516101f991906128a4565b60405180910390f35b61021c600480360381019061021791906128e6565b6107cc565b604051610229919061298d565b60405180910390f35b61024c60048036038101906102479190612a02565b6107e4565b005b61026860048036038101906102639190612a02565b610811565b005b610284600480360381019061027f9190612afd565b610ad4565b6040516102949493929190612b71565b60405180910390f35b6102b760048036038101906102b29190612bd9565b610c06565b005b6102d360048036038101906102ce9190612c36565b610c3e565b005b6102ef60048036038101906102ea9190612cde565b610cb4565b005b61030b60048036038101906103069190612d1c565b610cca565b60405161031891906120c5565b60405180910390f35b61033b60048036038101906103369190612d5a565b610d58565b005b5f805f8381526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f7fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061045c57507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061046c575061046b82610dff565b5b9050919050565b60605f60045f8481526020019081526020015f20805461049290612e1a565b80601f01602080910402602001604051908101604052809291908181526020018280546104be90612e1a565b80156105095780601f106104e057610100808354040283529160200191610509565b820191905f5260205f20905b8154815290600101906020018083116104ec57829003601f168201915b505050505090505f8151116105265761052183610e68565b61054a565b60038160405160200161053a929190612f16565b6040516020818303038152906040525b915050919050565b5f61055b610efa565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156105a0575061059e8682610cca565b155b156105e45780866040517fe237d9220000000000000000000000000000000000000000000000000000000081526004016105db929190612f48565b60405180910390fd5b6105f18686868686610f01565b505050505050565b60605f8383905067ffffffffffffffff8111156106195761061861219d565b5b60405190808252806020026020018201604052801561065257816020015b61063f611ecd565b8152602001906001900390816106375790505b5090505f5b848490508110156106ba5761068f85858381811061067857610677612f6f565b5b905060200281019061068a9190612fa8565b610ff5565b8282815181106106a2576106a1612f6f565b5b60200260200101819052508080600101915050610657565b508091505092915050565b6060815183511461071157815183516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401610708929190612fcf565b60405180910390fd5b5f835167ffffffffffffffff81111561072d5761072c61219d565b5b60405190808252806020026020018201604052801561075b5781602001602082028036833780820191505090505b5090505f5b84518110156107c15761079761077f828761135390919063ffffffff16565b610792838761136690919063ffffffff16565b61033d565b8282815181106107aa576107a9612f6f565b5b602002602001018181525050806001019050610760565b508091505092915050565b6107d4611ecd565b6107dd82610ff5565b9050919050565b80600584846040516107f792919061301a565b908152602001604051809103902060040181905550505050565b806005848460405161082492919061301a565b9081526020016040518091039020600401541015610877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086e9061307c565b60405180910390fd5b5f6005848460405161088a92919061301a565b90815260200160405180910390206002016001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600585856040516108d392919061301a565b90815260200160405180910390206002015f01546108f191906130c7565b8173ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161092a9190613108565b602060405180830381865afa158015610945573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109699190613135565b10156109aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a1906131aa565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166323b872dd333085600589896040516109db92919061301a565b90815260200160405180910390206002015f01546109f991906130c7565b6040518463ffffffff1660e01b8152600401610a17939291906131c8565b6020604051808303815f875af1158015610a33573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a579190613211565b508160058585604051610a6b92919061301a565b90815260200160405180910390206004015f828254610a8a919061323c565b92505081905550610ace3360058686604051610aa792919061301a565b9081526020016040518091039020600101548460405180602001604052805f815250611379565b50505050565b6005818051602081018201805184825260208301602085012081835280955050505050505f91509050805f018054610b0b90612e1a565b80601f0160208091040260200160405190810160405280929190818152602001828054610b3790612e1a565b8015610b825780601f10610b5957610100808354040283529160200191610b82565b820191905f5260205f20905b815481529060010190602001808311610b6557829003601f168201915b505050505090806001015490806002016040518060400160405290815f8201548152602001600182015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050908060040154905084565b8060058484604051610c1992919061301a565b90815260200160405180910390206002018181610c369190613423565b905050505050565b610cae60058585604051610c5392919061301a565b90815260200160405180910390206001015483838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505061140e565b50505050565b610cc6610cbf610efa565b8383611471565b5050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f610d61610efa565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015610da65750610da48682610cca565b155b15610dea5780866040517fe237d922000000000000000000000000000000000000000000000000000000008152600401610de1929190612f48565b60405180910390fd5b610df786868686866115da565b505050505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b606060028054610e7790612e1a565b80601f0160208091040260200160405190810160405280929190818152602001828054610ea390612e1a565b8015610eee5780601f10610ec557610100808354040283529160200191610eee565b820191905f5260205f20905b815481529060010190602001808311610ed157829003601f168201915b50505050509050919050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610f71575f6040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401610f689190613108565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610fe1575f6040517f01a83514000000000000000000000000000000000000000000000000000000008152600401610fd89190613108565b60405180910390fd5b610fee85858585856116e0565b5050505050565b610ffd611ecd565b5f82806080019061100e9190613431565b905011611050576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611047906134dd565b60405180910390fd5b5f61106883805f01906110639190613431565b61178c565b9050604051806080016040528084805f01906110849190613431565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f820116905080830192505050505050508152602001828152602001846020018036038101906110e5919061354c565b81526020018460600135815250600584805f01906111039190613431565b60405161111192919061301a565b90815260200160405180910390205f820151815f01908161113291906136cf565b50602082015181600101556040820151816002015f820151815f01556020820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050606082015181600401559050506111fe818480608001906111b79190613431565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505061140e565b600583805f019061120f9190613431565b60405161121d92919061301a565b90815260200160405180910390206040518060800160405290815f8201805461124590612e1a565b80601f016020809104026020016040519081016040528092919081815260200182805461127190612e1a565b80156112bc5780601f10611293576101008083540402835291602001916112bc565b820191905f5260205f20905b81548152906001019060200180831161129f57829003601f168201915b5050505050815260200160018201548152602001600282016040518060400160405290815f8201548152602001600182015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250508152602001600482015481525050915050919050565b5f60208202602084010151905092915050565b5f60208202602084010151905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036113e9575f6040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016113e09190613108565b60405180910390fd5b5f806113f585856117af565b915091506114065f878484876116e0565b505050505050565b8060045f8481526020019081526020015f20908161142c91906136cf565b50817f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b61145884610473565b6040516114659190612179565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114e1575f6040517fced3e1000000000000000000000000000000000000000000000000000000000081526004016114d89190613108565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516115cd91906120c5565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361164a575f6040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016116419190613108565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036116ba575f6040517f01a835140000000000000000000000000000000000000000000000000000000081526004016116b19190613108565b60405180910390fd5b5f806116c685856117af565b915091506116d787878484876116e0565b50505050505050565b6116ec858585856117df565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611785575f611728610efa565b90506001845103611774575f6117475f8661136690919063ffffffff16565b90505f61175d5f8661136690919063ffffffff16565b905061176d838989858589611b6f565b5050611783565b611782818787878787611d1e565b5b505b5050505050565b5f828260405161179d9291906137cc565b60405180910390205f1c905092915050565b60608060405191506001825283602083015260408201905060018152826020820152604081016040529250929050565b805182511461182957815181516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401611820929190612fcf565b60405180910390fd5b5f611832610efa565b90505f5b8351811015611a2e575f611853828661136690919063ffffffff16565b90505f611869838661136690919063ffffffff16565b90505f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161461198c575f805f8481526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561193857888183856040517f03dee4c500000000000000000000000000000000000000000000000000000000815260040161192f94939291906137e4565b60405180910390fd5b8181035f808581526020019081526020015f205f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614611a2157805f808481526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611a199190613827565b925050819055505b5050806001019050611836565b506001835103611ae9575f611a4c5f8561136690919063ffffffff16565b90505f611a625f8561136690919063ffffffff16565b90508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051611ada929190612fcf565b60405180910390a45050611b68565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611b5f92919061385a565b60405180910390a45b5050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b1115611d16578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401611bcf9594939291906138e1565b6020604051808303815f875af1925050508015611c0a57506040513d601f19601f82011682018060405250810190611c07919061394d565b60015b611c8b573d805f8114611c38576040519150601f19603f3d011682016040523d82523d5f602084013e611c3d565b606091505b505f815103611c8357846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611c7a9190613108565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611d1457846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611d0b9190613108565b60405180910390fd5b505b505050505050565b5f8473ffffffffffffffffffffffffffffffffffffffff163b1115611ec5578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401611d7e959493929190613978565b6020604051808303815f875af1925050508015611db957506040513d601f19601f82011682018060405250810190611db6919061394d565b60015b611e3a573d805f8114611de7576040519150601f19603f3d011682016040523d82523d5f602084013e611dec565b606091505b505f815103611e3257846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611e299190613108565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611ec357846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611eba9190613108565b60405180910390fd5b505b505050505050565b6040518060800160405280606081526020015f8152602001611eed611ef9565b81526020015f81525090565b60405180604001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611f6182611f38565b9050919050565b611f7181611f57565b8114611f7b575f80fd5b50565b5f81359050611f8c81611f68565b92915050565b5f819050919050565b611fa481611f92565b8114611fae575f80fd5b50565b5f81359050611fbf81611f9b565b92915050565b5f8060408385031215611fdb57611fda611f30565b5b5f611fe885828601611f7e565b9250506020611ff985828601611fb1565b9150509250929050565b61200c81611f92565b82525050565b5f6020820190506120255f830184612003565b92915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61205f8161202b565b8114612069575f80fd5b50565b5f8135905061207a81612056565b92915050565b5f6020828403121561209557612094611f30565b5b5f6120a28482850161206c565b91505092915050565b5f8115159050919050565b6120bf816120ab565b82525050565b5f6020820190506120d85f8301846120b6565b92915050565b5f602082840312156120f3576120f2611f30565b5b5f61210084828501611fb1565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61214b82612109565b6121558185612113565b9350612165818560208601612123565b61216e81612131565b840191505092915050565b5f6020820190508181035f8301526121918184612141565b905092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6121d382612131565b810181811067ffffffffffffffff821117156121f2576121f161219d565b5b80604052505050565b5f612204611f27565b905061221082826121ca565b919050565b5f67ffffffffffffffff82111561222f5761222e61219d565b5b602082029050602081019050919050565b5f80fd5b5f61225661225184612215565b6121fb565b9050808382526020820190506020840283018581111561227957612278612240565b5b835b818110156122a2578061228e8882611fb1565b84526020840193505060208101905061227b565b5050509392505050565b5f82601f8301126122c0576122bf612199565b5b81356122d0848260208601612244565b91505092915050565b5f80fd5b5f67ffffffffffffffff8211156122f7576122f661219d565b5b61230082612131565b9050602081019050919050565b828183375f83830152505050565b5f61232d612328846122dd565b6121fb565b905082815260208101848484011115612349576123486122d9565b5b61235484828561230d565b509392505050565b5f82601f8301126123705761236f612199565b5b813561238084826020860161231b565b91505092915050565b5f805f805f60a086880312156123a2576123a1611f30565b5b5f6123af88828901611f7e565b95505060206123c088828901611f7e565b945050604086013567ffffffffffffffff8111156123e1576123e0611f34565b5b6123ed888289016122ac565b935050606086013567ffffffffffffffff81111561240e5761240d611f34565b5b61241a888289016122ac565b925050608086013567ffffffffffffffff81111561243b5761243a611f34565b5b6124478882890161235c565b9150509295509295909350565b5f80fd5b5f8083601f84011261246d5761246c612199565b5b8235905067ffffffffffffffff81111561248a57612489612454565b5b6020830191508360208202830111156124a6576124a5612240565b5b9250929050565b5f80602083850312156124c3576124c2611f30565b5b5f83013567ffffffffffffffff8111156124e0576124df611f34565b5b6124ec85828601612458565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f61253b82612109565b6125458185612521565b9350612555818560208601612123565b61255e81612131565b840191505092915050565b61257281611f92565b82525050565b61258181611f57565b82525050565b604082015f82015161259b5f850182612569565b5060208201516125ae6020850182612578565b50505050565b5f60a083015f8301518482035f8601526125ce8282612531565b91505060208301516125e36020860182612569565b5060408301516125f66040860182612587565b5060608301516126096080860182612569565b508091505092915050565b5f61261f83836125b4565b905092915050565b5f602082019050919050565b5f61263d826124f8565b6126478185612502565b93508360208202850161265985612512565b805f5b8581101561269457848403895281516126758582612614565b945061268083612627565b925060208a0199505060018101905061265c565b50829750879550505050505092915050565b5f6020820190508181035f8301526126be8184612633565b905092915050565b5f67ffffffffffffffff8211156126e0576126df61219d565b5b602082029050602081019050919050565b5f6127036126fe846126c6565b6121fb565b9050808382526020820190506020840283018581111561272657612725612240565b5b835b8181101561274f578061273b8882611f7e565b845260208401935050602081019050612728565b5050509392505050565b5f82601f83011261276d5761276c612199565b5b813561277d8482602086016126f1565b91505092915050565b5f806040838503121561279c5761279b611f30565b5b5f83013567ffffffffffffffff8111156127b9576127b8611f34565b5b6127c585828601612759565b925050602083013567ffffffffffffffff8111156127e6576127e5611f34565b5b6127f2858286016122ac565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6128308383612569565b60208301905092915050565b5f602082019050919050565b5f612852826127fc565b61285c8185612806565b935061286783612816565b805f5b8381101561289757815161287e8882612825565b97506128898361283c565b92505060018101905061286a565b5085935050505092915050565b5f6020820190508181035f8301526128bc8184612848565b905092915050565b5f80fd5b5f60a082840312156128dd576128dc6128c4565b5b81905092915050565b5f602082840312156128fb576128fa611f30565b5b5f82013567ffffffffffffffff81111561291857612917611f34565b5b612924848285016128c8565b91505092915050565b5f60a083015f8301518482035f8601526129478282612531565b915050602083015161295c6020860182612569565b50604083015161296f6040860182612587565b5060608301516129826080860182612569565b508091505092915050565b5f6020820190508181035f8301526129a5818461292d565b905092915050565b5f8083601f8401126129c2576129c1612199565b5b8235905067ffffffffffffffff8111156129df576129de612454565b5b6020830191508360018202830111156129fb576129fa612240565b5b9250929050565b5f805f60408486031215612a1957612a18611f30565b5b5f84013567ffffffffffffffff811115612a3657612a35611f34565b5b612a42868287016129ad565b93509350506020612a5586828701611fb1565b9150509250925092565b5f67ffffffffffffffff821115612a7957612a7861219d565b5b612a8282612131565b9050602081019050919050565b5f612aa1612a9c84612a5f565b6121fb565b905082815260208101848484011115612abd57612abc6122d9565b5b612ac884828561230d565b509392505050565b5f82601f830112612ae457612ae3612199565b5b8135612af4848260208601612a8f565b91505092915050565b5f60208284031215612b1257612b11611f30565b5b5f82013567ffffffffffffffff811115612b2f57612b2e611f34565b5b612b3b84828501612ad0565b91505092915050565b604082015f820151612b585f850182612569565b506020820151612b6b6020850182612578565b50505050565b5f60a0820190508181035f830152612b898187612141565b9050612b986020830186612003565b612ba56040830185612b44565b612bb26080830184612003565b95945050505050565b5f60408284031215612bd057612bcf6128c4565b5b81905092915050565b5f805f60608486031215612bf057612bef611f30565b5b5f84013567ffffffffffffffff811115612c0d57612c0c611f34565b5b612c19868287016129ad565b93509350506020612c2c86828701612bbb565b9150509250925092565b5f805f8060408587031215612c4e57612c4d611f30565b5b5f85013567ffffffffffffffff811115612c6b57612c6a611f34565b5b612c77878288016129ad565b9450945050602085013567ffffffffffffffff811115612c9a57612c99611f34565b5b612ca6878288016129ad565b925092505092959194509250565b612cbd816120ab565b8114612cc7575f80fd5b50565b5f81359050612cd881612cb4565b92915050565b5f8060408385031215612cf457612cf3611f30565b5b5f612d0185828601611f7e565b9250506020612d1285828601612cca565b9150509250929050565b5f8060408385031215612d3257612d31611f30565b5b5f612d3f85828601611f7e565b9250506020612d5085828601611f7e565b9150509250929050565b5f805f805f60a08688031215612d7357612d72611f30565b5b5f612d8088828901611f7e565b9550506020612d9188828901611f7e565b9450506040612da288828901611fb1565b9350506060612db388828901611fb1565b925050608086013567ffffffffffffffff811115612dd457612dd3611f34565b5b612de08882890161235c565b9150509295509295909350565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612e3157607f821691505b602082108103612e4457612e43612ded565b5b50919050565b5f81905092915050565b5f819050815f5260205f209050919050565b5f8154612e7281612e1a565b612e7c8186612e4a565b9450600182165f8114612e965760018114612eab57612edd565b60ff1983168652811515820286019350612edd565b612eb485612e54565b5f5b83811015612ed557815481890152600182019150602081019050612eb6565b838801955050505b50505092915050565b5f612ef082612109565b612efa8185612e4a565b9350612f0a818560208601612123565b80840191505092915050565b5f612f218285612e66565b9150612f2d8284612ee6565b91508190509392505050565b612f4281611f57565b82525050565b5f604082019050612f5b5f830185612f39565b612f686020830184612f39565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f80fd5b5f80fd5b5f80fd5b5f8235600160a003833603038112612fc357612fc2612f9c565b5b80830191505092915050565b5f604082019050612fe25f830185612003565b612fef6020830184612003565b9392505050565b5f6130018385612e4a565b935061300e83858461230d565b82840190509392505050565b5f613026828486612ff6565b91508190509392505050565b7f4e6f7420656e6f7567682073746f636b000000000000000000000000000000005f82015250565b5f613066601083612113565b915061307182613032565b602082019050919050565b5f6020820190508181035f8301526130938161305a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6130d182611f92565b91506130dc83611f92565b92508282026130ea81611f92565b915082820484148315176131015761310061309a565b5b5092915050565b5f60208201905061311b5f830184612f39565b92915050565b5f8151905061312f81611f9b565b92915050565b5f6020828403121561314a57613149611f30565b5b5f61315784828501613121565b91505092915050565b7f4e6f7420656e6f7567682062616c616e636500000000000000000000000000005f82015250565b5f613194601283612113565b915061319f82613160565b602082019050919050565b5f6020820190508181035f8301526131c181613188565b9050919050565b5f6060820190506131db5f830186612f39565b6131e86020830185612f39565b6131f56040830184612003565b949350505050565b5f8151905061320b81612cb4565b92915050565b5f6020828403121561322657613225611f30565b5b5f613233848285016131fd565b91505092915050565b5f61324682611f92565b915061325183611f92565b92508282039050818111156132695761326861309a565b5b92915050565b5f813561327b81611f9b565b80915050919050565b5f815f1b9050919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6132ba84613284565b9350801983169250808416831791505092915050565b5f819050919050565b5f6132f36132ee6132e984611f92565b6132d0565b611f92565b9050919050565b5f819050919050565b61330c826132d9565b61331f613318826132fa565b835461328f565b8255505050565b5f813561333281611f68565b80915050919050565b5f73ffffffffffffffffffffffffffffffffffffffff61335a84613284565b9350801983169250808416831791505092915050565b5f61338a61338561338084611f38565b6132d0565b611f38565b9050919050565b5f61339b82613370565b9050919050565b5f6133ac82613391565b9050919050565b5f819050919050565b6133c5826133a2565b6133d86133d1826133b3565b835461333b565b8255505050565b5f81015f8301806133ef8161326f565b90506133fb8184613303565b50505060018101602083018061341081613326565b905061341c81846133bc565b5050505050565b61342d82826133df565b5050565b5f808335600160200384360303811261344d5761344c612f9c565b5b80840192508235915067ffffffffffffffff82111561346f5761346e612fa0565b5b60208301925060018202360383131561348b5761348a612fa4565b5b509250929050565b7f746f6b656e5552492063616e6e6f7420626520656d70747900000000000000005f82015250565b5f6134c7601883612113565b91506134d282613493565b602082019050919050565b5f6020820190508181035f8301526134f4816134bb565b9050919050565b5f80fd5b5f60408284031215613514576135136134fb565b5b61351e60406121fb565b90505f61352d84828501611fb1565b5f83015250602061354084828501611f7e565b60208301525092915050565b5f6040828403121561356157613560611f30565b5b5f61356e848285016134ff565b91505092915050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026135c17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613586565b6135cb8683613586565b95508019841693508086168417925050509392505050565b6135ec836132d9565b6136006135f8826132fa565b848454613592565b825550505050565b5f90565b613614613608565b61361f8184846135e3565b505050565b5b81811015613642576136375f8261360c565b600181019050613625565b5050565b601f8211156136875761365881612e54565b61366184613577565b81016020851015613670578190505b61368461367c85613577565b830182613624565b50505b505050565b5f82821c905092915050565b5f6136a75f198460080261368c565b1980831691505092915050565b5f6136bf8383613698565b9150826002028217905092915050565b6136d882612109565b67ffffffffffffffff8111156136f1576136f061219d565b5b6136fb8254612e1a565b613706828285613646565b5f60209050601f831160018114613737575f8415613725578287015190505b61372f85826136b4565b865550613796565b601f19841661374586612e54565b5f5b8281101561376c57848901518255600182019150602085019450602081019050613747565b868310156137895784890151613785601f891682613698565b8355505b6001600288020188555050505b505050505050565b5f81905092915050565b5f6137b3838561379e565b93506137c083858461230d565b82840190509392505050565b5f6137d88284866137a8565b91508190509392505050565b5f6080820190506137f75f830187612f39565b6138046020830186612003565b6138116040830185612003565b61381e6060830184612003565b95945050505050565b5f61383182611f92565b915061383c83611f92565b92508282019050808211156138545761385361309a565b5b92915050565b5f6040820190508181035f8301526138728185612848565b905081810360208301526138868184612848565b90509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f6138b38261388f565b6138bd8185613899565b93506138cd818560208601612123565b6138d681612131565b840191505092915050565b5f60a0820190506138f45f830188612f39565b6139016020830187612f39565b61390e6040830186612003565b61391b6060830185612003565b818103608083015261392d81846138a9565b90509695505050505050565b5f8151905061394781612056565b92915050565b5f6020828403121561396257613961611f30565b5b5f61396f84828501613939565b91505092915050565b5f60a08201905061398b5f830188612f39565b6139986020830187612f39565b81810360408301526139aa8186612848565b905081810360608301526139be8185612848565b905081810360808301526139d281846138a9565b9050969550505050505056fea2646970667358221220d21dd7b453613d47520553678473640acf169bdb44da4ebb4989234570f0b9af64736f6c634300081a0033