{
  "_format": "hh-sol-artifact-1",
  "contractName": "InvitesV1",
  "sourceName": "contracts/invite/InvitesV1.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "inviter",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "invitee",
          "type": "address"
        }
      ],
      "name": "InviteeJoined",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "inviter",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "invitee",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bountyPaid",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "inviterLevel",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "earnedLevel",
          "type": "bool"
        }
      ],
      "name": "InviterBounty",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "active",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "avatar",
      "outputs": [
        {
          "internalType": "address payable",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_invitee",
          "type": "address"
        }
      ],
      "name": "bountyFor",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "bounty",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_invitee",
          "type": "address"
        }
      ],
      "name": "canCollectBountyFor",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "codeToUser",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "collectBounties",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "end",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_inviter",
          "type": "address"
        }
      ],
      "name": "getInvitees",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_inviter",
          "type": "address"
        }
      ],
      "name": "getPendingBounties",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_inviter",
          "type": "address"
        }
      ],
      "name": "getPendingInvitees",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "goodDollar",
      "outputs": [
        {
          "internalType": "contract cERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "identity",
      "outputs": [
        {
          "internalType": "contract IIdentity",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "_avatar",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_identity",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_gd",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "level0Bounty",
          "type": "uint256"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_myCode",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_inviterCode",
          "type": "bytes32"
        }
      ],
      "name": "join",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "levelExpirationEnabled",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "levels",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "toNext",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "bounty",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "daysToComplete",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "_active",
          "type": "bool"
        }
      ],
      "name": "setActive",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_lvl",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_toNext",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_bounty",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_daysToComplete",
          "type": "uint256"
        }
      ],
      "name": "setLevel",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "_isEnabled",
          "type": "bool"
        }
      ],
      "name": "setLevelExpirationEnabled",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "stats",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "totalApprovedInvites",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "totalBountiesPaid",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "totalInvited",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "users",
      "outputs": [
        {
          "internalType": "address",
          "name": "invitedBy",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "inviteCode",
          "type": "bytes32"
        },
        {
          "internalType": "bool",
          "name": "bountyPaid",
          "type": "bool"
        },
        {
          "internalType": "uint256",
          "name": "level",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "levelStarted",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "totalApprovedInvites",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "totalEarned",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "joinedAt",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50611994806100206000396000f3fe608060405234801561001057600080fd5b506004361061011d5760003560e01c806302fb0c5e14610122578063119e5bf31461014b57806321132aad1461016b5780632c159a1a1461018057806341155d5e1461019357806354fd4d50146101b45780635aef7de6146101db5780635b419a65146101ee5780636d619ef8146102015780638da5cb5b14610214578063a1df6fd314610227578063a87430ba14610234578063acec338a146102e0578063af6346b0146102f3578063b2596a67146102fb578063b6567cd514610345578063b9fb2d1814610358578063ba6f56801461036b578063cf756fdf14610394578063d80528ae146103a7578063e951a3aa146103b9578063e9881a5e146103d9578063efbe1c1c146103ec575b600080fd5b60075461013690600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b60075461015e906001600160a01b031681565b60405161014291906115d5565b61017e6101793660046115fa565b6103f4565b005b60065461015e906001600160a01b031681565b6101a66101a136600461162c565b61044f565b604051908152602001610142565b60408051808201825260058152640312e352e360dc1b602082015290516101429190611649565b60035461015e906001600160a01b031681565b61017e6101fc366004611697565b61051c565b61013661020f36600461162c565b61076c565b60055461015e906001600160a01b031681565b6010546101369060ff1681565b61029561024236600461162c565b6002602081905260009182526040909120805460018201549282015460058301546006840154600785015460088601546009909601546001600160a01b03909516969560ff909416949293919290919088565b604080516001600160a01b0390991689526020890197909752941515958701959095526060860192909252608085015260a084015260c083019190915260e082015261010001610142565b61017e6102ee3660046115fa565b610975565b61017e6109d2565b61032a6103093660046116b9565b60046020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610142565b6101a661035336600461162c565b610b4d565b61017e6103663660046116d2565b610bdf565b61015e6103793660046116b9565b6001602052600090815260409020546001600160a01b031681565b61017e6103a2366004611704565b610c3e565b600854600954600a5461032a92919083565b6103cc6103c736600461162c565b610dd8565b6040516101429190611755565b6103cc6103e736600461162c565b610fc3565b61017e61103c565b6005546001600160a01b031633148061041757506003546001600160a01b031633145b61043c5760405162461bcd60e51b8152600401610433906117a2565b60405180910390fd5b6010805460ff1916911515919091179055565b6001600160a01b0381166000908152600260209081526040808320600401805482518185028101850190935280835284938301828280156104b957602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161049b575b505050505090506000805b8251811015610514576104ef8382815181106104e2576104e26117ee565b602002602001015161076c565b1561050257816104fe8161181a565b9250505b8061050c8161181a565b9150506104c4565b509392505050565b600754600160a01b900460ff166105455760405162461bcd60e51b815260040161043390611833565b6000828152600160205260409020546001600160a01b0316158061057f57506000828152600160205260409020546001600160a01b031633145b6105c85760405162461bcd60e51b815260206004820152601a602482015279696e7669746520636f646520616c726561647920696e2075736560301b6044820152606401610433565b336000908152600260209081526040808320848452600192839052922054908201546001600160a01b0390911690158061061d575081546001600160a01b031615801561061d57506001600160a01b03811615155b61065f5760405162461bcd60e51b81526020600482015260136024820152721d5cd95c88185b1c9958591e481a9bda5b9959606a1b6044820152606401610433565b60018201546000036106a05760018083018590554260068401819055600984015560008581526020919091526040902080546001600160a01b031916331790555b6001600160a01b038116156107305781546001600160a01b0382166001600160a01b0319918216811784556000908152600260209081526040822060038101805460018181018355918552838520018054861633908117909155600490920180548083018255908552928420909201805490941617909255600a805490919061072a908490611857565b90915550505b60405133906001600160a01b038316907fd8c638d8979e2ba5dba1f0d66246ee4b1c54b838f0e0a2b601365345eb23b05190600090a350505050565b6001600160a01b0380821660009081526002602081815260408084205490941680845284842060050154845260049091529282200154601054919291839060ff16151560011480156107be5750600082115b80156107f057506001600160a01b03808416600090815260026020526040808220600601549288168252902060090154115b801561083b57506001600160a01b03808416600090815260026020526040808220600601549288168252902060090154610838916201518091610832916111dc565b906111ef565b82105b90506001600160a01b0383161580159061087257506001600160a01b0385166000908152600260208190526040909120015460ff16155b80156108ea5750600654604051633af32abf60e01b81526001600160a01b0390911690633af32abf906108a99088906004016115d5565b602060405180830381865afa1580156108c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ea919061186a565b80156109625750600654604051633af32abf60e01b81526001600160a01b0390911690633af32abf906109219086906004016115d5565b602060405180830381865afa15801561093e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610962919061186a565b801561096c575080155b95945050505050565b6005546001600160a01b031633148061099857506003546001600160a01b031633145b6109b45760405162461bcd60e51b8152600401610433906117a2565b60078054911515600160a01b0260ff60a01b19909216919091179055565b600754600160a01b900460ff166109fb5760405162461bcd60e51b815260040161043390611833565b33600090815260026020526040812060040180549091908190610a2090600190611887565b90505b60008112610acb57620186a05a10610acb576000838281548110610a4957610a496117ee565b6000918252602090912001546001600160a01b03169050610a698161076c565b15610ab857610a798160006111fb565b610a839084611857565b925083805480610a9557610a956118ae565b600082815260209020810160001990810180546001600160a01b03191690550190555b5080610ac3816118c4565b915050610a23565b508015610b495760075460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90610b0490339085906004016118e1565b6020604051808303816000875af1158015610b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b47919061186a565b505b5050565b600754600090600160a01b900460ff16610b795760405162461bcd60e51b815260040161043390611833565b610b828261076c565b610bce5760405162461bcd60e51b815260206004820181905260248201527f75736572206e6f7420656c6c6967626c6520666f7220626f756e7479207965746044820152606401610433565b610bd98260016111fb565b92915050565b6005546001600160a01b0316331480610c0257506003546001600160a01b031633145b610c1e5760405162461bcd60e51b8152600401610433906117a2565b600093845260046020526040909320918255600282019290925560010155565b600054610100900460ff1615808015610c5e5750600054600160ff909116105b80610c785750303b158015610c78575060005460ff166001145b610cdb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610433565b6000805460ff191660011790558015610cfe576000805461ff0019166101001790555b60058054336001600160a01b0319918216179091556006805482166001600160a01b0387811691909117909155600780546000805260046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ed869055600160a01b6001600160a81b031990911687841617179055600380549092169087161790556010805460ff191690558015610dd1576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6001600160a01b0381166000908152600260209081526040808320600401805482518185028101850190935280835260609493830182828015610e4457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e26575b5050505050905060008060005b8351811015610ebe5760026000858381518110610e7057610e706117ee565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff16610eac5781610ea88161181a565b9250505b80610eb68161181a565b915050610e51565b506000816001600160401b03811115610ed957610ed96118fa565b604051908082528060200260200182016040528015610f02578160200160208202803683370190505b50905060005b8451811015610fb95760026000868381518110610f2757610f276117ee565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff16610fa757848181518110610f6757610f676117ee565b6020026020010151828581518110610f8157610f816117ee565b6001600160a01b039092166020928302919091019091015283610fa38161181a565b9450505b80610fb18161181a565b915050610f08565b5095945050505050565b6001600160a01b03811660009081526002602090815260409182902060030180548351818402810184019094528084526060939283018282801561103057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611012575b50505050509050919050565b6005546001600160a01b031633148061105f57506003546001600160a01b031633145b61107b5760405162461bcd60e51b8152600401610433906117a2565b600754600160a01b900460ff166110a45760405162461bcd60e51b815260040161043390611833565b6007546040516370a0823160e01b81526000916001600160a01b0316906370a08231906110d59030906004016115d5565b602060405180830381865afa1580156110f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111169190611910565b60075460035460405163a9059cbb60e01b81529293506001600160a01b039182169263a9059cbb9261114e92169085906004016118e1565b6020604051808303816000875af115801561116d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611191919061186a565b506003546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156111cb573d6000803e3d6000fd5b50506007805460ff60a01b19169055565b60006111e88284611929565b9392505050565b60006111e8828461193c565b6001600160a01b038281166000908152600260208181526040808420805460099091015495168085528185206005908101548652600484528286208351608081018552815481526001820154958101959095529485015484840152825160a081019384905295969195919487949390926060850192909160038501919082845b81548152602001906001019080831161127b57505050505081525050905060008082604001511180156112c857506001600160a01b03841660009081526002602052604090206006015483115b801561130657506001600160a01b0384166000908152600260205260409020600601546112ff9062015180906108329086906111dc565b8260400151105b6001600160a01b038089166000908152600260208190526040808320909101805460ff19166001908117909155928816825281206007018054939450919261134f908490611857565b90915550506020808301516001600160a01b0386166000908152600290925260408220600801805491929091611386908490611857565b909155505060088054600191906000906113a1908490611857565b90915550506020820151600980546000906113bd908490611857565b90915550508151600090158015906113f1575082516001600160a01b03861660009081526002602052604090206007015410155b80156113fb575081155b15611454576001600160a01b038516600090815260026020526040812060050180546001929061142c908490611857565b9091555050506001600160a01b03841660009081526002602052604090204260069091015560015b86156114d557600754602084015160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb91611490918991906004016118e1565b6020604051808303816000875af11580156114af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d3919061186a565b505b60075460208401516001600160a01b039091169063a9059cbb908a906114fc9060026111ef565b6040518363ffffffff1660e01b81526004016115199291906118e1565b6020604051808303816000875af1158015611538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155c919061186a565b506020838101516001600160a01b0387811660008181526002855260409081902060050154815194855294840194909452841515838501529251908b1692917f6081787cd1bd02ab1576c52f03e8710d792d460e7881c3155d77d23893f3768b919081900360600190a350506020015195945050505050565b6001600160a01b0391909116815260200190565b80151581146115f757600080fd5b50565b60006020828403121561160c57600080fd5b81356111e8816115e9565b6001600160a01b03811681146115f757600080fd5b60006020828403121561163e57600080fd5b81356111e881611617565b600060208083528351808285015260005b818110156116765785810183015185820160400152820161165a565b506000604082860101526040601f19601f8301168501019250505092915050565b600080604083850312156116aa57600080fd5b50508035926020909101359150565b6000602082840312156116cb57600080fd5b5035919050565b600080600080608085870312156116e857600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000806080858703121561171a57600080fd5b843561172581611617565b9350602085013561173581611617565b9250604085013561174581611617565b9396929550929360600135925050565b6020808252825182820181905260009190848201906040850190845b818110156117965783516001600160a01b031683529284019291840191600101611771565b50909695505050505050565b6020808252602c908201527f4f6e6c79206f776e6572206f72206176617461722063616e20706572666f726d60408201526b103a3434b99030b1ba34b7b760a11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161182c5761182c611804565b5060010190565b6020808252600a90820152696e6f742061637469766560b01b604082015260600190565b80820180821115610bd957610bd9611804565b60006020828403121561187c57600080fd5b81516111e8816115e9565b81810360008312801583831316838312821617156118a7576118a7611804565b5092915050565b634e487b7160e01b600052603160045260246000fd5b6000600160ff1b82016118d9576118d9611804565b506000190190565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561192257600080fd5b5051919050565b81810381811115610bd957610bd9611804565b60008261195957634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220391fffa990c33292753e24df82f9140cd85858d64f7af0cf554e2aad81cfed0264736f6c63430008130033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061011d5760003560e01c806302fb0c5e14610122578063119e5bf31461014b57806321132aad1461016b5780632c159a1a1461018057806341155d5e1461019357806354fd4d50146101b45780635aef7de6146101db5780635b419a65146101ee5780636d619ef8146102015780638da5cb5b14610214578063a1df6fd314610227578063a87430ba14610234578063acec338a146102e0578063af6346b0146102f3578063b2596a67146102fb578063b6567cd514610345578063b9fb2d1814610358578063ba6f56801461036b578063cf756fdf14610394578063d80528ae146103a7578063e951a3aa146103b9578063e9881a5e146103d9578063efbe1c1c146103ec575b600080fd5b60075461013690600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b60075461015e906001600160a01b031681565b60405161014291906115d5565b61017e6101793660046115fa565b6103f4565b005b60065461015e906001600160a01b031681565b6101a66101a136600461162c565b61044f565b604051908152602001610142565b60408051808201825260058152640312e352e360dc1b602082015290516101429190611649565b60035461015e906001600160a01b031681565b61017e6101fc366004611697565b61051c565b61013661020f36600461162c565b61076c565b60055461015e906001600160a01b031681565b6010546101369060ff1681565b61029561024236600461162c565b6002602081905260009182526040909120805460018201549282015460058301546006840154600785015460088601546009909601546001600160a01b03909516969560ff909416949293919290919088565b604080516001600160a01b0390991689526020890197909752941515958701959095526060860192909252608085015260a084015260c083019190915260e082015261010001610142565b61017e6102ee3660046115fa565b610975565b61017e6109d2565b61032a6103093660046116b9565b60046020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610142565b6101a661035336600461162c565b610b4d565b61017e6103663660046116d2565b610bdf565b61015e6103793660046116b9565b6001602052600090815260409020546001600160a01b031681565b61017e6103a2366004611704565b610c3e565b600854600954600a5461032a92919083565b6103cc6103c736600461162c565b610dd8565b6040516101429190611755565b6103cc6103e736600461162c565b610fc3565b61017e61103c565b6005546001600160a01b031633148061041757506003546001600160a01b031633145b61043c5760405162461bcd60e51b8152600401610433906117a2565b60405180910390fd5b6010805460ff1916911515919091179055565b6001600160a01b0381166000908152600260209081526040808320600401805482518185028101850190935280835284938301828280156104b957602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161049b575b505050505090506000805b8251811015610514576104ef8382815181106104e2576104e26117ee565b602002602001015161076c565b1561050257816104fe8161181a565b9250505b8061050c8161181a565b9150506104c4565b509392505050565b600754600160a01b900460ff166105455760405162461bcd60e51b815260040161043390611833565b6000828152600160205260409020546001600160a01b0316158061057f57506000828152600160205260409020546001600160a01b031633145b6105c85760405162461bcd60e51b815260206004820152601a602482015279696e7669746520636f646520616c726561647920696e2075736560301b6044820152606401610433565b336000908152600260209081526040808320848452600192839052922054908201546001600160a01b0390911690158061061d575081546001600160a01b031615801561061d57506001600160a01b03811615155b61065f5760405162461bcd60e51b81526020600482015260136024820152721d5cd95c88185b1c9958591e481a9bda5b9959606a1b6044820152606401610433565b60018201546000036106a05760018083018590554260068401819055600984015560008581526020919091526040902080546001600160a01b031916331790555b6001600160a01b038116156107305781546001600160a01b0382166001600160a01b0319918216811784556000908152600260209081526040822060038101805460018181018355918552838520018054861633908117909155600490920180548083018255908552928420909201805490941617909255600a805490919061072a908490611857565b90915550505b60405133906001600160a01b038316907fd8c638d8979e2ba5dba1f0d66246ee4b1c54b838f0e0a2b601365345eb23b05190600090a350505050565b6001600160a01b0380821660009081526002602081815260408084205490941680845284842060050154845260049091529282200154601054919291839060ff16151560011480156107be5750600082115b80156107f057506001600160a01b03808416600090815260026020526040808220600601549288168252902060090154115b801561083b57506001600160a01b03808416600090815260026020526040808220600601549288168252902060090154610838916201518091610832916111dc565b906111ef565b82105b90506001600160a01b0383161580159061087257506001600160a01b0385166000908152600260208190526040909120015460ff16155b80156108ea5750600654604051633af32abf60e01b81526001600160a01b0390911690633af32abf906108a99088906004016115d5565b602060405180830381865afa1580156108c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ea919061186a565b80156109625750600654604051633af32abf60e01b81526001600160a01b0390911690633af32abf906109219086906004016115d5565b602060405180830381865afa15801561093e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610962919061186a565b801561096c575080155b95945050505050565b6005546001600160a01b031633148061099857506003546001600160a01b031633145b6109b45760405162461bcd60e51b8152600401610433906117a2565b60078054911515600160a01b0260ff60a01b19909216919091179055565b600754600160a01b900460ff166109fb5760405162461bcd60e51b815260040161043390611833565b33600090815260026020526040812060040180549091908190610a2090600190611887565b90505b60008112610acb57620186a05a10610acb576000838281548110610a4957610a496117ee565b6000918252602090912001546001600160a01b03169050610a698161076c565b15610ab857610a798160006111fb565b610a839084611857565b925083805480610a9557610a956118ae565b600082815260209020810160001990810180546001600160a01b03191690550190555b5080610ac3816118c4565b915050610a23565b508015610b495760075460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90610b0490339085906004016118e1565b6020604051808303816000875af1158015610b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b47919061186a565b505b5050565b600754600090600160a01b900460ff16610b795760405162461bcd60e51b815260040161043390611833565b610b828261076c565b610bce5760405162461bcd60e51b815260206004820181905260248201527f75736572206e6f7420656c6c6967626c6520666f7220626f756e7479207965746044820152606401610433565b610bd98260016111fb565b92915050565b6005546001600160a01b0316331480610c0257506003546001600160a01b031633145b610c1e5760405162461bcd60e51b8152600401610433906117a2565b600093845260046020526040909320918255600282019290925560010155565b600054610100900460ff1615808015610c5e5750600054600160ff909116105b80610c785750303b158015610c78575060005460ff166001145b610cdb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610433565b6000805460ff191660011790558015610cfe576000805461ff0019166101001790555b60058054336001600160a01b0319918216179091556006805482166001600160a01b0387811691909117909155600780546000805260046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ed869055600160a01b6001600160a81b031990911687841617179055600380549092169087161790556010805460ff191690558015610dd1576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6001600160a01b0381166000908152600260209081526040808320600401805482518185028101850190935280835260609493830182828015610e4457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e26575b5050505050905060008060005b8351811015610ebe5760026000858381518110610e7057610e706117ee565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff16610eac5781610ea88161181a565b9250505b80610eb68161181a565b915050610e51565b506000816001600160401b03811115610ed957610ed96118fa565b604051908082528060200260200182016040528015610f02578160200160208202803683370190505b50905060005b8451811015610fb95760026000868381518110610f2757610f276117ee565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff16610fa757848181518110610f6757610f676117ee565b6020026020010151828581518110610f8157610f816117ee565b6001600160a01b039092166020928302919091019091015283610fa38161181a565b9450505b80610fb18161181a565b915050610f08565b5095945050505050565b6001600160a01b03811660009081526002602090815260409182902060030180548351818402810184019094528084526060939283018282801561103057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611012575b50505050509050919050565b6005546001600160a01b031633148061105f57506003546001600160a01b031633145b61107b5760405162461bcd60e51b8152600401610433906117a2565b600754600160a01b900460ff166110a45760405162461bcd60e51b815260040161043390611833565b6007546040516370a0823160e01b81526000916001600160a01b0316906370a08231906110d59030906004016115d5565b602060405180830381865afa1580156110f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111169190611910565b60075460035460405163a9059cbb60e01b81529293506001600160a01b039182169263a9059cbb9261114e92169085906004016118e1565b6020604051808303816000875af115801561116d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611191919061186a565b506003546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156111cb573d6000803e3d6000fd5b50506007805460ff60a01b19169055565b60006111e88284611929565b9392505050565b60006111e8828461193c565b6001600160a01b038281166000908152600260208181526040808420805460099091015495168085528185206005908101548652600484528286208351608081018552815481526001820154958101959095529485015484840152825160a081019384905295969195919487949390926060850192909160038501919082845b81548152602001906001019080831161127b57505050505081525050905060008082604001511180156112c857506001600160a01b03841660009081526002602052604090206006015483115b801561130657506001600160a01b0384166000908152600260205260409020600601546112ff9062015180906108329086906111dc565b8260400151105b6001600160a01b038089166000908152600260208190526040808320909101805460ff19166001908117909155928816825281206007018054939450919261134f908490611857565b90915550506020808301516001600160a01b0386166000908152600290925260408220600801805491929091611386908490611857565b909155505060088054600191906000906113a1908490611857565b90915550506020820151600980546000906113bd908490611857565b90915550508151600090158015906113f1575082516001600160a01b03861660009081526002602052604090206007015410155b80156113fb575081155b15611454576001600160a01b038516600090815260026020526040812060050180546001929061142c908490611857565b9091555050506001600160a01b03841660009081526002602052604090204260069091015560015b86156114d557600754602084015160405163a9059cbb60e01b81526001600160a01b039092169163a9059cbb91611490918991906004016118e1565b6020604051808303816000875af11580156114af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d3919061186a565b505b60075460208401516001600160a01b039091169063a9059cbb908a906114fc9060026111ef565b6040518363ffffffff1660e01b81526004016115199291906118e1565b6020604051808303816000875af1158015611538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155c919061186a565b506020838101516001600160a01b0387811660008181526002855260409081902060050154815194855294840194909452841515838501529251908b1692917f6081787cd1bd02ab1576c52f03e8710d792d460e7881c3155d77d23893f3768b919081900360600190a350506020015195945050505050565b6001600160a01b0391909116815260200190565b80151581146115f757600080fd5b50565b60006020828403121561160c57600080fd5b81356111e8816115e9565b6001600160a01b03811681146115f757600080fd5b60006020828403121561163e57600080fd5b81356111e881611617565b600060208083528351808285015260005b818110156116765785810183015185820160400152820161165a565b506000604082860101526040601f19601f8301168501019250505092915050565b600080604083850312156116aa57600080fd5b50508035926020909101359150565b6000602082840312156116cb57600080fd5b5035919050565b600080600080608085870312156116e857600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000806080858703121561171a57600080fd5b843561172581611617565b9350602085013561173581611617565b9250604085013561174581611617565b9396929550929360600135925050565b6020808252825182820181905260009190848201906040850190845b818110156117965783516001600160a01b031683529284019291840191600101611771565b50909695505050505050565b6020808252602c908201527f4f6e6c79206f776e6572206f72206176617461722063616e20706572666f726d60408201526b103a3434b99030b1ba34b7b760a11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161182c5761182c611804565b5060010190565b6020808252600a90820152696e6f742061637469766560b01b604082015260600190565b80820180821115610bd957610bd9611804565b60006020828403121561187c57600080fd5b81516111e8816115e9565b81810360008312801583831316838312821617156118a7576118a7611804565b5092915050565b634e487b7160e01b600052603160045260246000fd5b6000600160ff1b82016118d9576118d9611804565b506000190190565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561192257600080fd5b5051919050565b81810381811115610bd957610bd9611804565b60008261195957634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220391fffa990c33292753e24df82f9140cd85858d64f7af0cf554e2aad81cfed0264736f6c63430008130033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
