{
  "_format": "hh-sol-artifact-1",
  "contractName": "WalletApproverService",
  "sourceName": "contracts/services/WalletApproverService.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_masterOwner",
          "type": "address"
        },
        {
          "internalType": "address[]",
          "name": "_approvers",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "_rewardPerApprove",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "wallet",
          "type": "address"
        }
      ],
      "name": "ApproveWalletFail",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "wallet",
          "type": "address"
        }
      ],
      "name": "ApproveWalletSuccess",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Received",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Released",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "wallet",
          "type": "address"
        }
      ],
      "name": "SuspendWalletFail",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "wallet",
          "type": "address"
        }
      ],
      "name": "SuspendWalletSuccess",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "TransferMasterOwnerRights",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "approver",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "UpdateApproverStatus",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newAmount",
          "type": "uint256"
        }
      ],
      "name": "UpdateRewardAmount",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "wallet",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "reward",
          "type": "uint256"
        }
      ],
      "name": "WalletFunded",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "FLAVOR",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "VERSION",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "allowedApprovers",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IIssuerCommon",
          "name": "issuer",
          "type": "address"
        },
        {
          "internalType": "address payable",
          "name": "wallet",
          "type": "address"
        }
      ],
      "name": "approveWallet",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IIssuerCommon",
          "name": "issuer",
          "type": "address"
        },
        {
          "internalType": "address payable[]",
          "name": "wallets",
          "type": "address[]"
        }
      ],
      "name": "approveWallets",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IIssuerCommon",
          "name": "issuer",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "newWalletApprover",
          "type": "address"
        }
      ],
      "name": "changeWalletApprover",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "flavor",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "masterOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "release",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rewardPerApprove",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IIssuerCommon",
          "name": "issuer",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "wallet",
          "type": "address"
        }
      ],
      "name": "suspendWallet",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IIssuerCommon",
          "name": "issuer",
          "type": "address"
        },
        {
          "internalType": "address[]",
          "name": "wallets",
          "type": "address[]"
        }
      ],
      "name": "suspendWallets",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newMasterOwner",
          "type": "address"
        }
      ],
      "name": "transferMasterOwnerRights",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "approver",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "updateApproverStatus",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newRewardAmount",
          "type": "uint256"
        }
      ],
      "name": "updateRewardAmount",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b506040516200166c3803806200166c83398101604081905262000034916200011a565b600080546001600160a01b0319166001600160a01b03851617815560028290555b8251811015620000cc5760018060008584815181106200008557634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580620000c38162000208565b91505062000055565b5050600080546001600160a01b03168152600160208190526040909120805460ff1916909117905550620002469050565b80516001600160a01b03811681146200011557600080fd5b919050565b6000806000606084860312156200012f578283fd5b6200013a84620000fd565b602085810151919450906001600160401b038082111562000159578485fd5b818701915087601f8301126200016d578485fd5b81518181111562000182576200018262000230565b83810260405185828201018181108582111715620001a457620001a462000230565b604052828152858101935084860182860187018c1015620001c3578889fd5b8895505b83861015620001f057620001db81620000fd565b855260019590950194938601938601620001c7565b50809750505050505050604084015190509250925092565b60006000198214156200022957634e487b7160e01b81526011600452602481fd5b5060010190565b634e487b7160e01b600052604160045260246000fd5b61141680620002566000396000f3fe6080604052600436106100f75760003560e01c8063a0fc789b1161008a578063f59e4f6511610059578063f59e4f65146102bf578063f72069e0146102d4578063fac1789114610301578063ffa1ad74146103215761013f565b8063a0fc789b1461023d578063cd3c6bda1461025d578063dfe8a4191461027d578063e7201d7d1461029d5761013f565b806358c1c499116100c657806358c1c499146101d35780635c26e9ea146101e857806386d1a69f146102085780639ed5f9ae1461021d5761013f565b8063057106af1461014457806315c2ba14146101665780634b14c0421461018657806354fd4d50146101b15761013f565b3661013f57336001600160a01b03167f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f885258743460405161013591906112fa565b60405180910390a2005b600080fd5b34801561015057600080fd5b5061016461015f366004610eff565b610336565b005b34801561017257600080fd5b50610164610181366004611172565b61043d565b34801561019257600080fd5b5061019b6104af565b6040516101a891906112fa565b60405180910390f35b3480156101bd57600080fd5b506101c66104b5565b6040516101a891906111c5565b3480156101df57600080fd5b506101c66104d5565b3480156101f457600080fd5b50610164610203366004610ec3565b610508565b34801561021457600080fd5b50610164610594565b34801561022957600080fd5b50610164610238366004610ea0565b610632565b34801561024957600080fd5b50610164610258366004610eff565b6106cd565b34801561026957600080fd5b50610164610278366004610eff565b610759565b34801561028957600080fd5b50610164610298366004610f2c565b610852565b3480156102a957600080fd5b506102b2610996565b6040516101a891906111a6565b3480156102cb57600080fd5b506101c66109a5565b3480156102e057600080fd5b506102f46102ef366004610ea0565b6109d6565b6040516101a891906111ba565b34801561030d57600080fd5b5061016461031c366004610fdf565b6109eb565b34801561032d57600080fd5b506101c6610b29565b60005482906001600160a01b031633148061036057503360009081526001602052604090205460ff165b6103855760405162461bcd60e51b815260040161037c9061129d565b60405180910390fd5b306001600160a01b0316816001600160a01b0316631818e2ec6040518163ffffffff1660e01b815260040160006040518083038186803b1580156103c857600080fd5b505afa1580156103dc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610404919081019061107d565b60a001516001600160a01b03161461042e5760405162461bcd60e51b815260040161037c906111f8565b6104388383610b4b565b505050565b6000546001600160a01b031633146104675760405162461bcd60e51b815260040161037c90611255565b600280549082905560405133907f7608fa224b96c7bbb8c7d7e71419b495d68cd940553322871d4296fa826477af906104a39084908690611303565b60405180910390a25050565b60025481565b60408051808201909152600681526518971817191b60d11b602082015290565b6040518060400160405280601781526020017657616c6c6574417070726f76657253657276696365563160481b81525081565b6000546001600160a01b031633146105325760405162461bcd60e51b815260040161037c90611255565b6001600160a01b03821660008181526001602052604090819020805460ff19168415151790555133907f1c9ac4341a3f7a3e5e557edd21d4a7b25dafccdd42377421c423df7aa368bc82906105889085906111ba565b60405180910390a35050565b6000546001600160a01b031633146105be5760405162461bcd60e51b815260040161037c90611255565b6040514790339082156108fc029083906000818181858888f193505050501580156105ed573d6000803e3d6000fd5b50336001600160a01b03167fb21fb52d5749b80f3182f8c6992236b5e5576681880914484d7f4c9b062e619e8260405161062791906112fa565b60405180910390a250565b6000546001600160a01b0316331461065c5760405162461bcd60e51b815260040161037c90611255565b336000818152600160208190526040808320805460ff199081169091556001600160a01b0386168085528285208054909216909317905582546001600160a01b03191682178355519092917fc0ae3a638c7d9e51f79b7363d70629d96891f0b420cbf1f6acb2bb12ffd136ad91a350565b6000546001600160a01b031633146106f75760405162461bcd60e51b815260040161037c90611255565b6040516360f6899360e01b81526001600160a01b038316906360f68993906107239084906004016111a6565b600060405180830381600087803b15801561073d57600080fd5b505af1158015610751573d6000803e3d6000fd5b505050505050565b60005482906001600160a01b031633148061078357503360009081526001602052604090205460ff165b61079f5760405162461bcd60e51b815260040161037c9061129d565b306001600160a01b0316816001600160a01b0316631818e2ec6040518163ffffffff1660e01b815260040160006040518083038186803b1580156107e257600080fd5b505afa1580156107f6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261081e919081019061107d565b60a001516001600160a01b0316146108485760405162461bcd60e51b815260040161037c906111f8565b6104388383610c5f565b60005482906001600160a01b031633148061087c57503360009081526001602052604090205460ff165b6108985760405162461bcd60e51b815260040161037c9061129d565b306001600160a01b0316816001600160a01b0316631818e2ec6040518163ffffffff1660e01b815260040160006040518083038186803b1580156108db57600080fd5b505afa1580156108ef573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610917919081019061107d565b60a001516001600160a01b0316146109415760405162461bcd60e51b815260040161037c906111f8565b60005b82518110156109905761097e8484838151811061097157634e487b7160e01b600052603260045260246000fd5b6020026020010151610b4b565b806109888161138b565b915050610944565b50505050565b6000546001600160a01b031681565b60408051808201909152601781527657616c6c6574417070726f76657253657276696365563160481b602082015290565b60016020526000908152604090205460ff1681565b60005482906001600160a01b0316331480610a1557503360009081526001602052604090205460ff165b610a315760405162461bcd60e51b815260040161037c9061129d565b306001600160a01b0316816001600160a01b0316631818e2ec6040518163ffffffff1660e01b815260040160006040518083038186803b158015610a7457600080fd5b505afa158015610a88573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ab0919081019061107d565b60a001516001600160a01b031614610ada5760405162461bcd60e51b815260040161037c906111f8565b60005b825181101561099057610b1784848381518110610b0a57634e487b7160e01b600052603260045260246000fd5b6020026020010151610c5f565b80610b218161138b565b915050610add565b6040518060400160405280600681526020016518971817191b60d11b81525081565b6000826001600160a01b031682604051602401610b6891906111a6565b60408051601f198184030181529181526020820180516001600160e01b031663e728375560e01b17905251610b9d919061118a565b6000604051808303816000865af19150503d8060008114610bda576040519150601f19603f3d011682016040523d82523d6000602084013e610bdf565b606091505b505090508015610c24576040516001600160a01b0383169033907f76a896d842439920f6cb103cd360ad1ddffebe6ae33c909a3d39a97b61da7c9e90600090a3610438565b6040516001600160a01b0383169033907f538c12c48b9fce04c3c44bce2a940fbf4aebbe82d655ce25b33d02f4a857828190600090a3505050565b6000826001600160a01b031682604051602401610c7c91906111a6565b60408051601f198184030181529181526020820180516001600160e01b0316630fcb0ae560e01b17905251610cb1919061118a565b6000604051808303816000865af19150503d8060008114610cee576040519150601f19603f3d011682016040523d82523d6000602084013e610cf3565b606091505b505090508015610d38576040516001600160a01b0383169033907f07a7f29759e6fcd5abfb13b011b6260e8d5bbf1378e02ab6a0bda305808b4af790600090a3610d6f565b6040516001600160a01b0383169033907fefa58f4f110c14576ccc7f8084ebeedcff31b0f0da5194fd4d2435b34aaab86790600090a35b6000600254118015610d8957506001600160a01b03821631155b8015610d9757506002544710155b15610438576002546040516001600160a01b0384169180156108fc02916000818181858888f19350505050158015610dd3573d6000803e3d6000fd5b50816001600160a01b0316336001600160a01b03167fdcd765526e7e876773520212c462da95330cd0b04f266d7902578351482bee9e600254604051610e1991906112fa565b60405180910390a3505050565b8051610e31816113c8565b919050565b600082601f830112610e46578081fd5b815167ffffffffffffffff811115610e6057610e606113b2565b610e73601f8201601f1916602001611311565b818152846020838601011115610e87578283fd5b610e9882602083016020870161135f565b949350505050565b600060208284031215610eb1578081fd5b8135610ebc816113c8565b9392505050565b60008060408385031215610ed5578081fd5b8235610ee0816113c8565b915060208301358015158114610ef4578182fd5b809150509250929050565b60008060408385031215610f11578182fd5b8235610f1c816113c8565b91506020830135610ef4816113c8565b60008060408385031215610f3e578182fd5b8235610f49816113c8565b915060208381013567ffffffffffffffff811115610f65578283fd5b8401601f81018613610f75578283fd5b8035610f88610f838261133b565b611311565b81815283810190838501858402850186018a1015610fa4578687fd5b8694505b83851015610fcf578035610fbb816113c8565b835260019490940193918501918501610fa8565b5080955050505050509250929050565b60008060408385031215610ff1578182fd5b8235610ffc816113c8565b915060208381013567ffffffffffffffff811115611018578283fd5b8401601f81018613611028578283fd5b8035611036610f838261133b565b81815283810190838501858402850186018a1015611052578687fd5b8694505b83851015610fcf578035611069816113c8565b835260019490940193918501918501611056565b60006020828403121561108e578081fd5b815167ffffffffffffffff808211156110a5578283fd5b9083019060e082860312156110b8578283fd5b6110c260e0611311565b8251828111156110d0578485fd5b6110dc87828601610e36565b8252506020830151828111156110f0578485fd5b6110fc87828601610e36565b60208301525061110e60408401610e26565b604082015261111f60608401610e26565b606082015261113060808401610e26565b608082015261114160a08401610e26565b60a082015260c083015182811115611157578485fd5b61116387828601610e36565b60c08301525095945050505050565b600060208284031215611183578081fd5b5035919050565b6000825161119c81846020870161135f565b9190910192915050565b6001600160a01b0391909116815260200190565b901515815260200190565b60006020825282518060208401526111e481604085016020870161135f565b601f01601f19169190910160400192915050565b60208082526039908201527f57616c6c6574417070726f766572536572766963653a206e6f7420616c6c6f7760408201527f656420746f20617070726f766520666f72206973737565723b00000000000000606082015260800190565b60208082526028908201527f57616c6c6574417070726f766572536572766963653a206e6f74206d6173746560408201526772206f776e65723b60c01b606082015260800190565b60208082526039908201527f57616c6c6574417070726f766572536572766963653a20617070726f7665722060408201527f6e6f7420696e20616c6c6f77656420617070726f766572733b00000000000000606082015260800190565b90815260200190565b918252602082015260400190565b60405181810167ffffffffffffffff81118282101715611333576113336113b2565b604052919050565b600067ffffffffffffffff821115611355576113556113b2565b5060209081020190565b60005b8381101561137a578181015183820152602001611362565b838111156109905750506000910152565b60006000198214156113ab57634e487b7160e01b81526011600452602481fd5b5060010190565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146113dd57600080fd5b5056fea26469706673582212206bb7c6c1b41e41910628e21d4c6df1054f7ecf42acafc92492c80cfe97354cfe64736f6c63430008000033",
  "deployedBytecode": "0x6080604052600436106100f75760003560e01c8063a0fc789b1161008a578063f59e4f6511610059578063f59e4f65146102bf578063f72069e0146102d4578063fac1789114610301578063ffa1ad74146103215761013f565b8063a0fc789b1461023d578063cd3c6bda1461025d578063dfe8a4191461027d578063e7201d7d1461029d5761013f565b806358c1c499116100c657806358c1c499146101d35780635c26e9ea146101e857806386d1a69f146102085780639ed5f9ae1461021d5761013f565b8063057106af1461014457806315c2ba14146101665780634b14c0421461018657806354fd4d50146101b15761013f565b3661013f57336001600160a01b03167f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f885258743460405161013591906112fa565b60405180910390a2005b600080fd5b34801561015057600080fd5b5061016461015f366004610eff565b610336565b005b34801561017257600080fd5b50610164610181366004611172565b61043d565b34801561019257600080fd5b5061019b6104af565b6040516101a891906112fa565b60405180910390f35b3480156101bd57600080fd5b506101c66104b5565b6040516101a891906111c5565b3480156101df57600080fd5b506101c66104d5565b3480156101f457600080fd5b50610164610203366004610ec3565b610508565b34801561021457600080fd5b50610164610594565b34801561022957600080fd5b50610164610238366004610ea0565b610632565b34801561024957600080fd5b50610164610258366004610eff565b6106cd565b34801561026957600080fd5b50610164610278366004610eff565b610759565b34801561028957600080fd5b50610164610298366004610f2c565b610852565b3480156102a957600080fd5b506102b2610996565b6040516101a891906111a6565b3480156102cb57600080fd5b506101c66109a5565b3480156102e057600080fd5b506102f46102ef366004610ea0565b6109d6565b6040516101a891906111ba565b34801561030d57600080fd5b5061016461031c366004610fdf565b6109eb565b34801561032d57600080fd5b506101c6610b29565b60005482906001600160a01b031633148061036057503360009081526001602052604090205460ff165b6103855760405162461bcd60e51b815260040161037c9061129d565b60405180910390fd5b306001600160a01b0316816001600160a01b0316631818e2ec6040518163ffffffff1660e01b815260040160006040518083038186803b1580156103c857600080fd5b505afa1580156103dc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610404919081019061107d565b60a001516001600160a01b03161461042e5760405162461bcd60e51b815260040161037c906111f8565b6104388383610b4b565b505050565b6000546001600160a01b031633146104675760405162461bcd60e51b815260040161037c90611255565b600280549082905560405133907f7608fa224b96c7bbb8c7d7e71419b495d68cd940553322871d4296fa826477af906104a39084908690611303565b60405180910390a25050565b60025481565b60408051808201909152600681526518971817191b60d11b602082015290565b6040518060400160405280601781526020017657616c6c6574417070726f76657253657276696365563160481b81525081565b6000546001600160a01b031633146105325760405162461bcd60e51b815260040161037c90611255565b6001600160a01b03821660008181526001602052604090819020805460ff19168415151790555133907f1c9ac4341a3f7a3e5e557edd21d4a7b25dafccdd42377421c423df7aa368bc82906105889085906111ba565b60405180910390a35050565b6000546001600160a01b031633146105be5760405162461bcd60e51b815260040161037c90611255565b6040514790339082156108fc029083906000818181858888f193505050501580156105ed573d6000803e3d6000fd5b50336001600160a01b03167fb21fb52d5749b80f3182f8c6992236b5e5576681880914484d7f4c9b062e619e8260405161062791906112fa565b60405180910390a250565b6000546001600160a01b0316331461065c5760405162461bcd60e51b815260040161037c90611255565b336000818152600160208190526040808320805460ff199081169091556001600160a01b0386168085528285208054909216909317905582546001600160a01b03191682178355519092917fc0ae3a638c7d9e51f79b7363d70629d96891f0b420cbf1f6acb2bb12ffd136ad91a350565b6000546001600160a01b031633146106f75760405162461bcd60e51b815260040161037c90611255565b6040516360f6899360e01b81526001600160a01b038316906360f68993906107239084906004016111a6565b600060405180830381600087803b15801561073d57600080fd5b505af1158015610751573d6000803e3d6000fd5b505050505050565b60005482906001600160a01b031633148061078357503360009081526001602052604090205460ff165b61079f5760405162461bcd60e51b815260040161037c9061129d565b306001600160a01b0316816001600160a01b0316631818e2ec6040518163ffffffff1660e01b815260040160006040518083038186803b1580156107e257600080fd5b505afa1580156107f6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261081e919081019061107d565b60a001516001600160a01b0316146108485760405162461bcd60e51b815260040161037c906111f8565b6104388383610c5f565b60005482906001600160a01b031633148061087c57503360009081526001602052604090205460ff165b6108985760405162461bcd60e51b815260040161037c9061129d565b306001600160a01b0316816001600160a01b0316631818e2ec6040518163ffffffff1660e01b815260040160006040518083038186803b1580156108db57600080fd5b505afa1580156108ef573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610917919081019061107d565b60a001516001600160a01b0316146109415760405162461bcd60e51b815260040161037c906111f8565b60005b82518110156109905761097e8484838151811061097157634e487b7160e01b600052603260045260246000fd5b6020026020010151610b4b565b806109888161138b565b915050610944565b50505050565b6000546001600160a01b031681565b60408051808201909152601781527657616c6c6574417070726f76657253657276696365563160481b602082015290565b60016020526000908152604090205460ff1681565b60005482906001600160a01b0316331480610a1557503360009081526001602052604090205460ff165b610a315760405162461bcd60e51b815260040161037c9061129d565b306001600160a01b0316816001600160a01b0316631818e2ec6040518163ffffffff1660e01b815260040160006040518083038186803b158015610a7457600080fd5b505afa158015610a88573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ab0919081019061107d565b60a001516001600160a01b031614610ada5760405162461bcd60e51b815260040161037c906111f8565b60005b825181101561099057610b1784848381518110610b0a57634e487b7160e01b600052603260045260246000fd5b6020026020010151610c5f565b80610b218161138b565b915050610add565b6040518060400160405280600681526020016518971817191b60d11b81525081565b6000826001600160a01b031682604051602401610b6891906111a6565b60408051601f198184030181529181526020820180516001600160e01b031663e728375560e01b17905251610b9d919061118a565b6000604051808303816000865af19150503d8060008114610bda576040519150601f19603f3d011682016040523d82523d6000602084013e610bdf565b606091505b505090508015610c24576040516001600160a01b0383169033907f76a896d842439920f6cb103cd360ad1ddffebe6ae33c909a3d39a97b61da7c9e90600090a3610438565b6040516001600160a01b0383169033907f538c12c48b9fce04c3c44bce2a940fbf4aebbe82d655ce25b33d02f4a857828190600090a3505050565b6000826001600160a01b031682604051602401610c7c91906111a6565b60408051601f198184030181529181526020820180516001600160e01b0316630fcb0ae560e01b17905251610cb1919061118a565b6000604051808303816000865af19150503d8060008114610cee576040519150601f19603f3d011682016040523d82523d6000602084013e610cf3565b606091505b505090508015610d38576040516001600160a01b0383169033907f07a7f29759e6fcd5abfb13b011b6260e8d5bbf1378e02ab6a0bda305808b4af790600090a3610d6f565b6040516001600160a01b0383169033907fefa58f4f110c14576ccc7f8084ebeedcff31b0f0da5194fd4d2435b34aaab86790600090a35b6000600254118015610d8957506001600160a01b03821631155b8015610d9757506002544710155b15610438576002546040516001600160a01b0384169180156108fc02916000818181858888f19350505050158015610dd3573d6000803e3d6000fd5b50816001600160a01b0316336001600160a01b03167fdcd765526e7e876773520212c462da95330cd0b04f266d7902578351482bee9e600254604051610e1991906112fa565b60405180910390a3505050565b8051610e31816113c8565b919050565b600082601f830112610e46578081fd5b815167ffffffffffffffff811115610e6057610e606113b2565b610e73601f8201601f1916602001611311565b818152846020838601011115610e87578283fd5b610e9882602083016020870161135f565b949350505050565b600060208284031215610eb1578081fd5b8135610ebc816113c8565b9392505050565b60008060408385031215610ed5578081fd5b8235610ee0816113c8565b915060208301358015158114610ef4578182fd5b809150509250929050565b60008060408385031215610f11578182fd5b8235610f1c816113c8565b91506020830135610ef4816113c8565b60008060408385031215610f3e578182fd5b8235610f49816113c8565b915060208381013567ffffffffffffffff811115610f65578283fd5b8401601f81018613610f75578283fd5b8035610f88610f838261133b565b611311565b81815283810190838501858402850186018a1015610fa4578687fd5b8694505b83851015610fcf578035610fbb816113c8565b835260019490940193918501918501610fa8565b5080955050505050509250929050565b60008060408385031215610ff1578182fd5b8235610ffc816113c8565b915060208381013567ffffffffffffffff811115611018578283fd5b8401601f81018613611028578283fd5b8035611036610f838261133b565b81815283810190838501858402850186018a1015611052578687fd5b8694505b83851015610fcf578035611069816113c8565b835260019490940193918501918501611056565b60006020828403121561108e578081fd5b815167ffffffffffffffff808211156110a5578283fd5b9083019060e082860312156110b8578283fd5b6110c260e0611311565b8251828111156110d0578485fd5b6110dc87828601610e36565b8252506020830151828111156110f0578485fd5b6110fc87828601610e36565b60208301525061110e60408401610e26565b604082015261111f60608401610e26565b606082015261113060808401610e26565b608082015261114160a08401610e26565b60a082015260c083015182811115611157578485fd5b61116387828601610e36565b60c08301525095945050505050565b600060208284031215611183578081fd5b5035919050565b6000825161119c81846020870161135f565b9190910192915050565b6001600160a01b0391909116815260200190565b901515815260200190565b60006020825282518060208401526111e481604085016020870161135f565b601f01601f19169190910160400192915050565b60208082526039908201527f57616c6c6574417070726f766572536572766963653a206e6f7420616c6c6f7760408201527f656420746f20617070726f766520666f72206973737565723b00000000000000606082015260800190565b60208082526028908201527f57616c6c6574417070726f766572536572766963653a206e6f74206d6173746560408201526772206f776e65723b60c01b606082015260800190565b60208082526039908201527f57616c6c6574417070726f766572536572766963653a20617070726f7665722060408201527f6e6f7420696e20616c6c6f77656420617070726f766572733b00000000000000606082015260800190565b90815260200190565b918252602082015260400190565b60405181810167ffffffffffffffff81118282101715611333576113336113b2565b604052919050565b600067ffffffffffffffff821115611355576113556113b2565b5060209081020190565b60005b8381101561137a578181015183820152602001611362565b838111156109905750506000910152565b60006000198214156113ab57634e487b7160e01b81526011600452602481fd5b5060010190565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146113dd57600080fd5b5056fea26469706673582212206bb7c6c1b41e41910628e21d4c6df1054f7ecf42acafc92492c80cfe97354cfe64736f6c63430008000033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
