UNPKG

@ensuro/core

Version:

Ensuro - Decentralized insurance protocol

580 lines (579 loc) 48.2 kB
{ "_format": "hh-sol-artifact-1", "contractName": "LPManualWhitelist", "sourceName": "contracts/LPManualWhitelist.sol", "abi": [ { "inputs": [ { "internalType": "contract IPolicyPool", "name": "policyPool_", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "NoZeroPolicyPool", "type": "error" }, { "inputs": [], "name": "OnlyPolicyPool", "type": "error" }, { "inputs": [], "name": "UpgradeCannotChangePolicyPool", "type": "error" }, { "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": "beacon", "type": "address" } ], "name": "BeaconUpgraded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "enum IAccessManager.GovernanceActions", "name": "action", "type": "uint8" }, { "indexed": false, "internalType": "address", "name": "value", "type": "address" } ], "name": "ComponentChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "enum IAccessManager.GovernanceActions", "name": "action", "type": "uint8" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "GovernanceAction", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "provider", "type": "address" }, { "components": [ { "internalType": "enum LPManualWhitelist.WhitelistOptions", "name": "deposit", "type": "uint8" }, { "internalType": "enum LPManualWhitelist.WhitelistOptions", "name": "withdraw", "type": "uint8" }, { "internalType": "enum LPManualWhitelist.WhitelistOptions", "name": "sendTransfer", "type": "uint8" }, { "internalType": "enum LPManualWhitelist.WhitelistOptions", "name": "receiveTransfer", "type": "uint8" } ], "indexed": false, "internalType": "struct LPManualWhitelist.WhitelistStatus", "name": "whitelisted", "type": "tuple" } ], "name": "LPWhitelistStatusChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "inputs": [], "name": "LP_WHITELIST_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "LP_WHITELIST_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract IEToken", "name": "", "type": "address" }, { "internalType": "address", "name": "provider", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "acceptsDeposit", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract IEToken", "name": "", "type": "address" }, { "internalType": "address", "name": "providerFrom", "type": "address" }, { "internalType": "address", "name": "providerTo", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "acceptsTransfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract IEToken", "name": "", "type": "address" }, { "internalType": "address", "name": "provider", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "acceptsWithdrawal", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currency", "outputs": [ { "internalType": "contract IERC20Metadata", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getWhitelistDefaults", "outputs": [ { "components": [ { "internalType": "enum LPManualWhitelist.WhitelistOptions", "name": "deposit", "type": "uint8" }, { "internalType": "enum LPManualWhitelist.WhitelistOptions", "name": "withdraw", "type": "uint8" }, { "internalType": "enum LPManualWhitelist.WhitelistOptions", "name": "sendTransfer", "type": "uint8" }, { "internalType": "enum LPManualWhitelist.WhitelistOptions", "name": "receiveTransfer", "type": "uint8" } ], "internalType": "struct LPManualWhitelist.WhitelistStatus", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "enum LPManualWhitelist.WhitelistOptions", "name": "deposit", "type": "uint8" }, { "internalType": "enum LPManualWhitelist.WhitelistOptions", "name": "withdraw", "type": "uint8" }, { "internalType": "enum LPManualWhitelist.WhitelistOptions", "name": "sendTransfer", "type": "uint8" }, { "internalType": "enum LPManualWhitelist.WhitelistOptions", "name": "receiveTransfer", "type": "uint8" } ], "internalType": "struct LPManualWhitelist.WhitelistStatus", "name": "defaultStatus", "type": "tuple" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "policyPool", "outputs": [ { "internalType": "contract IPolicyPool", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "enum LPManualWhitelist.WhitelistOptions", "name": "deposit", "type": "uint8" }, { "internalType": "enum LPManualWhitelist.WhitelistOptions", "name": "withdraw", "type": "uint8" }, { "internalType": "enum LPManualWhitelist.WhitelistOptions", "name": "sendTransfer", "type": "uint8" }, { "internalType": "enum LPManualWhitelist.WhitelistOptions", "name": "receiveTransfer", "type": "uint8" } ], "internalType": "struct LPManualWhitelist.WhitelistStatus", "name": "newStatus", "type": "tuple" } ], "name": "setWhitelistDefaults", "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": "unpause", "outputs": [], "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" }, { "inputs": [ { "internalType": "address", "name": "provider", "type": "address" }, { "components": [ { "internalType": "enum LPManualWhitelist.WhitelistOptions", "name": "deposit", "type": "uint8" }, { "internalType": "enum LPManualWhitelist.WhitelistOptions", "name": "withdraw", "type": "uint8" }, { "internalType": "enum LPManualWhitelist.WhitelistOptions", "name": "sendTransfer", "type": "uint8" }, { "internalType": "enum LPManualWhitelist.WhitelistOptions", "name": "receiveTransfer", "type": "uint8" } ], "internalType": "struct LPManualWhitelist.WhitelistStatus", "name": "newStatus", "type": "tuple" } ], "name": "whitelistAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "bytecode": "0x60c060405230608052348015610013575f5ffd5b506040516122d13803806122d183398101604081905261003291610130565b806001600160a01b03811661005a57604051636b23cf0160e01b815260040160405180910390fd5b610062610074565b6001600160a01b031660a0525061015d565b5f54610100900460ff16156100df5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff9081161461012e575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b5f60208284031215610140575f5ffd5b81516001600160a01b0381168114610156575f5ffd5b9392505050565b60805160a0516121066101cb5f395f81816101e001528181610532015281816108cf015281816109d601528181610cb401528181610dae01528181610fc201526114fa01525f81816103a2015281816103eb0152818161063e0152818161067e015261070b01526121065ff3fe608060405260043610610105575f3560e01c80635fcdca3711610092578063aa2f92fb11610062578063aa2f92fb146102c7578063aad4148c146102e6578063cf273ca614610319578063e5a6b10f14610338578063ed716bf41461034c575f5ffd5b80635fcdca37146102565780638456cb5914610275578063896ce44c146102895780639051c763146102a8575f5ffd5b80633f4ba83a116100d85780633f4ba83a146101be5780634d15eb03146101d25780634f1ef2861461021857806352d1902d1461022b5780635c975abb1461023f575f5ffd5b806301ffc9a7146101095780631e3b9c5e1461013d5780633659cfe61461017e57806337ee20dd1461019f575b5f5ffd5b348015610114575f5ffd5b506101286101233660046119bf565b61036d565b60405190151581526020015b60405180910390f35b348015610148575f5ffd5b506101707f88aab6b3a9fda9055d4a72094d587b65c9aadcc55fb1631e646a2f2c284ced5b81565b604051908152602001610134565b348015610189575f5ffd5b5061019d6101983660046119fa565b610398565b005b3480156101aa575f5ffd5b506101286101b9366004611a15565b61047e565b3480156101c9575f5ffd5b5061019d6104ee565b3480156101dd575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610134565b61019d610226366004611a98565b610634565b348015610236575f5ffd5b506101706106ff565b34801561024a575f5ffd5b5060975460ff16610128565b348015610261575f5ffd5b50610128610270366004611b3f565b6107b0565b348015610280575f5ffd5b5061019d6108ac565b348015610294575f5ffd5b5061019d6102a3366004611ba3565b6109b3565b3480156102b3575f5ffd5b506101286102c2366004611a15565b610b25565b3480156102d2575f5ffd5b5061019d6102e1366004611bd7565b610b84565b3480156102f1575f5ffd5b506101707fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f323581565b348015610324575f5ffd5b5061019d610333366004611bd7565b610c91565b348015610343575f5ffd5b50610200610dab565b348015610357575f5ffd5b50610360610e31565b6040516101349190611c68565b5f61037782610f49565b8061039257506001600160e01b0319821663f8722d8960e01b145b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103e95760405162461bcd60e51b81526004016103e090611c76565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104315f51602061208a5f395f51905f52546001600160a01b031690565b6001600160a01b0316146104575760405162461bcd60e51b81526004016103e090611cc2565b61046081610f7e565b604080515f8082526020820190925261047b918391906110c1565b50565b6001600160a01b0382165f90815260fb602052604081205460ff16818160028111156104ac576104ac611bf1565b036104cd57505f805260fb6020525f51602061206a5f395f51905f525460ff165b60015b8160028111156104e2576104e2611bf1565b149150505b9392505050565b7f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a50417fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa15801561058c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105b09190611d0e565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a4808201925f92909190829003018186803b158015610612575f5ffd5b505afa158015610624573d5f5f3e3d5ffd5b5050505061063061122b565b5050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361067c5760405162461bcd60e51b81526004016103e090611c76565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106c45f51602061208a5f395f51905f52546001600160a01b031690565b6001600160a01b0316146106ea5760405162461bcd60e51b81526004016103e090611cc2565b6106f382610f7e565b610630828260016110c1565b5f306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461079e5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103e0565b505f51602061208a5f395f51905f5290565b6001600160a01b0383165f90815260fb602052604081205462010000900460ff16818160028111156107e4576107e4611bf1565b0361080b57505f805260fb6020525f51602061206a5f395f51905f525462010000900460ff165b600181600281111561081f5761081f611bf1565b1461082d575f9150506108a4565b506001600160a01b0383165f90815260fb60205260408120546301000000900460ff169081600281111561086357610863611bf1565b0361088b57505f805260fb6020525f51602061206a5f395f51905f52546301000000900460ff165b600181600281111561089f5761089f611bf1565b149150505b949350505050565b7f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a50417f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610929573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094d9190611d0e565b6001600160a01b0316635ff57d2030833360016040518563ffffffff1660e01b815260040161097f9493929190611d29565b5f6040518083038186803b158015610995575f5ffd5b505afa1580156109a7573d5f5f3e3d5ffd5b5050505061047b61127d565b7fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f32357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a30573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a549190611d0e565b6001600160a01b0316635ff57d203083335f6040518563ffffffff1660e01b8152600401610a859493929190611d29565b5f6040518083038186803b158015610a9b575f5ffd5b505afa158015610aad573d5f5f3e3d5ffd5b5050506001600160a01b0384169050610b085760405162461bcd60e51b815260206004820152601d60248201527f596f752063616e2774206368616e6765207468652064656661756c747300000060448201526064016103e0565b610b2083610b1b36859003850185611d5f565b6112ba565b505050565b6001600160a01b0382165f90815260fb6020526040812054610100900460ff1681816002811115610b5857610b58611bf1565b036104cd57505f805260fb6020525f51602061206a5f395f51905f5254610100900460ff1660016104d0565b5f54610100900460ff1615808015610ba257505f54600160ff909116105b80610bbb5750303b158015610bbb57505f5460ff166001145b610c1e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103e0565b5f805460ff191660011790558015610c3f575f805461ff0019166101001790555b610c48826113aa565b8015610630575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b7f88aab6b3a9fda9055d4a72094d587b65c9aadcc55fb1631e646a2f2c284ced5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d0e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d329190611d0e565b6001600160a01b0316635ff57d203083335f6040518563ffffffff1660e01b8152600401610d639493929190611d29565b5f6040518083038186803b158015610d79575f5ffd5b505afa158015610d8b573d5f5f3e3d5ffd5b50505050610d98826113e1565b6106305f610b1b36859003850185611d5f565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e08573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e2c9190611d0e565b905090565b610e586040805160808101909152805f81526020015f81526020015f81526020015f905290565b5f805260fb60205260408051608081019091525f51602061206a5f395f51905f528054829060ff166002811115610e9157610e91611bf1565b6002811115610ea257610ea2611bf1565b81528154602090910190610100900460ff166002811115610ec557610ec5611bf1565b6002811115610ed657610ed6611bf1565b8152815460209091019062010000900460ff166002811115610efa57610efa611bf1565b6002811115610f0b57610f0b611bf1565b815281546020909101906301000000900460ff166002811115610f3057610f30611bf1565b6002811115610f4157610f41611bf1565b905250919050565b5f6001600160e01b031982166301ffc9a760e01b148061039257506001600160e01b03198216634d15eb0360e01b1492915050565b7f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a50417fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa15801561101c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110409190611d0e565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a4808201925f92909190829003018186803b1580156110a2575f5ffd5b505afa1580156110b4573d5f5f3e3d5ffd5b50505050610b20836114f8565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156110f457610b20836115a9565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561114e575060408051601f3d908101601f1916820190925261114b91810190611de4565b60015b6111b15760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016103e0565b5f51602061208a5f395f51905f52811461121f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016103e0565b50610b20838383611644565b61123361166e565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6112856116b9565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586112603390565b6001600160a01b0382165f90815260fb602052604090208151815483929190829060ff191660018360028111156112f3576112f3611bf1565b021790555060208201518154829061ff00191661010083600281111561131b5761131b611bf1565b021790555060408201518154829062ff000019166201000083600281111561134557611345611bf1565b021790555060608201518154829063ff0000001916630100000083600281111561137157611371611bf1565b02179055509050507f95d7a6740c7954755644347f27cbf1bebf7d02a83371922a49d04ddce4757c2a8282604051610c85929190611dfb565b5f54610100900460ff166113d05760405162461bcd60e51b81526004016103e090611e18565b6113d86116ff565b61047b81611735565b5f6113ef6020830183611e63565b600281111561140057611400611bf1565b1415801561142e57505f61141a6040830160208401611e63565b600281111561142b5761142b611bf1565b14155b801561145a57505f6114466060830160408401611e63565b600281111561145757611457611bf1565b14155b801561148657505f6114726080830160608401611e63565b600281111561148357611483611bf1565b14155b61047b5760405162461bcd60e51b815260206004820152603c60248201527f596f75206e65656420746f20646566696e65207468652064656661756c74207360448201527f746174757320666f7220616c6c20746865206f7065726174696f6e730000000060648201526084016103e0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa15801561155e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115829190611d0e565b6001600160a01b03161461047b5760405163d2b3d33f60e01b815260040160405180910390fd5b6001600160a01b0381163b6116165760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103e0565b5f51602061208a5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b61164d836117c4565b5f825111806116595750805b15610b20576116688383611803565b50505050565b60975460ff166116b75760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016103e0565b565b60975460ff16156116b75760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016103e0565b5f54610100900460ff166117255760405162461bcd60e51b81526004016103e090611e18565b61172d611828565b6116b761184e565b5f54610100900460ff1661175b5760405162461bcd60e51b81526004016103e090611e18565b611764816113e1565b5f805260fb602052805f51602061206a5f395f51905f526117858282611ef8565b9050507f95d7a6740c7954755644347f27cbf1bebf7d02a83371922a49d04ddce4757c2a5f826040516117b9929190611f9a565b60405180910390a150565b6117cd816115a9565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606104e783836040518060600160405280602781526020016120aa6027913961187c565b5f54610100900460ff166116b75760405162461bcd60e51b81526004016103e090611e18565b5f54610100900460ff166118745760405162461bcd60e51b81526004016103e090611e18565b6116b76118f0565b60605f5f856001600160a01b031685604051611898919061201e565b5f60405180830381855af49150503d805f81146118d0576040519150601f19603f3d011682016040523d82523d5f602084013e6118d5565b606091505b50915091506118e686838387611922565b9695505050505050565b5f54610100900460ff166119165760405162461bcd60e51b81526004016103e090611e18565b6097805460ff19169055565b606083156119905782515f03611989576001600160a01b0385163b6119895760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103e0565b50816108a4565b6108a483838151156119a55781518083602001fd5b8060405162461bcd60e51b81526004016103e09190612034565b5f602082840312156119cf575f5ffd5b81356001600160e01b0319811681146104e7575f5ffd5b6001600160a01b038116811461047b575f5ffd5b5f60208284031215611a0a575f5ffd5b81356104e7816119e6565b5f5f5f60608486031215611a27575f5ffd5b8335611a32816119e6565b92506020840135611a42816119e6565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611a9057611a90611a53565b604052919050565b5f5f60408385031215611aa9575f5ffd5b8235611ab4816119e6565b9150602083013567ffffffffffffffff811115611acf575f5ffd5b8301601f81018513611adf575f5ffd5b803567ffffffffffffffff811115611af957611af9611a53565b611b0c601f8201601f1916602001611a67565b818152866020838501011115611b20575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f5f60808587031215611b52575f5ffd5b8435611b5d816119e6565b93506020850135611b6d816119e6565b92506040850135611b7d816119e6565b9396929550929360600135925050565b5f60808284031215611b9d575f5ffd5b50919050565b5f5f60a08385031215611bb4575f5ffd5b8235611bbf816119e6565b9150611bce8460208501611b8d565b90509250929050565b5f60808284031215611be7575f5ffd5b6104e78383611b8d565b634e487b7160e01b5f52602160045260245ffd5b60038110611c2157634e487b7160e01b5f52602160045260245ffd5b9052565b611c30828251611c05565b6020810151611c426020840182611c05565b506040810151611c556040840182611c05565b506060810151610b206060840182611c05565b608081016103928284611c25565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215611d1e575f5ffd5b81516104e7816119e6565b6001600160a01b039485168152602081019390935292166040820152901515606082015260800190565b6003811061047b575f5ffd5b5f6080828403128015611d70575f5ffd5b506040516080810167ffffffffffffffff81118282101715611d9457611d94611a53565b6040528235611da281611d53565b81526020830135611db281611d53565b60208201526040830135611dc581611d53565b60408201526060830135611dd881611d53565b60608201529392505050565b5f60208284031215611df4575f5ffd5b5051919050565b6001600160a01b038316815260a081016104e76020830184611c25565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215611e73575f5ffd5b81356104e781611d53565b5f813561039281611d53565b60038210611ea657634e487b7160e01b5f52602160045260245ffd5b805462ff00008360101b1662ff0000198216178255505050565b60038210611edc57634e487b7160e01b5f52602160045260245ffd5b805463ff0000008360181b1663ff000000198216178255505050565b8135611f0381611d53565b60038110611f1f57634e487b7160e01b5f52602160045260245ffd5b815460ff821691508160ff1982161783556020840135611f3e81611d53565b60038110611f5a57634e487b7160e01b5f52602160045260245ffd5b61ff008160081b168361ffff19841617178455505050611f85611f7f60408401611e7e565b82611e8a565b610630611f9460608401611e7e565b82611ec0565b6001600160a01b038316815260a081018235611fb581611d53565b611fc26020840182611c05565b506020830135611fd181611d53565b611fde6040840182611c05565b506040830135611fed81611d53565b611ffa6060840182611c05565b50606083013561200981611d53565b6120166080840182611c05565b509392505050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fec88390e7e62175be0932452175b6a7222b6b094ab0ef984a5153c620345d8975360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220e63668eb63eb47da51f131e4409329dd35e0c6786e56ebf3a1c0865a8e6cd41964736f6c634300081c0033", "deployedBytecode": "0x608060405260043610610105575f3560e01c80635fcdca3711610092578063aa2f92fb11610062578063aa2f92fb146102c7578063aad4148c146102e6578063cf273ca614610319578063e5a6b10f14610338578063ed716bf41461034c575f5ffd5b80635fcdca37146102565780638456cb5914610275578063896ce44c146102895780639051c763146102a8575f5ffd5b80633f4ba83a116100d85780633f4ba83a146101be5780634d15eb03146101d25780634f1ef2861461021857806352d1902d1461022b5780635c975abb1461023f575f5ffd5b806301ffc9a7146101095780631e3b9c5e1461013d5780633659cfe61461017e57806337ee20dd1461019f575b5f5ffd5b348015610114575f5ffd5b506101286101233660046119bf565b61036d565b60405190151581526020015b60405180910390f35b348015610148575f5ffd5b506101707f88aab6b3a9fda9055d4a72094d587b65c9aadcc55fb1631e646a2f2c284ced5b81565b604051908152602001610134565b348015610189575f5ffd5b5061019d6101983660046119fa565b610398565b005b3480156101aa575f5ffd5b506101286101b9366004611a15565b61047e565b3480156101c9575f5ffd5b5061019d6104ee565b3480156101dd575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610134565b61019d610226366004611a98565b610634565b348015610236575f5ffd5b506101706106ff565b34801561024a575f5ffd5b5060975460ff16610128565b348015610261575f5ffd5b50610128610270366004611b3f565b6107b0565b348015610280575f5ffd5b5061019d6108ac565b348015610294575f5ffd5b5061019d6102a3366004611ba3565b6109b3565b3480156102b3575f5ffd5b506101286102c2366004611a15565b610b25565b3480156102d2575f5ffd5b5061019d6102e1366004611bd7565b610b84565b3480156102f1575f5ffd5b506101707fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f323581565b348015610324575f5ffd5b5061019d610333366004611bd7565b610c91565b348015610343575f5ffd5b50610200610dab565b348015610357575f5ffd5b50610360610e31565b6040516101349190611c68565b5f61037782610f49565b8061039257506001600160e01b0319821663f8722d8960e01b145b92915050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036103e95760405162461bcd60e51b81526004016103e090611c76565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166104315f51602061208a5f395f51905f52546001600160a01b031690565b6001600160a01b0316146104575760405162461bcd60e51b81526004016103e090611cc2565b61046081610f7e565b604080515f8082526020820190925261047b918391906110c1565b50565b6001600160a01b0382165f90815260fb602052604081205460ff16818160028111156104ac576104ac611bf1565b036104cd57505f805260fb6020525f51602061206a5f395f51905f525460ff165b60015b8160028111156104e2576104e2611bf1565b149150505b9392505050565b7f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a50417fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa15801561058c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105b09190611d0e565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a4808201925f92909190829003018186803b158015610612575f5ffd5b505afa158015610624573d5f5f3e3d5ffd5b5050505061063061122b565b5050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361067c5760405162461bcd60e51b81526004016103e090611c76565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106c45f51602061208a5f395f51905f52546001600160a01b031690565b6001600160a01b0316146106ea5760405162461bcd60e51b81526004016103e090611cc2565b6106f382610f7e565b610630828260016110c1565b5f306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461079e5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016103e0565b505f51602061208a5f395f51905f5290565b6001600160a01b0383165f90815260fb602052604081205462010000900460ff16818160028111156107e4576107e4611bf1565b0361080b57505f805260fb6020525f51602061206a5f395f51905f525462010000900460ff165b600181600281111561081f5761081f611bf1565b1461082d575f9150506108a4565b506001600160a01b0383165f90815260fb60205260408120546301000000900460ff169081600281111561086357610863611bf1565b0361088b57505f805260fb6020525f51602061206a5f395f51905f52546301000000900460ff165b600181600281111561089f5761089f611bf1565b149150505b949350505050565b7f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a50417f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610929573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094d9190611d0e565b6001600160a01b0316635ff57d2030833360016040518563ffffffff1660e01b815260040161097f9493929190611d29565b5f6040518083038186803b158015610995575f5ffd5b505afa1580156109a7573d5f5f3e3d5ffd5b5050505061047b61127d565b7fb494869573b0a0ce9caac5394e1d0d255d146ec7e2d30d643a4e1d78980f32357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a30573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a549190611d0e565b6001600160a01b0316635ff57d203083335f6040518563ffffffff1660e01b8152600401610a859493929190611d29565b5f6040518083038186803b158015610a9b575f5ffd5b505afa158015610aad573d5f5f3e3d5ffd5b5050506001600160a01b0384169050610b085760405162461bcd60e51b815260206004820152601d60248201527f596f752063616e2774206368616e6765207468652064656661756c747300000060448201526064016103e0565b610b2083610b1b36859003850185611d5f565b6112ba565b505050565b6001600160a01b0382165f90815260fb6020526040812054610100900460ff1681816002811115610b5857610b58611bf1565b036104cd57505f805260fb6020525f51602061206a5f395f51905f5254610100900460ff1660016104d0565b5f54610100900460ff1615808015610ba257505f54600160ff909116105b80610bbb5750303b158015610bbb57505f5460ff166001145b610c1e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103e0565b5f805460ff191660011790558015610c3f575f805461ff0019166101001790555b610c48826113aa565b8015610630575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b7f88aab6b3a9fda9055d4a72094d587b65c9aadcc55fb1631e646a2f2c284ced5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d0e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d329190611d0e565b6001600160a01b0316635ff57d203083335f6040518563ffffffff1660e01b8152600401610d639493929190611d29565b5f6040518083038186803b158015610d79575f5ffd5b505afa158015610d8b573d5f5f3e3d5ffd5b50505050610d98826113e1565b6106305f610b1b36859003850185611d5f565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e5a6b10f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e08573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e2c9190611d0e565b905090565b610e586040805160808101909152805f81526020015f81526020015f81526020015f905290565b5f805260fb60205260408051608081019091525f51602061206a5f395f51905f528054829060ff166002811115610e9157610e91611bf1565b6002811115610ea257610ea2611bf1565b81528154602090910190610100900460ff166002811115610ec557610ec5611bf1565b6002811115610ed657610ed6611bf1565b8152815460209091019062010000900460ff166002811115610efa57610efa611bf1565b6002811115610f0b57610f0b611bf1565b815281546020909101906301000000900460ff166002811115610f3057610f30611bf1565b6002811115610f4157610f41611bf1565b905250919050565b5f6001600160e01b031982166301ffc9a760e01b148061039257506001600160e01b03198216634d15eb0360e01b1492915050565b7f55435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a50417fbf372ca3ebecfe59ac256f17697941bbe63302aced610e8b0e3646f743c7beb27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa15801561101c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110409190611d0e565b60408051632b1cff1f60e01b815230600482015260248101859052604481018490523360648201526001608482015290516001600160a01b039290921691632b1cff1f9160a4808201925f92909190829003018186803b1580156110a2575f5ffd5b505afa1580156110b4573d5f5f3e3d5ffd5b50505050610b20836114f8565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156110f457610b20836115a9565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561114e575060408051601f3d908101601f1916820190925261114b91810190611de4565b60015b6111b15760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016103e0565b5f51602061208a5f395f51905f52811461121f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016103e0565b50610b20838383611644565b61123361166e565b6097805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6112856116b9565b6097805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586112603390565b6001600160a01b0382165f90815260fb602052604090208151815483929190829060ff191660018360028111156112f3576112f3611bf1565b021790555060208201518154829061ff00191661010083600281111561131b5761131b611bf1565b021790555060408201518154829062ff000019166201000083600281111561134557611345611bf1565b021790555060608201518154829063ff0000001916630100000083600281111561137157611371611bf1565b02179055509050507f95d7a6740c7954755644347f27cbf1bebf7d02a83371922a49d04ddce4757c2a8282604051610c85929190611dfb565b5f54610100900460ff166113d05760405162461bcd60e51b81526004016103e090611e18565b6113d86116ff565b61047b81611735565b5f6113ef6020830183611e63565b600281111561140057611400611bf1565b1415801561142e57505f61141a6040830160208401611e63565b600281111561142b5761142b611bf1565b14155b801561145a57505f6114466060830160408401611e63565b600281111561145757611457611bf1565b14155b801561148657505f6114726080830160608401611e63565b600281111561148357611483611bf1565b14155b61047b5760405162461bcd60e51b815260206004820152603c60248201527f596f75206e65656420746f20646566696e65207468652064656661756c74207360448201527f746174757320666f7220616c6c20746865206f7065726174696f6e730000000060648201526084016103e0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316634d15eb036040518163ffffffff1660e01b8152600401602060405180830381865afa15801561155e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115829190611d0e565b6001600160a01b03161461047b5760405163d2b3d33f60e01b815260040160405180910390fd5b6001600160a01b0381163b6116165760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016103e0565b5f51602061208a5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b61164d836117c4565b5f825111806116595750805b15610b20576116688383611803565b50505050565b60975460ff166116b75760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016103e0565b565b60975460ff16156116b75760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016103e0565b5f54610100900460ff166117255760405162461bcd60e51b81526004016103e090611e18565b61172d611828565b6116b761184e565b5f54610100900460ff1661175b5760405162461bcd60e51b81526004016103e090611e18565b611764816113e1565b5f805260fb602052805f51602061206a5f395f51905f526117858282611ef8565b9050507f95d7a6740c7954755644347f27cbf1bebf7d02a83371922a49d04ddce4757c2a5f826040516117b9929190611f9a565b60405180910390a150565b6117cd816115a9565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606104e783836040518060600160405280602781526020016120aa6027913961187c565b5f54610100900460ff166116b75760405162461bcd60e51b81526004016103e090611e18565b5f54610100900460ff166118745760405162461bcd60e51b81526004016103e090611e18565b6116b76118f0565b60605f5f856001600160a01b031685604051611898919061201e565b5f60405180830381855af49150503d805f81146118d0576040519150601f19603f3d011682016040523d82523d5f602084013e6118d5565b606091505b50915091506118e686838387611922565b9695505050505050565b5f54610100900460ff166119165760405162461bcd60e51b81526004016103e090611e18565b6097805460ff19169055565b606083156119905782515f03611989576001600160a01b0385163b6119895760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103e0565b50816108a4565b6108a483838151156119a55781518083602001fd5b8060405162461bcd60e51b81526004016103e09190612034565b5f602082840312156119cf575f5ffd5b81356001600160e01b0319811681146104e7575f5ffd5b6001600160a01b038116811461047b575f5ffd5b5f60208284031215611a0a575f5ffd5b81356104e7816119e6565b5f5f5f60608486031215611a27575f5ffd5b8335611a32816119e6565b92506020840135611a42816119e6565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611a9057611a90611a53565b604052919050565b5f5f60408385031215611aa9575f5ffd5b8235611ab4816119e6565b9150602083013567ffffffffffffffff811115611acf575f5ffd5b8301601f81018513611adf575f5ffd5b803567ffffffffffffffff811115611af957611af9611a53565b611b0c601f8201601f1916602001611a67565b818152866020838501011115611b20575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f5f60808587031215611b52575f5ffd5b8435611b5d816119e6565b93506020850135611b6d816119e6565b92506040850135611b7d816119e6565b9396929550929360600135925050565b5f60808284031215611b9d575f5ffd5b50919050565b5f5f60a08385031215611bb4575f5ffd5b8235611bbf816119e6565b9150611bce8460208501611b8d565b90509250929050565b5f60808284031215611be7575f5ffd5b6104e78383611b8d565b634e487b7160e01b5f52602160045260245ffd5b60038110611c2157634e487b7160e01b5f52602160045260245ffd5b9052565b611c30828251611c05565b6020810151611c426020840182611c05565b506040810151611c556040840182611c05565b506060810151610b206060840182611c05565b608081016103928284611c25565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215611d1e575f5ffd5b81516104e7816119e6565b6001600160a01b039485168152602081019390935292166040820152901515606082015260800190565b6003811061047b575f5ffd5b5f6080828403128015611d70575f5ffd5b506040516080810167ffffffffffffffff81118282101715611d9457611d94611a53565b6040528235611da281611d53565b81526020830135611db281611d53565b60208201526040830135611dc581611d53565b60408201526060830135611dd881611d53565b60608201529392505050565b5f60208284031215611df4575f5ffd5b5051919050565b6001600160a01b038316815260a081016104e76020830184611c25565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215611e73575f5ffd5b81356104e781611d53565b5f813561039281611d53565b60038210611ea657634e487b7160e01b5f52602160045260245ffd5b805462ff00008360101b1662ff0000198216178255505050565b60038210611edc57634e487b7160e01b5f52602160045260245ffd5b805463ff0000008360181b1663ff000000198216178255505050565b8135611f0381611d53565b60038110611f1f57634e487b7160e01b5f52602160045260245ffd5b815460ff821691508160ff1982161783556020840135611f3e81611d53565b60038110611f5a57634e487b7160e01b5f52602160045260245ffd5b61ff008160081b168361ffff19841617178455505050611f85611f7f60408401611e7e565b82611e8a565b610630611f9460608401611e7e565b82611ec0565b6001600160a01b038316815260a081018235611fb581611d53565b611fc26020840182611c05565b506020830135611fd181611d53565b611fde6040840182611c05565b506040830135611fed81611d53565b611ffa6060840182611c05565b50606083013561200981611d53565b6120166080840182611c05565b509392505050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fec88390e7e62175be0932452175b6a7222b6b094ab0ef984a5153c620345d8975360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220e63668eb63eb47da51f131e4409329dd35e0c6786e56ebf3a1c0865a8e6cd41964736f6c634300081c0033", "linkReferences": {}, "deployedLinkReferences": {} }