{
  "_format": "hh-sol-artifact-1",
  "contractName": "SupplyLimitModule",
  "sourceName": "contracts/compliance/modular/modules/SupplyLimitModule.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": "beacon",
          "type": "address"
        }
      ],
      "name": "BeaconUpgraded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_compliance",
          "type": "address"
        }
      ],
      "name": "ComplianceBound",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_compliance",
          "type": "address"
        }
      ],
      "name": "ComplianceUnbound",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_compliance",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_limit",
          "type": "uint256"
        }
      ],
      "name": "SupplyLimitSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "Upgraded",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_compliance",
          "type": "address"
        }
      ],
      "name": "bindCompliance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "canComplianceBind",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_compliance",
          "type": "address"
        }
      ],
      "name": "getSupplyLimit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_compliance",
          "type": "address"
        }
      ],
      "name": "isComplianceBound",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isPlugAndPlay",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "moduleBurnAction",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_compliance",
          "type": "address"
        }
      ],
      "name": "moduleCheck",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "moduleMintAction",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "moduleTransferAction",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "_name",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proxiableUUID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_limit",
          "type": "uint256"
        }
      ],
      "name": "setSupplyLimit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_compliance",
          "type": "address"
        }
      ],
      "name": "unbindCompliance",
      "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"
    }
  ],
  "bytecode": "0x60a06040523060805234801561001457600080fd5b5060805161161161004c600039600081816106c9015281816107090152818161092f0152818161096f0152610a0201526116116000f3fe6080604052600436106101145760003560e01c80634cf4d295116100a05780638da5cb5b116100645780638da5cb5b1461032c578063bcc2105314610354578063e6f5e80714610375578063f104a8c914610210578063f2fde38b1461038957600080fd5b80634cf4d295146102945780634f1ef286146102da57806352d1902d146102ed578063715018a6146103025780638129fc1c1461031757600080fd5b8063361fab25116100e7578063361fab25146101d05780633659cfe6146101f0578063372491a2146102105780634a932544146102305780634ae65b5c1461025057600080fd5b8063013b7ce4146101195780630694a5fb1461014e57806306fdde03146101705780632cb7e1ec146101b0575b600080fd5b34801561012557600080fd5b50610139610134366004611178565b6103a9565b60405190151581526020015b60405180910390f35b34801561015a57600080fd5b5061016e6101693660046111cb565b6104cc565b005b34801561017c57600080fd5b506040805180820182526011815270537570706c794c696d69744d6f64756c6560781b602082015290516101459190611213565b3480156101bc57600080fd5b5061016e6101cb366004611246565b6105ec565b3480156101dc57600080fd5b5061016e6101eb366004611287565b610631565b3480156101fc57600080fd5b5061016e61020b3660046111cb565b6106bf565b34801561021c57600080fd5b5061016e61022b3660046112a0565b61079e565b34801561023c57600080fd5b5061016e61024b3660046111cb565b6107e2565b34801561025c57600080fd5b5061028661026b3660046111cb565b6001600160a01b0316600090815260c9602052604090205490565b604051908152602001610145565b3480156102a057600080fd5b506101396102af3660046111cb565b6001600160a01b031660009081526000805160206115bc833981519152602052604090205460ff1690565b61016e6102e83660046112e2565b610925565b3480156102f957600080fd5b506102866109f5565b34801561030e57600080fd5b5061016e610aa8565b34801561032357600080fd5b5061016e610abc565b34801561033857600080fd5b506033546040516001600160a01b039091168152602001610145565b34801561036057600080fd5b5061013961036f3660046111cb565b50600190565b34801561038157600080fd5b506001610139565b34801561039557600080fd5b5061016e6103a43660046111cb565b610bcc565b60006001600160a01b0385161580156104b3575060c96000836001600160a01b03166001600160a01b031681526020019081526020016000205483836001600160a01b0316636a3edf286040518163ffffffff1660e01b8152600401602060405180830381865afa158015610422573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044691906113a6565b6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a791906113c3565b6104b191906113dc565b115b156104c0575060006104c4565b5060015b949350505050565b3360009081526000805160206115bc833981519152602081905260409091205460ff166105145760405162461bcd60e51b815260040161050b906113fd565b60405180910390fd5b6000805160206115bc8339815191526001600160a01b0383166105795760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f206164647265737300604482015260640161050b565b336001600160a01b038416146105a15760405162461bcd60e51b815260040161050b90611434565b6001600160a01b038316600081815260208390526040808220805460ff19169055517f408b49d9be1c914c52a0227e18a077e5a892dddf32a26cfa94a5d9708fad77189190a2505050565b3360009081526000805160206115bc833981519152602081905260409091205460ff1661062b5760405162461bcd60e51b815260040161050b906113fd565b50505050565b3360009081526000805160206115bc833981519152602081905260409091205460ff166106705760405162461bcd60e51b815260040161050b906113fd565b33600081815260c96020908152604091829020859055815192835282018490527f2f1ac7412e0c36ff7b73f7c4f474022dfa5d3f1c09e3262f63c9eb4627a9f505910160405180910390a15050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107075760405162461bcd60e51b815260040161050b90611475565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610750600080516020611575833981519152546001600160a01b031690565b6001600160a01b0316146107765760405162461bcd60e51b815260040161050b906114c1565b61077f81610c42565b6040805160008082526020820190925261079b91839190610c4a565b50565b3360009081526000805160206115bc833981519152602081905260409091205460ff166107dd5760405162461bcd60e51b815260040161050b906113fd565b505050565b6000805160206115bc8339815191526001600160a01b0382166108475760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f206164647265737300604482015260640161050b565b6001600160a01b03821660009081526020829052604090205460ff16156108b05760405162461bcd60e51b815260206004820152601860248201527f636f6d706c69616e636520616c726561647920626f756e640000000000000000604482015260640161050b565b336001600160a01b038316146108d85760405162461bcd60e51b815260040161050b90611434565b6001600160a01b038216600081815260208390526040808220805460ff19166001179055517f1f7b76c58fb697eb53c6c7c1becb96911516a136e24d7ced386b2355358b75a39190a25050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361096d5760405162461bcd60e51b815260040161050b90611475565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109b6600080516020611575833981519152546001600160a01b031690565b6001600160a01b0316146109dc5760405162461bcd60e51b815260040161050b906114c1565b6109e582610c42565b6109f182826001610c4a565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a955760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161050b565b5060008051602061157583398151915290565b610ab0610db5565b610aba6000610e0f565b565b600054610100900460ff1615808015610adc5750600054600160ff909116105b80610af65750303b158015610af6575060005460ff166001145b610b595760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161050b565b6000805460ff191660011790558015610b7c576000805461ff0019166101001790555b610b84610e61565b801561079b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b610bd4610db5565b6001600160a01b038116610c395760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161050b565b61079b81610e0f565b61079b610db5565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610c7d576107dd83610e98565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610cd7575060408051601f3d908101601f19168201909252610cd4918101906113c3565b60015b610d3a5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161050b565b6000805160206115758339815191528114610da95760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161050b565b506107dd838383610f34565b6033546001600160a01b03163314610aba5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161050b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610e885760405162461bcd60e51b815260040161050b9061150d565b610e90610f59565b610aba610f88565b6001600160a01b0381163b610f055760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161050b565b60008051602061157583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b610f3d83610faf565b600082511180610f4a5750805b156107dd5761062b8383610fef565b600054610100900460ff16610f805760405162461bcd60e51b815260040161050b9061150d565b610aba61101d565b600054610100900460ff16610aba5760405162461bcd60e51b815260040161050b9061150d565b610fb881610e98565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061101483836040518060600160405280602781526020016115956027913961104d565b90505b92915050565b600054610100900460ff166110445760405162461bcd60e51b815260040161050b9061150d565b610aba33610e0f565b6060600080856001600160a01b03168560405161106a9190611558565b600060405180830381855af49150503d80600081146110a5576040519150601f19603f3d011682016040523d82523d6000602084013e6110aa565b606091505b50915091506110bb868383876110c5565b9695505050505050565b6060831561113457825160000361112d576001600160a01b0385163b61112d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161050b565b50816104c4565b6104c483838151156111495781518083602001fd5b8060405162461bcd60e51b815260040161050b9190611213565b6001600160a01b038116811461079b57600080fd5b6000806000806080858703121561118e57600080fd5b843561119981611163565b935060208501356111a981611163565b92506040850135915060608501356111c081611163565b939692955090935050565b6000602082840312156111dd57600080fd5b81356111e881611163565b9392505050565b60005b8381101561120a5781810151838201526020016111f2565b50506000910152565b60208152600082518060208401526112328160408501602087016111ef565b601f01601f19169190910160400192915050565b60008060006060848603121561125b57600080fd5b833561126681611163565b9250602084013561127681611163565b929592945050506040919091013590565b60006020828403121561129957600080fd5b5035919050565b600080604083850312156112b357600080fd5b82356112be81611163565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156112f557600080fd5b823561130081611163565b9150602083013567ffffffffffffffff8082111561131d57600080fd5b818501915085601f83011261133157600080fd5b813581811115611343576113436112cc565b604051601f8201601f19908116603f0116810190838211818310171561136b5761136b6112cc565b8160405282815288602084870101111561138457600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156113b857600080fd5b81516111e881611163565b6000602082840312156113d557600080fd5b5051919050565b8082018082111561101757634e487b7160e01b600052601160045260246000fd5b6020808252601e908201527f6f6e6c7920626f756e6420636f6d706c69616e63652063616e2063616c6c0000604082015260600190565b60208082526021908201527f6f6e6c7920636f6d706c69616e636520636f6e74726163742063616e2063616c6040820152601b60fa1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000825161156a8184602087016111ef565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564f6cc97de1266c180cd39f3b311632644143ce7873d2927755382ad4b39e8ae00a26469706673582212201af9399558e11bf095725aa5dc228630c5c2691d1c86cd5c6d46436dc46d78da64736f6c63430008110033",
  "deployedBytecode": "0x6080604052600436106101145760003560e01c80634cf4d295116100a05780638da5cb5b116100645780638da5cb5b1461032c578063bcc2105314610354578063e6f5e80714610375578063f104a8c914610210578063f2fde38b1461038957600080fd5b80634cf4d295146102945780634f1ef286146102da57806352d1902d146102ed578063715018a6146103025780638129fc1c1461031757600080fd5b8063361fab25116100e7578063361fab25146101d05780633659cfe6146101f0578063372491a2146102105780634a932544146102305780634ae65b5c1461025057600080fd5b8063013b7ce4146101195780630694a5fb1461014e57806306fdde03146101705780632cb7e1ec146101b0575b600080fd5b34801561012557600080fd5b50610139610134366004611178565b6103a9565b60405190151581526020015b60405180910390f35b34801561015a57600080fd5b5061016e6101693660046111cb565b6104cc565b005b34801561017c57600080fd5b506040805180820182526011815270537570706c794c696d69744d6f64756c6560781b602082015290516101459190611213565b3480156101bc57600080fd5b5061016e6101cb366004611246565b6105ec565b3480156101dc57600080fd5b5061016e6101eb366004611287565b610631565b3480156101fc57600080fd5b5061016e61020b3660046111cb565b6106bf565b34801561021c57600080fd5b5061016e61022b3660046112a0565b61079e565b34801561023c57600080fd5b5061016e61024b3660046111cb565b6107e2565b34801561025c57600080fd5b5061028661026b3660046111cb565b6001600160a01b0316600090815260c9602052604090205490565b604051908152602001610145565b3480156102a057600080fd5b506101396102af3660046111cb565b6001600160a01b031660009081526000805160206115bc833981519152602052604090205460ff1690565b61016e6102e83660046112e2565b610925565b3480156102f957600080fd5b506102866109f5565b34801561030e57600080fd5b5061016e610aa8565b34801561032357600080fd5b5061016e610abc565b34801561033857600080fd5b506033546040516001600160a01b039091168152602001610145565b34801561036057600080fd5b5061013961036f3660046111cb565b50600190565b34801561038157600080fd5b506001610139565b34801561039557600080fd5b5061016e6103a43660046111cb565b610bcc565b60006001600160a01b0385161580156104b3575060c96000836001600160a01b03166001600160a01b031681526020019081526020016000205483836001600160a01b0316636a3edf286040518163ffffffff1660e01b8152600401602060405180830381865afa158015610422573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044691906113a6565b6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a791906113c3565b6104b191906113dc565b115b156104c0575060006104c4565b5060015b949350505050565b3360009081526000805160206115bc833981519152602081905260409091205460ff166105145760405162461bcd60e51b815260040161050b906113fd565b60405180910390fd5b6000805160206115bc8339815191526001600160a01b0383166105795760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f206164647265737300604482015260640161050b565b336001600160a01b038416146105a15760405162461bcd60e51b815260040161050b90611434565b6001600160a01b038316600081815260208390526040808220805460ff19169055517f408b49d9be1c914c52a0227e18a077e5a892dddf32a26cfa94a5d9708fad77189190a2505050565b3360009081526000805160206115bc833981519152602081905260409091205460ff1661062b5760405162461bcd60e51b815260040161050b906113fd565b50505050565b3360009081526000805160206115bc833981519152602081905260409091205460ff166106705760405162461bcd60e51b815260040161050b906113fd565b33600081815260c96020908152604091829020859055815192835282018490527f2f1ac7412e0c36ff7b73f7c4f474022dfa5d3f1c09e3262f63c9eb4627a9f505910160405180910390a15050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107075760405162461bcd60e51b815260040161050b90611475565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610750600080516020611575833981519152546001600160a01b031690565b6001600160a01b0316146107765760405162461bcd60e51b815260040161050b906114c1565b61077f81610c42565b6040805160008082526020820190925261079b91839190610c4a565b50565b3360009081526000805160206115bc833981519152602081905260409091205460ff166107dd5760405162461bcd60e51b815260040161050b906113fd565b505050565b6000805160206115bc8339815191526001600160a01b0382166108475760405162461bcd60e51b815260206004820152601f60248201527f696e76616c696420617267756d656e74202d207a65726f206164647265737300604482015260640161050b565b6001600160a01b03821660009081526020829052604090205460ff16156108b05760405162461bcd60e51b815260206004820152601860248201527f636f6d706c69616e636520616c726561647920626f756e640000000000000000604482015260640161050b565b336001600160a01b038316146108d85760405162461bcd60e51b815260040161050b90611434565b6001600160a01b038216600081815260208390526040808220805460ff19166001179055517f1f7b76c58fb697eb53c6c7c1becb96911516a136e24d7ced386b2355358b75a39190a25050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361096d5760405162461bcd60e51b815260040161050b90611475565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166109b6600080516020611575833981519152546001600160a01b031690565b6001600160a01b0316146109dc5760405162461bcd60e51b815260040161050b906114c1565b6109e582610c42565b6109f182826001610c4a565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a955760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161050b565b5060008051602061157583398151915290565b610ab0610db5565b610aba6000610e0f565b565b600054610100900460ff1615808015610adc5750600054600160ff909116105b80610af65750303b158015610af6575060005460ff166001145b610b595760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161050b565b6000805460ff191660011790558015610b7c576000805461ff0019166101001790555b610b84610e61565b801561079b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b610bd4610db5565b6001600160a01b038116610c395760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161050b565b61079b81610e0f565b61079b610db5565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610c7d576107dd83610e98565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610cd7575060408051601f3d908101601f19168201909252610cd4918101906113c3565b60015b610d3a5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161050b565b6000805160206115758339815191528114610da95760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161050b565b506107dd838383610f34565b6033546001600160a01b03163314610aba5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161050b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610e885760405162461bcd60e51b815260040161050b9061150d565b610e90610f59565b610aba610f88565b6001600160a01b0381163b610f055760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161050b565b60008051602061157583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b610f3d83610faf565b600082511180610f4a5750805b156107dd5761062b8383610fef565b600054610100900460ff16610f805760405162461bcd60e51b815260040161050b9061150d565b610aba61101d565b600054610100900460ff16610aba5760405162461bcd60e51b815260040161050b9061150d565b610fb881610e98565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061101483836040518060600160405280602781526020016115956027913961104d565b90505b92915050565b600054610100900460ff166110445760405162461bcd60e51b815260040161050b9061150d565b610aba33610e0f565b6060600080856001600160a01b03168560405161106a9190611558565b600060405180830381855af49150503d80600081146110a5576040519150601f19603f3d011682016040523d82523d6000602084013e6110aa565b606091505b50915091506110bb868383876110c5565b9695505050505050565b6060831561113457825160000361112d576001600160a01b0385163b61112d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161050b565b50816104c4565b6104c483838151156111495781518083602001fd5b8060405162461bcd60e51b815260040161050b9190611213565b6001600160a01b038116811461079b57600080fd5b6000806000806080858703121561118e57600080fd5b843561119981611163565b935060208501356111a981611163565b92506040850135915060608501356111c081611163565b939692955090935050565b6000602082840312156111dd57600080fd5b81356111e881611163565b9392505050565b60005b8381101561120a5781810151838201526020016111f2565b50506000910152565b60208152600082518060208401526112328160408501602087016111ef565b601f01601f19169190910160400192915050565b60008060006060848603121561125b57600080fd5b833561126681611163565b9250602084013561127681611163565b929592945050506040919091013590565b60006020828403121561129957600080fd5b5035919050565b600080604083850312156112b357600080fd5b82356112be81611163565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156112f557600080fd5b823561130081611163565b9150602083013567ffffffffffffffff8082111561131d57600080fd5b818501915085601f83011261133157600080fd5b813581811115611343576113436112cc565b604051601f8201601f19908116603f0116810190838211818310171561136b5761136b6112cc565b8160405282815288602084870101111561138457600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156113b857600080fd5b81516111e881611163565b6000602082840312156113d557600080fd5b5051919050565b8082018082111561101757634e487b7160e01b600052601160045260246000fd5b6020808252601e908201527f6f6e6c7920626f756e6420636f6d706c69616e63652063616e2063616c6c0000604082015260600190565b60208082526021908201527f6f6e6c7920636f6d706c69616e636520636f6e74726163742063616e2063616c6040820152601b60fa1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000825161156a8184602087016111ef565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564f6cc97de1266c180cd39f3b311632644143ce7873d2927755382ad4b39e8ae00a26469706673582212201af9399558e11bf095725aa5dc228630c5c2691d1c86cd5c6d46436dc46d78da64736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
