{
  "_format": "hh-sol-artifact-1",
  "contractName": "MintableERC721Predicate",
  "sourceName": "contracts/@maticnetwork/pos-portal/MintableERC721Predicate.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "depositor",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "depositReceiver",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "rootToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "LockedMintableERC721",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "depositor",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "depositReceiver",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "rootToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "LockedMintableERC721Batch",
      "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"
    },
    {
      "inputs": [],
      "name": "BATCH_LIMIT",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MANAGER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "TOKEN_TYPE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "TRANSFER_EVENT_SIG",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "TRANSFER_WITH_METADATA_EVENT_SIG",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "WITHDRAW_BATCH_EVENT_SIG",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "rootToken",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "log",
          "type": "bytes"
        }
      ],
      "name": "exitTokens",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getRoleMember",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleMemberCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "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": "_owner",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "depositor",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "depositReceiver",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "rootToken",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "depositData",
          "type": "bytes"
        }
      ],
      "name": "lockTokens",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onERC721Received",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "nonpayable",
      "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"
    }
  ],
  "bytecode": "0x60806040526002805460ff1916905534801561001a57600080fd5b5061211d8061002a6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806391d14854116100a2578063c4d66de811610071578063c4d66de8146103bb578063ca15c873146103e1578063d547741f146103fe578063e375b64e1461042a578063ec87621c146104b957610116565b806391d14854146103635780639559c0bd146103a3578063a217fddf146103ab578063b017a30f146103b357610116565b80634794b430116100e95780634794b4301461024f57806349f5124b14610257578063609c92b81461025f5780638274664f146102675780639010d07c1461032457610116565b8063150b7a021461011b578063248a9ca3146101c65780632f2ff15d146101f557806336568abe14610223575b600080fd5b6101a96004803603608081101561013157600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561016b57600080fd5b82018360208201111561017d57600080fd5b803590602001918460018302840111600160201b8311171561019e57600080fd5b5090925090506104c1565b604080516001600160e01b03199092168252519081900360200190f35b6101e3600480360360208110156101dc57600080fd5b50356104d2565b60408051918252519081900360200190f35b6102216004803603604081101561020b57600080fd5b50803590602001356001600160a01b03166104ea565b005b6102216004803603604081101561023957600080fd5b50803590602001356001600160a01b0316610556565b6101e36105b7565b6101e36105db565b6101e36105ff565b6102216004803603606081101561027d57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156102b057600080fd5b8201836020820111156102c257600080fd5b803590602001918460018302840111600160201b831117156102e357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610623945050505050565b6103476004803603604081101561033a57600080fd5b5080359060200135610fa2565b604080516001600160a01b039092168252519081900360200190f35b61038f6004803603604081101561037957600080fd5b50803590602001356001600160a01b0316610fc9565b604080519115158252519081900360200190f35b6101e3610fe7565b6101e3610fec565b6101e3610ff1565b610221600480360360208110156103d157600080fd5b50356001600160a01b0316611015565b6101e3600480360360208110156103f757600080fd5b50356110cf565b6102216004803603604081101561041457600080fd5b50803590602001356001600160a01b03166110e6565b6102216004803603608081101561044057600080fd5b6001600160a01b0382358116926020810135821692604082013590921691810190608081016060820135600160201b81111561047b57600080fd5b82018360208201111561048d57600080fd5b803590602001918460018302840111600160201b831117156104ae57600080fd5b50909250905061113f565b6101e36114e6565b630a85bd0160e11b95945050505050565b6000818152602081905260409020600201545b919050565b60008281526020819052604090206002015461050d906105086114f8565b610fc9565b6105485760405162461bcd60e51b815260040180806020018281038252602f815260200180611f42602f913960400191505060405180910390fd5b61055282826114fd565b5050565b61055e6114f8565b6001600160a01b0316816001600160a01b0316146105ad5760405162461bcd60e51b815260040180806020018281038252602f8152602001806120bb602f913960400191505060405180910390fd5b610552828261156c565b7ff871896b17e9cb7a64941c62c188a4f5c621b86800e3d15452ece01ce56073df81565b7ff94915c6d1fd521cee85359239227480c7e8776d7caf1fc3bacad5c269b66a1481565b7fd4392723c111fcb98b073fe55873efb447bcd23cd3e49ec9ea2581930cd01ddc81565b60008051602061204b83398151915261063e816105086114f8565b6001906106de5760405162461bcd60e51b81526020600482019081528254600260001961010060018416150201909116046024830181905290918291604490910190849080156106cf5780601f106106a4576101008083540402835291602001916106cf565b820191906000526020600020905b8154815290600101906020018083116106b257829003601f168201915b50509250505060405180910390fd5b5060606106f26106ed846115db565b611656565b905060606107138260018151811061070657fe5b6020026020010151611656565b90507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60001b6107568260008151811061074957fe5b60200260200101516117d8565b141561095457600061076e8260018151811061074957fe5b905060006001600160a01b031661078b8360028151811061074957fe5b6001600160a01b0316146107d05760405162461bcd60e51b815260040180806020018281038252602981526020018061206b6029913960400191505060405180910390fd5b600086905060006107e78460038151811061074957fe5b9050816001600160a01b0316634f558e79826040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561082d57600080fd5b505afa158015610841573d6000803e3d6000fd5b505050506040513d602081101561085757600080fd5b5051156108d35760408051632142170760e11b81523060048201526001600160a01b038581166024830152604482018490529151918416916342842e0e9160648082019260009290919082900301818387803b1580156108b657600080fd5b505af11580156108ca573d6000803e3d6000fd5b5050505061094c565b816001600160a01b03166340c10f1984836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561093357600080fd5b505af1158015610947573d6000803e3d6000fd5b505050505b505050610f9a565b7ff871896b17e9cb7a64941c62c188a4f5c621b86800e3d15452ece01ce56073df60001b6109888260008151811061074957fe5b1415610c085760006109a08260018151811061074957fe5b905060606109c1846002815181106109b457fe5b6020026020010151611920565b905060608180602001905160208110156109da57600080fd5b8101908080516040519392919084600160201b8211156109f957600080fd5b908301906020820185811115610a0e57600080fd5b82518660208202830111600160201b82111715610a2a57600080fd5b82525081516020918201928201910280838360005b83811015610a57578181015183820152602001610a3f565b5050505091909101604052505082519293508a9150600090505b82811015610bfd576000848281518110610a8757fe5b60200260200101519050826001600160a01b0316634f558e79826040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610ad557600080fd5b505afa158015610ae9573d6000803e3d6000fd5b505050506040513d6020811015610aff57600080fd5b505115610b7b5760408051632142170760e11b81523060048201526001600160a01b038981166024830152604482018490529151918516916342842e0e9160648082019260009290919082900301818387803b158015610b5e57600080fd5b505af1158015610b72573d6000803e3d6000fd5b50505050610bf4565b826001600160a01b03166340c10f1988836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610bdb57600080fd5b505af1158015610bef573d6000803e3d6000fd5b505050505b50600101610a71565b505050505050610f9a565b7ff94915c6d1fd521cee85359239227480c7e8776d7caf1fc3bacad5c269b66a1460001b610c3c8260008151811061074957fe5b1415610f63576000610c548260018151811061074957fe5b905060006001600160a01b0316610c718360028151811061074957fe5b6001600160a01b031614610cb65760405162461bcd60e51b815260040180806020018281038252602981526020018061206b6029913960400191505060405180910390fd5b60008690506000610ccd8460038151811061074957fe5b9050816001600160a01b0316634f558e79826040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610d1357600080fd5b505afa158015610d27573d6000803e3d6000fd5b505050506040513d6020811015610d3d57600080fd5b505115610d9c5760408051632142170760e11b81523060048201526001600160a01b038581166024830152604482018490529151918416916342842e0e9160648082019260009290919082900301818387803b1580156108b657600080fd5b6060610dae866002815181106109b457fe5b90506060818060200190516020811015610dc757600080fd5b8101908080516040519392919084600160201b821115610de657600080fd5b908301906020820185811115610dfb57600080fd5b8251600160201b811182820188101715610e1457600080fd5b82525081516020918201929091019080838360005b83811015610e41578181015183820152602001610e29565b50505050905090810190601f168015610e6e5780820380516001836020036101000a031916815260200191505b506040525050509050836001600160a01b03166394d008ef8685846040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610ef3578181015183820152602001610edb565b50505050905090810190601f168015610f205780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610f4157600080fd5b505af1158015610f55573d6000803e3d6000fd5b505050505050505050610f9a565b60405162461bcd60e51b815260040180806020018281038252602a815260200180611f71602a913960400191505060405180910390fd5b505050505050565b6000828152602081905260408120610fc0908363ffffffff6119ea16565b90505b92915050565b6000828152602081905260408120610fc0908363ffffffff6119f616565b601481565b600081565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef81565b60025460ff161561105e576040805162461bcd60e51b815260206004820152600e60248201526d185b1c9958591e481a5b9a5d195960921b604482015290519081900360640190fd5b61109c6040518060400160405280601781526020017f4d696e7461626c65455243373231507265646963617465000000000000000000815250611a0b565b6110a7600082610548565b6110bf60008051602061204b83398151915282610548565b506002805460ff19166001179055565b6000818152602081905260408120610fc390611aa9565b600082815260208190526040902060020154611104906105086114f8565b6105ad5760405162461bcd60e51b8152600401808060200182810382526030815260200180611fc36030913960400191505060405180910390fd5b60008051602061204b83398151915261115a816105086114f8565b6001906111c05760405162461bcd60e51b81526020600482019081528254600260001961010060018416150201909116046024830181905290918291604490910190849080156106cf5780601f106106a4576101008083540402835291602001916106cf565b50602082141561129f576000838360208110156111dc57600080fd5b5060408051913580835290519092506001600160a01b038088169289821692918b16917fe13244aa06bdc79480ed5fdc6ebe2bb37202fcdf33ecf45dc449f4201f3dc0879181900360200190a460408051632142170760e11b81526001600160a01b038981166004830152306024830152604482018490529151918716916342842e0e9160648082019260009290919082900301818387803b15801561128157600080fd5b505af1158015611295573d6000803e3d6000fd5b5050505050610f9a565b6060838360208110156112b157600080fd5b810190602081018135600160201b8111156112cb57600080fd5b8201836020820111156112dd57600080fd5b803590602001918460208302840111600160201b831117156112fe57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050509050846001600160a01b0316866001600160a01b0316886001600160a01b03167fdb55e3a0ae817693fd7b07170d81eab0eb2c239f36fcecbc98b6b58ac5667e7a846040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156113ca5781810151838201526020016113b2565b505050509050019250505060405180910390a48051601481111561141f5760405162461bcd60e51b815260040180806020018281038252602c81526020018061201f602c913960400191505060405180910390fd5b60005b818110156114db57866001600160a01b03166342842e0e8a3086858151811061144757fe5b60200260200101516040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050600060405180830381600087803b1580156114b757600080fd5b505af11580156114cb573d6000803e3d6000fd5b5050600190920191506114229050565b505050505050505050565b60008051602061204b83398151915281565b335b90565b600082815260208190526040902061151b908263ffffffff611ab416565b15610552576115286114f8565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600082815260208190526040902061158a908263ffffffff611ac916565b15610552576115976114f8565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6115e3611e6d565b6000825111611639576040805162461bcd60e51b815260206004820152601f60248201527f524c505265616465723a20494e56414c49445f42595445535f4c454e47544800604482015290519081900360640190fd5b506040805180820190915281518152602082810190820152919050565b606061166182611ade565b6116b2576040805162461bcd60e51b815260206004820152601860248201527f524c505265616465723a204954454d5f4e4f545f4c4953540000000000000000604482015290519081900360640190fd5b60006116bd83611b0a565b905060608167ffffffffffffffff811180156116d857600080fd5b5060405190808252806020026020018201604052801561171257816020015b6116ff611e6d565b8152602001906001900390816116f75790505b50905060006117248560200151611b96565b855190915081146117665760405162461bcd60e51b81526004018080602001828103825260278152602001806120946027913960400191505060405180910390fd5b60006117758660200151611c2f565b60208701510190506000805b858110156117cc5761179283611b96565b91506040518060400160405280838152602001848152508582815181106117b557fe5b602090810291909101015291810191600101611781565b50929695505050505050565b60006117e382611ade565b15611835576040805162461bcd60e51b815260206004820181905260248201527f524c505265616465723a204445434f44494e475f4c4953545f41535f55494e54604482015290519081900360640190fd5b81516021101561188c576040805162461bcd60e51b815260206004820152601e60248201527f524c505265616465723a20494e56414c49445f55494e545f4c454e4754480000604482015290519081900360640190fd5b600061189b8360200151611b96565b835190915081146118dd5760405162461bcd60e51b81526004018080602001828103825260278152602001806120ea6027913960400191505060405180910390fd5b60006118ec8460200151611c2f565b8451602080870151830180519394509184900392919083101561191657826020036101000a820491505b5095945050505050565b606060006119318360200151611b96565b835190915081146119735760405162461bcd60e51b8152600401808060200182810382526028815260200180611f9b6028913960400191505060405180910390fd5b60006119828460200151611c2f565b845190915081900360608167ffffffffffffffff811180156119a357600080fd5b506040519080825280601f01601f1916602001820160405280156119ce576020820181803683370190505b5090506000816020019050611916848860200151018285611c92565b6000610fc08383611cdd565b6000610fc0836001600160a01b038416611d41565b806040516020018082805190602001908083835b60208310611a3e5780518252601f199092019160209182019101611a1f565b51815160209384036101000a60001901801990921691161790527f3a20494e53554646494349454e545f5045524d495353494f4e530000000000009190930190815260408051808303600519018152601a909201905280516105529550600194509201919050611e87565b6000610fc382611d59565b6000610fc0836001600160a01b038416611d5d565b6000610fc0836001600160a01b038416611da7565b6020810151805160009190821a9060c0821015611b00576000925050506104e5565b5060019392505050565b600080600090506000611b208460200151611c2f565b602085015185519181019250015b80821015611b8d57611b3f82611b96565b8201915080821115611b825760405162461bcd60e51b815260040180806020018281038252602c815260200180611ff3602c913960400191505060405180910390fd5b600190920191611b2e565b50909392505050565b80516000908190811a6080811015611bb15760019150611c28565b60b8811015611bc657607e1981019150611c28565b60c0811015611bf35760b78103600185019450806020036101000a85510460018201810193505050611c28565b60f8811015611c085760be1981019150611c28565b60f78103600185019450806020036101000a855104600182018101935050505b5092915050565b8051600090811a6080811015611c495760009150506104e5565b60b8811080611c64575060c08110801590611c64575060f881105b15611c735760019150506104e5565b60c0811015611c875760b5190190506104e5565b60f5190190506104e5565b80611c9c57611cd8565b5b60208110611cbc578251825260209283019290910190601f1901611c9d565b8251825160208390036101000a60001901801990921691161782525b505050565b81546000908210611d1f5760405162461bcd60e51b8152600401808060200182810382526022815260200180611f206022913960400191505060405180910390fd5b826000018281548110611d2e57fe5b9060005260206000200154905092915050565b60009081526001919091016020526040902054151590565b5490565b6000611d698383611d41565b611d9f57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610fc3565b506000610fc3565b60008181526001830160205260408120548015611e635783546000198083019190810190600090879083908110611dda57fe5b9060005260206000200154905080876000018481548110611df757fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080611e2757fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610fc3565b6000915050610fc3565b604051806040016040528060008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611ec857805160ff1916838001178555611ef5565b82800160010185558215611ef5579182015b82811115611ef5578251825591602001919060010190611eda565b50611f01929150611f05565b5090565b6114fa91905b80821115611f015760008155600101611f0b56fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e744d696e7461626c654552433732315072656469636174653a20494e56414c49445f5349474e4154555245524c505265616465723a2042595445535f4445434f4445445f4c454e4754485f4d49534d41544348416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b65524c505265616465723a204e554d5f4954454d535f4445434f4445445f4c454e4754485f4d49534d415443484d696e7461626c654552433732315072656469636174653a20455843454544535f42415443485f4c494d4954241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b084d696e7461626c654552433732315072656469636174653a20494e56414c49445f5245434549564552524c505265616465723a204c4953545f4445434f4445445f4c454e4754485f4d49534d41544348416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66524c505265616465723a2055494e545f4445434f4445445f4c454e4754485f4d49534d41544348a164736f6c6343000606000a",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c806391d14854116100a2578063c4d66de811610071578063c4d66de8146103bb578063ca15c873146103e1578063d547741f146103fe578063e375b64e1461042a578063ec87621c146104b957610116565b806391d14854146103635780639559c0bd146103a3578063a217fddf146103ab578063b017a30f146103b357610116565b80634794b430116100e95780634794b4301461024f57806349f5124b14610257578063609c92b81461025f5780638274664f146102675780639010d07c1461032457610116565b8063150b7a021461011b578063248a9ca3146101c65780632f2ff15d146101f557806336568abe14610223575b600080fd5b6101a96004803603608081101561013157600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561016b57600080fd5b82018360208201111561017d57600080fd5b803590602001918460018302840111600160201b8311171561019e57600080fd5b5090925090506104c1565b604080516001600160e01b03199092168252519081900360200190f35b6101e3600480360360208110156101dc57600080fd5b50356104d2565b60408051918252519081900360200190f35b6102216004803603604081101561020b57600080fd5b50803590602001356001600160a01b03166104ea565b005b6102216004803603604081101561023957600080fd5b50803590602001356001600160a01b0316610556565b6101e36105b7565b6101e36105db565b6101e36105ff565b6102216004803603606081101561027d57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156102b057600080fd5b8201836020820111156102c257600080fd5b803590602001918460018302840111600160201b831117156102e357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610623945050505050565b6103476004803603604081101561033a57600080fd5b5080359060200135610fa2565b604080516001600160a01b039092168252519081900360200190f35b61038f6004803603604081101561037957600080fd5b50803590602001356001600160a01b0316610fc9565b604080519115158252519081900360200190f35b6101e3610fe7565b6101e3610fec565b6101e3610ff1565b610221600480360360208110156103d157600080fd5b50356001600160a01b0316611015565b6101e3600480360360208110156103f757600080fd5b50356110cf565b6102216004803603604081101561041457600080fd5b50803590602001356001600160a01b03166110e6565b6102216004803603608081101561044057600080fd5b6001600160a01b0382358116926020810135821692604082013590921691810190608081016060820135600160201b81111561047b57600080fd5b82018360208201111561048d57600080fd5b803590602001918460018302840111600160201b831117156104ae57600080fd5b50909250905061113f565b6101e36114e6565b630a85bd0160e11b95945050505050565b6000818152602081905260409020600201545b919050565b60008281526020819052604090206002015461050d906105086114f8565b610fc9565b6105485760405162461bcd60e51b815260040180806020018281038252602f815260200180611f42602f913960400191505060405180910390fd5b61055282826114fd565b5050565b61055e6114f8565b6001600160a01b0316816001600160a01b0316146105ad5760405162461bcd60e51b815260040180806020018281038252602f8152602001806120bb602f913960400191505060405180910390fd5b610552828261156c565b7ff871896b17e9cb7a64941c62c188a4f5c621b86800e3d15452ece01ce56073df81565b7ff94915c6d1fd521cee85359239227480c7e8776d7caf1fc3bacad5c269b66a1481565b7fd4392723c111fcb98b073fe55873efb447bcd23cd3e49ec9ea2581930cd01ddc81565b60008051602061204b83398151915261063e816105086114f8565b6001906106de5760405162461bcd60e51b81526020600482019081528254600260001961010060018416150201909116046024830181905290918291604490910190849080156106cf5780601f106106a4576101008083540402835291602001916106cf565b820191906000526020600020905b8154815290600101906020018083116106b257829003601f168201915b50509250505060405180910390fd5b5060606106f26106ed846115db565b611656565b905060606107138260018151811061070657fe5b6020026020010151611656565b90507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60001b6107568260008151811061074957fe5b60200260200101516117d8565b141561095457600061076e8260018151811061074957fe5b905060006001600160a01b031661078b8360028151811061074957fe5b6001600160a01b0316146107d05760405162461bcd60e51b815260040180806020018281038252602981526020018061206b6029913960400191505060405180910390fd5b600086905060006107e78460038151811061074957fe5b9050816001600160a01b0316634f558e79826040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561082d57600080fd5b505afa158015610841573d6000803e3d6000fd5b505050506040513d602081101561085757600080fd5b5051156108d35760408051632142170760e11b81523060048201526001600160a01b038581166024830152604482018490529151918416916342842e0e9160648082019260009290919082900301818387803b1580156108b657600080fd5b505af11580156108ca573d6000803e3d6000fd5b5050505061094c565b816001600160a01b03166340c10f1984836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561093357600080fd5b505af1158015610947573d6000803e3d6000fd5b505050505b505050610f9a565b7ff871896b17e9cb7a64941c62c188a4f5c621b86800e3d15452ece01ce56073df60001b6109888260008151811061074957fe5b1415610c085760006109a08260018151811061074957fe5b905060606109c1846002815181106109b457fe5b6020026020010151611920565b905060608180602001905160208110156109da57600080fd5b8101908080516040519392919084600160201b8211156109f957600080fd5b908301906020820185811115610a0e57600080fd5b82518660208202830111600160201b82111715610a2a57600080fd5b82525081516020918201928201910280838360005b83811015610a57578181015183820152602001610a3f565b5050505091909101604052505082519293508a9150600090505b82811015610bfd576000848281518110610a8757fe5b60200260200101519050826001600160a01b0316634f558e79826040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610ad557600080fd5b505afa158015610ae9573d6000803e3d6000fd5b505050506040513d6020811015610aff57600080fd5b505115610b7b5760408051632142170760e11b81523060048201526001600160a01b038981166024830152604482018490529151918516916342842e0e9160648082019260009290919082900301818387803b158015610b5e57600080fd5b505af1158015610b72573d6000803e3d6000fd5b50505050610bf4565b826001600160a01b03166340c10f1988836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610bdb57600080fd5b505af1158015610bef573d6000803e3d6000fd5b505050505b50600101610a71565b505050505050610f9a565b7ff94915c6d1fd521cee85359239227480c7e8776d7caf1fc3bacad5c269b66a1460001b610c3c8260008151811061074957fe5b1415610f63576000610c548260018151811061074957fe5b905060006001600160a01b0316610c718360028151811061074957fe5b6001600160a01b031614610cb65760405162461bcd60e51b815260040180806020018281038252602981526020018061206b6029913960400191505060405180910390fd5b60008690506000610ccd8460038151811061074957fe5b9050816001600160a01b0316634f558e79826040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610d1357600080fd5b505afa158015610d27573d6000803e3d6000fd5b505050506040513d6020811015610d3d57600080fd5b505115610d9c5760408051632142170760e11b81523060048201526001600160a01b038581166024830152604482018490529151918416916342842e0e9160648082019260009290919082900301818387803b1580156108b657600080fd5b6060610dae866002815181106109b457fe5b90506060818060200190516020811015610dc757600080fd5b8101908080516040519392919084600160201b821115610de657600080fd5b908301906020820185811115610dfb57600080fd5b8251600160201b811182820188101715610e1457600080fd5b82525081516020918201929091019080838360005b83811015610e41578181015183820152602001610e29565b50505050905090810190601f168015610e6e5780820380516001836020036101000a031916815260200191505b506040525050509050836001600160a01b03166394d008ef8685846040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610ef3578181015183820152602001610edb565b50505050905090810190601f168015610f205780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610f4157600080fd5b505af1158015610f55573d6000803e3d6000fd5b505050505050505050610f9a565b60405162461bcd60e51b815260040180806020018281038252602a815260200180611f71602a913960400191505060405180910390fd5b505050505050565b6000828152602081905260408120610fc0908363ffffffff6119ea16565b90505b92915050565b6000828152602081905260408120610fc0908363ffffffff6119f616565b601481565b600081565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef81565b60025460ff161561105e576040805162461bcd60e51b815260206004820152600e60248201526d185b1c9958591e481a5b9a5d195960921b604482015290519081900360640190fd5b61109c6040518060400160405280601781526020017f4d696e7461626c65455243373231507265646963617465000000000000000000815250611a0b565b6110a7600082610548565b6110bf60008051602061204b83398151915282610548565b506002805460ff19166001179055565b6000818152602081905260408120610fc390611aa9565b600082815260208190526040902060020154611104906105086114f8565b6105ad5760405162461bcd60e51b8152600401808060200182810382526030815260200180611fc36030913960400191505060405180910390fd5b60008051602061204b83398151915261115a816105086114f8565b6001906111c05760405162461bcd60e51b81526020600482019081528254600260001961010060018416150201909116046024830181905290918291604490910190849080156106cf5780601f106106a4576101008083540402835291602001916106cf565b50602082141561129f576000838360208110156111dc57600080fd5b5060408051913580835290519092506001600160a01b038088169289821692918b16917fe13244aa06bdc79480ed5fdc6ebe2bb37202fcdf33ecf45dc449f4201f3dc0879181900360200190a460408051632142170760e11b81526001600160a01b038981166004830152306024830152604482018490529151918716916342842e0e9160648082019260009290919082900301818387803b15801561128157600080fd5b505af1158015611295573d6000803e3d6000fd5b5050505050610f9a565b6060838360208110156112b157600080fd5b810190602081018135600160201b8111156112cb57600080fd5b8201836020820111156112dd57600080fd5b803590602001918460208302840111600160201b831117156112fe57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050509050846001600160a01b0316866001600160a01b0316886001600160a01b03167fdb55e3a0ae817693fd7b07170d81eab0eb2c239f36fcecbc98b6b58ac5667e7a846040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156113ca5781810151838201526020016113b2565b505050509050019250505060405180910390a48051601481111561141f5760405162461bcd60e51b815260040180806020018281038252602c81526020018061201f602c913960400191505060405180910390fd5b60005b818110156114db57866001600160a01b03166342842e0e8a3086858151811061144757fe5b60200260200101516040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050600060405180830381600087803b1580156114b757600080fd5b505af11580156114cb573d6000803e3d6000fd5b5050600190920191506114229050565b505050505050505050565b60008051602061204b83398151915281565b335b90565b600082815260208190526040902061151b908263ffffffff611ab416565b15610552576115286114f8565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600082815260208190526040902061158a908263ffffffff611ac916565b15610552576115976114f8565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6115e3611e6d565b6000825111611639576040805162461bcd60e51b815260206004820152601f60248201527f524c505265616465723a20494e56414c49445f42595445535f4c454e47544800604482015290519081900360640190fd5b506040805180820190915281518152602082810190820152919050565b606061166182611ade565b6116b2576040805162461bcd60e51b815260206004820152601860248201527f524c505265616465723a204954454d5f4e4f545f4c4953540000000000000000604482015290519081900360640190fd5b60006116bd83611b0a565b905060608167ffffffffffffffff811180156116d857600080fd5b5060405190808252806020026020018201604052801561171257816020015b6116ff611e6d565b8152602001906001900390816116f75790505b50905060006117248560200151611b96565b855190915081146117665760405162461bcd60e51b81526004018080602001828103825260278152602001806120946027913960400191505060405180910390fd5b60006117758660200151611c2f565b60208701510190506000805b858110156117cc5761179283611b96565b91506040518060400160405280838152602001848152508582815181106117b557fe5b602090810291909101015291810191600101611781565b50929695505050505050565b60006117e382611ade565b15611835576040805162461bcd60e51b815260206004820181905260248201527f524c505265616465723a204445434f44494e475f4c4953545f41535f55494e54604482015290519081900360640190fd5b81516021101561188c576040805162461bcd60e51b815260206004820152601e60248201527f524c505265616465723a20494e56414c49445f55494e545f4c454e4754480000604482015290519081900360640190fd5b600061189b8360200151611b96565b835190915081146118dd5760405162461bcd60e51b81526004018080602001828103825260278152602001806120ea6027913960400191505060405180910390fd5b60006118ec8460200151611c2f565b8451602080870151830180519394509184900392919083101561191657826020036101000a820491505b5095945050505050565b606060006119318360200151611b96565b835190915081146119735760405162461bcd60e51b8152600401808060200182810382526028815260200180611f9b6028913960400191505060405180910390fd5b60006119828460200151611c2f565b845190915081900360608167ffffffffffffffff811180156119a357600080fd5b506040519080825280601f01601f1916602001820160405280156119ce576020820181803683370190505b5090506000816020019050611916848860200151018285611c92565b6000610fc08383611cdd565b6000610fc0836001600160a01b038416611d41565b806040516020018082805190602001908083835b60208310611a3e5780518252601f199092019160209182019101611a1f565b51815160209384036101000a60001901801990921691161790527f3a20494e53554646494349454e545f5045524d495353494f4e530000000000009190930190815260408051808303600519018152601a909201905280516105529550600194509201919050611e87565b6000610fc382611d59565b6000610fc0836001600160a01b038416611d5d565b6000610fc0836001600160a01b038416611da7565b6020810151805160009190821a9060c0821015611b00576000925050506104e5565b5060019392505050565b600080600090506000611b208460200151611c2f565b602085015185519181019250015b80821015611b8d57611b3f82611b96565b8201915080821115611b825760405162461bcd60e51b815260040180806020018281038252602c815260200180611ff3602c913960400191505060405180910390fd5b600190920191611b2e565b50909392505050565b80516000908190811a6080811015611bb15760019150611c28565b60b8811015611bc657607e1981019150611c28565b60c0811015611bf35760b78103600185019450806020036101000a85510460018201810193505050611c28565b60f8811015611c085760be1981019150611c28565b60f78103600185019450806020036101000a855104600182018101935050505b5092915050565b8051600090811a6080811015611c495760009150506104e5565b60b8811080611c64575060c08110801590611c64575060f881105b15611c735760019150506104e5565b60c0811015611c875760b5190190506104e5565b60f5190190506104e5565b80611c9c57611cd8565b5b60208110611cbc578251825260209283019290910190601f1901611c9d565b8251825160208390036101000a60001901801990921691161782525b505050565b81546000908210611d1f5760405162461bcd60e51b8152600401808060200182810382526022815260200180611f206022913960400191505060405180910390fd5b826000018281548110611d2e57fe5b9060005260206000200154905092915050565b60009081526001919091016020526040902054151590565b5490565b6000611d698383611d41565b611d9f57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610fc3565b506000610fc3565b60008181526001830160205260408120548015611e635783546000198083019190810190600090879083908110611dda57fe5b9060005260206000200154905080876000018481548110611df757fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080611e2757fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610fc3565b6000915050610fc3565b604051806040016040528060008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611ec857805160ff1916838001178555611ef5565b82800160010185558215611ef5579182015b82811115611ef5578251825591602001919060010190611eda565b50611f01929150611f05565b5090565b6114fa91905b80821115611f015760008155600101611f0b56fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e744d696e7461626c654552433732315072656469636174653a20494e56414c49445f5349474e4154555245524c505265616465723a2042595445535f4445434f4445445f4c454e4754485f4d49534d41544348416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b65524c505265616465723a204e554d5f4954454d535f4445434f4445445f4c454e4754485f4d49534d415443484d696e7461626c654552433732315072656469636174653a20455843454544535f42415443485f4c494d4954241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b084d696e7461626c654552433732315072656469636174653a20494e56414c49445f5245434549564552524c505265616465723a204c4953545f4445434f4445445f4c454e4754485f4d49534d41544348416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66524c505265616465723a2055494e545f4445434f4445445f4c454e4754485f4d49534d41544348a164736f6c6343000606000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
