{
"abi": [
{ "type": "constructor", "inputs": [], "stateMutability": "nonpayable" },
{
"type": "function",
"name": "channelId",
"inputs": [],
"outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
"stateMutability": "view"
},
{
"type": "function",
"name": "channelState",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "enum PaymentChannel.ChannelState"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "claimTimeout",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "close",
"inputs": [
{
"name": "channelBalance",
"type": "uint256",
"internalType": "uint256"
},
{ "name": "nonce", "type": "uint256", "internalType": "uint256" },
{ "name": "rawBody", "type": "bytes", "internalType": "bytes" },
{ "name": "signature", "type": "bytes", "internalType": "bytes" }
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "deposit",
"inputs": [
{ "name": "_amount", "type": "uint256", "internalType": "uint256" }
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "expiration",
"inputs": [],
"outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
"stateMutability": "view"
},
{
"type": "function",
"name": "extend",
"inputs": [
{
"name": "newExpiration",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "factory",
"inputs": [],
"outputs": [{ "name": "", "type": "address", "internalType": "address" }],
"stateMutability": "view"
},
{
"type": "function",
"name": "getBalance",
"inputs": [],
"outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
"stateMutability": "view"
},
{
"type": "function",
"name": "getChannelInfo",
"inputs": [],
"outputs": [
{ "name": "id", "type": "uint256", "internalType": "uint256" },
{ "name": "senderAddr", "type": "address", "internalType": "address" },
{
"name": "recipientAddr",
"type": "address",
"internalType": "address"
},
{ "name": "exp", "type": "uint256", "internalType": "uint256" },
{ "name": "balance", "type": "uint256", "internalType": "uint256" },
{
"name": "pricePerRequest",
"type": "uint256",
"internalType": "uint256"
},
{ "name": "lastNonce", "type": "uint256", "internalType": "uint256" },
{
"name": "state",
"type": "uint8",
"internalType": "enum PaymentChannel.ChannelState"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "getEthSignedMessageHash",
"inputs": [
{ "name": "_messageHash", "type": "bytes32", "internalType": "bytes32" }
],
"outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }],
"stateMutability": "pure"
},
{
"type": "function",
"name": "init",
"inputs": [
{ "name": "_recipient", "type": "address", "internalType": "address" },
{ "name": "_sender", "type": "address", "internalType": "address" },
{ "name": "_duration", "type": "uint256", "internalType": "uint256" },
{
"name": "_tokenAddress",
"type": "address",
"internalType": "address"
},
{ "name": "_amount", "type": "uint256", "internalType": "uint256" },
{ "name": "_price", "type": "uint256", "internalType": "uint256" },
{ "name": "_channelId", "type": "uint256", "internalType": "uint256" }
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "lastProcessedNonce",
"inputs": [],
"outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
"stateMutability": "view"
},
{
"type": "function",
"name": "price",
"inputs": [],
"outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
"stateMutability": "view"
},
{
"type": "function",
"name": "recipient",
"inputs": [],
"outputs": [{ "name": "", "type": "address", "internalType": "address" }],
"stateMutability": "view"
},
{
"type": "function",
"name": "recoverSigner",
"inputs": [
{
"name": "_ethSignedMessageHash",
"type": "bytes32",
"internalType": "bytes32"
},
{ "name": "_signature", "type": "bytes", "internalType": "bytes" }
],
"outputs": [{ "name": "", "type": "address", "internalType": "address" }],
"stateMutability": "pure"
},
{
"type": "function",
"name": "sender",
"inputs": [],
"outputs": [{ "name": "", "type": "address", "internalType": "address" }],
"stateMutability": "view"
},
{
"type": "function",
"name": "splitSignature",
"inputs": [{ "name": "sig", "type": "bytes", "internalType": "bytes" }],
"outputs": [
{ "name": "r", "type": "bytes32", "internalType": "bytes32" },
{ "name": "s", "type": "bytes32", "internalType": "bytes32" },
{ "name": "v", "type": "uint8", "internalType": "uint8" }
],
"stateMutability": "pure"
},
{
"type": "function",
"name": "token",
"inputs": [],
"outputs": [
{ "name": "", "type": "address", "internalType": "contract IERC20" }
],
"stateMutability": "view"
},
{
"type": "event",
"name": "ChannelClosed",
"inputs": [
{
"name": "channelId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "sender",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "recipient",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "timestamp",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "amountPaid",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "amountRefunded",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "finalNonce",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"type": "event",
"name": "ChannelCreated",
"inputs": [
{
"name": "channelId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "sender",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "recipient",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "expiration",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "initialBalance",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "price",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"type": "event",
"name": "DepositMade",
"inputs": [
{
"name": "channelId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "sender",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "newBalance",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"type": "event",
"name": "ExpirationExtended",
"inputs": [
{
"name": "channelId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "oldExpiration",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "newExpiration",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"type": "event",
"name": "TimeoutClaimed",
"inputs": [
{
"name": "channelId",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "sender",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "timestamp",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
}
],
"bytecode": {
"object": "0x608060405234602257600e609b565b60146026565b612dd86100a78239612dd890f35b602c565b60405190565b5f80fd5b5f1b90565b90603f60ff916030565b9181191691161790565b634e487b7160e01b5f52602160045260245ffd5b60031115606657565b6049565b90607282605d565b565b607b90606a565b90565b90565b906091608d6097926074565b607e565b82546035565b9055565b60a460025f6081565b56fe60806040526004361015610013575b610bec565b61001d5f3561014c565b806308e8553e146101475780630e1da6c31461014257806312065fe01461013d57806330d281e0146101385780634665096d146101335780634e1b16ce1461012e57806355b550941461012957806366d003ac1461012457806367e404ce1461011f57806392aa5bcb1461011a5780639714378c1461011557806397aba7f914610110578063a035b1fe1461010b578063a7bb580314610106578063b6b55f2514610101578063c45a0155146100fc578063e2cee544146100f7578063fa540801146100f25763fc0c546a0361000e57610bb7565b610ae9565b610a81565b610a3d565b6109fb565b6109c3565b610907565b6108c2565b61073d565b6106e5565b61061d565b6105d9565b61054f565b6104c6565b6103a4565b610356565b61023d565b61020a565b6101d0565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f91031261016a57565b61015c565b1c90565b90565b61018690600861018b930261016f565b610173565b90565b906101999154610176565b90565b6101a860075f9061018e565b90565b90565b6101b7906101ab565b9052565b91906101ce905f602085019401906101ae565b565b34610200576101e0366004610160565b6101fc6101eb61019c565b6101f3610152565b918291826101bb565b0390f35b610158565b5f0190565b346102385761021a366004610160565b6102226112b1565b61022a610152565b8061023481610205565b0390f35b610158565b3461026d5761024d366004610160565b6102696102586112f8565b610260610152565b918291826101bb565b0390f35b610158565b60018060a01b031690565b61028690610272565b90565b6102929061027d565b9052565b634e487b7160e01b5f52602160045260245ffd5b600311156102b457565b610296565b906102c3826102aa565b565b6102ce906102b9565b90565b6102da906102c5565b9052565b959391989796949290986101008701995f88016102fa916101ae565b6020870161030791610289565b6040860161031491610289565b60608501610321916101ae565b6080840161032e916101ae565b60a0830161033b916101ae565b60c08201610348916101ae565b60e001610354916102d1565b565b3461039057610366366004610160565b61038c61037161139b565b94610383989698949194939293610152565b988998896102de565b0390f35b610158565b6103a160045f9061018e565b90565b346103d4576103b4366004610160565b6103d06103bf610395565b6103c7610152565b918291826101bb565b0390f35b610158565b5f80fd5b6103e6816101ab565b036103ed57565b5f80fd5b905035906103fe826103dd565b565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156104465781359167ffffffffffffffff831161044157602001926001830284011161043c57565b610408565b610404565b610400565b91906080838203126104c157610463815f85016103f1565b9261047182602083016103f1565b92604082013567ffffffffffffffff81116104bc578361049291840161040c565b929093606082013567ffffffffffffffff81116104b7576104b3920161040c565b9091565b6103d9565b6103d9565b61015c565b346104fb576104e56104d936600461044b565b94939093929192611c96565b6104ed610152565b806104f781610205565b0390f35b610158565b60ff1690565b61051690600861051b930261016f565b610500565b90565b906105299154610506565b90565b6105375f5f9061051e565b90565b919061054d905f602085019401906102d1565b565b3461057f5761055f366004610160565b61057b61056a61052c565b610572610152565b9182918261053a565b0390f35b610158565b60018060a01b031690565b61059f9060086105a4930261016f565b610584565b90565b906105b2915461058f565b90565b6105c160035f906105a7565b90565b91906105d7905f60208501940190610289565b565b34610609576105e9366004610160565b6106056105f46105b5565b6105fc610152565b918291826105c4565b0390f35b610158565b61061a60025f906105a7565b90565b3461064d5761062d366004610160565b61064961063861060e565b610640610152565b918291826105c4565b0390f35b610158565b61065b8161027d565b0361066257565b5f80fd5b9050359061067382610652565b565b60e0818303126106e05761068b825f8301610666565b926106998360208401610666565b926106a781604085016103f1565b926106b58260608301610666565b926106dd6106c684608085016103f1565b936106d48160a086016103f1565b9360c0016103f1565b90565b61015c565b3461071a576107046106f8366004610675565b959490949391936124fd565b61070c610152565b8061071681610205565b0390f35b610158565b9060208282031261073857610735915f016103f1565b90565b61015c565b3461076b5761075561075036600461071f565b612765565b61075d610152565b8061076781610205565b0390f35b610158565b90565b61077c81610770565b0361078357565b5f80fd5b9050359061079482610773565b565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906107c29061079a565b810190811067ffffffffffffffff8211176107dc57604052565b6107a4565b906107f46107ed610152565b92836107b8565b565b67ffffffffffffffff81116108145761081060209161079a565b0190565b6107a4565b90825f939282370152565b90929192610839610834826107f6565b6107e1565b938185526020850190828401116108555761085392610819565b565b610796565b9080601f830112156108785781602061087593359101610824565b90565b610400565b9190916040818403126108bd57610896835f8301610787565b92602082013567ffffffffffffffff81116108b8576108b5920161085a565b90565b6103d9565b61015c565b346108f3576108ef6108de6108d836600461087d565b906127ae565b6108e6610152565b918291826105c4565b0390f35b610158565b61090460065f9061018e565b90565b3461093757610917366004610160565b6109336109226108f8565b61092a610152565b918291826101bb565b0390f35b610158565b9060208282031261096c575f82013567ffffffffffffffff811161096757610964920161085a565b90565b6103d9565b61015c565b61097a90610770565b9052565b60ff1690565b61098d9061097e565b9052565b6040906109ba6109c194969593966109b060608401985f850190610971565b6020830190610971565b0190610984565b565b346109f6576109f26109de6109d936600461093c565b6128cd565b6109e9939193610152565b93849384610991565b0390f35b610158565b34610a2957610a13610a0e36600461071f565b612cd7565b610a1b610152565b80610a2581610205565b0390f35b610158565b610a3a60085f906105a7565b90565b34610a6d57610a4d366004610160565b610a69610a58610a2e565b610a60610152565b918291826105c4565b0390f35b610158565b610a7e60015f9061018e565b90565b34610ab157610a91366004610160565b610aad610a9c610a72565b610aa4610152565b918291826101bb565b0390f35b610158565b90602082820312610acf57610acc915f01610787565b90565b61015c565b9190610ae7905f60208501940190610971565b565b34610b1957610b15610b04610aff366004610ab6565b612d59565b610b0c610152565b91829182610ad4565b0390f35b610158565b60018060a01b031690565b610b39906008610b3e930261016f565b610b1e565b90565b90610b4c9154610b29565b90565b610b5b60055f90610b41565b90565b90565b610b75610b70610b7a92610272565b610b5e565b610272565b90565b610b8690610b61565b90565b610b9290610b7d565b90565b610b9e90610b89565b9052565b9190610bb5905f60208501940190610b95565b565b34610be757610bc7366004610160565b610be3610bd2610b4f565b610bda610152565b91829182610ba2565b0390f35b610158565b5f80fd5b5f1c90565b610c01610c0691610bf0565b610584565b90565b610c139054610bf5565b90565b60209181520190565b60207f63616c6c00000000000000000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a204f6e6c792073656e6465722063616e205f8201520152565b610c796024604092610c16565b610c8281610c1f565b0190565b610c9b9060208101905f818303910152610c6c565b90565b15610ca557565b610cad610152565b62461bcd60e51b815280610cc360048201610c86565b0390fd5b610cec33610ce6610ce0610cdb6002610c09565b61027d565b9161027d565b14610c9e565b610cf4610dbf565b565b610d02610d0791610bf0565b610500565b90565b610d149054610cf6565b90565b60207f7374617465000000000000000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a20496e76616c6964206368616e6e656c205f8201520152565b610d716025604092610c16565b610d7a81610d17565b0190565b610d939060208101905f818303910152610d64565b90565b15610d9d57565b610da5610152565b62461bcd60e51b815280610dbb60048201610d7e565b0390fd5b610de56001610ddf610dd9610dd35f610d0a565b926102b9565b916102b9565b14610d96565b610ded61115c565b565b610dfb610e0091610bf0565b610173565b90565b610e0d9054610def565b90565b60207f6578706972656420796574000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a204368616e6e656c20686173206e6f74205f8201520152565b610e6a602b604092610c16565b610e7381610e10565b0190565b610e8c9060208101905f818303910152610e5d565b90565b15610e9657565b610e9e610152565b62461bcd60e51b815280610eb460048201610e77565b0390fd5b90565b610ecf610eca610ed492610eb8565b610b5e565b6101ab565b90565b60207f6d00000000000000000000000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a204e6f2066756e647320746f20636c61695f8201520152565b610f316021604092610c16565b610f3a81610ed7565b0190565b610f539060208101905f818303910152610f24565b90565b15610f5d57565b610f65610152565b62461bcd60e51b815280610f7b60048201610f3e565b0390fd5b5f1b90565b90610f9060ff91610f7f565b9181191691161790565b610fa3906102b9565b90565b90565b90610fbe610fb9610fc592610f9a565b610fa6565b8254610f84565b9055565b610fd5610fda91610bf0565b610b1e565b90565b610fe79054610fc9565b90565b60e01b90565b151590565b610ffe81610ff0565b0361100557565b5f80fd5b9050519061101682610ff5565b565b906020828203126110315761102e915f01611009565b90565b61015c565b91602061105792949361105060408201965f830190610289565b01906101ae565b565b611061610152565b3d5f823e3d90fd5b60207f616e73666572206661696c656400000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a2054696d656f757420636c61696d2074725f8201520152565b6110c3602d604092610c16565b6110cc81611069565b0190565b6110e59060208101905f8183039101526110b6565b90565b156110ef57565b6110f7610152565b62461bcd60e51b81528061110d600482016110d0565b0390fd5b61112561112061112a926101ab565b610b5e565b6101ab565b90565b61113690610b7d565b90565b91602061115a92949361115360408201965f8301906101ae565b01906101ae565b565b6111824261117b6111756111706004610e03565b6101ab565b916101ab565b1015610e8f565b61118a6112f8565b6111a6816111a061119a5f610ebb565b916101ab565b11610f56565b6111b160025f610fa9565b6111c36111be6005610fdd565b610b89565b602063a9059cbb916111d56002610c09565b906111f35f86956111fe6111e7610152565b97889687958694610fea565b845260048401611036565b03925af180156112ac57611219915f9161127e575b506110e8565b6112236001610e03565b9061122e6002610c09565b90914261126461125e7f5877a459be8a3085203a9360a1e7e9baf9d156e9f280368fee78086dbe1f4fc893611111565b9361112d565b93611279611270610152565b92839283611139565b0390a3565b61129f915060203d81116112a5575b61129781836107b8565b810190611018565b5f611213565b503d61128d565b611059565b6112b9610cc7565b565b5f90565b6112c890610b7d565b90565b905051906112d8826103dd565b565b906020828203126112f3576112f0915f016112cb565b90565b61015c565b6113006112bb565b5061134a60206113186113136005610fdd565b610b89565b6370a082319061133f61132a306112bf565b92611333610152565b95869485938493610fea565b8352600483016105c4565b03915afa90811561138e575f91611360575b5090565b611381915060203d8111611387575b61137981836107b8565b8101906112da565b5f61135c565b503d61136f565b611059565b5f90565b5f90565b6113a36112bb565b506113ac611393565b506113b5611393565b506113be6112bb565b506113c76112bb565b506113d06112bb565b506113d96112bb565b506113e2611397565b506113ed6001610e03565b906113f86002610c09565b916114036003610c09565b9161140e6004610e03565b916114176112f8565b916114226006610e03565b9161142d6007610e03565b916114375f610d0a565b919796959493929190565b60207f616e2063616c6c00000000000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a204f6e6c7920726563697069656e7420635f8201520152565b61149c6027604092610c16565b6114a581611442565b0190565b6114be9060208101905f81830391015261148f565b90565b156114c857565b6114d0610152565b62461bcd60e51b8152806114e6600482016114a9565b0390fd5b9061151d95949392916115183361151261150c6115076003610c09565b61027d565b9161027d565b146114c1565b61151f565b565b90611553959493929161154e600161154861154261153c5f610d0a565b926102b9565b916102b9565b14610d96565b6119ac565b565b5f7f5061796d656e744368616e6e656c3a20496e76616c6964206e6f6e6365000000910152565b611589601d602092610c16565b61159281611555565b0190565b6115ab9060208101905f81830391015261157c565b90565b156115b557565b6115bd610152565b62461bcd60e51b8152806115d360048201611596565b0390fd5b60207f62616c616e636500000000000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a20496e76616c6964206368616e6e656c205f8201520152565b6116316027604092610c16565b61163a816115d7565b0190565b6116539060208101905f818303910152611624565b90565b1561165d57565b611665610152565b62461bcd60e51b81528061167b6004820161163e565b0390fd5b90565b61168e611693916101ab565b61167f565b9052565b905090565b9091826116ac816116b393611697565b8093610819565b0190565b602080936116da82846116d26116e2966116e99c9a98611682565b018092611682565b018092611682565b019161169c565b90565b60200190565b5190565b611701913691610824565b90565b60207f6500000000000000000000000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a20496e76616c6964207369676e617475725f8201520152565b61175e6021604092610c16565b61176781611704565b0190565b6117809060208101905f818303910152611751565b90565b1561178a57565b611792610152565b62461bcd60e51b8152806117a86004820161176b565b0390fd5b634e487b7160e01b5f52601160045260245ffd5b6117cf6117d5919392936101ab565b926101ab565b82039182116117e057565b6117ac565b906117f15f1991610f7f565b9181191691161790565b90565b9061181361180e61181a92611111565b6117fb565b82546117e5565b9055565b60207f206661696c656400000000000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a205061796d656e74207472616e736665725f8201520152565b6118786027604092610c16565b6118818161181e565b0190565b61189a9060208101905f81830391015261186b565b90565b156118a457565b6118ac610152565b62461bcd60e51b8152806118c260048201611885565b0390fd5b60207f6661696c65640000000000000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a20526566756e64207472616e73666572205f8201520152565b6119206026604092610c16565b611929816118c6565b0190565b6119429060208101905f818303910152611913565b90565b1561194c57565b611954610152565b62461bcd60e51b81528061196a6004820161192d565b0390fd5b6119a36119aa9461199960609498979561198f608086019a5f8701906101ae565b60208501906101ae565b60408301906101ae565b01906101ae565b565b93611a6b90611a658397611a5f611a8c95611a478a611a38611a939b9a6119ee856119e86119e26119dd6007610e03565b6101ab565b916101ab565b116115ae565b6119f66112f8565b9b611a158d611a0e611a0887926101ab565b916101ab565b1115611656565b611a1f6001610e03565b9395919091611a2c610152565b968795602087016116b7565b602082018103825203826107b8565b611a59611a53826116f2565b916116ec565b20612d59565b926116f6565b906127ae565b611a86611a80611a7b6002610c09565b61027d565b9161027d565b14611783565b82906117c0565b90611a9f60025f610fa9565b611aaa8360076117fe565b81611abd611ab75f610ebb565b916101ab565b11611bf6575b80611ad6611ad05f610ebb565b916101ab565b11611b56575b611ae66001610e03565b611af06002610c09565b91611afb6003610c09565b93611b5142919296611b3f611b39611b337fecd9483a3eeee5869735d702da6a98e633032f959185588e1a8c36e754d4dcca97611111565b9761112d565b9761112d565b97611b48610152565b9485948561196e565b0390a4565b611b68611b636005610fdd565b610b89565b602063a9059cbb91611b7a6002610c09565b90611b985f8695611ba3611b8c610152565b97889687958694610fea565b845260048401611036565b03925af18015611bf157611bbe915f91611bc3575b50611945565b611adc565b611be4915060203d8111611bea575b611bdc81836107b8565b810190611018565b5f611bb8565b503d611bd2565b611059565b611c08611c036005610fdd565b610b89565b602063a9059cbb91611c1a6003610c09565b90611c385f8795611c43611c2c610152565b97889687958694610fea565b845260048401611036565b03925af18015611c9157611c5e915f91611c63575b5061189d565b611ac3565b611c84915060203d8111611c8a575b611c7c81836107b8565b810190611018565b5f611c58565b503d611c72565b611059565b90611ca495949392916114ea565b565b90611cda969594939291611cd55f611ccf611cc9611cc35f610d0a565b926102b9565b916102b9565b14610d96565b6122aa565b565b611cf0611ceb611cf592610eb8565b610b5e565b610272565b90565b611d0190611cdc565b90565b60207f7420616464726573730000000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a20496e76616c696420726563697069656e5f8201520152565b611d5e6029604092610c16565b611d6781611d04565b0190565b611d809060208101905f818303910152611d51565b90565b15611d8a57565b611d92610152565b62461bcd60e51b815280611da860048201611d6b565b0390fd5b60207f6464726573730000000000000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a20496e76616c69642073656e64657220615f8201520152565b611e066026604092610c16565b611e0f81611dac565b0190565b611e289060208101905f818303910152611df9565b90565b15611e3257565b611e3a610152565b62461bcd60e51b815280611e5060048201611e13565b0390fd5b60207f6472657373000000000000000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a20496e76616c696420746f6b656e2061645f8201520152565b611eae6025604092610c16565b611eb781611e54565b0190565b611ed09060208101905f818303910152611ea1565b90565b15611eda57565b611ee2610152565b62461bcd60e51b815280611ef860048201611ebb565b0390fd5b60207f7573742062652067726561746572207468616e20300000000000000000000000917f5061796d656e744368616e6e656c3a20496e697469616c20616d6f756e74206d5f8201520152565b611f566035604092610c16565b611f5f81611efc565b0190565b611f789060208101905f818303910152611f49565b90565b15611f8257565b611f8a610152565b62461bcd60e51b815280611fa060048201611f63565b0390fd5b60207f6561746572207468616e20300000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a205072696365206d7573742062652067725f8201520152565b611ffe602c604092610c16565b61200781611fa4565b0190565b6120209060208101905f818303910152611ff1565b90565b1561202a57565b612032610152565b62461bcd60e51b8152806120486004820161200b565b0390fd5b60207f2067726561746572207468616e20300000000000000000000000000000000000917f5061796d656e744368616e6e656c3a204475726174696f6e206d7573742062655f8201520152565b6120a6602f604092610c16565b6120af8161204c565b0190565b6120c89060208101905f818303910152612099565b90565b156120d257565b6120da610152565b62461bcd60e51b8152806120f0600482016120b3565b0390fd5b9061210560018060a01b0391610f7f565b9181191691161790565b90565b9061212761212261212e9261112d565b61210f565b82546120f4565b9055565b612141612147919392936101ab565b926101ab565b820180921161215257565b6117ac565b61216090610b61565b90565b61216c90612157565b90565b61217890612157565b90565b90565b9061219361218e61219a9261216f565b61217b565b82546120f4565b9055565b6040906121c76121ce94969593966121bd60608401985f850190610289565b6020830190610289565b01906101ae565b565b60207f7472616e73666572206661696c65640000000000000000000000000000000000917f5061796d656e744368616e6e656c3a20496e697469616c206465706f736974205f8201520152565b61222a602f604092610c16565b612233816121d0565b0190565b61224c9060208101905f81830391015261221d565b90565b1561225657565b61225e610152565b62461bcd60e51b81528061227460048201612237565b0390fd5b6040906122a16122a8949695939661229760608401985f8501906101ae565b60208301906101ae565b01906101ae565b565b6123c5936123b26123ab6123cc98956123a56123b79561239e6123be986123548d9f9d6122f2856122eb6122e56122e05f611cf8565b61027d565b9161027d565b1415611d83565b6123178361231061230a6123055f611cf8565b61027d565b9161027d565b1415611e2b565b61233c8a61233561232f61232a5f611cf8565b61027d565b9161027d565b1415611ed3565b61234e6123485f610ebb565b916101ab565b11611f7b565b6123708b61236a6123645f610ebb565b916101ab565b11612023565b61238c856123866123805f610ebb565b916101ab565b116120cb565b612397336008612112565b6002612112565b6003612112565b42612132565b60046117fe565b612163565b600561217e565b60066117fe565b60016117fe565b6123d760015f610fa9565b6123e96123e46005610fdd565b610b89565b60206323b872dd9133906124195f612400306112bf565b956124248861240d610152565b98899788968795610fea565b85526004850161219e565b03925af180156124f85761243f915f916124ca575b5061224f565b6124496001610e03565b6124536002610c09565b61245d6003610c09565b916124686004610e03565b936124736006610e03565b946124c56124b36124ad6124a77ffd150ce817ab1c0882a105ce18b55642f117bfa03930a45e7ea3d013f78e967d96611111565b9661112d565b9661112d565b966124bc610152565b93849384612278565b0390a4565b6124eb915060203d81116124f1575b6124e381836107b8565b810190611018565b5f612439565b503d6124d9565b611059565b9061250c969594939291611ca6565b565b61253c906125373361253161252b6125266002610c09565b61027d565b9161027d565b14610c9e565b61253e565b565b61256d90612568600161256261255c6125565f610d0a565b926102b9565b916102b9565b14610d96565b6126bf565b565b60207f757374206265206c617465720000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a204e65772065787069726174696f6e206d5f8201520152565b6125c9602c604092610c16565b6125d28161256f565b0190565b6125eb9060208101905f8183039101526125bc565b90565b156125f557565b6125fd610152565b62461bcd60e51b815280612613600482016125d6565b0390fd5b60207f75737420626520696e2074686520667574757265000000000000000000000000917f5061796d656e744368616e6e656c3a204e65772065787069726174696f6e206d5f8201520152565b6126716034604092610c16565b61267a81612617565b0190565b6126939060208101905f818303910152612664565b90565b1561269d57565b6126a5610152565b62461bcd60e51b8152806126bb6004820161267e565b0390fd5b6126e4816126de6126d86126d36004610e03565b6101ab565b916101ab565b116125ee565b612700816126fa6126f4426101ab565b916101ab565b11612696565b61270a6004610e03565b6127158260046117fe565b61271f6001610e03565b909161274b7f7f201ba94f1edd1b6bc4682a0861aa5b75b1742feacc168871d6600710e8084c92611111565b92612760612757610152565b92839283611139565b0390a2565b61276e9061250e565b565b6127a56127ac9461279b606094989795612791608086019a5f870190610971565b6020850190610984565b6040830190610971565b0190610971565b565b6127de5f916127c76020946127c1611393565b506128cd565b9093919390936127d5610152565b94859485612770565b838052039060015afa156127f9576127f65f51610f7f565b90565b611059565b5f90565b5f90565b90565b61281d61281861282292612806565b610b5e565b6101ab565b90565b60207f65206c656e677468000000000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a20496e76616c6964207369676e617475725f8201520152565b61287f6028604092610c16565b61288881612825565b0190565b6128a19060208101905f818303910152612872565b90565b156128ab57565b6128b3610152565b62461bcd60e51b8152806128c96004820161288c565b0390fd5b6128d56127fe565b506128de6127fe565b506128e7612802565b5061290d6128f4826116f2565b6129076129016041612809565b916101ab565b146128a4565b602081015191606060408301519201515f1a90565b6129509061294b3361294561293f61293a6002610c09565b61027d565b9161027d565b14610c9e565b612952565b565b6129819061297c600161297661297061296a5f610d0a565b926102b9565b916102b9565b14610d96565b612a2b565b565b60207f7265640000000000000000000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a204368616e6e656c2068617320657870695f8201520152565b6129dd6023604092610c16565b6129e681612983565b0190565b6129ff9060208101905f8183039101526129d0565b90565b15612a0957565b612a11610152565b62461bcd60e51b815280612a27600482016129ea565b0390fd5b612a5990612a5442612a4e612a48612a436004610e03565b6101ab565b916101ab565b10612a02565b612bab565b565b60207f7573742062652067726561746572207468616e20300000000000000000000000917f5061796d656e744368616e6e656c3a204465706f73697420616d6f756e74206d5f8201520152565b612ab56035604092610c16565b612abe81612a5b565b0190565b612ad79060208101905f818303910152612aa8565b90565b15612ae157565b612ae9610152565b62461bcd60e51b815280612aff60048201612ac2565b0390fd5b60207f206661696c656400000000000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a204465706f736974207472616e736665725f8201520152565b612b5d6027604092610c16565b612b6681612b03565b0190565b612b7f9060208101905f818303910152612b50565b90565b15612b8957565b612b91610152565b62461bcd60e51b815280612ba760048201612b6a565b0390fd5b612bc781612bc1612bbb5f610ebb565b916101ab565b11612ada565b612bd9612bd46005610fdd565b610b89565b60206323b872dd91612beb6002610c09565b90612c125f612bf9306112bf565b95612c1d88612c06610152565b98899788968795610fea565b85526004850161219e565b03925af18015612cd257612c38915f91612ca4575b50612b82565b612c426001610e03565b90612c4d6002610c09565b9091612c576112f8565b612c8a612c847ff7748ed362ae6427631c778e495f7eb63b00c0794b6066744a0cba2c59135a6593611111565b9361112d565b93612c9f612c96610152565b92839283611139565b0390a3565b612cc5915060203d8111612ccb575b612cbd81836107b8565b810190611018565b5f612c32565b503d612cb3565b611059565b612ce090612922565b565b905090565b5f7f19457468657265756d205369676e6564204d6573736167653a0a333200000000910152565b612d1a601c8092612ce2565b612d2381612ce7565b0190565b90565b612d36612d3b91610770565b612d27565b9052565b90612d55612d4e602093612d0e565b8092612d2a565b0190565b612d8c612d7d91612d686127fe565b50612d71610152565b92839160208301612d3f565b602082018103825203826107b8565b612d9e612d98826116f2565b916116ec565b209056fea2646970667358221220a81e9e945a772fc4d4529cf23a0c28973c459e5a9d3db191f84587bcb9dc14f864736f6c634300081c0033",
"sourceMap": "707:13346:2:-:0;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;707:13346:2;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;4147:139::-;4245:34;4260:19;4245:34;;:::i;:::-;4147:139::o",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x60806040526004361015610013575b610bec565b61001d5f3561014c565b806308e8553e146101475780630e1da6c31461014257806312065fe01461013d57806330d281e0146101385780634665096d146101335780634e1b16ce1461012e57806355b550941461012957806366d003ac1461012457806367e404ce1461011f57806392aa5bcb1461011a5780639714378c1461011557806397aba7f914610110578063a035b1fe1461010b578063a7bb580314610106578063b6b55f2514610101578063c45a0155146100fc578063e2cee544146100f7578063fa540801146100f25763fc0c546a0361000e57610bb7565b610ae9565b610a81565b610a3d565b6109fb565b6109c3565b610907565b6108c2565b61073d565b6106e5565b61061d565b6105d9565b61054f565b6104c6565b6103a4565b610356565b61023d565b61020a565b6101d0565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f91031261016a57565b61015c565b1c90565b90565b61018690600861018b930261016f565b610173565b90565b906101999154610176565b90565b6101a860075f9061018e565b90565b90565b6101b7906101ab565b9052565b91906101ce905f602085019401906101ae565b565b34610200576101e0366004610160565b6101fc6101eb61019c565b6101f3610152565b918291826101bb565b0390f35b610158565b5f0190565b346102385761021a366004610160565b6102226112b1565b61022a610152565b8061023481610205565b0390f35b610158565b3461026d5761024d366004610160565b6102696102586112f8565b610260610152565b918291826101bb565b0390f35b610158565b60018060a01b031690565b61028690610272565b90565b6102929061027d565b9052565b634e487b7160e01b5f52602160045260245ffd5b600311156102b457565b610296565b906102c3826102aa565b565b6102ce906102b9565b90565b6102da906102c5565b9052565b959391989796949290986101008701995f88016102fa916101ae565b6020870161030791610289565b6040860161031491610289565b60608501610321916101ae565b6080840161032e916101ae565b60a0830161033b916101ae565b60c08201610348916101ae565b60e001610354916102d1565b565b3461039057610366366004610160565b61038c61037161139b565b94610383989698949194939293610152565b988998896102de565b0390f35b610158565b6103a160045f9061018e565b90565b346103d4576103b4366004610160565b6103d06103bf610395565b6103c7610152565b918291826101bb565b0390f35b610158565b5f80fd5b6103e6816101ab565b036103ed57565b5f80fd5b905035906103fe826103dd565b565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156104465781359167ffffffffffffffff831161044157602001926001830284011161043c57565b610408565b610404565b610400565b91906080838203126104c157610463815f85016103f1565b9261047182602083016103f1565b92604082013567ffffffffffffffff81116104bc578361049291840161040c565b929093606082013567ffffffffffffffff81116104b7576104b3920161040c565b9091565b6103d9565b6103d9565b61015c565b346104fb576104e56104d936600461044b565b94939093929192611c96565b6104ed610152565b806104f781610205565b0390f35b610158565b60ff1690565b61051690600861051b930261016f565b610500565b90565b906105299154610506565b90565b6105375f5f9061051e565b90565b919061054d905f602085019401906102d1565b565b3461057f5761055f366004610160565b61057b61056a61052c565b610572610152565b9182918261053a565b0390f35b610158565b60018060a01b031690565b61059f9060086105a4930261016f565b610584565b90565b906105b2915461058f565b90565b6105c160035f906105a7565b90565b91906105d7905f60208501940190610289565b565b34610609576105e9366004610160565b6106056105f46105b5565b6105fc610152565b918291826105c4565b0390f35b610158565b61061a60025f906105a7565b90565b3461064d5761062d366004610160565b61064961063861060e565b610640610152565b918291826105c4565b0390f35b610158565b61065b8161027d565b0361066257565b5f80fd5b9050359061067382610652565b565b60e0818303126106e05761068b825f8301610666565b926106998360208401610666565b926106a781604085016103f1565b926106b58260608301610666565b926106dd6106c684608085016103f1565b936106d48160a086016103f1565b9360c0016103f1565b90565b61015c565b3461071a576107046106f8366004610675565b959490949391936124fd565b61070c610152565b8061071681610205565b0390f35b610158565b9060208282031261073857610735915f016103f1565b90565b61015c565b3461076b5761075561075036600461071f565b612765565b61075d610152565b8061076781610205565b0390f35b610158565b90565b61077c81610770565b0361078357565b5f80fd5b9050359061079482610773565b565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906107c29061079a565b810190811067ffffffffffffffff8211176107dc57604052565b6107a4565b906107f46107ed610152565b92836107b8565b565b67ffffffffffffffff81116108145761081060209161079a565b0190565b6107a4565b90825f939282370152565b90929192610839610834826107f6565b6107e1565b938185526020850190828401116108555761085392610819565b565b610796565b9080601f830112156108785781602061087593359101610824565b90565b610400565b9190916040818403126108bd57610896835f8301610787565b92602082013567ffffffffffffffff81116108b8576108b5920161085a565b90565b6103d9565b61015c565b346108f3576108ef6108de6108d836600461087d565b906127ae565b6108e6610152565b918291826105c4565b0390f35b610158565b61090460065f9061018e565b90565b3461093757610917366004610160565b6109336109226108f8565b61092a610152565b918291826101bb565b0390f35b610158565b9060208282031261096c575f82013567ffffffffffffffff811161096757610964920161085a565b90565b6103d9565b61015c565b61097a90610770565b9052565b60ff1690565b61098d9061097e565b9052565b6040906109ba6109c194969593966109b060608401985f850190610971565b6020830190610971565b0190610984565b565b346109f6576109f26109de6109d936600461093c565b6128cd565b6109e9939193610152565b93849384610991565b0390f35b610158565b34610a2957610a13610a0e36600461071f565b612cd7565b610a1b610152565b80610a2581610205565b0390f35b610158565b610a3a60085f906105a7565b90565b34610a6d57610a4d366004610160565b610a69610a58610a2e565b610a60610152565b918291826105c4565b0390f35b610158565b610a7e60015f9061018e565b90565b34610ab157610a91366004610160565b610aad610a9c610a72565b610aa4610152565b918291826101bb565b0390f35b610158565b90602082820312610acf57610acc915f01610787565b90565b61015c565b9190610ae7905f60208501940190610971565b565b34610b1957610b15610b04610aff366004610ab6565b612d59565b610b0c610152565b91829182610ad4565b0390f35b610158565b60018060a01b031690565b610b39906008610b3e930261016f565b610b1e565b90565b90610b4c9154610b29565b90565b610b5b60055f90610b41565b90565b90565b610b75610b70610b7a92610272565b610b5e565b610272565b90565b610b8690610b61565b90565b610b9290610b7d565b90565b610b9e90610b89565b9052565b9190610bb5905f60208501940190610b95565b565b34610be757610bc7366004610160565b610be3610bd2610b4f565b610bda610152565b91829182610ba2565b0390f35b610158565b5f80fd5b5f1c90565b610c01610c0691610bf0565b610584565b90565b610c139054610bf5565b90565b60209181520190565b60207f63616c6c00000000000000000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a204f6e6c792073656e6465722063616e205f8201520152565b610c796024604092610c16565b610c8281610c1f565b0190565b610c9b9060208101905f818303910152610c6c565b90565b15610ca557565b610cad610152565b62461bcd60e51b815280610cc360048201610c86565b0390fd5b610cec33610ce6610ce0610cdb6002610c09565b61027d565b9161027d565b14610c9e565b610cf4610dbf565b565b610d02610d0791610bf0565b610500565b90565b610d149054610cf6565b90565b60207f7374617465000000000000000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a20496e76616c6964206368616e6e656c205f8201520152565b610d716025604092610c16565b610d7a81610d17565b0190565b610d939060208101905f818303910152610d64565b90565b15610d9d57565b610da5610152565b62461bcd60e51b815280610dbb60048201610d7e565b0390fd5b610de56001610ddf610dd9610dd35f610d0a565b926102b9565b916102b9565b14610d96565b610ded61115c565b565b610dfb610e0091610bf0565b610173565b90565b610e0d9054610def565b90565b60207f6578706972656420796574000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a204368616e6e656c20686173206e6f74205f8201520152565b610e6a602b604092610c16565b610e7381610e10565b0190565b610e8c9060208101905f818303910152610e5d565b90565b15610e9657565b610e9e610152565b62461bcd60e51b815280610eb460048201610e77565b0390fd5b90565b610ecf610eca610ed492610eb8565b610b5e565b6101ab565b90565b60207f6d00000000000000000000000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a204e6f2066756e647320746f20636c61695f8201520152565b610f316021604092610c16565b610f3a81610ed7565b0190565b610f539060208101905f818303910152610f24565b90565b15610f5d57565b610f65610152565b62461bcd60e51b815280610f7b60048201610f3e565b0390fd5b5f1b90565b90610f9060ff91610f7f565b9181191691161790565b610fa3906102b9565b90565b90565b90610fbe610fb9610fc592610f9a565b610fa6565b8254610f84565b9055565b610fd5610fda91610bf0565b610b1e565b90565b610fe79054610fc9565b90565b60e01b90565b151590565b610ffe81610ff0565b0361100557565b5f80fd5b9050519061101682610ff5565b565b906020828203126110315761102e915f01611009565b90565b61015c565b91602061105792949361105060408201965f830190610289565b01906101ae565b565b611061610152565b3d5f823e3d90fd5b60207f616e73666572206661696c656400000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a2054696d656f757420636c61696d2074725f8201520152565b6110c3602d604092610c16565b6110cc81611069565b0190565b6110e59060208101905f8183039101526110b6565b90565b156110ef57565b6110f7610152565b62461bcd60e51b81528061110d600482016110d0565b0390fd5b61112561112061112a926101ab565b610b5e565b6101ab565b90565b61113690610b7d565b90565b91602061115a92949361115360408201965f8301906101ae565b01906101ae565b565b6111824261117b6111756111706004610e03565b6101ab565b916101ab565b1015610e8f565b61118a6112f8565b6111a6816111a061119a5f610ebb565b916101ab565b11610f56565b6111b160025f610fa9565b6111c36111be6005610fdd565b610b89565b602063a9059cbb916111d56002610c09565b906111f35f86956111fe6111e7610152565b97889687958694610fea565b845260048401611036565b03925af180156112ac57611219915f9161127e575b506110e8565b6112236001610e03565b9061122e6002610c09565b90914261126461125e7f5877a459be8a3085203a9360a1e7e9baf9d156e9f280368fee78086dbe1f4fc893611111565b9361112d565b93611279611270610152565b92839283611139565b0390a3565b61129f915060203d81116112a5575b61129781836107b8565b810190611018565b5f611213565b503d61128d565b611059565b6112b9610cc7565b565b5f90565b6112c890610b7d565b90565b905051906112d8826103dd565b565b906020828203126112f3576112f0915f016112cb565b90565b61015c565b6113006112bb565b5061134a60206113186113136005610fdd565b610b89565b6370a082319061133f61132a306112bf565b92611333610152565b95869485938493610fea565b8352600483016105c4565b03915afa90811561138e575f91611360575b5090565b611381915060203d8111611387575b61137981836107b8565b8101906112da565b5f61135c565b503d61136f565b611059565b5f90565b5f90565b6113a36112bb565b506113ac611393565b506113b5611393565b506113be6112bb565b506113c76112bb565b506113d06112bb565b506113d96112bb565b506113e2611397565b506113ed6001610e03565b906113f86002610c09565b916114036003610c09565b9161140e6004610e03565b916114176112f8565b916114226006610e03565b9161142d6007610e03565b916114375f610d0a565b919796959493929190565b60207f616e2063616c6c00000000000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a204f6e6c7920726563697069656e7420635f8201520152565b61149c6027604092610c16565b6114a581611442565b0190565b6114be9060208101905f81830391015261148f565b90565b156114c857565b6114d0610152565b62461bcd60e51b8152806114e6600482016114a9565b0390fd5b9061151d95949392916115183361151261150c6115076003610c09565b61027d565b9161027d565b146114c1565b61151f565b565b90611553959493929161154e600161154861154261153c5f610d0a565b926102b9565b916102b9565b14610d96565b6119ac565b565b5f7f5061796d656e744368616e6e656c3a20496e76616c6964206e6f6e6365000000910152565b611589601d602092610c16565b61159281611555565b0190565b6115ab9060208101905f81830391015261157c565b90565b156115b557565b6115bd610152565b62461bcd60e51b8152806115d360048201611596565b0390fd5b60207f62616c616e636500000000000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a20496e76616c6964206368616e6e656c205f8201520152565b6116316027604092610c16565b61163a816115d7565b0190565b6116539060208101905f818303910152611624565b90565b1561165d57565b611665610152565b62461bcd60e51b81528061167b6004820161163e565b0390fd5b90565b61168e611693916101ab565b61167f565b9052565b905090565b9091826116ac816116b393611697565b8093610819565b0190565b602080936116da82846116d26116e2966116e99c9a98611682565b018092611682565b018092611682565b019161169c565b90565b60200190565b5190565b611701913691610824565b90565b60207f6500000000000000000000000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a20496e76616c6964207369676e617475725f8201520152565b61175e6021604092610c16565b61176781611704565b0190565b6117809060208101905f818303910152611751565b90565b1561178a57565b611792610152565b62461bcd60e51b8152806117a86004820161176b565b0390fd5b634e487b7160e01b5f52601160045260245ffd5b6117cf6117d5919392936101ab565b926101ab565b82039182116117e057565b6117ac565b906117f15f1991610f7f565b9181191691161790565b90565b9061181361180e61181a92611111565b6117fb565b82546117e5565b9055565b60207f206661696c656400000000000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a205061796d656e74207472616e736665725f8201520152565b6118786027604092610c16565b6118818161181e565b0190565b61189a9060208101905f81830391015261186b565b90565b156118a457565b6118ac610152565b62461bcd60e51b8152806118c260048201611885565b0390fd5b60207f6661696c65640000000000000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a20526566756e64207472616e73666572205f8201520152565b6119206026604092610c16565b611929816118c6565b0190565b6119429060208101905f818303910152611913565b90565b1561194c57565b611954610152565b62461bcd60e51b81528061196a6004820161192d565b0390fd5b6119a36119aa9461199960609498979561198f608086019a5f8701906101ae565b60208501906101ae565b60408301906101ae565b01906101ae565b565b93611a6b90611a658397611a5f611a8c95611a478a611a38611a939b9a6119ee856119e86119e26119dd6007610e03565b6101ab565b916101ab565b116115ae565b6119f66112f8565b9b611a158d611a0e611a0887926101ab565b916101ab565b1115611656565b611a1f6001610e03565b9395919091611a2c610152565b968795602087016116b7565b602082018103825203826107b8565b611a59611a53826116f2565b916116ec565b20612d59565b926116f6565b906127ae565b611a86611a80611a7b6002610c09565b61027d565b9161027d565b14611783565b82906117c0565b90611a9f60025f610fa9565b611aaa8360076117fe565b81611abd611ab75f610ebb565b916101ab565b11611bf6575b80611ad6611ad05f610ebb565b916101ab565b11611b56575b611ae66001610e03565b611af06002610c09565b91611afb6003610c09565b93611b5142919296611b3f611b39611b337fecd9483a3eeee5869735d702da6a98e633032f959185588e1a8c36e754d4dcca97611111565b9761112d565b9761112d565b97611b48610152565b9485948561196e565b0390a4565b611b68611b636005610fdd565b610b89565b602063a9059cbb91611b7a6002610c09565b90611b985f8695611ba3611b8c610152565b97889687958694610fea565b845260048401611036565b03925af18015611bf157611bbe915f91611bc3575b50611945565b611adc565b611be4915060203d8111611bea575b611bdc81836107b8565b810190611018565b5f611bb8565b503d611bd2565b611059565b611c08611c036005610fdd565b610b89565b602063a9059cbb91611c1a6003610c09565b90611c385f8795611c43611c2c610152565b97889687958694610fea565b845260048401611036565b03925af18015611c9157611c5e915f91611c63575b5061189d565b611ac3565b611c84915060203d8111611c8a575b611c7c81836107b8565b810190611018565b5f611c58565b503d611c72565b611059565b90611ca495949392916114ea565b565b90611cda969594939291611cd55f611ccf611cc9611cc35f610d0a565b926102b9565b916102b9565b14610d96565b6122aa565b565b611cf0611ceb611cf592610eb8565b610b5e565b610272565b90565b611d0190611cdc565b90565b60207f7420616464726573730000000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a20496e76616c696420726563697069656e5f8201520152565b611d5e6029604092610c16565b611d6781611d04565b0190565b611d809060208101905f818303910152611d51565b90565b15611d8a57565b611d92610152565b62461bcd60e51b815280611da860048201611d6b565b0390fd5b60207f6464726573730000000000000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a20496e76616c69642073656e64657220615f8201520152565b611e066026604092610c16565b611e0f81611dac565b0190565b611e289060208101905f818303910152611df9565b90565b15611e3257565b611e3a610152565b62461bcd60e51b815280611e5060048201611e13565b0390fd5b60207f6472657373000000000000000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a20496e76616c696420746f6b656e2061645f8201520152565b611eae6025604092610c16565b611eb781611e54565b0190565b611ed09060208101905f818303910152611ea1565b90565b15611eda57565b611ee2610152565b62461bcd60e51b815280611ef860048201611ebb565b0390fd5b60207f7573742062652067726561746572207468616e20300000000000000000000000917f5061796d656e744368616e6e656c3a20496e697469616c20616d6f756e74206d5f8201520152565b611f566035604092610c16565b611f5f81611efc565b0190565b611f789060208101905f818303910152611f49565b90565b15611f8257565b611f8a610152565b62461bcd60e51b815280611fa060048201611f63565b0390fd5b60207f6561746572207468616e20300000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a205072696365206d7573742062652067725f8201520152565b611ffe602c604092610c16565b61200781611fa4565b0190565b6120209060208101905f818303910152611ff1565b90565b1561202a57565b612032610152565b62461bcd60e51b8152806120486004820161200b565b0390fd5b60207f2067726561746572207468616e20300000000000000000000000000000000000917f5061796d656e744368616e6e656c3a204475726174696f6e206d7573742062655f8201520152565b6120a6602f604092610c16565b6120af8161204c565b0190565b6120c89060208101905f818303910152612099565b90565b156120d257565b6120da610152565b62461bcd60e51b8152806120f0600482016120b3565b0390fd5b9061210560018060a01b0391610f7f565b9181191691161790565b90565b9061212761212261212e9261112d565b61210f565b82546120f4565b9055565b612141612147919392936101ab565b926101ab565b820180921161215257565b6117ac565b61216090610b61565b90565b61216c90612157565b90565b61217890612157565b90565b90565b9061219361218e61219a9261216f565b61217b565b82546120f4565b9055565b6040906121c76121ce94969593966121bd60608401985f850190610289565b6020830190610289565b01906101ae565b565b60207f7472616e73666572206661696c65640000000000000000000000000000000000917f5061796d656e744368616e6e656c3a20496e697469616c206465706f736974205f8201520152565b61222a602f604092610c16565b612233816121d0565b0190565b61224c9060208101905f81830391015261221d565b90565b1561225657565b61225e610152565b62461bcd60e51b81528061227460048201612237565b0390fd5b6040906122a16122a8949695939661229760608401985f8501906101ae565b60208301906101ae565b01906101ae565b565b6123c5936123b26123ab6123cc98956123a56123b79561239e6123be986123548d9f9d6122f2856122eb6122e56122e05f611cf8565b61027d565b9161027d565b1415611d83565b6123178361231061230a6123055f611cf8565b61027d565b9161027d565b1415611e2b565b61233c8a61233561232f61232a5f611cf8565b61027d565b9161027d565b1415611ed3565b61234e6123485f610ebb565b916101ab565b11611f7b565b6123708b61236a6123645f610ebb565b916101ab565b11612023565b61238c856123866123805f610ebb565b916101ab565b116120cb565b612397336008612112565b6002612112565b6003612112565b42612132565b60046117fe565b612163565b600561217e565b60066117fe565b60016117fe565b6123d760015f610fa9565b6123e96123e46005610fdd565b610b89565b60206323b872dd9133906124195f612400306112bf565b956124248861240d610152565b98899788968795610fea565b85526004850161219e565b03925af180156124f85761243f915f916124ca575b5061224f565b6124496001610e03565b6124536002610c09565b61245d6003610c09565b916124686004610e03565b936124736006610e03565b946124c56124b36124ad6124a77ffd150ce817ab1c0882a105ce18b55642f117bfa03930a45e7ea3d013f78e967d96611111565b9661112d565b9661112d565b966124bc610152565b93849384612278565b0390a4565b6124eb915060203d81116124f1575b6124e381836107b8565b810190611018565b5f612439565b503d6124d9565b611059565b9061250c969594939291611ca6565b565b61253c906125373361253161252b6125266002610c09565b61027d565b9161027d565b14610c9e565b61253e565b565b61256d90612568600161256261255c6125565f610d0a565b926102b9565b916102b9565b14610d96565b6126bf565b565b60207f757374206265206c617465720000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a204e65772065787069726174696f6e206d5f8201520152565b6125c9602c604092610c16565b6125d28161256f565b0190565b6125eb9060208101905f8183039101526125bc565b90565b156125f557565b6125fd610152565b62461bcd60e51b815280612613600482016125d6565b0390fd5b60207f75737420626520696e2074686520667574757265000000000000000000000000917f5061796d656e744368616e6e656c3a204e65772065787069726174696f6e206d5f8201520152565b6126716034604092610c16565b61267a81612617565b0190565b6126939060208101905f818303910152612664565b90565b1561269d57565b6126a5610152565b62461bcd60e51b8152806126bb6004820161267e565b0390fd5b6126e4816126de6126d86126d36004610e03565b6101ab565b916101ab565b116125ee565b612700816126fa6126f4426101ab565b916101ab565b11612696565b61270a6004610e03565b6127158260046117fe565b61271f6001610e03565b909161274b7f7f201ba94f1edd1b6bc4682a0861aa5b75b1742feacc168871d6600710e8084c92611111565b92612760612757610152565b92839283611139565b0390a2565b61276e9061250e565b565b6127a56127ac9461279b606094989795612791608086019a5f870190610971565b6020850190610984565b6040830190610971565b0190610971565b565b6127de5f916127c76020946127c1611393565b506128cd565b9093919390936127d5610152565b94859485612770565b838052039060015afa156127f9576127f65f51610f7f565b90565b611059565b5f90565b5f90565b90565b61281d61281861282292612806565b610b5e565b6101ab565b90565b60207f65206c656e677468000000000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a20496e76616c6964207369676e617475725f8201520152565b61287f6028604092610c16565b61288881612825565b0190565b6128a19060208101905f818303910152612872565b90565b156128ab57565b6128b3610152565b62461bcd60e51b8152806128c96004820161288c565b0390fd5b6128d56127fe565b506128de6127fe565b506128e7612802565b5061290d6128f4826116f2565b6129076129016041612809565b916101ab565b146128a4565b602081015191606060408301519201515f1a90565b6129509061294b3361294561293f61293a6002610c09565b61027d565b9161027d565b14610c9e565b612952565b565b6129819061297c600161297661297061296a5f610d0a565b926102b9565b916102b9565b14610d96565b612a2b565b565b60207f7265640000000000000000000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a204368616e6e656c2068617320657870695f8201520152565b6129dd6023604092610c16565b6129e681612983565b0190565b6129ff9060208101905f8183039101526129d0565b90565b15612a0957565b612a11610152565b62461bcd60e51b815280612a27600482016129ea565b0390fd5b612a5990612a5442612a4e612a48612a436004610e03565b6101ab565b916101ab565b10612a02565b612bab565b565b60207f7573742062652067726561746572207468616e20300000000000000000000000917f5061796d656e744368616e6e656c3a204465706f73697420616d6f756e74206d5f8201520152565b612ab56035604092610c16565b612abe81612a5b565b0190565b612ad79060208101905f818303910152612aa8565b90565b15612ae157565b612ae9610152565b62461bcd60e51b815280612aff60048201612ac2565b0390fd5b60207f206661696c656400000000000000000000000000000000000000000000000000917f5061796d656e744368616e6e656c3a204465706f736974207472616e736665725f8201520152565b612b5d6027604092610c16565b612b6681612b03565b0190565b612b7f9060208101905f818303910152612b50565b90565b15612b8957565b612b91610152565b62461bcd60e51b815280612ba760048201612b6a565b0390fd5b612bc781612bc1612bbb5f610ebb565b916101ab565b11612ada565b612bd9612bd46005610fdd565b610b89565b60206323b872dd91612beb6002610c09565b90612c125f612bf9306112bf565b95612c1d88612c06610152565b98899788968795610fea565b85526004850161219e565b03925af18015612cd257612c38915f91612ca4575b50612b82565b612c426001610e03565b90612c4d6002610c09565b9091612c576112f8565b612c8a612c847ff7748ed362ae6427631c778e495f7eb63b00c0794b6066744a0cba2c59135a6593611111565b9361112d565b93612c9f612c96610152565b92839283611139565b0390a3565b612cc5915060203d8111612ccb575b612cbd81836107b8565b810190611018565b5f612c32565b503d612cb3565b611059565b612ce090612922565b565b905090565b5f7f19457468657265756d205369676e6564204d6573736167653a0a333200000000910152565b612d1a601c8092612ce2565b612d2381612ce7565b0190565b90565b612d36612d3b91610770565b612d27565b9052565b90612d55612d4e602093612d0e565b8092612d2a565b0190565b612d8c612d7d91612d686127fe565b50612d71610152565b92839160208301612d3f565b602082018103825203826107b8565b612d9e612d98826116f2565b916116ec565b209056fea2646970667358221220a81e9e945a772fc4d4529cf23a0c28973c459e5a9d3db191f84587bcb9dc14f864736f6c634300081c0033",
"sourceMap": "707:13346:2:-:0;;;;;;;;;-1:-1:-1;707:13346:2;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;1591:33::-;;;;;;:::i;:::-;;:::o;707:13346::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;707:13346:2;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;1309:25::-;;;;;;:::i;:::-;;:::o;707:13346::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;932:32::-;;;;;;:::i;:::-;;:::o;707:13346::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;1193:24::-;;;;;;:::i;:::-;;:::o;707:13346::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;1113:21::-;;;;;;:::i;:::-;;:::o;707:13346::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;;:::o;:::-;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;1501:20::-;;;;;;:::i;:::-;;:::o;707:13346::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;1712:22::-;;;;;;:::i;:::-;;:::o;707:13346::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;1030:24::-;;;;;;:::i;:::-;;:::o;707:13346::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::o;1403:19::-;;;;;;:::i;:::-;;:::o;707:13346::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;3241:119;3273:69;3281:10;:20;;3295:6;;;:::i;:::-;3281:20;:::i;:::-;;;:::i;:::-;;3273:69;:::i;:::-;3352:1;;:::i;:::-;3241:119::o;707:13346::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;3667:190;3726:113;10542:17;3747:29;;:12;;;:::i;:::-;3763:13;3747:29;:::i;:::-;;;:::i;:::-;;3726:113;:::i;:::-;3849:1;;:::i;:::-;3667:190::o;707:13346::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;;:::o;:::-;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;:::o;10486:618::-;10571:119;10592:15;:29;;10611:10;;;:::i;:::-;10592:29;:::i;:::-;;;:::i;:::-;;;10571:119;:::i;:::-;10719:12;;:::i;:::-;10741:57;10749:7;:11;;10759:1;10749:11;:::i;:::-;;;:::i;:::-;;10741:57;:::i;:::-;10854:34;10869:19;10854:34;;:::i;:::-;10920:14;:5;;;:::i;:::-;:14;:::i;:::-;:31;:14;10935:6;;;;:::i;:::-;10943:7;10920:31;;10943:7;10920:31;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;10899:123;10920:31;;;;;10486:618;10899:123;;:::i;:::-;11053:9;;;:::i;:::-;11064:6;;;;:::i;:::-;11072:7;11081:15;;11038:59;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;10486:618::o;10920:31::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;10486:618::-;;;:::i;:::-;:::o;707:13346::-;;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;:::i;11249:106::-;11292:7;;:::i;:::-;11318:5;:30;;:15;:5;;;:::i;:::-;:15;:::i;:::-;;11342:4;11318:30;11334:13;11342:4;11334:13;:::i;:::-;11318:30;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;11249:106;11311:37;;:::o;11318:30::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;707:13346::-;;;:::o;:::-;;;:::o;11778:559::-;11864:10;;:::i;:::-;11888:18;;;:::i;:::-;11920:21;;;:::i;:::-;11955:11;;;:::i;:::-;11980:15;;;:::i;:::-;12009:23;;;:::i;:::-;12046:17;;;:::i;:::-;12077:18;;;:::i;:::-;12141:9;;;;:::i;:::-;12164:6;;;;:::i;:::-;12184:9;;;;:::i;:::-;12207:10;;;;:::i;:::-;12231:12;;;:::i;:::-;12257:5;;;;:::i;:::-;12276:18;;;;:::i;:::-;12308:12;;;;:::i;:::-;12120:210;;;;;;;;;:::o;707:13346::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;3438:162;;3592:1;3438:162;;;;;3473:109;3494:10;:23;;3508:9;;;:::i;:::-;3494:23;:::i;:::-;;;:::i;:::-;;3473:109;:::i;:::-;3592:1;:::i;:::-;3438:162::o;3667:190::-;;3849:1;3667:190;;;;;3726:113;7896:17;3747:29;;:12;;;:::i;:::-;3763:13;3747:29;:::i;:::-;;;:::i;:::-;;3726:113;:::i;:::-;3849:1;:::i;:::-;3667:190::o;707:13346::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;:::i;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::o;:::-;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;7719:1818::-;;8435:46;7719:1818;8435:46;7719:1818;;8367:36;8414:136;7719:1818;8257:59;7719:1818;8257:59;8680:31;7719:1818;;7925:68;7933:5;:26;;7941:18;;;:::i;:::-;7933:26;:::i;:::-;;;:::i;:::-;;7925:68;:::i;:::-;8029:12;;:::i;:::-;8072:14;8051:118;8072:14;:32;;:14;8090;8072:32;:::i;:::-;;;:::i;:::-;;;8051:118;:::i;:::-;8274:9;;;:::i;:::-;8285:14;8301:5;8308:7;;8257:59;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;8234:92;;;;:::i;:::-;;;:::i;:::-;;8367:36;:::i;:::-;8471:9;8435:46;:::i;:::-;;;:::i;:::-;:56;;8485:6;;;:::i;:::-;8435:56;:::i;:::-;;;:::i;:::-;;8414:136;:::i;:::-;8697:14;8680:31;;:::i;:::-;8783:19;8768:34;8783:19;8768:34;;:::i;:::-;8812:26;8833:5;8812:26;;:::i;:::-;8894:13;:17;;8910:1;8894:17;:::i;:::-;;;:::i;:::-;;8890:186;;7719:1818;9143:14;:18;;9160:1;9143:18;:::i;:::-;;;:::i;:::-;;9139:184;;7719:1818;9365:9;;;:::i;:::-;9388:6;;;:::i;:::-;9408:9;;;;:::i;:::-;9431:15;9338:192;9431:15;9460:13;9487:14;9515:5;9338:192;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;7719:1818::o;9139:184::-;9202:14;:5;;;:::i;:::-;:14;:::i;:::-;:38;:14;9217:6;;;;:::i;:::-;9225:14;9202:38;;9225:14;9202:38;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;9177:135;9202:38;;;;;9139:184;9177:135;;:::i;:::-;9139:184;;9202:38;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;8890:186::-;8952:14;:5;;;:::i;:::-;:14;:::i;:::-;:40;:14;8967:9;;;;:::i;:::-;8978:13;8952:40;;8978:13;8952:40;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;8927:138;8952:40;;;;;8890:186;8927:138;;:::i;:::-;8890:186;;8952:40;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;7719:1818::-;;;;;;;;;:::i;:::-;:::o;3667:190::-;;3849:1;3667:190;;;;;;3726:113;5117:26;3747:29;;:12;;;:::i;:::-;3763:13;3747:29;:::i;:::-;;;:::i;:::-;;3726:113;:::i;:::-;3849:1;:::i;:::-;3667:190::o;707:13346::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;:::o;:::-;;:::i;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;;;:::i;:::-;;:::o;:::-;;:::o;:::-;;;;;;;:::i;:::-;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;4888:1653::-;6051:14;4888:1653;5962:40;5975:27;6075:22;4888:1653;;5930:22;6020:21;4888:1653;5904:16;6012:29;4888:1653;5514:111;4888:1653;;;5155:112;5176:10;:24;;5190:10;5198:1;5190:10;:::i;:::-;5176:24;:::i;:::-;;;:::i;:::-;;;5155:112;:::i;:::-;5277:106;5298:7;:21;;5309:10;5317:1;5309:10;:::i;:::-;5298:21;:::i;:::-;;;:::i;:::-;;;5277:106;:::i;:::-;5393:111;5414:13;:27;;5431:10;5439:1;5431:10;:::i;:::-;5414:27;:::i;:::-;;;:::i;:::-;;;5393:111;:::i;:::-;5535:11;;5545:1;5535:11;:::i;:::-;;;:::i;:::-;;5514:111;:::i;:::-;5635:67;5643:6;:10;;5652:1;5643:10;:::i;:::-;;;:::i;:::-;;5635:67;:::i;:::-;5712:107;5733:9;:13;;5745:1;5733:13;:::i;:::-;;;:::i;:::-;;5712:107;:::i;:::-;5873:20;5883:10;5873:20;;:::i;:::-;5904:16;;:::i;:::-;5930:22;;:::i;:::-;5975:15;:27;:::i;:::-;5962:40;;:::i;:::-;6020:21;:::i;:::-;6012:29;;:::i;:::-;6051:14;;:::i;:::-;6075:22;;:::i;:::-;6107:32;6122:17;6107:32;;:::i;:::-;6237:18;:5;;;:::i;:::-;:18;:::i;:::-;:54;:18;6256:10;;6276:4;6237:54;;6268:13;6276:4;6268:13;:::i;:::-;6283:7;6237:54;6283:7;6237:54;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;6216:148;6237:54;;;;;4888:1653;6216:148;;:::i;:::-;6408:9;;;:::i;:::-;6431:6;;;:::i;:::-;6451:9;;;:::i;:::-;6474:10;;;;:::i;:::-;6498:7;6519:5;;;:::i;:::-;6380:154;;;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;;:::i;:::-;;;;4888:1653::o;6237:54::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;4888:1653::-;;;;;;;;;;:::i;:::-;:::o;3241:119::-;3352:1;3241:119;3273:69;3281:10;:20;;3295:6;;;:::i;:::-;3281:20;:::i;:::-;;;:::i;:::-;;3273:69;:::i;:::-;3352:1;:::i;:::-;3241:119::o;3667:190::-;3849:1;3667:190;3726:113;9862:17;3747:29;;:12;;;:::i;:::-;3763:13;3747:29;:::i;:::-;;;:::i;:::-;;3726:113;:::i;:::-;3849:1;:::i;:::-;3667:190::o;707:13346::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;9777:534;9891:117;9912:13;:26;;9928:10;;;:::i;:::-;9912:26;:::i;:::-;;;:::i;:::-;;9891:117;:::i;:::-;10018:130;10039:13;:31;;10055:15;10039:31;:::i;:::-;;;:::i;:::-;;10018:130;:::i;:::-;10183:10;;;:::i;:::-;10203:26;10216:13;10203:26;;:::i;:::-;10264:9;;;:::i;:::-;10275:13;10290;10245:59;;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;9777:534::o;:::-;;;;:::i;:::-;:::o;707:13346::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;:::i;:::-;:::o;12663:266::-;12881:41;;12663:266;12838:26;12881:41;12663:266;12785:7;;:::i;:::-;12853:10;12838:26;:::i;:::-;12804:60;;;;;12917:1;12881:41;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;12874:48;:::o;12881:41::-;;:::i;707:13346::-;;;:::o;:::-;;;:::o;:::-;;:::o;:::-;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;13210:344;13287:9;;:::i;:::-;13298;;;:::i;:::-;13309:7;;;:::i;:::-;13336:3;13328:69;13336:10;:3;:10;:::i;:::-;:16;;13350:2;13336:16;:::i;:::-;;;:::i;:::-;;13328:69;:::i;:::-;13408:140;;;;;;;;;;;;;;;13210:344;:::o;3241:119::-;3352:1;3241:119;3273:69;3281:10;:20;;3295:6;;;:::i;:::-;3281:20;:::i;:::-;;;:::i;:::-;;3273:69;:::i;:::-;3352:1;:::i;:::-;3241:119::o;3667:190::-;3849:1;3667:190;3726:113;6844:17;3747:29;;:12;;;:::i;:::-;3763:13;3747:29;:::i;:::-;;;:::i;:::-;;3726:113;:::i;:::-;3849:1;:::i;:::-;3667:190::o;707:13346::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;3915:160;4067:1;3915:160;3947:110;3968:15;:28;;3986:10;;;:::i;:::-;3968:28;:::i;:::-;;;:::i;:::-;;3947:110;:::i;:::-;4067:1;:::i;:::-;3915:160::o;707:13346::-;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;:::o;:::-;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;6764:454;6884:111;6905:7;:11;;6915:1;6905:11;:::i;:::-;;;:::i;:::-;;6884:111;:::i;:::-;7027:18;:5;;;:::i;:::-;:18;:::i;:::-;:50;:18;7046:6;;;;:::i;:::-;7062:4;7027:50;;7054:13;7062:4;7054:13;:::i;:::-;7069:7;7027:50;7069:7;7027:50;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;7006:136;7027:50;;;;;6764:454;7006:136;;:::i;:::-;7170:9;;;:::i;:::-;7181:6;;;;:::i;:::-;7189:7;7198:12;;;:::i;:::-;7158:53;;;;;:::i;:::-;;;:::i;:::-;;;;;:::i;:::-;;;;;;:::i;:::-;;;;6764:454::o;7027:50::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;6764:454::-;;;;:::i;:::-;:::o;707:13346::-;;;;:::o;:::-;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;:::-;;:::o;:::-;;;;;:::i;:::-;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;:::i;:::-;;;:::o;13751:300::-;13906:124;;13751:300;13841:7;;:::i;:::-;14000:12;13906:124;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;13879:165;;;;:::i;:::-;;;:::i;:::-;;13860:184;:::o",
"linkReferences": {}
},
"methodIdentifiers": {
"channelId()": "e2cee544",
"channelState()": "55b55094",
"claimTimeout()": "0e1da6c3",
"close(uint256,uint256,bytes,bytes)": "4e1b16ce",
"deposit(uint256)": "b6b55f25",
"expiration()": "4665096d",
"extend(uint256)": "9714378c",
"factory()": "c45a0155",
"getBalance()": "12065fe0",
"getChannelInfo()": "30d281e0",
"getEthSignedMessageHash(bytes32)": "fa540801",
"init(address,address,uint256,address,uint256,uint256,uint256)": "92aa5bcb",
"lastProcessedNonce()": "08e8553e",
"price()": "a035b1fe",
"recipient()": "66d003ac",
"recoverSigner(bytes32,bytes)": "97aba7f9",
"sender()": "67e404ce",
"splitSignature(bytes)": "a7bb5803",
"token()": "fc0c546a"
},
"rawMetadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"channelId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountPaid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountRefunded\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"finalNonce\",\"type\":\"uint256\"}],\"name\":\"ChannelClosed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"channelId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expiration\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"initialBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"ChannelCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"channelId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"DepositMade\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"channelId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldExpiration\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newExpiration\",\"type\":\"uint256\"}],\"name\":\"ExpirationExtended\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"channelId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"TimeoutClaimed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"channelId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"channelState\",\"outputs\":[{\"internalType\":\"enum PaymentChannel.ChannelState\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"channelBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"rawBody\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"close\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"expiration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newExpiration\",\"type\":\"uint256\"}],\"name\":\"extend\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChannelInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"senderAddr\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipientAddr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"exp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricePerRequest\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastNonce\",\"type\":\"uint256\"},{\"internalType\":\"enum PaymentChannel.ChannelState\",\"name\":\"state\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_messageHash\",\"type\":\"bytes32\"}],\"name\":\"getEthSignedMessageHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_duration\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_channelId\",\"type\":\"uint256\"}],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastProcessedNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_ethSignedMessageHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"recoverSigner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"name\":\"splitSignature\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract allows for off-chain signed transactions that can be settled on-chain The channel supports deposits, signature-based closures, and timeout mechanisms\",\"kind\":\"dev\",\"methods\":{\"claimTimeout()\":{\"details\":\"Can only be called after expiration timestamp has passed\"},\"close(uint256,uint256,bytes,bytes)\":{\"details\":\"Can only be called by the recipient. Validates signature and prevents replay attacks\",\"params\":{\"channelBalance\":\"The remaining balance that should stay in the channel\",\"nonce\":\"Nonce for replay protection (must be greater than lastProcessedNonce)\",\"rawBody\":\"Additional data that was signed (for extensibility)\",\"signature\":\"Sender's signature authorizing the payment\"}},\"deposit(uint256)\":{\"details\":\"Can only be called by the channel sender while channel is open\",\"params\":{\"_amount\":\"Amount of tokens to deposit\"}},\"extend(uint256)\":{\"details\":\"Can only be called by the sender while channel is open\",\"params\":{\"newExpiration\":\"New expiration timestamp (must be later than current expiration)\"}},\"getBalance()\":{\"returns\":{\"_0\":\"The balance of tokens held by this contract\"}},\"getChannelInfo()\":{\"returns\":{\"balance\":\"Current token balance\",\"exp\":\"Expiration timestamp\",\"id\":\"Channel ID\",\"lastNonce\":\"Last processed nonce\",\"pricePerRequest\":\"Price per API request\",\"recipientAddr\":\"Recipient address\",\"senderAddr\":\"Sender address\",\"state\":\"Current channel state\"}},\"getEthSignedMessageHash(bytes32)\":{\"params\":{\"_messageHash\":\"The original message hash\"},\"returns\":{\"_0\":\"The Ethereum signed message hash\"}},\"init(address,address,uint256,address,uint256,uint256,uint256)\":{\"details\":\"Can only be called once by the factory contract\",\"params\":{\"_amount\":\"Initial deposit amount from the sender\",\"_channelId\":\"Unique identifier for this channel\",\"_duration\":\"Duration in seconds before the channel can be force-closed\",\"_price\":\"Price per API request in token units\",\"_recipient\":\"The API provider who will receive payments\",\"_sender\":\"The API consumer who will make payments\",\"_tokenAddress\":\"Address of the ERC20 token to be used for payments\"}},\"recoverSigner(bytes32,bytes)\":{\"params\":{\"_ethSignedMessageHash\":\"The hash of the signed message\",\"_signature\":\"The signature bytes\"},\"returns\":{\"_0\":\"The address of the signer\"}},\"splitSignature(bytes)\":{\"params\":{\"sig\":\"The signature bytes to split\"},\"returns\":{\"r\":\"The r component of the signature\",\"s\":\"The s component of the signature\",\"v\":\"The v component of the signature\"}}},\"title\":\"PaymentChannel\",\"version\":1},\"userdoc\":{\"events\":{\"ChannelClosed(uint256,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Emitted when a payment channel is closed via signature\"},\"ChannelCreated(uint256,address,address,uint256,uint256,uint256)\":{\"notice\":\"Emitted when a new payment channel is created\"},\"DepositMade(uint256,address,uint256,uint256)\":{\"notice\":\"Emitted when additional funds are deposited to the channel\"},\"ExpirationExtended(uint256,uint256,uint256)\":{\"notice\":\"Emitted when channel expiration is extended\"},\"TimeoutClaimed(uint256,address,uint256,uint256)\":{\"notice\":\"Emitted when sender claims funds after timeout\"}},\"kind\":\"user\",\"methods\":{\"channelId()\":{\"notice\":\"Unique identifier for this payment channel\"},\"channelState()\":{\"notice\":\"Current state of the payment channel\"},\"claimTimeout()\":{\"notice\":\"Allows sender to claim all remaining funds after the channel expires\"},\"close(uint256,uint256,bytes,bytes)\":{\"notice\":\"Closes the channel using a signature from the sender\"},\"constructor\":{\"notice\":\"Sets the factory address during contract creation\"},\"deposit(uint256)\":{\"notice\":\"Allows the sender to deposit additional funds to the channel\"},\"expiration()\":{\"notice\":\"Timestamp when the channel expires and can be force-closed by sender\"},\"extend(uint256)\":{\"notice\":\"Extends the expiration time of the channel\"},\"factory()\":{\"notice\":\"Address authorized to initialize this channel (factory contract)\"},\"getBalance()\":{\"notice\":\"Returns the current token balance of the channel\"},\"getChannelInfo()\":{\"notice\":\"Returns comprehensive channel information\"},\"getEthSignedMessageHash(bytes32)\":{\"notice\":\"Converts a message hash to an Ethereum signed message hash\"},\"init(address,address,uint256,address,uint256,uint256,uint256)\":{\"notice\":\"Initializes a new payment channel\"},\"lastProcessedNonce()\":{\"notice\":\"Last processed nonce to prevent replay attacks\"},\"price()\":{\"notice\":\"Price per API request in token units (set by recipient)\"},\"recipient()\":{\"notice\":\"Address of the API provider (payee)\"},\"recoverSigner(bytes32,bytes)\":{\"notice\":\"Recovers the signer address from an Ethereum signed message hash and signature\"},\"sender()\":{\"notice\":\"Address of the API consumer (payer)\"},\"splitSignature(bytes)\":{\"notice\":\"Splits a signature into its r, s, v components\"},\"token()\":{\"notice\":\"ERC20 token used for payments in this channel\"}},\"notice\":\"A payment channel contract that enables micropayments between API consumers and providers\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PaymentChannel.sol\":\"PaymentChannel\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[\":forge-std/=lib/forge-std/src/\"],\"viaIR\":true},\"sources\":{\"src/PaymentChannel.sol\":{\"keccak256\":\"0x9bb9c77698edd5007e20f0068dd5356600b658c65087d6164b4c649b0a285ca9\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6a08428f0dd09bdd827da4e4f8ba985a77f95edc3fb229a106355bd69ec7ab8a\",\"dweb:/ipfs/QmbLzFo1iUPRTDkBeJhQVQn6pSqwexs5e4YfEuuLQpr6V2\"]}},\"version\":1}",
"metadata": {
"compiler": { "version": "0.8.28+commit.7893614a" },
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "channelId",
"type": "uint256",
"indexed": true
},
{
"internalType": "address",
"name": "sender",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "recipient",
"type": "address",
"indexed": true
},
{
"internalType": "uint256",
"name": "timestamp",
"type": "uint256",
"indexed": false
},
{
"internalType": "uint256",
"name": "amountPaid",
"type": "uint256",
"indexed": false
},
{
"internalType": "uint256",
"name": "amountRefunded",
"type": "uint256",
"indexed": false
},
{
"internalType": "uint256",
"name": "finalNonce",
"type": "uint256",
"indexed": false
}
],
"type": "event",
"name": "ChannelClosed",
"anonymous": false
},
{
"inputs": [
{
"internalType": "uint256",
"name": "channelId",
"type": "uint256",
"indexed": true
},
{
"internalType": "address",
"name": "sender",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "recipient",
"type": "address",
"indexed": true
},
{
"internalType": "uint256",
"name": "expiration",
"type": "uint256",
"indexed": false
},
{
"internalType": "uint256",
"name": "initialBalance",
"type": "uint256",
"indexed": false
},
{
"internalType": "uint256",
"name": "price",
"type": "uint256",
"indexed": false
}
],
"type": "event",
"name": "ChannelCreated",
"anonymous": false
},
{
"inputs": [
{
"internalType": "uint256",
"name": "channelId",
"type": "uint256",
"indexed": true
},
{
"internalType": "address",
"name": "sender",
"type": "address",
"indexed": true
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256",
"indexed": false
},
{
"internalType": "uint256",
"name": "newBalance",
"type": "uint256",
"indexed": false
}
],
"type": "event",
"name": "DepositMade",
"anonymous": false
},
{
"inputs": [
{
"internalType": "uint256",
"name": "channelId",
"type": "uint256",
"indexed": true
},
{
"internalType": "uint256",
"name": "oldExpiration",
"type": "uint256",
"indexed": false
},
{
"internalType": "uint256",
"name": "newExpiration",
"type": "uint256",
"indexed": false
}
],
"type": "event",
"name": "ExpirationExtended",
"anonymous": false
},
{
"inputs": [
{
"internalType": "uint256",
"name": "channelId",
"type": "uint256",
"indexed": true
},
{
"internalType": "address",
"name": "sender",
"type": "address",
"indexed": true
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256",
"indexed": false
},
{
"internalType": "uint256",
"name": "timestamp",
"type": "uint256",
"indexed": false
}
],
"type": "event",
"name": "TimeoutClaimed",
"anonymous": false
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "channelId",
"outputs": [
{ "internalType": "uint256", "name": "", "type": "uint256" }
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "channelState",
"outputs": [
{
"internalType": "enum PaymentChannel.ChannelState",
"name": "",
"type": "uint8"
}
]
},
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "function",
"name": "claimTimeout"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "channelBalance",
"type": "uint256"
},
{ "internalType": "uint256", "name": "nonce", "type": "uint256" },
{ "internalType": "bytes", "name": "rawBody", "type": "bytes" },
{ "internalType": "bytes", "name": "signature", "type": "bytes" }
],
"stateMutability": "nonpayable",
"type": "function",
"name": "close"
},
{
"inputs": [
{ "internalType": "uint256", "name": "_amount", "type": "uint256" }
],
"stateMutability": "nonpayable",
"type": "function",
"name": "deposit"
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "expiration",
"outputs": [
{ "internalType": "uint256", "name": "", "type": "uint256" }
]
},
{
"inputs": [
{
"internalType": "uint256",
"name": "newExpiration",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "extend"
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "factory",
"outputs": [
{ "internalType": "address", "name": "", "type": "address" }
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "getBalance",
"outputs": [
{ "internalType": "uint256", "name": "", "type": "uint256" }
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "getChannelInfo",
"outputs": [
{ "internalType": "uint256", "name": "id", "type": "uint256" },
{
"internalType": "address",
"name": "senderAddr",
"type": "address"
},
{
"internalType": "address",
"name": "recipientAddr",
"type": "address"
},
{ "internalType": "uint256", "name": "exp", "type": "uint256" },
{ "internalType": "uint256", "name": "balance", "type": "uint256" },
{
"internalType": "uint256",
"name": "pricePerRequest",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "lastNonce",
"type": "uint256"
},
{
"internalType": "enum PaymentChannel.ChannelState",
"name": "state",
"type": "uint8"
}
]
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_messageHash",
"type": "bytes32"
}
],
"stateMutability": "pure",
"type": "function",
"name": "getEthSignedMessageHash",
"outputs": [
{ "internalType": "bytes32", "name": "", "type": "bytes32" }
]
},
{
"inputs": [
{
"internalType": "address",
"name": "_recipient",
"type": "address"
},
{ "internalType": "address", "name": "_sender", "type": "address" },
{
"internalType": "uint256",
"name": "_duration",
"type": "uint256"
},
{
"internalType": "address",
"name": "_tokenAddress",
"type": "address"
},
{ "internalType": "uint256", "name": "_amount", "type": "uint256" },
{ "internalType": "uint256", "name": "_price", "type": "uint256" },
{
"internalType": "uint256",
"name": "_channelId",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "init"
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "lastProcessedNonce",
"outputs": [
{ "internalType": "uint256", "name": "", "type": "uint256" }
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "price",
"outputs": [
{ "internalType": "uint256", "name": "", "type": "uint256" }
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "recipient",
"outputs": [
{ "internalType": "address", "name": "", "type": "address" }
]
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_ethSignedMessageHash",
"type": "bytes32"
},
{ "internalType": "bytes", "name": "_signature", "type": "bytes" }
],
"stateMutability": "pure",
"type": "function",
"name": "recoverSigner",
"outputs": [
{ "internalType": "address", "name": "", "type": "address" }
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "sender",
"outputs": [
{ "internalType": "address", "name": "", "type": "address" }
]
},
{
"inputs": [
{ "internalType": "bytes", "name": "sig", "type": "bytes" }
],
"stateMutability": "pure",
"type": "function",
"name": "splitSignature",
"outputs": [
{ "internalType": "bytes32", "name": "r", "type": "bytes32" },
{ "internalType": "bytes32", "name": "s", "type": "bytes32" },
{ "internalType": "uint8", "name": "v", "type": "uint8" }
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "token",
"outputs": [
{ "internalType": "contract IERC20", "name": "", "type": "address" }
]
}
],
"devdoc": {
"kind": "dev",
"methods": {
"claimTimeout()": {
"details": "Can only be called after expiration timestamp has passed"
},
"close(uint256,uint256,bytes,bytes)": {
"details": "Can only be called by the recipient. Validates signature and prevents replay attacks",
"params": {
"channelBalance": "The remaining balance that should stay in the channel",
"nonce": "Nonce for replay protection (must be greater than lastProcessedNonce)",
"rawBody": "Additional data that was signed (for extensibility)",
"signature": "Sender's signature authorizing the payment"
}
},
"deposit(uint256)": {
"details": "Can only be called by the channel sender while channel is open",
"params": { "_amount": "Amount of tokens to deposit" }
},
"extend(uint256)": {
"details": "Can only be called by the sender while channel is open",
"params": {
"newExpiration": "New expiration timestamp (must be later than current expiration)"
}
},
"getBalance()": {
"returns": { "_0": "The balance of tokens held by this contract" }
},
"getChannelInfo()": {
"returns": {
"balance": "Current token balance",
"exp": "Expiration timestamp",
"id": "Channel ID",
"lastNonce": "Last processed nonce",
"pricePerRequest": "Price per API request",
"recipientAddr": "Recipient address",
"senderAddr": "Sender address",
"state": "Current channel state"
}
},
"getEthSignedMessageHash(bytes32)": {
"params": { "_messageHash": "The original message hash" },
"returns": { "_0": "The Ethereum signed message hash" }
},
"init(address,address,uint256,address,uint256,uint256,uint256)": {
"details": "Can only be called once by the factory contract",
"params": {
"_amount": "Initial deposit amount from the sender",
"_channelId": "Unique identifier for this channel",
"_duration": "Duration in seconds before the channel can be force-closed",
"_price": "Price per API request in token units",
"_recipient": "The API provider who will receive payments",
"_sender": "The API consumer who will make payments",
"_tokenAddress": "Address of the ERC20 token to be used for payments"
}
},
"recoverSigner(bytes32,bytes)": {
"params": {
"_ethSignedMessageHash": "The hash of the signed message",
"_signature": "The signature bytes"
},
"returns": { "_0": "The address of the signer" }
},
"splitSignature(bytes)": {
"params": { "sig": "The signature bytes to split" },
"returns": {
"r": "The r component of the signature",
"s": "The s component of the signature",
"v": "The v component of the signature"
}
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {
"channelId()": {
"notice": "Unique identifier for this payment channel"
},
"channelState()": {
"notice": "Current state of the payment channel"
},
"claimTimeout()": {
"notice": "Allows sender to claim all remaining funds after the channel expires"
},
"close(uint256,uint256,bytes,bytes)": {
"notice": "Closes the channel using a signature from the sender"
},
"constructor": {
"notice": "Sets the factory address during contract creation"
},
"deposit(uint256)": {
"notice": "Allows the sender to deposit additional funds to the channel"
},
"expiration()": {
"notice": "Timestamp when the channel expires and can be force-closed by sender"
},
"extend(uint256)": {
"notice": "Extends the expiration time of the channel"
},
"factory()": {
"notice": "Address authorized to initialize this channel (factory contract)"
},
"getBalance()": {
"notice": "Returns the current token balance of the channel"
},
"getChannelInfo()": {
"notice": "Returns comprehensive channel information"
},
"getEthSignedMessageHash(bytes32)": {
"notice": "Converts a message hash to an Ethereum signed message hash"
},
"init(address,address,uint256,address,uint256,uint256,uint256)": {
"notice": "Initializes a new payment channel"
},
"lastProcessedNonce()": {
"notice": "Last processed nonce to prevent replay attacks"
},
"price()": {
"notice": "Price per API request in token units (set by recipient)"
},
"recipient()": { "notice": "Address of the API provider (payee)" },
"recoverSigner(bytes32,bytes)": {
"notice": "Recovers the signer address from an Ethereum signed message hash and signature"
},
"sender()": { "notice": "Address of the API consumer (payer)" },
"splitSignature(bytes)": {
"notice": "Splits a signature into its r, s, v components"
},
"token()": {
"notice": "ERC20 token used for payments in this channel"
}
},
"version": 1
}
},
"settings": {
"remappings": ["forge-std/=lib/forge-std/src/"],
"optimizer": { "enabled": false, "runs": 200 },
"metadata": { "bytecodeHash": "ipfs" },
"compilationTarget": { "src/PaymentChannel.sol": "PaymentChannel" },
"evmVersion": "prague",
"libraries": {},
"viaIR": true
},
"sources": {
"src/PaymentChannel.sol": {
"keccak256": "0x9bb9c77698edd5007e20f0068dd5356600b658c65087d6164b4c649b0a285ca9",
"urls": [
"bzz-raw://6a08428f0dd09bdd827da4e4f8ba985a77f95edc3fb229a106355bd69ec7ab8a",
"dweb:/ipfs/QmbLzFo1iUPRTDkBeJhQVQn6pSqwexs5e4YfEuuLQpr6V2"
],
"license": "UNLICENSED"
}
},
"version": 1
},
"id": 2
}