[ { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "uint256", "name": "maxUserPods", "type": "uint256" }, { "internalType": "uint256", "name": "podCallGasLimit", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApproveDisabled", "type": "error" }, { "inputs": [], "name": "IndexOutOfBounds", "type": "error" }, { "inputs": [], "name": "InsufficientGas", "type": "error" }, { "inputs": [], "name": "InvalidPodAddress", "type": "error" }, { "inputs": [], "name": "NotOwner", "type": "error" }, { "inputs": [], "name": "OutputArrayTooSmall", "type": "error" }, { "inputs": [], "name": "PodAlreadyAdded", "type": "error" }, { "inputs": [], "name": "PodNotFound", "type": "error" }, { "inputs": [], "name": "PodsLimitReachedForAccount", "type": "error" }, { "inputs": [], "name": "PopFromEmptyArray", "type": "error" }, { "inputs": [], "name": "ReentrantCall", "type": "error" }, { "inputs": [], "name": "TransferDisabled", "type": "error" }, { "inputs": [], "name": "ZeroPodsLimit", "type": "error" }, { "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": false, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "address", "name": "pod", "type": "address" } ], "name": "PodAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "address", "name": "pod", "type": "address" } ], "name": "PodRemoved", "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": "account", "type": "address" }, { "internalType": "address", "name": "farm", "type": "address" } ], "name": "addDefaultFarmIfNeeded", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pod", "type": "address" } ], "name": "addPod", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "pod", "type": "address" } ], "name": "hasPod", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "podAt", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pod", "type": "address" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "podBalanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "podCallGasLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "pods", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "podsCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "podsLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "removeAllPods", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pod", "type": "address" } ], "name": "removePod", "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": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "pure", "type": "function" } ]
60e06040523480156200001157600080fd5b5060405162001e1338038062001e13833981016040819052620000349162000178565b81818585600362000046838262000281565b50600462000055828262000281565b505050816000036200007a576040516337f1632160e11b815260040160405180910390fd5b608082905260a08190526200009c6005620000ad602090811b6200084b17901c565b50503360c052506200034d92505050565b60019055565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000db57600080fd5b81516001600160401b0380821115620000f857620000f8620000b3565b604051601f8301601f19908116603f01168101908282118183101715620001235762000123620000b3565b816040528381526020925086838588010111156200014057600080fd5b600091505b8382101562000164578582018301518183018401529082019062000145565b600093810190920192909252949350505050565b600080600080608085870312156200018f57600080fd5b84516001600160401b0380821115620001a757600080fd5b620001b588838901620000c9565b95506020870151915080821115620001cc57600080fd5b50620001db87828801620000c9565b604087015160609097015195989097509350505050565b600181811c908216806200020757607f821691505b6020821081036200022857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200027c57600081815260208120601f850160051c81016020861015620002575750805b601f850160051c820191505b81811015620002785782815560010162000263565b5050505b505050565b81516001600160401b038111156200029d576200029d620000b3565b620002b581620002ae8454620001f2565b846200022e565b602080601f831160018114620002ed5760008415620002d45750858301515b600019600386901b1c1916600185901b17855562000278565b600085815260208120601f198616915b828110156200031e57888601518255948401946001909101908401620002fd565b50858210156200033d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c051611a7a62000399600039600081816105760152818161072701526107dc015260008181610318015261113d01526000818161029d0152610b180152611a7a6000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806370a08231116100e3578063a457c2d71161008c578063dd62ed3e11610066578063dd62ed3e14610350578063f55f545c14610396578063f70f6a9a146103b657600080fd5b8063a457c2d7146101bb578063a9059cbb1461033a578063ada6f64b1461034857600080fd5b806395d89b41116100bd57806395d89b41146102f85780639dc29fac14610300578063a44282dc1461031357600080fd5b806370a08231146102bf5780637a3e60e9146102d25780638da031df146102e557600080fd5b80633466a8861161014557806340f99a941161011f57806340f99a941461024d578063538db9231461028557806366b0dede1461029857600080fd5b80633466a8861461022757806339509351146101bb57806340c10f191461023a57600080fd5b8063222d6b4d11610176578063222d6b4d146101f057806323b872dd14610205578063313ce5671461021857600080fd5b806306fdde031461019d578063095ea7b3146101bb57806318160ddd146101de575b600080fd5b6101a56103c9565b6040516101b291906117bc565b60405180910390f35b6101ce6101c9366004611851565b61045b565b60405190151581526020016101b2565b6002545b6040519081526020016101b2565b6102036101fe36600461187b565b61048f565b005b6101ce610213366004611896565b61049c565b604051601281526020016101b2565b6101e26102353660046118d2565b6104d0565b610203610248366004611851565b61055e565b61026061025b366004611851565b6105db565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b61020361029336600461187b565b610613565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6101e26102cd36600461187b565b61061d565b6101e26102e036600461187b565b610692565b6101ce6102f33660046118d2565b6106c0565b6101a5610700565b61020361030e366004611851565b61070f565b6101e27f000000000000000000000000000000000000000000000000000000000000000081565b6101ce610213366004611851565b610203610788565b6101e261035e3660046118d2565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6103a96103a436600461187b565b610793565b6040516101b29190611905565b6102036103c43660046118d2565b6107c4565b6060600380546103d89061195f565b80601f01602080910402602001604051908101604052809291908181526020018280546104049061195f565b80156104515780601f1061042657610100808354040283529160200191610451565b820191906000526020600020905b81548152906001019060200180831161043457829003601f168201915b5050505050905090565b60006040517feb60c2c400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104993382610851565b50565b60006040517fa24e573d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060056104df815460021490565b15610516576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61052083856106c0565b156105525773ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020549150610557565b600091505b5092915050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146105cd576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105d7828261092b565b5050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260066020526040812061060a9083610a2b565b90505b92915050565b6104993382610a3f565b6000600561062c815460021490565b15610663576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205491505b50919050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260066020526040812061060d90610be9565b73ffffffffffffffffffffffffffffffffffffffff828116600090815260066020908152604080832093851683526001909301905290812054151561060a565b6060600480546103d89061195f565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461077e576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105d78282610c00565b61079133610dcb565b565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260066020526040902060609061060d90610f53565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610833576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61083d82826106c0565b6105d7576105d78282610a3f565b60019055565b73ffffffffffffffffffffffffffffffffffffffff821660009081526006602052604090206108809082610fc0565b6108b6576040517f826fbca300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8085168252831660208201527fb94b1adfafd33f45e2ba5c713871f026dc1ef0fdc3d75b4f24e954f15b9f8e64910160405180910390a160006109118361061d565b905080156109265761092682846000846110db565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166109ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b80600260008282546109bf91906119ac565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105d76000838361118a565b60008181526020839052604081205461060a565b73ffffffffffffffffffffffffffffffffffffffff8116610a8c576040517f960357e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600660205260409020610abb90826113c6565b610af1576040517fcbdb297300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081526006602052604090207f000000000000000000000000000000000000000000000000000000000000000090610b4190610be9565b1115610b79576040517fc87e91a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8085168252831660208201527fde03e097fdd335e4d488cd0bc9645f306e7f5569ad042d918dc75be13107c677910160405180910390a16000610bd48361061d565b905080156109265761092682600085846110db565b60008080526020829052604081205460a01c61060d565b73ffffffffffffffffffffffffffffffffffffffff8216610ca3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016109a4565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610d59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016109a4565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36109268360008461118a565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600660205260408120610df990610f53565b90506000610e068361061d565b82519091505b8015610f4d57610e7f836001830381518110610e2a57610e2a6119e6565b6020026020010151600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020610fc090919063ffffffff16565b507fb94b1adfafd33f45e2ba5c713871f026dc1ef0fdc3d75b4f24e954f15b9f8e6484846001840381518110610eb757610eb76119e6565b6020026020010151604051610eef92919073ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b60405180910390a18115610f2657610f26836001830381518110610f1557610f156119e6565b6020026020010151856000856110db565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610e0c565b50505050565b60008080526020829052604090205460609060a081901c67ffffffffffffffff811115610f8257610f82611a15565b604051908082528060200260200182016040528015610fab578160200160208202803683370190505b509150610fb9838383611437565b5050919050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600183016020526040812054808203610ff957600091505061060d565b60008080526020859052604090205460a01c8110156110a5576000808052602085905260408082205460a01c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018252812054905061107b857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff840183611520565b73ffffffffffffffffffffffffffffffffffffffff16600090815260018501602052604090208190555b6110ae846115d2565b505073ffffffffffffffffffffffffffffffffffffffff1660009081526001918201602052604081205590565b604080517f7a1f1aa900000000000000000000000000000000000000000000000000000000808252600482018690526024820185905260448201849052917f1c26714c00000000000000000000000000000000000000000000000000000000917f0000000000000000000000000000000000000000000000000000000000000000918290603f5a02041015611174578260005260046000fd5b60008060648360008c87f1505050505050505050565b600561119581611694565b6000821180156111d157508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156113bd5773ffffffffffffffffffffffffffffffffffffffff8416600090815260066020526040812061120490610f53565b73ffffffffffffffffffffffffffffffffffffffff851660009081526006602052604081209192509061123690610f53565b825181519192509060005b8281101561134357600085828151811061125d5761125d6119e6565b6020026020010151905060005b8381101561132557858181518110611284576112846119e6565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361131d576112ca828c8c8c6110db565b60008682815181106112de576112de6119e6565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611325565b60010161126a565b83810361133957611339828c60008c6110db565b5050600101611241565b5060005b818110156113b7576000848281518110611363576113636119e6565b60200260200101519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146113ae576113ae8160008b8b6110db565b50600101611347565b50505050505b60018155610f4d565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600183016020526040812054156113fb5750600061060d565b61140583836116f4565b73ffffffffffffffffffffffffffffffffffffffff929092166000908152600193840160205260409020919091555090565b815160609060a083901c9081111561147b576040517ff9a99b2500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8015611517578284600081518110611495576114956119e6565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015260015b818110156115155760008181526020879052604090205485518690839081106114e8576114e86119e6565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526001016114bd565b505b50919392505050565b60008080526020849052604090205460a01c80831061156b576040517f4e23d03500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036115a557600080805260208590526040902060a082901b73ffffffffffffffffffffffffffffffffffffffff8416179055610f4d565b600083815260208590526040902073ffffffffffffffffffffffffffffffffffffffff8316905550505050565b6000808052602082905260408120549060a082901c90819003611621576040517f06a2af9e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810160009081526020849052604081205560018111156109265760008080526020849052604090207fffffffffffffffffffffffff000000000000000000000000000000000000000083019055505050565b80547ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016116ee576040517f37ed32e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60029055565b60008080526020839052604081205460a081901c80830361176957600080805260208690526040902074ffffffffffffffffffffffffffffffffffffffffff7401000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8716011690556117b1565b6000808052602086905260408082207401000000000000000000000000000000000000000085019055828252902073ffffffffffffffffffffffffffffffffffffffff851690555b600101949350505050565b600060208083528351808285015260005b818110156117e9578581018301518582016040015282016117cd565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461184c57600080fd5b919050565b6000806040838503121561186457600080fd5b61186d83611828565b946020939093013593505050565b60006020828403121561188d57600080fd5b61060a82611828565b6000806000606084860312156118ab57600080fd5b6118b484611828565b92506118c260208501611828565b9150604084013590509250925092565b600080604083850312156118e557600080fd5b6118ee83611828565b91506118fc60208401611828565b90509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561195357835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101611921565b50909695505050505050565b600181811c9082168061197357607f821691505b60208210810361068c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b8082018082111561060d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea2646970667358221220cadc776809523181702befb6128347b2f47f0d4e53d7ae0b9191e6574b758d4364736f6c63430008110033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000222e0000000000000000000000000000000000000000000000000000000000000000d556e69636f726e20506f7765720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025550000000000000000000000000000000000000000000000000000000000000