@aragon/apps-payroll
Version:
_**Code in Github:**_ [aragon-apps/apps/payroll](https://github.com/aragon/aragon-apps/tree/master/future-apps/payroll)
1,012 lines • 2.37 MB
JSON
{
"contractName": "Finance",
"abi": [
{
"constant": true,
"inputs": [],
"name": "hasInitialized",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "CREATE_PAYMENTS_ROLE",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"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": "CHANGE_PERIOD_ROLE",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "CHANGE_BUDGETS_ROLE",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "periodsLength",
"outputs": [
{
"name": "",
"type": "uint64"
}
],
"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": "getInitializationBlock",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "EXECUTE_PAYMENTS_ROLE",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"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": "kernel",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "paymentsNextIndex",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"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": "MANAGE_PAYMENTS_ROLE",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "transactionsNextIndex",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "vault",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"payable": true,
"stateMutability": "payable",
"type": "fallback"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "periodId",
"type": "uint64"
},
{
"indexed": false,
"name": "periodStarts",
"type": "uint64"
},
{
"indexed": false,
"name": "periodEnds",
"type": "uint64"
}
],
"name": "NewPeriod",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "token",
"type": "address"
},
{
"indexed": false,
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"name": "hasBudget",
"type": "bool"
}
],
"name": "SetBudget",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "paymentId",
"type": "uint256"
},
{
"indexed": true,
"name": "recipient",
"type": "address"
},
{
"indexed": false,
"name": "maxExecutions",
"type": "uint64"
},
{
"indexed": false,
"name": "reference",
"type": "string"
}
],
"name": "NewPayment",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "transactionId",
"type": "uint256"
},
{
"indexed": false,
"name": "incoming",
"type": "bool"
},
{
"indexed": true,
"name": "entity",
"type": "address"
},
{
"indexed": false,
"name": "amount",
"type": "uint256"
},
{
"indexed": false,
"name": "reference",
"type": "string"
}
],
"name": "NewTransaction",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "paymentId",
"type": "uint256"
},
{
"indexed": false,
"name": "active",
"type": "bool"
}
],
"name": "ChangePaymentState",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "newDuration",
"type": "uint64"
}
],
"name": "ChangePeriodDuration",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "paymentId",
"type": "uint256"
}
],
"name": "PaymentFailure",
"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": "_vault",
"type": "address"
},
{
"name": "_periodDuration",
"type": "uint64"
}
],
"name": "initialize",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_token",
"type": "address"
},
{
"name": "_amount",
"type": "uint256"
},
{
"name": "_reference",
"type": "string"
}
],
"name": "deposit",
"outputs": [],
"payable": true,
"stateMutability": "payable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_token",
"type": "address"
},
{
"name": "_receiver",
"type": "address"
},
{
"name": "_amount",
"type": "uint256"
},
{
"name": "_reference",
"type": "string"
}
],
"name": "newImmediatePayment",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_token",
"type": "address"
},
{
"name": "_receiver",
"type": "address"
},
{
"name": "_amount",
"type": "uint256"
},
{
"name": "_initialPaymentTime",
"type": "uint64"
},
{
"name": "_interval",
"type": "uint64"
},
{
"name": "_maxExecutions",
"type": "uint64"
},
{
"name": "_reference",
"type": "string"
}
],
"name": "newScheduledPayment",
"outputs": [
{
"name": "paymentId",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_periodDuration",
"type": "uint64"
}
],
"name": "setPeriodDuration",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_token",
"type": "address"
},
{
"name": "_amount",
"type": "uint256"
}
],
"name": "setBudget",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_token",
"type": "address"
}
],
"name": "removeBudget",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_paymentId",
"type": "uint256"
}
],
"name": "executePayment",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_paymentId",
"type": "uint256"
}
],
"name": "receiverExecutePayment",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_paymentId",
"type": "uint256"
},
{
"name": "_active",
"type": "bool"
}
],
"name": "setPaymentStatus",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_token",
"type": "address"
}
],
"name": "recoverToVault",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_maxTransitions",
"type": "uint64"
}
],
"name": "tryTransitionAccountingPeriod",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "address"
}
],
"name": "allowRecoverability",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_paymentId",
"type": "uint256"
}
],
"name": "getPayment",
"outputs": [
{
"name": "token",
"type": "address"
},
{
"name": "receiver",
"type": "address"
},
{
"name": "amount",
"type": "uint256"
},
{
"name": "initialPaymentTime",
"type": "uint64"
},
{
"name": "interval",
"type": "uint64"
},
{
"name": "maxExecutions",
"type": "uint64"
},
{
"name": "inactive",
"type": "bool"
},
{
"name": "executions",
"type": "uint64"
},
{
"name": "createdBy",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_transactionId",
"type": "uint256"
}
],
"name": "getTransaction",
"outputs": [
{
"name": "periodId",
"type": "uint64"
},
{
"name": "amount",
"type": "uint256"
},
{
"name": "paymentId",
"type": "uint256"
},
{
"name": "paymentExecutionNumber",
"type": "uint64"
},
{
"name": "token",
"type": "address"
},
{
"name": "entity",
"type": "address"
},
{
"name": "isIncoming",
"type": "bool"
},
{
"name": "date",
"type": "uint64"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_periodId",
"type": "uint64"
}
],
"name": "getPeriod",
"outputs": [
{
"name": "isCurrent",
"type": "bool"
},
{
"name": "startTime",
"type": "uint64"
},
{
"name": "endTime",
"type": "uint64"
},
{
"name": "firstTransactionId",
"type": "uint256"
},
{
"name": "lastTransactionId",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_periodId",
"type": "uint64"
},
{
"name": "_token",
"type": "address"
}
],
"name": "getPeriodTokenStatement",
"outputs": [
{
"name": "expenses",
"type": "uint256"
},
{
"name": "income",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "currentPeriodId",
"outputs": [
{
"name": "",
"type": "uint64"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getPeriodDuration",
"outputs": [
{
"name": "",
"type": "uint64"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_token",
"type": "address"
}
],
"name": "getBudget",
"outputs": [
{
"name": "budget",
"type": "uint256"
},
{
"name": "hasBudget",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_token",
"type": "address"
}
],
"name": "getRemainingBudget",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_token",
"type": "address"
},
{
"name": "_amount",
"type": "uint256"
}
],
"name": "canMakePayment",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_paymentId",
"type": "uint256"
}
],
"name": "nextPaymentTime",
"outputs": [
{
"name": "",
"type": "uint64"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x6080604052620000176401000000006200001d810204565b6200023b565b6200003064010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a45440000000000000000602082015290156200010c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620000d0578181015183820152602001620000b6565b50505050905090810190601f168015620000fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506200012360001964010000000062000154810204565b565b60006200014f60008051602062005d3c83398151915264010000000062004ec16200023382021704565b905090565b6200016764010000000062000125810204565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a454400000000000000006020820152901562000206576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252838181518152602001915080519060200190808383600083811015620000d0578181015183820152602001620000b6565b506200023060008051602062005d3c833981519152826401000000006200589b6200023782021704565b50565b5490565b9055565b615af1806200024b6000396000f3006080604052600436106102035763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630803fac0811461047e5780630842ace4146104a757806314920438146104ce578063162a0cf8146105305780631798de811461054a57806318f053da1461058557806319b7d7bd146105b35780632914b9bd146105fa5780632d00cad31461067c5780633280a8361461069957806332f0a3b51461072457806333ea3dc8146107395780635985feec146107ba5780635b14dbc8146107cf5780636436f189146107e457806367047c4a146107fc578063671273f4146108585780636abe602d1461087a57806374bfb426146108ac5780637e7db6e1146108dd57806380afdea81461090b5780638b3dd749146109205780639297d86014610935578063981cc34214610963578063988e6595146109785780639d4941d81461098d578063a1658fad146109bb578063a479e50814610a2f578063a662944114610a44578063b36fec5714610a66578063bfe07da614610a7b578063cb045a9614610aac578063d2d27b4114610ac4578063d4aae0c414610b18578063de048a7b14610b2d578063de4796ed14610b42578063e90a1b6e14610b57578063e94ebac514610b88578063eaa7ec6814610b9d578063eca8181714610bb2578063f636484614610be0578063fbfa77cf14610c26575b61020b610c3b565b60408051808201909152601481527f494e49545f4e4f545f494e495449414c495a454400000000000000000000000060208201529015156102e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156102a9578181015183820152602001610291565b50505050905090810190601f1680156102d65780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060006102f76102f2610c64565b610c6a565b60408051808201909152601b81527f46494e414e43455f434f4d504c4554455f5452414e534954494f4e00000000006020820152909150811515610397576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b5060408051808201909152601b81527f46494e414e43455f4445504f5349545f414d4f554e545f5a45524f0000000000602082015260003411610436576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b5061047b6000346040805190810160405280601d81526020017f4574686572207472616e7366657220746f2046696e616e636520617070000000815250336001610d51565b50005b34801561048a57600080fd5b50610493610c3b565b604080519115158252519081900360200190f35b3480156104b357600080fd5b506104bc611043565b60408051918252519081900360200190f35b3480156104da57600080fd5b506104bc73ffffffffffffffffffffffffffffffffffffffff6004803582169160248035909116916044359167ffffffffffffffff60643581169260843582169260a4359092169160c435908101910135611078565b34801561053c57600080fd5b506105486004356117f1565b005b34801561055657600080fd5b5061054873ffffffffffffffffffffffffffffffffffffffff6004351667ffffffffffffffff60243516611a50565b34801561059157600080fd5b5061054873ffffffffffffffffffffffffffffffffffffffff60043516611d45565b3480156105bf57600080fd5b506105e173ffffffffffffffffffffffffffffffffffffffff60043516611fb8565b6040805192835290151560208301528051918290030190f35b34801561060657600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261065394369492936024939284019190819084018382808284375094975061209e9650505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561068857600080fd5b5061054860043560243515156121aa565b3480156106a557600080fd5b506106b16004356123e4565b6040805173ffffffffffffffffffffffffffffffffffffffff9a8b168152988a1660208a01528881019790975267ffffffffffffffff9586166060890152938516608088015291841660a0870152151560c086015290911660e08401529092166101008201529051908190036101200190f35b34801561073057600080fd5b50610653612568565b34801561074557600080fd5b50610751600435612606565b6040805167ffffffffffffffff998a168152602081019890985287810196909652938716606087015273ffffffffffffffffffffffffffffffffffffffff9283166080870152911660a0850152151560c084015290921660e08201529051908190036101000190f35b3480156107c657600080fd5b506104bc612767565b3480156107db57600080fd5b506104bc61279c565b3480156107f057600080fd5b506105486004356127d1565b34801561080857600080fd5b5061081e67ffffffffffffffff60043516612a01565b60408051951515865267ffffffffffffffff9485166020870152929093168483015260608401526080830191909152519081900360a00190f35b34801561086457600080fd5b5061054867ffffffffffffffff60043516612b22565b34801561088657600080fd5b5061088f612de1565b6040805167ffffffffffffffff9092168252519081900360200190f35b3480156108b857600080fd5b5061054873ffffffffffffffffffffffffffffffffffffffff60043516602435612df1565b3480156108e957600080fd5b5061049373ffffffffffffffffffffffffffffffffffffffff600435166130a4565b34801561091757600080fd5b506104bc6130b5565b34801561092c57600080fd5b506104bc6130e5565b34801561094157600080fd5b5061054873ffffffffffffffffffffffffffffffffffffffff60043516613110565b34801561096f57600080fd5b506104bc613395565b34801561098457600080fd5b5061088f6133ca565b34801561099957600080fd5b5061054873ffffffffffffffffffffffffffffffffffffffff6004351661347a565b3480156109c757600080fd5b50604080516020600460443581810135838102808601850190965280855261049395833573ffffffffffffffffffffffffffffffffffffffff1695602480359636969560649593949201929182918501908490808284375094975061379c9650505050505050565b348015610a3b57600080fd5b5061065361392c565b348015610a5057600080fd5b5061049367ffffffffffffffff600435166139ee565b348015610a7257600080fd5b5061088f613aa5565b6105486004803573ffffffffffffffffffffffffffffffffffffffff16906024803591604435918201910135613b5e565b348015610ab857600080fd5b5061088f600435613e4d565b348015610ad057600080fd5b50610aff67ffffffffffffffff6004351673ffffffffffffffffffffffffffffffffffffffff60243516613f11565b6040805192835260208301919091528051918290030190f35b348015610b2457600080fd5b5061065361401c565b348015610b3957600080fd5b506104bc614047565b348015610b4e57600080fd5b5061049361404d565b348015610b6357600080fd5b5061049373ffffffffffffffffffffffffffffffffffffffff60043516602435614060565b348015610b9457600080fd5b506104bc614119565b348015610ba957600080fd5b506104bc61414e565b348015610bbe57600080fd5b506104bc73ffffffffffffffffffffffffffffffffffffffff60043516614154565b348015610bec57600080fd5b5061054873ffffffffffffffffffffffffffffffffffffffff60048035821691602480359091169160443591606435908101910135614205565b348015610c3257600080fd5b5061065361448e565b600080610c466130e5565b90508015801590610c5e575080610c5b6144aa565b10155b91505090565b60001990565b600080600060086000610c7b6144ae565b67ffffffffffffffff1667ffffffffffffffff1681526020019081526020016000209150610ca76144c2565b90505b815467ffffffffffffffff6801000000000000000090910481169082161115610d455767ffffffffffffffff84161515610ce75760009250610d4a565b60018201546000199094019315610d1257600754610d0c90600163ffffffff6144d416565b60028301555b8154610d3e90610d399068010000000000000000900467ffffffffffffffff16600161457f565b614631565b9150610caa565b600192505b5050919050565b610d5d8583868661473f565b73ffffffffffffffffffffffffffffffffffffffff85161515610e115760008054604080517f47e7ef240000000000000000000000000000000000000000000000000000000081526004810184905260248101889052905173ffffffffffffffffffffffffffffffffffffffff909216926347e7ef24928892604480820193929182900301818588803b158015610df357600080fd5b505af1158015610e07573d6000803e3d6000fd5b505050505061103c565b8015610ee057610e3f73ffffffffffffffffffffffffffffffffffffffff861633308763ffffffff61475616565b6040805190810160405280602081526020017f46494e414e43455f544b4e5f5452414e534645525f46524f4d5f524556455254815250901515610ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b505b600054610f0d9073ffffffffffffffffffffffffffffffffffffffff87811691168663ffffffff6147f716565b60408051808201909152601a81527f46494e414e43455f544b4e5f415050524f56455f4641494c45440000000000006020820152901515610faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b5060008054604080517f47e7ef2400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff898116600483015260248201899052915191909216926347e7ef24926044808201939182900301818387803b15801561102357600080fd5b505af1158015611037573d6000803e3d6000fd5b505050505b5050505050565b604080517f4352454154455f5041594d454e54535f524f4c450000000000000000000000008152905190819003601401902081565b60008060405180807f4352454154455f5041594d454e54535f524f4c45000000000000000000000000815250601401905060405180910390206110dd8b8b8b8a67ffffffffffffffff168a67ffffffffffffffff168d67ffffffffffffffff1661488f565b6110e833838361379c565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515611185576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b5060006111936102f2610c64565b60408051808201909152601b81527f46494e414e43455f434f4d504c4554455f5452414e534954494f4e00000000006020820152909150811515611233576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b5060408051808201909152601f81527f46494e414e43455f4e45575f5041594d454e545f414d4f554e545f5a45524f00602082015260008c116112d2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b5060408051808201909152601f81527f46494e414e43455f4e45575f5041594d454e545f494e5452564c5f5a45524f006020820152600067ffffffffffffffff8b161161137b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b5060408051808201909152601e81527f46494e414e43455f4e45575f5041594d454e545f45584543535f5a45524f00006020820152600067ffffffffffffffff8a1611611424576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b5073ffffffffffffffffffffffffffffffffffffffff8d1660009081526003602052604090205460ff16158061147f575073ffffffffffffffffffffffffffffffffffffffff8d166000908152600260205260409020548b11155b60408051808201909152600e81527f46494e414e43455f425544474554000000000000000000000000000000000000602082015290151561151c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b508767ffffffffffffffff16600114156115e5576115386144c2565b60408051808201909152601d81527f46494e414e43455f4e45575f5041594d454e545f494d4d45444941544500000060208201529067ffffffffffffffff908116908c16116115e3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b505b60058054600181019091556040805167ffffffffffffffff8b1681526020810182815291810189905291965073ffffffffffffffffffffffffffffffffffffffff8e169187917f41e8c14bdf2b044354d788d944b364e1de0b64aeddeba755b8ef69ab68bd9083918c918c918c91606082018484808284376040519201829003965090945050505050a36004600086815260200190815260200160002093508c8460000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508b8460010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508a8460030181905550898460040160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550888460040160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550878460040160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550338460020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506117e085614989565b505050505098975050505050505050565b604080517f455845435554455f5041594d454e54535f524f4c45000000000000000000000081528151908190036015019020600083815260046020529190912060030154611840908390614bc6565b61184b33838361379c565b60408051808201909152600f81527f4150505f415554485f4641494c4544000000000000000000000000000000000060208201529015156118e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b50826000811180156118fb575060055481105b60408051808201909152601c81527f46494e414e43455f4e4f5f5343484544554c45445f5041594d454e54000000006020820152901515611998576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b5060006119a66102f2610c64565b60408051808201909152601b81527f46494e414e43455f434f4d504c4554455f5452414e534954494f4e00000000006020820152909150811515611a46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b5061103c85614c21565b611a586130e5565b60408051808201909152601881527f494e49545f414c52454144595f494e495449414c495a4544000000000000000060208201529015611af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b50611afd614d8b565b611b0682614e6a565b60408051808201909152601a81527f46494e414e43455f5641554c545f4e4f545f434f4e54524143540000000000006020820152901515611ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b50600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841617905560408051808201909152601c81527f46494e414e43455f5345545f504552494f445f544f4f5f53484f52540000000060208201526201518067ffffffffffffffff83161015611c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b506001805467ffffffffffffffff83167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009091161781556000805260046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ee80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556005819055600755611d40610d396144c2565b505050565b604080517f4348414e47455f425544474554535f524f4c45000000000000000000000000008152815190819003601301902073ffffffffffffffffffffffffffffffffffffffff8316600090815260026020908152838220546003909152928120549192611dca928592919060ff16611dbf576000611dc2565b60015b60ff16614e9d565b611dd533838361379c565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515611e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b506000611e806102f2610c64565b60408051808201909152601b81527f46494e414e43455f434f4d504c4554455f5452414e534954494f4e00000000006020820152909150811515611f20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b5073ffffffffffffffffffffffffffffffffffffffff841660008181526002602090815260408083208390556003825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905580518381529182019290925281517f6e768d8fe4a1460cae6d5af9382c3e9abbc41f66f2ec91fda24b12e3c2796f03929181900390910190a250505050565b600080611fc3610c3b565b60408051808201909152601481527f494e49545f4e4f545f494e495449414c495a45440000000000000000000000006020820152901515612060576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b50505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020908152604080832054600390925290912054909160ff90911690565b60006120a861392c565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561212c578181015183820152602001612114565b50505050905090810190601f1680156121595780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561217857600080fd5b505af115801561218c573d6000803e3d6000fd5b505050506040513d60208110156121a257600080fd5b505192915050565b604080517f4d414e4147455f5041594d454e54535f524f4c45000000000000000000000000815290519081900360140190206121f783836121ec5760006121ef565b60015b60ff16614bc6565b61220233838361379c565b60408051808201909152600f81527f4150505f415554485f4641494c45440000000000000000000000000000000000602082015290151561229f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b50836000811180156122b2575060055481105b60408051808201909152601c81527f46494e414e43455f4e4f5f5343484544554c45445f5041594d454e5400000000602082015290151561234f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b5060008581526004602090815260409182902060020180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16871574010000000000000000000000000000000000000000810291909117909155825190158152915187927faca91836ee6e44bf1c422f7ee89afb243a4fb775d9fe87150ff5f8e566dc161292908290030190a25050505050565b6000806000806000806000806000808a600081118015612405575060055481105b60408051808201909152601c81527f46494e414e43455f4e4f5f5343484544554c45445f5041594d454e540000000060208201529015156124a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b5050506000998a5250506004602081905260409098208054600182015460038301549a83015460029093015473ffffffffffffffffffffffffffffffffffffffff9283169c9183169b9a5067ffffffffffffffff8085169a506801000000000000000085048116995070010000000000000000000000000000000085048116985060ff7401000000000000000000000000000000000000000083041697507801000000000000000000000000000000000000000000000000909404909316945091169150565b600061257261401c565b73ffffffffffffffffffffffffffffffffffffffff166332f0a3b56040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156125d557600080fd5b505af11580156125e9573d6000803e3d6000fd5b505050506040513d60208110156125ff57600080fd5b5051905090565b600080600080600080600080600089600081118015612626575060075481105b60408051808201909152601681527f46494e414e43455f4e4f5f5452414e53414354494f4e0000000000000000000060208201529015156126c3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b50505060009889525050600660205250506040909420805460018201546004830154600284015460039094015467ffffffffffffffff700100000000000000000000000000000000830481169a959950909750808216965073ffffffffffffffffffffffffffffffffffffffff9384169550928216937401000000000000000000000000000000000000000090920460ff1692680100000000000000009091041690565b604080517f4348414e47455f504552494f445f524f4c4500000000000000000000000000008152905190819003601201902081565b604080517f4348414e47455f425544474554535f524f4c45000000000000000000000000008152905190819003601301902081565b806000811180156127e3575060055481105b60408051808201909152601c81527f46494e414e43455f4e4f5f5343484544554c45445f5041594d454e54000000006020820152901515612880576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b50600061288e6102f2610c64565b60408051808201909152601b81527f46494e414e43455f434f4d504c4554455f5452414e534954494f4e0000000000602082015290915081151561292e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b50600083815260046020908152604091829020600101548251808401909352601883527f46494e414e43455f5041594d454e545f524543454956455200000000000000009183019190915273ffffffffffffffffffffffffffffffffffffffff1633146129f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b50611d4083614c21565b60095460408051808201909152601181527f46494e414e43455f4e4f5f504552494f44000000000000000000000000000000602082015260009182918291829182918291889167ffffffffffffffff90811690831610612abd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b5067ffffffffffffffff881660008181526008602052604090209250612ae16144ae565b8354600185015460029095015467ffffffffffffffff928316939093149b8183169b5068010000000000000000909104909116985092965094509092505050565b604080517f4348414e47455f504552494f445f524f4c45000000000000000000000000000081529051908190036012019020600154612b6e9067ffffffffffffffff8085169116614bc6565b612b7933838361379c565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515612c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b506000612c246102f2610c64565b60408051808201909152601b81527f46494e414e43455f434f4d504c4554455f5452414e534954494f4e00000000006020820152909150811515612cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b5060408051808201909152601c81527f46494e414e43455f5345545f504552494f445f544f4f5f53484f52540000000060208201526201518067ffffffffffffffff86161015612d70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b506001805467ffffffffffffffff86167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909116811790915560408051918252517fa32389dd0d5a3bf7cc635f8c30fee3b70d06a6c547d6dbf31628378ee267bfc99181900360200190a150505050565b60095467ffffffffffffffff1681565b604080517f4348414e47455f425544474554535f524f4c45000000000000000000000000008152815190819003601301902073ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152838220546003909152929020549091612e6b918591859160ff16611dbf576000611dc2565b612e7633838361379c565b60408051808201909152600f81527f4150505f415554485f4641494c454400000000000000000000000000000000006020820152901515612f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b506000612f216102f2610c64565b60408051808201909152601b81527f46494e414e43455f434f4d504c4554455f5452414e534954494f4e00000000006020820152909150811515612fc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b5073ffffffffffffffffffffffffffffffffffffffff85166000908152600260209081526040808320879055600390915290205460ff16151561304d5773ffffffffffffffffffffffffffffffffffffffff8516600090815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555b6040805185815260016020820152815173ffffffffffffffffffffffffffffffffffffffff8816927f6e768d8fe4a1460cae6d5af9382c3e9abbc41f66f2ec91fda24b12e3c2796f03928290030190a25050505050565b60006130ae610c3b565b1592915050565b60006130e07fd625496217aa6a3453eecb9c3489dc5a53e6c67b444329ea2b2cbc9ff547639b614ec1565b905090565b60006130e07febb05b386a8d34882b8711d156f463690983dc47815980fb82aeeff1aa43579e614ec1565b600061311a610c3b565b60408051808201909152601481527f494e49545f4e4f545f494e495449414c495a454400000000000000000000000060208201529015156131b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b5060006131c56102f2610c64565b60408051808201909152601b81527f46494e414e43455f434f4d504c4554455f5452414e534954494f4e00000000006020820152909150811515613265576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b5073ffffffffffffffffffffffffffffffffffffffff8316156132ad576132a873ffffffffffffffffffffffffffffffffffffffff84163063ffffffff614ec916565b6132b0565b30315b60408051808201909152601b81527f46494e414e43455f5245434f5645525f414d4f554e545f5a45524f0000000000602082015290925060008311613351576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b50611d4083836040805190810160405280601081526020017f5265636f76657220746f205661756c7400000000000000000000000000000000815250306000610d51565b604080517f455845435554455f5041594d454e54535f524f4c4500000000000000000000008152905190819003601501902081565b60006133d4610c3b565b60408051808201909152601481527f494e49545f4e4f545f494e495449414c495a45440000000000000000000000006020820152901515613471576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b506130e06144ae565b6000806000613488846130a4565b60408051808201909152601281527f5245434f5645525f444953414c4c4f57454400000000000000000000000000006020820152901515613525576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b5061352e612568565b925061353983614e6a565b60408051808201909152601a81527f5245434f5645525f5641554c545f4e4f545f434f4e545241435400000000000060208201529015156135d6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b5073ffffffffffffffffffffffffffffffffffffffff84161515613641576040513031925073ffffffffffffffffffffffffffffffffffffffff84169083156108fc029084906000818181858888f1935050505015801561363b573d6000803e3d6000fd5b50613731565b508261366973ffffffffffffffffffffffffffffffffffffffff82163063ffffffff614ec916565b915061369273ffffffffffffffffffffffffffffffffffffffff8216848463ffffffff61500216565b60408051808201909152601d81527f5245434f5645525f544f4b454e5f5452414e534645525f4641494c4544000000602082015290151561372f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382528381815181526020019150805190602001908083836000838110156102a9578181015183820152602001610291565b505b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f596caf56044b55fb8c4ca640089bbc2b63cae3e978b851f5745cbb7c5b288e02846040518082815260200191505060405180910390a350505050565b6000806137a7610c3b565b15156137b65760009150613924565b6137be61401c565b905073ffffffffffffffffffffffffffffffffffffffff811615156137e65760009150613924565b8073ffffffffffffffffffffffffffffffffffffffff1663fdef910686308761380e88615091565b6040517c010000000000000000000000000000000000000000000000000000000063ffffffff871602815273ffffffffffffffffffffffffffffffffffffffff808616600483019081529085166024830152604482018490526080606483019081528351608484015283519192909160a490910190602085019080838360005b838110156138a657818101518382015260200161388e565b50505050905090810190601f1680156138d35780820380516001836020036101000a03