@aztec/contract-artifacts
Version:
Smart contract compilation artifacts for the latest version of AZTEC.
602 lines • 57.4 kB
JSON
{
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_aceAddress",
"type": "address"
},
{
"internalType": "address",
"name": "_linkedTokenAddress",
"type": "address"
},
{
"internalType": "uint256",
"name": "_scalingFactor",
"type": "uint256"
},
{
"internalType": "string",
"name": "_name",
"type": "string"
},
{
"internalType": "string",
"name": "_symbol",
"type": "string"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "ConvertTokens",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "noteHash",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "bytes",
"name": "metadata",
"type": "bytes"
}
],
"name": "CreateNote",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "noteRegistryId",
"type": "uint256"
}
],
"name": "CreateNoteRegistry",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "aceAddress",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "linkedTokenAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "scalingFactor",
"type": "uint256"
},
{
"indexed": true,
"internalType": "bool",
"name": "_canAdjustSupply",
"type": "bool"
},
{
"indexed": false,
"internalType": "bool",
"name": "_canConvert",
"type": "bool"
}
],
"name": "CreateZkAsset",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "noteHash",
"type": "bytes32"
}
],
"name": "DestroyNote",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "RedeemTokens",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "noteHash",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "bytes",
"name": "metadata",
"type": "bytes"
}
],
"name": "UpdateNoteMetaData",
"type": "event"
},
{
"constant": true,
"inputs": [],
"name": "BURN_PROOF",
"outputs": [
{
"internalType": "uint24",
"name": "",
"type": "uint24"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "DIVIDEND_PROOF",
"outputs": [
{
"internalType": "uint24",
"name": "",
"type": "uint24"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "EIP712_DOMAIN_HASH",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "JOIN_SPLIT_PROOF",
"outputs": [
{
"internalType": "uint24",
"name": "",
"type": "uint24"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "MINT_PROOF",
"outputs": [
{
"internalType": "uint24",
"name": "",
"type": "uint24"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "PRIVATE_RANGE_PROOF",
"outputs": [
{
"internalType": "uint24",
"name": "",
"type": "uint24"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "PUBLIC_RANGE_PROOF",
"outputs": [
{
"internalType": "uint24",
"name": "",
"type": "uint24"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "ace",
"outputs": [
{
"internalType": "contract IACE",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint24",
"name": "_proofId",
"type": "uint24"
},
{
"internalType": "bytes",
"name": "_proofOutputs",
"type": "bytes"
},
{
"internalType": "address",
"name": "_spender",
"type": "address"
},
{
"internalType": "bool",
"name": "_approval",
"type": "bool"
},
{
"internalType": "bytes",
"name": "_proofSignature",
"type": "bytes"
}
],
"name": "approveProof",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "bytes32",
"name": "_noteHash",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_spender",
"type": "address"
},
{
"internalType": "bool",
"name": "_spenderApproval",
"type": "bool"
},
{
"internalType": "bytes",
"name": "_signature",
"type": "bytes"
}
],
"name": "confidentialApprove",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "confidentialApproved",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint24",
"name": "_proofId",
"type": "uint24"
},
{
"internalType": "bytes",
"name": "_proofData",
"type": "bytes"
},
{
"internalType": "bytes",
"name": "_signatures",
"type": "bytes"
}
],
"name": "confidentialTransfer",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "bytes",
"name": "_proofData",
"type": "bytes"
},
{
"internalType": "bytes",
"name": "_signatures",
"type": "bytes"
}
],
"name": "confidentialTransfer",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "uint24",
"name": "_proof",
"type": "uint24"
},
{
"internalType": "bytes",
"name": "_proofOutput",
"type": "bytes"
}
],
"name": "confidentialTransferFrom",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "linkedToken",
"outputs": [
{
"internalType": "contract IERC20Mintable",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "metaDataTimeLog",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "noteAccess",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "signatureLog",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "bytes32",
"name": "noteHash",
"type": "bytes32"
},
{
"internalType": "bytes",
"name": "metaData",
"type": "bytes"
}
],
"name": "updateNoteMetaData",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x60806040523480156200001157600080fd5b5060405162002ad938038062002ad9833981810160405260a08110156200003757600080fd5b8151602083015160408085015160608601805192519496939591949391820192846401000000008211156200006b57600080fd5b9083019060208201858111156200008157600080fd5b82516401000000008111828201881017156200009c57600080fd5b82525081516020918201929091019080838360005b83811015620000cb578181015183820152602001620000b1565b50505050905090810190601f168015620000f95780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011d57600080fd5b9083019060208201858111156200013357600080fd5b82516401000000008111828201881017156200014e57600080fd5b82525081516020918201929091019080838360005b838110156200017d57818101518382015260200162000163565b50505050905090810190601f168015620001ab5780820380516001836020036101000a031916815260200191505b5060408181527f454950373132446f6d61696e28000000000000000000000000000000000000006020808401919091527f737472696e67206e616d652c0000000000000000000000000000000000000000602d8401527f737472696e672076657273696f6e2c000000000000000000000000000000000060398401527f6164647265737320766572696679696e67436f6e74726163740000000000000060488401527f29000000000000000000000000000000000000000000000000000000000000006061840152815160428185030181526062840180845281519183019190912060a28501845260199091527f415a5445435f43525950544f4752415048595f454e47494e450000000000000060829094019390935281518083018352600181527f3100000000000000000000000000000000000000000000000000000000000000908201528151808201939093527fc8066e2c715ce196630b273cd256d8959d5b9fefc55e9e6d999fb0f08bb7f75f8383015260008051602062002ab98339815191526060840152306080808501919091528251808503909101815260a090930190915281519101206000908155889350879250869150806001600160a01b038416156200037d57600162000380565b60005b604080517f454950373132446f6d61696e28000000000000000000000000000000000000006020808301919091527f737472696e67206e616d652c0000000000000000000000000000000000000000602d8301527f737472696e672076657273696f6e2c000000000000000000000000000000000060398301527f6164647265737320766572696679696e67436f6e74726163740000000000000060488301527f29000000000000000000000000000000000000000000000000000000000000006061830152825160428184030181526062830180855281519183019190912060a28401855260089091527f5a4b5f41535345540000000000000000000000000000000000000000000000006082909301929092528251808401845260018082527f3100000000000000000000000000000000000000000000000000000000000000918301919091528351808301939093527f34a1782c7b6da6ed013d1c63b38e9a7204574db51f6df9ff13aa1786590013fd8385015260008051602062002ab98339815191526060840152306080808501919091528451808503909101815260a0840180865281519190930120600090815581546001600160a01b038c81166001600160a01b03199283161793849055600280548d83169316831790557fa5468ca20000000000000000000000000000000000000000000000000000000090945260a485015260c4840189905287151560e48501528515156101048501529351949550169263a5468ca2926101248084019391929182900301818387803b158015620005cc57600080fd5b505af1158015620005e1573d6000803e3d6000fd5b5050604080518681528415156020820152815186151594506001600160a01b03808a1694508a16927fca576e79bcb5c4a0045d9d596a80c733c3997559f688f69e5c03bd737d885b86928290030190a4505084516200064b9350600792506020860191506200066d565b508051620006619060089060208401906200066d565b50505050505062000712565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620006b057805160ff1916838001178555620006e0565b82800160010185558215620006e0579182015b82811115620006e0578251825591602001919060010190620006c3565b50620006ee929150620006f2565b5090565b6200070f91905b80821115620006ee5760008155600101620006f9565b90565b61239780620007226000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806384a26fc8116100b8578063985cd3b71161007c578063985cd3b71461073a578063a5c8fa8414610757578063cdfea90e1461077b578063df9246251461082b578063e306f77914610833578063ea12489f1461083b57610136565b806384a26fc8146105ca5780638500e1f8146105f95780638e526d9b1461060157806395d89b4114610609578063969884981461061157610136565b80630a60305a116100ff5780630a60305a146103485780630f4a80fe146104295780631f2ac16a146104555780632e3b9a3b1461051757806349518b28146105c257610136565b80625bf7321461013b57806302d1fdc91461015b57806306fdde031461029257806308ae900a1461030f57806309146c7c14610317575b600080fd5b610143610843565b6040805162ffffff9092168252519081900360200190f35b6102906004803603606081101561017157600080fd5b62ffffff8235169190810190604081016020820135600160201b81111561019757600080fd5b8201836020820111156101a957600080fd5b803590602001918460018302840111600160201b831117156101ca57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561021c57600080fd5b82018360208201111561022e57600080fd5b803590602001918460018302840111600160201b8311171561024f57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061084a945050505050565b005b61029a610a7b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102d45781810151838201526020016102bc565b50505050905090810190601f1680156103015780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610143610b09565b6103346004803603602081101561032d57600080fd5b5035610b10565b604080519115158252519081900360200190f35b610290600480360360a081101561035e57600080fd5b62ffffff8235169190810190604081016020820135600160201b81111561038457600080fd5b82018360208201111561039657600080fd5b803590602001918460018302840111600160201b831117156103b757600080fd5b919390926001600160a01b038335169260208101351515929190606081019060400135600160201b8111156103eb57600080fd5b8201836020820111156103fd57600080fd5b803590602001918460018302840111600160201b8311171561041e57600080fd5b509092509050610b25565b6103346004803603604081101561043f57600080fd5b50803590602001356001600160a01b0316611069565b6102906004803603608081101561046b57600080fd5b8135916001600160a01b0360208201351691604082013515159190810190608081016060820135600160201b8111156104a357600080fd5b8201836020820111156104b557600080fd5b803590602001918460018302840111600160201b831117156104d657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611089945050505050565b6102906004803603604081101561052d57600080fd5b81359190810190604081016020820135600160201b81111561054e57600080fd5b82018360208201111561056057600080fd5b803590602001918460018302840111600160201b8311171561058157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061135b945050505050565b610143611556565b6105e7600480360360208110156105e057600080fd5b503561155d565b60408051918252519081900360200190f35b61014361156f565b610143611576565b61029a61157d565b6102906004803603604081101561062757600080fd5b810190602081018135600160201b81111561064157600080fd5b82018360208201111561065357600080fd5b803590602001918460018302840111600160201b8311171561067457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156106c657600080fd5b8201836020820111156106d857600080fd5b803590602001918460018302840111600160201b831117156106f957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506115d8945050505050565b6105e76004803603602081101561075057600080fd5b50356115ea565b61075f6115fc565b604080516001600160a01b039092168252519081900360200190f35b6102906004803603604081101561079157600080fd5b62ffffff8235169190810190604081016020820135600160201b8111156107b757600080fd5b8201836020820111156107c957600080fd5b803590602001918460018302840111600160201b831117156107ea57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061160b945050505050565b610143611883565b6105e761188a565b61075f611890565b6201010181565b600061085a8462ffffff1661189f565b5091505060ff81166001146108b6576040805162461bcd60e51b815260206004820152601c60248201527f74686973206973206e6f7420612062616c616e6365642070726f6f6600000000604482015290519081900360640190fd5b60015460405163a2866ea360e01b815262ffffff861660048201908152336024830181905260606044840181815288516064860152885191956001600160a01b03169463a2866ea3948b94938b93919260840190602085019080838360005b8381101561092d578181015183820152602001610915565b50505050905090810190601f16801561095a5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561097b57600080fd5b505af115801561098f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156109b857600080fd5b8101908080516040519392919084600160201b8211156109d757600080fd5b9083019060208201858111156109ec57600080fd5b8251600160201b811182820188101715610a0557600080fd5b82525081516020918201929091019080838360005b83811015610a32578181015183820152602001610a1a565b50505050905090810190601f168015610a5f5780820380516001836020036101000a031916815260200191505b506040525050509050610a74858285876118b9565b5050505050565b6007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610b015780601f10610ad657610100808354040283529160200191610b01565b820191906000526020600020905b815481529060010190602001808311610ae457829003601f168201915b505050505081565b6201040381565b60066020526000908152604090205460ff1681565b600082826040518083838082843760408051939091018390039092206000818152600660205292909220549195505060ff161515600114159250610bb3915050576040805162461bcd60e51b815260206004820152601f60248201527f7369676e61747572652068617320616c7265616479206265656e207573656400604482015290519081900360640190fd5b6000818152600660209081526040808320805460ff191660011790558051608081019091526042808252909161223e908301396040516020018082805190602001908083835b60208310610c185780518252601f199092019160209182019101610bf9565b51815160001960209485036101000a0190811690199190911617905260408051601f1995909301838103959095018352848152825192820192909220671692d7d054d4d15560c21b85528251948590036008018520603160f81b8652835195869003600101862086840192909252858401526060850152306080808601919091528251808603909101815260a0850183528051908201206e0a0e4dedecca6d2cedcc2e8eae4ca5608b1b60c086015271189e5d195ccccc881c1c9bdbd992185cda0b60721b60cf8601526f1859191c995cdcc81cdc195b99195c8b60821b60e18601526c189bdbdb08185c1c1c9bdd985b609a1b60f1860152602960f81b60fe860152825160df81870301815260ff9095019283905284519490910193909320929550600094508593508c91508b908083838082843760408051939091018390038320602080850198909852838201526001600160a01b038f1660608401528d15156080808501919091528151808503909101815260a08401825280519088012061190160f01b60c085015260c284019890985260e280840198909852805180840390980188526101028301808252885198880198909820610122601f8e01899004909802840188019091528b88529750600096610e17968996509094508c93508b9283925001838280828437600092019190915250611c1792505050565b905060005b610e5b8b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d7092505050565b81101561105b576060610ead828d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611d77169050565b90506060610eba82611dc7565b5091925060009150505b610ecd82611d70565b81101561101f576000610eee610ee9848463ffffffff611d7716565b611df1565b5060015460408051637f6f713360e11b81523060048201526024810184905290519294506000935083926001600160a01b039092169163fedee26691604480820192608092909190829003018186803b158015610f4a57600080fd5b505afa158015610f5e573d6000803e3d6000fd5b505050506040513d6080811015610f7457600080fd5b5080516060909101519092509050600160ff831614610fc45760405162461bcd60e51b81526004018080602001828103825260228152602001806121ce6022913960400191505060405180910390fd5b876001600160a01b0316816001600160a01b0316146110145760405162461bcd60e51b81526004018080602001828103825260268152602001806122186026913960400191505060405180910390fd5b505050600101610ec4565b5050805160209182012060009081526003825260408082206001600160a01b038d16835290925220805460ff1916891515179055600101610e1c565b505050505050505050505050565b600360209081526000928352604080842090915290825290205460ff1681565b60015460408051637f6f713360e11b81523060048201526024810187905290516000926001600160a01b03169163fedee266916044808301926080929190829003018186803b1580156110db57600080fd5b505afa1580156110ef573d6000803e3d6000fd5b505050506040513d608081101561110557600080fd5b50519050600160ff82161461114b5760405162461bcd60e51b81526004018080602001828103825260228152602001806121ce6022913960400191505060405180910390fd5b6000826040516020018082805190602001908083835b602083106111805780518252601f199092019160209182019101611161565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f190183528452815191810191909120600081815260069092529290205491945050600160ff9091161515141591506112289050576040805162461bcd60e51b815260206004820152601f60248201527f7369676e61747572652068617320616c7265616479206265656e207573656400604482015290519081900360640190fd5b825115611249576000818152600660205260409020805460ff191660011790555b604080516d09cdee8caa6d2cedcc2e8eae4ca560931b60208083019190915270189e5d195ccccc881b9bdd1952185cda0b607a1b602e8301526f1859191c995cdcc81cdc195b99195c8b60821b603f83015273189bdbdb081cdc195b99195c905c1c1c9bdd985b60621b604f830152602960f81b606383015282516044818403018152606483018452805190820120608483015260a482018990526001600160a01b03881660c483015286151560e480840191909152835180840390910181526101049092019092528051910120611322818886611e0f565b5050506000938452506003602090815260408085206001600160a01b039490941685529290529120805460ff1916911515919091179055565b60015460408051637f6f713360e11b815230600482015260248101859052905160009283926001600160a01b039091169163fedee26691604480820192608092909190829003018186803b1580156113b257600080fd5b505afa1580156113c6573d6000803e3d6000fd5b505050506040513d60808110156113dc57600080fd5b508051606091820151604080513390941b60208581019190915260348086018a9052825180870390910181526054909501825284519481019490942060008981526004865282812054828252600590965291909120549295509093509111158061144e57506001600160a01b03821633145b801561145d57508260ff166001145b6114985760405162461bcd60e51b81526004018080602001828103825260328152602001806122806032913960400191505060405180910390fd5b6114a28486611f0f565b6114ab85611f98565b84826001600160a01b03167fda392cb8aa0843e7e474e7bacfae355313fc4202094b3e81d2a488b5c05207bf866040518080602001828103825283818151815260200191508051906020019080838360005b838110156115155781810151838201526020016114fd565b50505050905090810190601f1680156115425780820380516001836020036101000a031916815260200191505b509250505060405180910390a35050505050565b6201040281565b60056020526000908152604090205481565b6201040181565b6201020181565b6008805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610b015780601f10610ad657610100808354040283529160200191610b01565b6115e662010101838361084a565b5050565b60046020526000908152604090205481565b6001546001600160a01b031681565b60608060008061161a85611dc7565b88516020808b01919091206000818152600383526040808220338352909352919091205494985092965090945092509060ff1615156001146116f257600061166186611d70565b905060005b818110156116ef576000611683610ee9898463ffffffff611d7716565b50600081815260036020908152604080832033845290915290205490925060ff16151560011490506116e65760405162461bcd60e51b81526004018080602001828103825260318152602001806123106031913960400191505060405180910390fd5b50600101611666565b50505b600154604051634bbbcb6960e11b815262ffffff89166004820190815233604483018190526060602484019081528a5160648501528a516001600160a01b039095169463977796d2948d948d94939092909160840190602086019080838360005b8381101561176b578181015183820152602001611753565b50505050905090810190601f1680156117985780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156117b957600080fd5b505af11580156117cd573d6000803e3d6000fd5b505050506117da85611fab565b6117e38461201a565b600082121561183157826001600160a01b03167ffed3b27b73d78d9d1f344bbbf25f7af35e0ac4d6cf8193604ce18082168e461a836000036040518082815260200191505060405180910390a25b600082131561187a576040805183815290516001600160a01b038516917f60213c45c34d8b94e495fd5871fdea7a7511f659e884ea25a0c8843b7f98bfad919081900360200190a25b50505050505050565b6201030181565b60005481565b6002546001600160a01b031681565b60ff62010000820481169261010083048216929190911690565b604081015160005b6118ca85611d70565b811015611c0f5760606118e3868363ffffffff611d7716565b600154604051634bbbcb6960e11b815262ffffff8a166004820190815230604483018190526060602484019081528551606485015285519596506001600160a01b039094169463977796d2948d94889492608490910190602086019080838360005b8381101561195d578181015183820152602001611945565b50505050905090810190601f16801561198a5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156119ab57600080fd5b505af11580156119bf573d6000803e3d6000fd5b505050506060806000806119d285611dc7565b935093509350935060006119e585611d70565b1115611b565760005b6119f785611d70565b811015611b54576060611a0a8b8361210d565b90506000611a21610ee9888563ffffffff611d7716565b509150506000604051602001808072094ded2dca6e0d8d2e8a6d2cedcc2e8eae4ca5606b1b815250601301806c1d5a5b9d0c8d081c1c9bdbd98b609a1b815250600d018070189e5d195ccccc881b9bdd1952185cda0b607a1b81525060110180711d5a5b9d0c8d4d8818da185b1b195b99d94b60721b815250601201806d30b2323932b9b99039b2b73232b960911b815250600e0180602960f81b8152506001019050604051602081830303815290604052805190602001208f838d33604051602001808681526020018562ffffff1662ffffff168152602001848152602001838152602001826001600160a01b03166001600160a01b0316815260200195505050505050604051602081830303815290604052805190602001209050611b49818385611e0f565b5050506001016119ee565b505b611b5f84611fab565b611b688361201a565b6000811215611bb657816001600160a01b03167ffed3b27b73d78d9d1f344bbbf25f7af35e0ac4d6cf8193604ce18082168e461a826000036040518082815260200191505060405180910390a25b6000811315611bff576040805182815290516001600160a01b038416917f60213c45c34d8b94e495fd5871fdea7a7511f659e884ea25a0c8843b7f98bfad919081900360200190a25b50505050506001810190506118c1565b505050505050565b6000808251848452606084015160408501518160f81c9150604086015160608701526020860151604087015281602087015260208660808860015afa601c8314601b84141760418514167f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08310161693508551871460008114611c9957611c9e565b865195505b5050508352808015611cb857506001600160a01b03821615155b611d69576001600160a01b038216611d17576040805162461bcd60e51b815260206004820152601a60248201527f7369676e657220616464726573732063616e6e6f742062652030000000000000604482015290519081900360640190fd5b80611d69576040805162461bcd60e51b815260206004820152601960248201527f7369676e6174757265207265636f76657279206661696c656400000000000000604482015290519081900360640190fd5b5092915050565b6020015190565b602082810151908202830160400151830190821080611d695760405162461bcd60e51b81526004018080602001828103825260228152602001806123416022913960400191505060405180910390fd5b60208101516040820151606083015160808401519284019491909301926001600160a01b03169190565b604081015160608201516001600160a01b0390911692909160800190565b60015460408051637f6f713360e11b81523060048201526024810185905290516000926001600160a01b03169163fedee266916044808301926080929190829003018186803b158015611e6157600080fd5b505afa158015611e75573d6000803e3d6000fd5b505050506040513d6080811015611e8b57600080fd5b5060600151825190915060009015611ebc576000611ea88661215d565b9050611eb48185611c17565b915050611ebf565b50335b816001600160a01b0316816001600160a01b031614610a745760405162461bcd60e51b81526004018080602001828103825260288152602001806121f06028913960400191505060405180910390fd5b815160e18301516061821115611f925760005b81811015610a74576000611f36868361217e565b6040805160609290921b6bffffffffffffffffffffffff19166020808401919091526034808401899052825180850390910181526054909301825282519281019290922060009081526005909252902042905550600101611f22565b50505050565b6000908152600460205260409020429055565b60005b611fb782611d70565b8110156115e657600080611fd4610ee9858563ffffffff611d7716565b509150915080826001600160a01b03167f979308e20fbd28822c4526e85d528175e04e3ca0cf91c46301db34401a26a8c660405160405180910390a35050600101611fae565b60005b61202682611d70565b8110156115e6576000806060612045610ee9868663ffffffff611d7716565b92509250925061205482611f98565b61205e8183611f0f565b81836001600160a01b03167f5ffb3072e4515cf3bfae8b16be9dff6313cf7c313a0c26faafe6971d8c7585f1836040518080602001828103825283818151815260200191508051906020019080838360005b838110156120c85781810151838201526020016120b0565b50505050905090810190601f1680156120f55780820380516001836020036101000a031916815260200191505b509250505060405180910390a350505060010161201d565b60419081029190910160208181015160408084015193850151815193840192909252828101939093526001600160f81b031960f89190911b16606082015281518082039093018352606101905290565b60008054604080516119019093526020919091529182526042601e20915290565b6020828101519082028301610101015190808310611d695760405162461bcd60e51b815260040180806020018281038252605e8152602001806122b2605e913960600191505060405180910390fdfe6f6e6c7920756e7370656e74206e6f7465732063616e20626520617070726f766564746865206e6f7465206f776e657220646964206e6f74207369676e2074686973206d657373616765746865206e6f7465206f776e657220646964206e6f74207369676e20746869732070726f6f66454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c6164647265737320766572696679696e67436f6e74726163742963616c6c657220646f6573206e6f742068617665207065726d697373696f6e20746f20757064617465206d6574614461746161646472657373506f73206f7574206f6620626f756e6473202d2061646472657373506f73206d757374206265206c657373207468616e20746865206e756d626572206f662061646472657373657320746f20626520617070726f76656473656e64657220646f6573206e6f74206861766520617070726f76616c20746f207370656e6420696e707574206e6f7465415a54454320617272617920696e646578206973206f7574206f6620626f756e6473a265627a7a7231582006b03bdac58446cf2704ee59067efb25beab8c2491315486350101cdefe322d864736f6c63430005110032c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
"compiler": {
"name": "solc",
"version": "0.5.17+commit.d19bba13.Emscripten.clang"
},
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101365760003560e01c806384a26fc8116100b8578063985cd3b71161007c578063985cd3b71461073a578063a5c8fa8414610757578063cdfea90e1461077b578063df9246251461082b578063e306f77914610833578063ea12489f1461083b57610136565b806384a26fc8146105ca5780638500e1f8146105f95780638e526d9b1461060157806395d89b4114610609578063969884981461061157610136565b80630a60305a116100ff5780630a60305a146103485780630f4a80fe146104295780631f2ac16a146104555780632e3b9a3b1461051757806349518b28146105c257610136565b80625bf7321461013b57806302d1fdc91461015b57806306fdde031461029257806308ae900a1461030f57806309146c7c14610317575b600080fd5b610143610843565b6040805162ffffff9092168252519081900360200190f35b6102906004803603606081101561017157600080fd5b62ffffff8235169190810190604081016020820135600160201b81111561019757600080fd5b8201836020820111156101a957600080fd5b803590602001918460018302840111600160201b831117156101ca57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561021c57600080fd5b82018360208201111561022e57600080fd5b803590602001918460018302840111600160201b8311171561024f57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061084a945050505050565b005b61029a610a7b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102d45781810151838201526020016102bc565b50505050905090810190601f1680156103015780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610143610b09565b6103346004803603602081101561032d57600080fd5b5035610b10565b604080519115158252519081900360200190f35b610290600480360360a081101561035e57600080fd5b62ffffff8235169190810190604081016020820135600160201b81111561038457600080fd5b82018360208201111561039657600080fd5b803590602001918460018302840111600160201b831117156103b757600080fd5b919390926001600160a01b038335169260208101351515929190606081019060400135600160201b8111156103eb57600080fd5b8201836020820111156103fd57600080fd5b803590602001918460018302840111600160201b8311171561041e57600080fd5b509092509050610b25565b6103346004803603604081101561043f57600080fd5b50803590602001356001600160a01b0316611069565b6102906004803603608081101561046b57600080fd5b8135916001600160a01b0360208201351691604082013515159190810190608081016060820135600160201b8111156104a357600080fd5b8201836020820111156104b557600080fd5b803590602001918460018302840111600160201b831117156104d657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611089945050505050565b6102906004803603604081101561052d57600080fd5b81359190810190604081016020820135600160201b81111561054e57600080fd5b82018360208201111561056057600080fd5b803590602001918460018302840111600160201b8311171561058157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061135b945050505050565b610143611556565b6105e7600480360360208110156105e057600080fd5b503561155d565b60408051918252519081900360200190f35b61014361156f565b610143611576565b61029a61157d565b6102906004803603604081101561062757600080fd5b810190602081018135600160201b81111561064157600080fd5b82018360208201111561065357600080fd5b803590602001918460018302840111600160201b8311171561067457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156106c657600080fd5b8201836020820111156106d857600080fd5b803590602001918460018302840111600160201b831117156106f957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506115d8945050505050565b6105e76004803603602081101561075057600080fd5b50356115ea565b61075f6115fc565b604080516001600160a01b039092168252519081900360200190f35b6102906004803603604081101561079157600080fd5b62ffffff8235169190810190604081016020820135600160201b8111156107b757600080fd5b8201836020820111156107c957600080fd5b803590602001918460018302840111600160201b831117156107ea57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061160b945050505050565b610143611883565b6105e761188a565b61075f611890565b6201010181565b600061085a8462ffffff1661189f565b5091505060ff81166001146108b6576040805162461bcd60e51b815260206004820152601c60248201527f74686973206973206e6f7420612062616c616e6365642070726f6f6600000000604482015290519081900360640190fd5b60015460405163a2866ea360e01b815262ffffff861660048201908152336024830181905260606044840181815288516064860152885191956001600160a01b03169463a2866ea3948b94938b93919260840190602085019080838360005b8381101561092d578181015183820152602001610915565b50505050905090810190601f16801561095a5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561097b57600080fd5b505af115801561098f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156109b857600080fd5b8101908080516040519392919084600160201b8211156109d757600080fd5b9083019060208201858111156109ec57600080fd5b8251600160201b811182820188101715610a0557600080fd5b82525081516020918201929091019080838360005b83811015610a32578181015183820152602001610a1a565b50505050905090810190601f168015610a5f5780820380516001836020036101000a031916815260200191505b506040525050509050610a74858285876118b9565b5050505050565b6007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610b015780601f10610ad657610100808354040283529160200191610b01565b820191906000526020600020905b815481529060010190602001808311610ae457829003601f168201915b505050505081565b6201040381565b60066020526000908152604090205460ff1681565b600082826040518083838082843760408051939091018390039092206000818152600660205292909220549195505060ff161515600114159250610bb3915050576040805162461bcd60e51b815260206004820152601f60248201527f7369676e61747572652068617320616c7265616479206265656e207573656400604482015290519081900360640190fd5b6000818152600660209081526040808320805460ff191660011790558051608081019091526042808252909161223e908301396040516020018082805190602001908083835b60208310610c185780518252601f199092019160209182019101610bf9565b51815160001960209485036101000a0190811690199190911617905260408051601f1995909301838103959095018352848152825192820192909220671692d7d054d4d15560c21b85528251948590036008018520603160f81b8652835195869003600101862086840192909252858401526060850152306080808601919091528251808603909101815260a0850183528051908201206e0a0e4dedecca6d2cedcc2e8eae4ca5608b1b60c086015271189e5d195ccccc881c1c9bdbd992185cda0b60721b60cf8601526f1859191c995cdcc81cdc195b99195c8b60821b60e18601526c189bdbdb08185c1c1c9bdd985b609a1b60f1860152602960f81b60fe860152825160df81870301815260ff9095019283905284519490910193909320929550600094508593508c91508b908083838082843760408051939091018390038320602080850198909852838201526001600160a01b038f1660608401528d15156080808501919091528151808503909101815260a08401825280519088012061190160f01b60c085015260c284019890985260e280840198909852805180840390980188526101028301808252885198880198909820610122601f8e01899004909802840188019091528b88529750600096610e17968996509094508c93508b9283925001838280828437600092019190915250611c1792505050565b905060005b610e5b8b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d7092505050565b81101561105b576060610ead828d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611d77169050565b90506060610eba82611dc7565b5091925060009150505b610ecd82611d70565b81101561101f576000610eee610ee9848463ffffffff611d7716565b611df1565b5060015460408051637f6f713360e11b81523060048201526024810184905290519294506000935083926001600160a01b039092169163fedee26691604480820192608092909190829003018186803b158015610f4a57600080fd5b505afa158015610f5e573d6000803e3d6000fd5b505050506040513d6080811015610f7457600080fd5b5080516060909101519092509050600160ff831614610fc45760405162461bcd60e51b81526004018080602001828103825260228152602001806121ce6022913960400191505060405180910390fd5b876001600160a01b0316816001600160a01b0316146110145760405162461bcd60e51b81526004018080602001828103825260268152602001806122186026913960400191505060405180910390fd5b505050600101610ec4565b5050805160209182012060009081526003825260408082206001600160a01b038d16835290925220805460ff1916891515179055600101610e1c565b505050505050505050505050565b600360209081526000928352604080842090915290825290205460ff1681565b60015460408051637f6f713360e11b81523060048201526024810187905290516000926001600160a01b03169163fedee266916044808301926080929190829003018186803b1580156110db57600080fd5b505afa1580156110ef573d6000803e3d6000fd5b505050506040513d608081101561110557600080fd5b50519050600160ff82161461114b5760405162461bcd60e51b81526004018080602001828103825260228152602001806121ce6022913960400191505060405180910390fd5b6000826040516020018082805190602001908083835b602083106111805780518252601f199092019160209182019101611161565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f190183528452815191810191909120600081815260069092529290205491945050600160ff9091161515141591506112289050576040805162461bcd60e51b815260206004820152601f60248201527f7369676e61747572652068617320616c7265616479206265656e207573656400604482015290519081900360640190fd5b825115611249576000818152600660205260409020805460ff191660011790555b604080516d09cdee8caa6d2cedcc2e8eae4ca560931b60208083019190915270189e5d195ccccc881b9bdd1952185cda0b607a1b602e8301526f1859191c995cdcc81cdc195b99195c8b60821b603f83015273189bdbdb081cdc195b99195c905c1c1c9bdd985b60621b604f830152602960f81b606383015282516044818403018152606483018452805190820120608483015260a482018990526001600160a01b03881660c483015286151560e480840191909152835180840390910181526101049092019092528051910120611322818886611e0f565b5050506000938452506003602090815260408085206001600160a01b039490941685529290529120805460ff1916911515919091179055565b60015460408051637f6f713360e11b815230600482015260248101859052905160009283926001600160a01b039091169163fedee26691604480820192608092909190829003018186803b1580156113b257600080fd5b505afa1580156113c6573d6000803e3d6000fd5b505050506040513d60808110156113dc57600080fd5b508051606091820151604080513390941b60208581019190915260348086018a9052825180870390910181526054909501825284519481019490942060008981526004865282812054828252600590965291909120549295509093509111158061144e57506001600160a01b03821633145b801561145d57508260ff166001145b6114985760405162461bcd60e51b81526004018080602001828103825260328152602001806122806032913960400191505060405180910390fd5b6114a28486611f0f565b6114ab85611f98565b84826001600160a01b03167fda392cb8aa0843e7e474e7bacfae355313fc4202094b3e81d2a488b5c05207bf866040518080602001828103825283818151815260200191508051906020019080838360005b838110156115155781810151838201526020016114fd565b50505050905090810