UNPKG

@functionx_io/contracts

Version:
790 lines 56.9 kB
{ "_format": "hh-sol-artifact-1", "contractName": "PundiAIFX", "sourceName": "contracts/token/PundiAIFX.sol", "abi": [ { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "previousAdmin", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "AdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "beacon", "type": "address" } ], "name": "BeaconUpgraded", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "inputs": [], "name": "ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "OWNER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burnFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" } ], "name": "upgradeTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" } ], "bytecode": "0x60a06040523060805234801561001457600080fd5b5060805161277261004c600039600081816107af015281816107ef015281816108ef0152818161092f01526109be01526127726000f3fe6080604052600436106101d85760003560e01c806352d1902d1161010257806395d89b4111610095578063d505accf11610064578063d505accf1461054f578063d547741f1461056f578063dd62ed3e1461058f578063e58378bb146105af57600080fd5b806395d89b41146104e5578063a217fddf146104fa578063a457c2d71461050f578063a9059cbb1461052f57600080fd5b80637ecebe00116100d15780637ecebe00146104685780638129fc1c1461048857806384b0196e1461049d57806391d14854146104c557600080fd5b806352d1902d146103c957806370a08231146103de57806375b238fc1461041457806379cc67901461044857600080fd5b8063313ce5671161017a5780633950935111610149578063395093511461035657806340c10f191461037657806342966c68146103965780634f1ef286146103b657600080fd5b8063313ce567146102e55780633644e5151461030157806336568abe146103165780633659cfe61461033657600080fd5b806318160ddd116101b657806318160ddd1461025457806323b872dd14610273578063248a9ca3146102935780632f2ff15d146102c357600080fd5b806301ffc9a7146101dd57806306fdde0314610212578063095ea7b314610234575b600080fd5b3480156101e957600080fd5b506101fd6101f8366004612121565b6105e3565b60405190151581526020015b60405180910390f35b34801561021e57600080fd5b5061022761061a565b60405161020991906121a3565b34801561024057600080fd5b506101fd61024f3660046121d2565b6106ac565b34801561026057600080fd5b506035545b604051908152602001610209565b34801561027f57600080fd5b506101fd61028e3660046121fc565b6106c4565b34801561029f57600080fd5b506102656102ae366004612238565b600090815260fe602052604090206001015490565b3480156102cf57600080fd5b506102e36102de366004612251565b6106e8565b005b3480156102f157600080fd5b5060405160128152602001610209565b34801561030d57600080fd5b50610265610712565b34801561032257600080fd5b506102e3610331366004612251565b610721565b34801561034257600080fd5b506102e361035136600461227d565b6107a4565b34801561036257600080fd5b506101fd6103713660046121d2565b610884565b34801561038257600080fd5b506102e36103913660046121d2565b6108a6565b3480156103a257600080fd5b506102e36103b1366004612238565b6108da565b6102e36103c43660046122ae565b6108e4565b3480156103d557600080fd5b506102656109b1565b3480156103ea57600080fd5b506102656103f936600461227d565b6001600160a01b031660009081526033602052604090205490565b34801561042057600080fd5b506102657fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b34801561045457600080fd5b506102e36104633660046121d2565b610a64565b34801561047457600080fd5b5061026561048336600461227d565b610a79565b34801561049457600080fd5b506102e3610a97565b3480156104a957600080fd5b506104b2610c66565b6040516102099796959493929190612370565b3480156104d157600080fd5b506101fd6104e0366004612251565b610d04565b3480156104f157600080fd5b50610227610d2f565b34801561050657600080fd5b50610265600081565b34801561051b57600080fd5b506101fd61052a3660046121d2565b610d3e565b34801561053b57600080fd5b506101fd61054a3660046121d2565b610db9565b34801561055b57600080fd5b506102e361056a366004612406565b610dc7565b34801561057b57600080fd5b506102e361058a366004612251565b610f2b565b34801561059b57600080fd5b506102656105aa366004612479565b610f50565b3480156105bb57600080fd5b506102657fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e81565b60006001600160e01b03198216637965db0b60e01b148061061457506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060368054610629906124a3565b80601f0160208091040260200160405190810160405280929190818152602001828054610655906124a3565b80156106a25780601f10610677576101008083540402835291602001916106a2565b820191906000526020600020905b81548152906001019060200180831161068557829003601f168201915b5050505050905090565b6000336106ba818585610f7b565b5060019392505050565b6000336106d285828561109f565b6106dd858585611119565b506001949350505050565b600082815260fe6020526040902060010154610703816112c4565b61070d83836112ce565b505050565b600061071c611354565b905090565b6001600160a01b03811633146107965760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6107a0828261135e565b5050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156107ed5760405162461bcd60e51b815260040161078d906124d8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108366000805160206126f6833981519152546001600160a01b031690565b6001600160a01b03161461085c5760405162461bcd60e51b815260040161078d90612524565b610865816113c5565b60408051600080825260208201909252610881918391906113ef565b50565b6000336106ba8185856108978383610f50565b6108a19190612586565b610f7b565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756108d0816112c4565b61070d838361155a565b610881338261161b565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561092d5760405162461bcd60e51b815260040161078d906124d8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109766000805160206126f6833981519152546001600160a01b031690565b6001600160a01b03161461099c5760405162461bcd60e51b815260040161078d90612524565b6109a5826113c5565b6107a0828260016113ef565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a515760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161078d565b506000805160206126f683398151915290565b610a6f82338361109f565b6107a0828261161b565b6001600160a01b038116600090815260996020526040812054610614565b600054610100900460ff1615808015610ab75750600054600160ff909116105b80610ad15750303b158015610ad1575060005460ff166001145b610b345760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161078d565b6000805460ff191660011790558015610b57576000805461ff0019166101001790555b610ba86040518060400160405280601081526020016f283ab732349020a4a32c102a37b5b2b760811b8152506040518060400160405280600781526020016650554e4449414960c81b81525061174f565b610bd96040518060400160405280601081526020016f283ab732349020a4a32c102a37b5b2b760811b815250611780565b610be16117ca565b610be96117ca565b610bf46000336112ce565b610c1e7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e336112ce565b8015610881576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000606080600080600060606065546000801b148015610c865750606654155b610cca5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b604482015260640161078d565b610cd26117f3565b610cda611802565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b600091825260fe602090815260408084206001600160a01b0393909316845291905290205460ff1690565b606060378054610629906124a3565b60003381610d4c8286610f50565b905083811015610dac5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161078d565b6106dd8286868403610f7b565b6000336106ba818585611119565b83421115610e175760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015260640161078d565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610e468c611811565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610ea182611839565b90506000610eb182878787611866565b9050896001600160a01b0316816001600160a01b031614610f145760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260640161078d565b610f1f8a8a8a610f7b565b50505050505050505050565b600082815260fe6020526040902060010154610f46816112c4565b61070d838361135e565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b6001600160a01b038316610fdd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161078d565b6001600160a01b03821661103e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161078d565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006110ab8484610f50565b9050600019811461111357818110156111065760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161078d565b6111138484848403610f7b565b50505050565b6001600160a01b03831661117d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161078d565b6001600160a01b0382166111df5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161078d565b6001600160a01b038316600090815260336020526040902054818110156112575760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161078d565b6001600160a01b0380851660008181526033602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112b79086815260200190565b60405180910390a3611113565b6108818133611890565b6112d88282610d04565b6107a057600082815260fe602090815260408083206001600160a01b03851684529091529020805460ff191660011790556113103390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061071c6118e9565b6113688282610d04565b156107a057600082815260fe602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e6107a0816112c4565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156114225761070d8361195d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561147c575060408051601f3d908101601f191682019092526114799181019061259e565b60015b6114df5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161078d565b6000805160206126f6833981519152811461154e5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161078d565b5061070d8383836119f9565b6001600160a01b0382166115b05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161078d565b80603560008282546115c29190612586565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b03821661167b5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161078d565b6001600160a01b038216600090815260336020526040902054818110156116ef5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161078d565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600054610100900460ff166117765760405162461bcd60e51b815260040161078d906125b7565b6107a08282611a1e565b600054610100900460ff166117a75760405162461bcd60e51b815260040161078d906125b7565b61088181604051806040016040528060018152602001603160f81b815250611a6c565b600054610100900460ff166117f15760405162461bcd60e51b815260040161078d906125b7565b565b606060678054610629906124a3565b606060688054610629906124a3565b6001600160a01b03811660009081526099602052604090208054600181018255905b50919050565b6000610614611846611354565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600061187787878787611ac9565b9150915061188481611b8d565b5090505b949350505050565b61189a8282610d04565b6107a0576118a781611cdb565b6118b2836020611ced565b6040516020016118c3929190612602565b60408051601f198184030181529082905262461bcd60e51b825261078d916004016121a3565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f611914611e90565b61191c611eed565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6001600160a01b0381163b6119ca5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161078d565b6000805160206126f683398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611a0283611f1e565b600082511180611a0f5750805b1561070d576111138383611f5e565b600054610100900460ff16611a455760405162461bcd60e51b815260040161078d906125b7565b8151611a58906036906020850190612091565b50805161070d906037906020840190612091565b600054610100900460ff16611a935760405162461bcd60e51b815260040161078d906125b7565b8151611aa6906067906020850190612091565b508051611aba906068906020840190612091565b50506000606581905560665550565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611b005750600090506003611b84565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611b54573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611b7d57600060019250925050611b84565b9150600090505b94509492505050565b6000816004811115611ba157611ba1612677565b1415611baa5750565b6001816004811115611bbe57611bbe612677565b1415611c0c5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161078d565b6002816004811115611c2057611c20612677565b1415611c6e5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161078d565b6003816004811115611c8257611c82612677565b14156108815760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161078d565b60606106146001600160a01b03831660145b60606000611cfc83600261268d565b611d07906002612586565b67ffffffffffffffff811115611d1f57611d1f612298565b6040519080825280601f01601f191660200182016040528015611d49576020820181803683370190505b509050600360fc1b81600081518110611d6457611d646126ac565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611d9357611d936126ac565b60200101906001600160f81b031916908160001a9053506000611db784600261268d565b611dc2906001612586565b90505b6001811115611e3a576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611df657611df66126ac565b1a60f81b828281518110611e0c57611e0c6126ac565b60200101906001600160f81b031916908160001a90535060049490941c93611e33816126c2565b9050611dc5565b508315611e895760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161078d565b9392505050565b600080611e9b6117f3565b805190915015611eb2578051602090910120919050565b6065548015611ec15792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b5090565b600080611ef8611802565b805190915015611f0f578051602090910120919050565b6066548015611ec15792915050565b611f278161195d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611e898383604051806060016040528060278152602001612716602791396060600080856001600160a01b031685604051611f9b91906126d9565b600060405180830381855af49150503d8060008114611fd6576040519150601f19603f3d011682016040523d82523d6000602084013e611fdb565b606091505b5091509150611fec86838387611ff6565b9695505050505050565b6060831561206257825161205b576001600160a01b0385163b61205b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161078d565b5081611888565b61188883838151156120775781518083602001fd5b8060405162461bcd60e51b815260040161078d91906121a3565b82805461209d906124a3565b90600052602060002090601f0160209004810192826120bf5760008555612105565b82601f106120d857805160ff1916838001178555612105565b82800160010185558215612105579182015b828111156121055782518255916020019190600101906120ea565b50611ee99291505b80821115611ee9576000815560010161210d565b60006020828403121561213357600080fd5b81356001600160e01b031981168114611e8957600080fd5b60005b8381101561216657818101518382015260200161214e565b838111156111135750506000910152565b6000815180845261218f81602086016020860161214b565b601f01601f19169290920160200192915050565b602081526000611e896020830184612177565b80356001600160a01b03811681146121cd57600080fd5b919050565b600080604083850312156121e557600080fd5b6121ee836121b6565b946020939093013593505050565b60008060006060848603121561221157600080fd5b61221a846121b6565b9250612228602085016121b6565b9150604084013590509250925092565b60006020828403121561224a57600080fd5b5035919050565b6000806040838503121561226457600080fd5b82359150612274602084016121b6565b90509250929050565b60006020828403121561228f57600080fd5b611e89826121b6565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156122c157600080fd5b6122ca836121b6565b9150602083013567ffffffffffffffff808211156122e757600080fd5b818501915085601f8301126122fb57600080fd5b81358181111561230d5761230d612298565b604051601f8201601f19908116603f0116810190838211818310171561233557612335612298565b8160405282815288602084870101111561234e57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60ff60f81b881681526000602060e08184015261239060e084018a612177565b83810360408501526123a2818a612177565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b818110156123f4578351835292840192918401916001016123d8565b50909c9b505050505050505050505050565b600080600080600080600060e0888a03121561242157600080fd5b61242a886121b6565b9650612438602089016121b6565b95506040880135945060608801359350608088013560ff8116811461245c57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561248c57600080fd5b612495836121b6565b9150612274602084016121b6565b600181811c908216806124b757607f821691505b6020821081141561183357634e487b7160e01b600052602260045260246000fd5b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561259957612599612570565b500190565b6000602082840312156125b057600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161263a81601785016020880161214b565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161266b81602884016020880161214b565b01602801949350505050565b634e487b7160e01b600052602160045260246000fd5b60008160001904831182151516156126a7576126a7612570565b500290565b634e487b7160e01b600052603260045260246000fd5b6000816126d1576126d1612570565b506000190190565b600082516126eb81846020870161214b565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220280f610d99761e64ddd14fca83cc166190c6b734dd88825547488d622439624164736f6c634300080a0033", "deployedBytecode": "0x6080604052600436106101d85760003560e01c806352d1902d1161010257806395d89b4111610095578063d505accf11610064578063d505accf1461054f578063d547741f1461056f578063dd62ed3e1461058f578063e58378bb146105af57600080fd5b806395d89b41146104e5578063a217fddf146104fa578063a457c2d71461050f578063a9059cbb1461052f57600080fd5b80637ecebe00116100d15780637ecebe00146104685780638129fc1c1461048857806384b0196e1461049d57806391d14854146104c557600080fd5b806352d1902d146103c957806370a08231146103de57806375b238fc1461041457806379cc67901461044857600080fd5b8063313ce5671161017a5780633950935111610149578063395093511461035657806340c10f191461037657806342966c68146103965780634f1ef286146103b657600080fd5b8063313ce567146102e55780633644e5151461030157806336568abe146103165780633659cfe61461033657600080fd5b806318160ddd116101b657806318160ddd1461025457806323b872dd14610273578063248a9ca3146102935780632f2ff15d146102c357600080fd5b806301ffc9a7146101dd57806306fdde0314610212578063095ea7b314610234575b600080fd5b3480156101e957600080fd5b506101fd6101f8366004612121565b6105e3565b60405190151581526020015b60405180910390f35b34801561021e57600080fd5b5061022761061a565b60405161020991906121a3565b34801561024057600080fd5b506101fd61024f3660046121d2565b6106ac565b34801561026057600080fd5b506035545b604051908152602001610209565b34801561027f57600080fd5b506101fd61028e3660046121fc565b6106c4565b34801561029f57600080fd5b506102656102ae366004612238565b600090815260fe602052604090206001015490565b3480156102cf57600080fd5b506102e36102de366004612251565b6106e8565b005b3480156102f157600080fd5b5060405160128152602001610209565b34801561030d57600080fd5b50610265610712565b34801561032257600080fd5b506102e3610331366004612251565b610721565b34801561034257600080fd5b506102e361035136600461227d565b6107a4565b34801561036257600080fd5b506101fd6103713660046121d2565b610884565b34801561038257600080fd5b506102e36103913660046121d2565b6108a6565b3480156103a257600080fd5b506102e36103b1366004612238565b6108da565b6102e36103c43660046122ae565b6108e4565b3480156103d557600080fd5b506102656109b1565b3480156103ea57600080fd5b506102656103f936600461227d565b6001600160a01b031660009081526033602052604090205490565b34801561042057600080fd5b506102657fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b34801561045457600080fd5b506102e36104633660046121d2565b610a64565b34801561047457600080fd5b5061026561048336600461227d565b610a79565b34801561049457600080fd5b506102e3610a97565b3480156104a957600080fd5b506104b2610c66565b6040516102099796959493929190612370565b3480156104d157600080fd5b506101fd6104e0366004612251565b610d04565b3480156104f157600080fd5b50610227610d2f565b34801561050657600080fd5b50610265600081565b34801561051b57600080fd5b506101fd61052a3660046121d2565b610d3e565b34801561053b57600080fd5b506101fd61054a3660046121d2565b610db9565b34801561055b57600080fd5b506102e361056a366004612406565b610dc7565b34801561057b57600080fd5b506102e361058a366004612251565b610f2b565b34801561059b57600080fd5b506102656105aa366004612479565b610f50565b3480156105bb57600080fd5b506102657fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e81565b60006001600160e01b03198216637965db0b60e01b148061061457506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060368054610629906124a3565b80601f0160208091040260200160405190810160405280929190818152602001828054610655906124a3565b80156106a25780601f10610677576101008083540402835291602001916106a2565b820191906000526020600020905b81548152906001019060200180831161068557829003601f168201915b5050505050905090565b6000336106ba818585610f7b565b5060019392505050565b6000336106d285828561109f565b6106dd858585611119565b506001949350505050565b600082815260fe6020526040902060010154610703816112c4565b61070d83836112ce565b505050565b600061071c611354565b905090565b6001600160a01b03811633146107965760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6107a0828261135e565b5050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156107ed5760405162461bcd60e51b815260040161078d906124d8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166108366000805160206126f6833981519152546001600160a01b031690565b6001600160a01b03161461085c5760405162461bcd60e51b815260040161078d90612524565b610865816113c5565b60408051600080825260208201909252610881918391906113ef565b50565b6000336106ba8185856108978383610f50565b6108a19190612586565b610f7b565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756108d0816112c4565b61070d838361155a565b610881338261161b565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561092d5760405162461bcd60e51b815260040161078d906124d8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109766000805160206126f6833981519152546001600160a01b031690565b6001600160a01b03161461099c5760405162461bcd60e51b815260040161078d90612524565b6109a5826113c5565b6107a0828260016113ef565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a515760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161078d565b506000805160206126f683398151915290565b610a6f82338361109f565b6107a0828261161b565b6001600160a01b038116600090815260996020526040812054610614565b600054610100900460ff1615808015610ab75750600054600160ff909116105b80610ad15750303b158015610ad1575060005460ff166001145b610b345760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161078d565b6000805460ff191660011790558015610b57576000805461ff0019166101001790555b610ba86040518060400160405280601081526020016f283ab732349020a4a32c102a37b5b2b760811b8152506040518060400160405280600781526020016650554e4449414960c81b81525061174f565b610bd96040518060400160405280601081526020016f283ab732349020a4a32c102a37b5b2b760811b815250611780565b610be16117ca565b610be96117ca565b610bf46000336112ce565b610c1e7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e336112ce565b8015610881576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000606080600080600060606065546000801b148015610c865750606654155b610cca5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b604482015260640161078d565b610cd26117f3565b610cda611802565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b600091825260fe602090815260408084206001600160a01b0393909316845291905290205460ff1690565b606060378054610629906124a3565b60003381610d4c8286610f50565b905083811015610dac5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161078d565b6106dd8286868403610f7b565b6000336106ba818585611119565b83421115610e175760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015260640161078d565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610e468c611811565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610ea182611839565b90506000610eb182878787611866565b9050896001600160a01b0316816001600160a01b031614610f145760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260640161078d565b610f1f8a8a8a610f7b565b50505050505050505050565b600082815260fe6020526040902060010154610f46816112c4565b61070d838361135e565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b6001600160a01b038316610fdd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161078d565b6001600160a01b03821661103e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161078d565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006110ab8484610f50565b9050600019811461111357818110156111065760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161078d565b6111138484848403610f7b565b50505050565b6001600160a01b03831661117d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161078d565b6001600160a01b0382166111df5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161078d565b6001600160a01b038316600090815260336020526040902054818110156112575760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161078d565b6001600160a01b0380851660008181526033602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112b79086815260200190565b60405180910390a3611113565b6108818133611890565b6112d88282610d04565b6107a057600082815260fe602090815260408083206001600160a01b03851684529091529020805460ff191660011790556113103390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061071c6118e9565b6113688282610d04565b156107a057600082815260fe602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e6107a0816112c4565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156114225761070d8361195d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561147c575060408051601f3d908101601f191682019092526114799181019061259e565b60015b6114df5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161078d565b6000805160206126f6833981519152811461154e5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161078d565b5061070d8383836119f9565b6001600160a01b0382166115b05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161078d565b80603560008282546115c29190612586565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b03821661167b5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161078d565b6001600160a01b038216600090815260336020526040902054818110156116ef5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161078d565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600054610100900460ff166117765760405162461bcd60e51b815260040161078d906125b7565b6107a08282611a1e565b600054610100900460ff166117a75760405162461bcd60e51b815260040161078d906125b7565b61088181604051806040016040528060018152602001603160f81b815250611a6c565b600054610100900460ff166117f15760405162461bcd60e51b815260040161078d906125b7565b565b606060678054610629906124a3565b606060688054610629906124a3565b6001600160a01b03811660009081526099602052604090208054600181018255905b50919050565b6000610614611846611354565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600061187787878787611ac9565b9150915061188481611b8d565b5090505b949350505050565b61189a8282610d04565b6107a0576118a781611cdb565b6118b2836020611ced565b6040516020016118c3929190612602565b60408051601f198184030181529082905262461bcd60e51b825261078d916004016121a3565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f611914611e90565b61191c611eed565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6001600160a01b0381163b6119ca5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161078d565b6000805160206126f683398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611a0283611