@aragon/apps-payroll
Version:
_**Code in Github:**_ [aragon-apps/apps/payroll](https://github.com/aragon/aragon-apps/tree/master/future-apps/payroll)
778 lines • 1.09 MB
JSON
{
"contractName": "TokenManager",
"abi": [
{
"constant": true,
"inputs": [
{
"name": "",
"type": "address"
}
],
"name": "everHeld",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "hasInitialized",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "MAX_VESTINGS_PER_ADDRESS",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_script",
"type": "bytes"
}
],
"name": "getEVMScriptExecutor",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getRecoveryVault",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "appId",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "ISSUE_ROLE",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getInitializationBlock",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "address"
}
],
"name": "vestingsLengths",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_token",
"type": "address"
}
],
"name": "transferToVault",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_sender",
"type": "address"
},
{
"name": "_role",
"type": "bytes32"
},
{
"name": "_params",
"type": "uint256[]"
}
],
"name": "canPerform",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getEVMScriptRegistry",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "ASSIGN_ROLE",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "BURN_ROLE",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "kernel",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "isPetrified",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "MINT_ROLE",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "maxAccountTokens",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "REVOKE_VESTINGS_ROLE",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "token",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "receiver",
"type": "address"
},
{
"indexed": false,
"name": "vestingId",
"type": "uint256"
},
{
"indexed": false,
"name": "amount",
"type": "uint256"
}
],
"name": "NewVesting",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "receiver",
"type": "address"
},
{
"indexed": false,
"name": "vestingId",
"type": "uint256"
},
{
"indexed": false,
"name": "nonVestedAmount",
"type": "uint256"
}
],
"name": "RevokeVesting",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "executor",
"type": "address"
},
{
"indexed": false,
"name": "script",
"type": "bytes"
},
{
"indexed": false,
"name": "input",
"type": "bytes"
},
{
"indexed": false,
"name": "returnData",
"type": "bytes"
}
],
"name": "ScriptResult",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "vault",
"type": "address"
},
{
"indexed": true,
"name": "token",
"type": "address"
},
{
"indexed": false,
"name": "amount",
"type": "uint256"
}
],
"name": "RecoverToVault",
"type": "event"
},
{
"constant": false,
"inputs": [
{
"name": "_token",
"type": "address"
},
{
"name": "_transferable",
"type": "bool"
},
{
"name": "_maxAccountTokens",
"type": "uint256"
}
],
"name": "initialize",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_receiver",
"type": "address"
},
{
"name": "_amount",
"type": "uint256"
}
],
"name": "mint",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_amount",
"type": "uint256"
}
],
"name": "issue",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_receiver",
"type": "address"
},
{
"name": "_amount",
"type": "uint256"
}
],
"name": "assign",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_holder",
"type": "address"
},
{
"name": "_amount",
"type": "uint256"
}
],
"name": "burn",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_receiver",
"type": "address"
},
{
"name": "_amount",
"type": "uint256"
},
{
"name": "_start",
"type": "uint64"
},
{
"name": "_cliff",
"type": "uint64"
},
{
"name": "_vested",
"type": "uint64"
},
{
"name": "_revokable",
"type": "bool"
}
],
"name": "assignVested",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_holder",
"type": "address"
},
{
"name": "_vestingId",
"type": "uint256"
}
],
"name": "revokeVesting",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_evmScript",
"type": "bytes"
}
],
"name": "forward",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "isForwarder",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "pure",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_sender",
"type": "address"
},
{
"name": "",
"type": "bytes"
}
],
"name": "canForward",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_recipient",
"type": "address"
},
{
"name": "_vestingId",
"type": "uint256"
}
],
"name": "getVesting",
"outputs": [
{
"name": "amount",
"type": "uint256"
},
{
"name": "start",
"type": "uint64"
},
{
"name": "cliff",
"type": "uint64"
},
{
"name": "vesting",
"type": "uint64"
},
{
"name": "revokable",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_from",
"type": "address"
},
{
"name": "_to",
"type": "address"
},
{
"name": "_amount",
"type": "uint256"
}
],
"name": "onTransfer",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "",
"type": "address"
}
],
"name": "proxyPayment",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": true,
"stateMutability": "payable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "",
"type": "address"
},
{
"name": "",
"type": "address"
},
{
"name": "",
"type": "uint256"
}
],
"name": "onApprove",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_holder",
"type": "address"
}
],
"name": "spendableBalanceOf",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_holder",
"type": "address"
},
{
"name": "_time",
"type": "uint256"
}
],
"name": "transferableBalance",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_token",
"type": "address"
}
],
"name": "allowRecoverability",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x6080604052620000176401000000006200001d810204565b6200023b565b6200003064010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156200010c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620000d0578181015183820152602001620000b6565b50505050905090810190601f168015620000fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506200012360001964010000000062000154810204565b565b60006200014f600080516020620040a8833981519152640100000000620032516200023382021704565b905090565b6200016764010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a454400000000000000006020820152901562000206576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620000d0578181015183820152602001620000b6565b5062000230600080516020620040a88339815191528264010000000062003e296200023782021704565b50565b5490565b9055565b613e5d806200024b6000396000f3006080604052600436106101cc5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166303f413d181146101d15780630803fac0146102135780630db3971b146102285780630f8f8b831461024f57806321cb18cd1461027d5780632914b9bd146102cc57806332f0a3b51461034e5780633e05a36d1461036357806340c10f19146103cd5780634a3931491461040057806372f8393c146104375780637e7db6e11461046857806380afdea814610496578063856222f1146104ab5780638b3dd749146104c057806397f2562a146104d55780639d4941d8146105035780639dc29fac14610531578063a1658fad14610562578063a479e508146105d6578063a51d9a8e146105eb578063b930908f14610600578063be76048814610615578063c0774df314610646578063cc872b66146106ba578063d4aae0c4146106d2578063d948d468146106e7578063da682aeb14610740578063de4796ed14610777578063e37ff29f1461078c578063e9a9c850146107c2578063ecfda432146107d7578063edc168f1146107ec578063f48c305414610801578063fa6799f214610822578063fc0c546a14610853578063fd64eccb14610868575b600080fd5b3480156101dd57600080fd5b506101ff73ffffffffffffffffffffffffffffffffffffffff6004351661087d565b604080519115158252519081900360200190f35b34801561021f57600080fd5b506101ff610892565b34801561023457600080fd5b5061023d6108bb565b60408051918252519081900360200190f35b34801561025b57600080fd5b5061023d73ffffffffffffffffffffffffffffffffffffffff600435166108c0565b34801561028957600080fd5b5061023d73ffffffffffffffffffffffffffffffffffffffff6004351660243567ffffffffffffffff6044358116906064358116906084351660a43515156108d2565b3480156102d857600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610325943694929360249392840191908190840183828082843750949750610da09650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561035a57600080fd5b50610325610eac565b34801561036f57600080fd5b5061039473ffffffffffffffffffffffffffffffffffffffff60043516602435610f4a565b6040805195865267ffffffffffffffff948516602087015292841685840152921660608401529015156080830152519081900360a00190f35b3480156103d957600080fd5b506103fe73ffffffffffffffffffffffffffffffffffffffff600435166024356110d3565b005b34801561040c57600080fd5b506101ff73ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435611270565b34801561044357600080fd5b5061023d73ffffffffffffffffffffffffffffffffffffffff60043516602435611451565b34801561047457600080fd5b506101ff73ffffffffffffffffffffffffffffffffffffffff600435166115e7565b3480156104a257600080fd5b5061023d611609565b3480156104b757600080fd5b5061023d611639565b3480156104cc57600080fd5b5061023d61166e565b3480156104e157600080fd5b5061023d73ffffffffffffffffffffffffffffffffffffffff60043516611699565b34801561050f57600080fd5b506103fe73ffffffffffffffffffffffffffffffffffffffff600435166116ab565b34801561053d57600080fd5b506103fe73ffffffffffffffffffffffffffffffffffffffff600435166024356119cd565b34801561056e57600080fd5b5060408051602060046044358181013583810280860185019096528085526101ff95833573ffffffffffffffffffffffffffffffffffffffff16956024803596369695606495939492019291829185019084908082843750949750611b639650505050505050565b3480156105e257600080fd5b50610325611cf3565b3480156105f757600080fd5b5061023d611db5565b34801561060c57600080fd5b5061023d611dea565b34801561062157600080fd5b506103fe73ffffffffffffffffffffffffffffffffffffffff60043516602435611e1f565b34801561065257600080fd5b5060408051602060046024803582810135601f81018590048502860185019096528585526101ff95833573ffffffffffffffffffffffffffffffffffffffff16953695604494919390910191908190840183828082843750949750611f0e9650505050505050565b3480156106c657600080fd5b506103fe600435611fc9565b3480156106de57600080fd5b506103256120bc565b3480156106f357600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103fe9436949293602493928401919081908401838280828437509497506120e79650505050505050565b34801561074c57600080fd5b506101ff73ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435612215565b34801561078357600080fd5b506101ff61221e565b34801561079857600080fd5b506103fe73ffffffffffffffffffffffffffffffffffffffff60043516602435151560443561224f565b3480156107ce57600080fd5b5061023d612613565b3480156107e357600080fd5b5061023d612648565b3480156107f857600080fd5b5061023d61264e565b6101ff73ffffffffffffffffffffffffffffffffffffffff60043516612683565b34801561082e57600080fd5b506103fe73ffffffffffffffffffffffffffffffffffffffff60043516602435612743565b34801561085f57600080fd5b50610325612c24565b34801561087457600080fd5b506101ff612c40565b60046020526000908152604090205460ff1681565b60008061089d61166e565b905080158015906108b55750806108b2612c45565b10155b91505090565b603281565b60006108cc8242611451565b92915050565b604080517f41535349474e5f524f4c450000000000000000000000000000000000000000008152905190819003600b01902060009081906109138989612c49565b61091e338383611b63565b60408051808201909152600f81527f4150505f415554485f4641494c4544000000000000000000000000000000000060208201529015156109f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156109bc5781810151838201526020016109a4565b50505050905090810190601f1680156109e95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff8a16600090815260036020908152604091829020548251808401909352601483527f544d5f544f4f5f4d414e595f56455354494e475300000000000000000000000091830191909152603211610abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b508667ffffffffffffffff168867ffffffffffffffff1611158015610af857508567ffffffffffffffff168767ffffffffffffffff1611155b60408051808201909152601381527f544d5f57524f4e475f434c4946465f44415445000000000000000000000000006020820152901515610b95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b50600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055925060a0604051908101604052808a81526020018967ffffffffffffffff1681526020018867ffffffffffffffff1681526020018767ffffffffffffffff168152602001861515815250600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008581526020019081526020016000206000820151816000015560208201518160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160010160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060808201518160010160186101000a81548160ff021916908315150217905550905050610d428a8a612c6b565b60408051848152602081018b9052815173ffffffffffffffffffffffffffffffffffffffff8d16927f627ad26dcfe82ec79b33fda0ddd062f6fab9f4914acac8345f79090dfd86fb54928290030190a2509098975050505050505050565b6000610daa611cf3565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e2e578181015183820152602001610e16565b50505050905090810190601f168015610e5b5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b158015610e7a57600080fd5b505af1158015610e8e573d6000803e3d6000fd5b505050506040513d6020811015610ea457600080fd5b505192915050565b6000610eb66120bc565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610f1957600080fd5b505af1158015610f2d573d6000803e3d6000fd5b505050506040513d6020811015610f4357600080fd5b5051905090565b6000806000806000808787600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481106040805190810160405280600d81526020017f544d5f4e4f5f56455354494e4700000000000000000000000000000000000000815250901515611036576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5050505073ffffffffffffffffffffffffffffffffffffffff969096166000908152600260209081526040808320978352969052949094208054600190910154909667ffffffffffffffff8083169750680100000000000000008304811696507001000000000000000000000000000000008304169450780100000000000000000000000000000000000000000000000090910460ff1692509050565b604080517f4d494e545f524f4c4500000000000000000000000000000000000000000000008152905190819003600901902061110f8383612c49565b61111a338383611b63565b60408051808201909152600f81527f4150505f415554485f4641494c4544000000000000000000000000000000000060208201529015156111b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b506111c28484612e61565b60408051808201909152601b81527f544d5f4d494e545f42414c5f494e435f4e4f545f414c4c4f5745440000000000602082015290151561125f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5061126a8484612f20565b50505050565b600080600061127d610892565b60408051808201909152601481527f494e49545f4e4f545f494e495449414c495a4544000000000000000000000000602082015290151561131a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5060005460408051808201909152601881527f544d5f5452414e534645525f57524f4e475f53454e444552000000000000000060208201529073ffffffffffffffffffffffffffffffffffffffff1633146113d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5073ffffffffffffffffffffffffffffffffffffffff861630148061140b575073ffffffffffffffffffffffffffffffffffffffff851630145b91508115156114435761141e8585612e61565b90508015806114355750836114338742611451565b105b156114435760009250611448565b600192505b50509392505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812054818080805b848310156115255773ffffffffffffffffffffffffffffffffffffffff8816600090815260026020908152604080832086845290915290208054909250611506906114c689612fc9565b600185015467ffffffffffffffff918216918181169168010000000000000000810482169170010000000000000000000000000000000090910416613079565b9050611518848263ffffffff6130f516565b935060019092019161147c565b60008054604080517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c8116600483015291516115db94899493909316926370a0823192602480820193602093909283900390910190829087803b1580156115a357600080fd5b505af11580156115b7573d6000803e3d6000fd5b505050506040513d60208110156115cd57600080fd5b50519063ffffffff6131a616565b98975050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff9081169116141590565b60006116347fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b613251565b905090565b604080517f49535355455f524f4c45000000000000000000000000000000000000000000008152905190819003600a01902081565b60006116347febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e613251565b60036020526000908152604090205481565b60008060006116b9846115e7565b60408051808201909152601281527f5245434f5645525f444953414c4c4f57454400000000000000000000000000006020820152901515611756576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5061175f610eac565b925061176a83613259565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e54524143540000000000006020820152901515611807576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5073ffffffffffffffffffffffffffffffffffffffff84161515611872576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f1935050505015801561186c573d6000803e3d6000fd5b50611962565b508261189a73ffffffffffffffffffffffffffffffffffffffff82163063ffffffff61329316565b91506118c373ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff6133c216565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c45440000006020820152901515611960576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b604080517f4255524e5f524f4c45000000000000000000000000000000000000000000000081529051908190036009019020611a098383612c49565b611a14338383611b63565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515611ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5060008054604080517fd3ce77fe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152602482018890529151919092169263d3ce77fe92604480820193602093909283900390910190829087803b158015611b3157600080fd5b505af1158015611b45573d6000803e3d6000fd5b505050506040513d6020811015611b5b57600080fd5b505050505050565b600080611b6e610892565b1515611b7d5760009150611ceb565b611b856120bc565b905073ffffffffffffffffffffffffffffffffffffffff81161515611bad5760009150611ceb565b8073ffffffffffffffffffffffffffffffffffffffff1663fdef9106863087611bd58861345a565b6040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff808616600483019081529085166024830152604482018490526080606483019081528351608484015283519192909160a490910190602085019080838360005b83811015611c6d578181015183820152602001611c55565b50505050905090810190601f168015611c9a5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015611cbc57600080fd5b505af1158015611cd0573d6000803e3d6000fd5b505050506040513d6020811015611ce657600080fd5b505191505b509392505050565b600080611cfe6120bc565b604080517fbe00bbd80000000000000000000000000000000000000000000000000000000081527fd6f028ca0e8edb4a8c9757ca4fdccab25fa1e0317da1188108f7d2dee14902fb60048201527fddbcfd564f642ab5627cf68b9b7d374fb4f8a36e941a75d89c87998cef03bd616024820152905173ffffffffffffffffffffffffffffffffffffffff929092169163be00bbd8916044808201926020929091908290030181600087803b158015610e7a57600080fd5b604080517f41535349474e5f524f4c450000000000000000000000000000000000000000008152905190819003600b01902081565b604080517f4255524e5f524f4c4500000000000000000000000000000000000000000000008152905190819003600901902081565b604080517f41535349474e5f524f4c450000000000000000000000000000000000000000008152905190819003600b019020611e5b8383612c49565b611e66338383611b63565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515611f03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5061126a8484612c6b565b6000611f18610892565b8015611fc2575060008054604080517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152915191909216916370a0823191602480830192602092919082900301818787803b158015611f9457600080fd5b505af1158015611fa8573d6000803e3d6000fd5b505050506040513d6020811015611fbe57600080fd5b5051115b9392505050565b604080517f49535355455f524f4c45000000000000000000000000000000000000000000008152905190819003600a01902061200482613464565b61200f338383611b63565b60408051808201909152600f81527f4150505f415554485f4641494c4544000000000000000000000000000000000060208201529015156120ac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b506120b73084612f20565b505050565b60006116347f4172f0f7d2289153072b0a6ca36959e0cbe2efc3afe50fc81636caa96338137b613251565b6060806120f43384611f0e565b60408051808201909152601281527f544d5f43414e5f4e4f545f464f525741524400000000000000000000000000006020820152901515612191576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b50604080516000815260016020808301828152606084018552929550919290919085019080388339505060008054835193945073ffffffffffffffffffffffffffffffffffffffff169284925081106121e657fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029091019091015261126a8383836134a5565b60019392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61224961166e565b14905090565b61225761166e565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156122f3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b506122fc613b7b565b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1663f77c47916040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561237757600080fd5b505af115801561238b573d6000803e3d6000fd5b505050506040513d60208110156123a157600080fd5b505160408051808201909152601381527f544d5f544f4b454e5f434f4e54524f4c4c45520000000000000000000000000060208201529173ffffffffffffffffffffffffffffffffffffffff90911614612457576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b50600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851617905580156124a457806124c6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6001819055508115156000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bef97c876040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561255457600080fd5b505af1158015612568573d6000803e3d6000fd5b505050506040513d602081101561257e57600080fd5b50511515146120b75760008054604080517ff41e60c50000000000000000000000000000000000000000000000000000000081528515156004820152905173ffffffffffffffffffffffffffffffffffffffff9092169263f41e60c59260248084019382900301818387803b1580156125f657600080fd5b505af115801561260a573d6000803e3d6000fd5b50505050505050565b604080517f4d494e545f524f4c4500000000000000000000000000000000000000000000008152905190819003600901902081565b60015481565b604080517f5245564f4b455f56455354494e47535f524f4c450000000000000000000000008152905190819003601401902081565b6000805460408051808201909152601d81527f544d5f50524f58595f5041594d454e545f57524f4e475f53454e44455200000060208201529073ffffffffffffffffffffffffffffffffffffffff16331461273a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b50600092915050565b604080517f5245564f4b455f56455354494e47535f524f4c4500000000000000000000000081529051908190036014019020600090819061278385613c5a565b61278e338383611b63565b60408051808201909152600f81527f4150505f415554485f4641494c45440000000000000000000000000000000000602082015290151561282b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5073ffffffffffffffffffffffffffffffffffffffff8616600090815260036020908152604091829020548251808401909352600d83527f544d5f4e4f5f56455354494e4700000000000000000000000000000000000000918301919091528791879182106128f6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5073ffffffffffffffffffffffffffffffffffffffff881660009081526002602090815260408083208a845282529182902060018101548351808501909452601884527f544d5f56455354494e475f4e4f545f5245564f4b41424c4500000000000000009284019290925297507801000000000000000000000000000000000000000000000000900460ff1615156129ea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b508554612a39906129f9613c7b565b600189015467ffffffffffffffff918216918181169168010000000000000000810482169170010000000000000000000000000000000090910416613079565b73ffffffffffffffffffffffffffffffffffffffff808a1660008181526002602090815260408083208d8452825280832083815560010180547fffffffffffffff00000000000000000000000000000000000000000000000000169055825481517f23b872dd0000000000000000000000000000000000000000000000000000000081526004810195909552306024860152604485018790529051959a50909316936323b872dd936064808501949193918390030190829087803b158015612b0057600080fd5b505af1158015612b14573d6000803e3d6000fd5b505050506040513d6020811015612b2a57600080fd5b50516040805180820190915260208082527f544d5f5245564f4b455f5452414e534645525f46524f4d5f524556455254454490820152901515612bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b506040805188815260208101879052815173ffffffffffffffffffffffffffffffffffffffff8b16927fafc516b1509f836efdc27d64d966d14f82ef53f456f0de74c12ac8a651a084cc928290030190a25050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600190565b4390565b6060611fc28373ffffffffffffffffffffffffffffffffffffffff1683613c8d565b612c758282612e61565b60408051808201909152601d81527f544d5f41535349474e5f42414c5f494e435f4e4f545f414c4c4f5745440000006020820152901515612d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5060008054604080517f23b872dd00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff868116602483015260448201869052915191909216926323b872dd92606480820193602093909283900390910190829087803b158015612d9857600080fd5b505af1158015612dac573d6000803e3d6000fd5b505050506040513d6020811015612dc257600080fd5b50516040805180820190915260208082527f544d5f41535349474e5f5452414e534645525f46524f4d5f5245564552544544908201529015156120b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b60015460008054604080517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301529151939493612f1793879316916370a0823191602480830192602092919082900301818a87803b158015612edf57600080fd5b505af1158015612ef3573d6000803e3d6000fd5b505050506040513d6020811015612f0957600080fd5b50519063ffffffff6130f516565b11159392505050565b60008054604080517f827f32c000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152602482018690529151919092169263827f32c092604480820193602093909283900390910190829087803b158015612f9f57600080fd5b505af1158015612fb3573d6000803e3d6000fd5b505050506040513d602081101561126a57600080fd5b60408051808201909152601581527f55494e5436345f4e554d4245525f544f4f5f4249470000000000000000000000602082015260009067ffffffffffffffff831115613072576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5090919050565b60008082861061308c57600091506130eb565b8386101561309c578691506130eb565b6130ac838663ffffffff6131a616565b6130cc6130bf888863ffffffff6131a616565b899063ffffffff613ce816565b8115156130d557fe5b0490506130e8878263ffffffff6131a616565b91505b5095945050505050565b60408051808201909152601181527f4d4154485f4144445f4f564552464c4f570000000000000000000000000000006020820152600090838301908482101561319a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b508091505b5092915050565b60408051808201909152601281527f4d4154485f5355425f554e444552464c4f5700000000000000000000000000006020820152600090819084841115613249576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b505050900390565b5490565b5490565b60008073ffffffffffffffffffffffffffffffffffffffff83161515613282576000915061328d565b823b90506000811191505b50919050565b6040805173ffffffffffffffffffffffffffffffffffffffff83166024808301919091528251808303909101815260449091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905260009081806133208684613daa565b60408051808201909152601c81527f534146455f4552435f32305f42414c414e43455f524556455254454400000000602082015291935091508215156130eb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526000906134518582613ddb565b95945050505050565b8051602002815290565b604080516001808252818301909252606091602080830190803883390190505090508181600081518110151561349657fe5b60209081029091010152919050565b60606000806060806134b5610892565b60408051808201909152601481527f494e49545f4e4f545f494e495449414c495a45440000000000000000000000006020820152901515613552576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5060008061355e6120bc565b9150613568611609565b90506135738a610da0565b60408051808201909152601b81527f45564d52554e5f4558454355544f525f554e415641494c41424c450000000000602082015290965073ffffffffffffffffffffffffffffffffffffffff87161515613629576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b506040516060602482019081528b5160848301528b517f279cea3500000000000000000000000000000000000000000000000000000000975087928d928d928d9282916044820191606481019160a490910190602089019080838360005b8381101561369f578181015183820152602001613687565b50505050905090810190601f1680156136cc5780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b838110156136ff5781810151838201526020016136e7565b50505050905090810190601f16801561372c5780820380516001836020036101000a031916815260200191505b508481038252855181528551602091820191808801910280838360005b83811015613761578181015183820152602001613749565b505050509050019650505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509350600080855160208701895af4604051935080801561386657603f3d1180156138045760203d03806020883e8601604052613860565b7f08c379a000000000000000000000000000000000000000000000000000000000865260206004870152601e60248701527f45564d52554e5f4558454355544f525f494e56414c49445f52455455524e00006044870152606486fd5b5061386f565b3d6000863e3d85fd5b50508573ffffffffffffffffffffffffffffffffffffffff167f5229a5dba83a54ae8cb5b51bdd6de9474cacbe9dd332f5185f3a4f4f2e3f4ad98b8b8660405180806020018060200180602001848103845287818151815260200191508051906020019080838360005b838110156138f15781810151838201526020016138d9565b50505050905090810190601f16801561391e5780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b83811015613951578181015183820152602001613939565b50505050905090810190601f16801561397e5780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b838110156139b1578181015183820152602001613999565b50505050905090810190601f1680156139de5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a28296508173ffffffffffffffffffffffffffffffffffffffff16613a116120bc565b73ffffffffffffffffffffffffffffffffffffffff16146040805190810160405280601f81526020017f45564d52554e5f50524f5445435445445f53544154455f4d4f44494649454400815250901515613ac7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b5080613ad1611609565b60408051808201909152601f81527f45564d52554e5f50524f5445435445445f53544154455f4d4f4449464945440060208201529114613b6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b505050505050509392505050565b613b8361166e565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a4544000000000000000060208201529015613c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b50613c58613c2b612c45565b7febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e9063ffffffff613e2916565b565b60606108cc8273ffffffffffffffffffffffffffffffffffffffff16613464565b6000611634613c88613e2d565b612fc9565b604080516002808252606080830184529260208301908038833901905050905082816000815181101515613cbd57fe5b602090810290910101528051829082906001908110613cd857fe5b6020908102909101015292915050565b600080831515613cfb576000915061319f565b50828202828482811515613d0b57fe5b60408051808201909152601181527f4d4154485f4d554c5f4f564552464c4f570000000000000000000000000000006020820152929190041461319a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156109bc5781810151838201526020016109a4565b6000806000806040516020818751602089018a5afa92506000831115613dcf57805191505b50909590945092505050565b6000806040516020818551602087016000895af16000811115613e1f573d8015613e0c5760208114613e1557613e1d565b60019350613e1d565b600183511493505b505b5090949350505050565b9055565b42905600a165627a7a723058203d5d22b0922a6138a58695e5993d017b6970cf4e9ca2ee736a2026fae374426e0029ebb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e",
"deployedBytecode": "0x6080604052600436106101cc5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166303f413d181146101d15780630803fac0146102135780630db3971b146102285780630f8f8b831461024f57806321cb18cd1461027d5780632914b9bd146102cc57806332f0a3b51461034e5780633e05a36d1461036357806340c10f19146103cd5780634a3931491461040057806372f8393c146104375780637e7db6e11461046857806380afdea814610496578063856222f1146104ab5780638b3dd749146104c057806397f2562a146104d55780639d4941d8146105035780639dc29fac14610531578063a1658fad14610562578063a479e508146105d6578063a51d9a8e146105eb578063b930908f14610600578063be76048814610615578063c0774df314610646578063cc872b66146106ba578063d4aae0c4146106d2578063d948d468146106e7578063da682aeb14610740578063de4796ed14610777578063e37ff29f1461078c578063e9a9c850146107c2578063ecfda432146107d7578063edc168f1146107ec578063f48c305414610801578063fa6799f214610822578063fc0c546a14610853578063fd64eccb14610868575b600080fd5b3480156101dd57600080fd5b506101ff73ffffffffffffffffffffffffffffffffffffffff6004351661087d565b604080519115158252519081900360200190f35b34801561021f57600080fd5b506101ff610892565b34801561023457600080fd5b5061023d6108bb565b60408051918252519081900360200190f35b34801561025b57600080fd5b5061023d73ffffffffffffffffffffffffffffffffffffffff600435166108c0565b34801561028957600080fd5b5061023d73ffffffffffffffffffffffffffffffffffffffff6004351660243567ffffffffffffffff6044358116906064358116906084351660a43515156108d2565b3480156102d857600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610325943694929360249392840191908190840183828082843750949750610da09650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561035a57600080fd5b50610325610eac565b34801561036f57600080fd5b5061039473ffffffffffffffffffffffffffffffffffffffff60043516602435610f4a565b6040805195865267ffffffffffffffff948516602087015292841685840152921660608401529015156080830152519081900360a00190f35b3480156103d957600080fd5b506103fe73f