{
  "_format": "hh-sol-artifact-1",
  "contractName": "CredenzaSellableTestToken",
  "sourceName": "contracts/tokens/CredenzaSellableTestToken.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "contractAddress",
          "type": "address"
        }
      ],
      "name": "addAvailableCurrencyTokenContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "addOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "requestedAmount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "buyWithEther",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "requestedAmount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "currencyTokenContract",
          "type": "address"
        }
      ],
      "name": "buyWithToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "requestedAmount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "buyWithToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "clearOwners",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAvailableCurrencyTokenContractsList",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getBeneficiaryAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getDefaultCurrencyTokenContract",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getDescription",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getOwners",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "getPriceEther",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "getPriceFiat",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "getPriceToken",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getVersion",
      "outputs": [
        {
          "internalType": "string",
          "name": "version",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "contractAddress",
          "type": "address"
        }
      ],
      "name": "isAvailableCurrencyTokenContract",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "isOwner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "contractAddress",
          "type": "address"
        }
      ],
      "name": "removeAvailableCurrencyTokenContract",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "removeOwner",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "setBeneficiaryAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenContract",
          "type": "address"
        }
      ],
      "name": "setDefaultCurrencyTokenContractAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "description",
          "type": "string"
        }
      ],
      "name": "setDescription",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        }
      ],
      "name": "setPriceEther",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        }
      ],
      "name": "setPriceFiat",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "price",
          "type": "uint256"
        }
      ],
      "name": "setPriceToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801562000010575f80fd5b5060408051808201825260198082527f43726564656e7a6153656c6c61626c6554657374546f6b656e00000000000000602080840182905284518086019095529184529083015290600362000066838262000231565b50600462000075828262000231565b50505062000089336200008f60201b60201c565b620002f9565b6006541580620000ad5750335f9081526005602052604090205460ff165b620001095760405162461bcd60e51b815260206004820152602260248201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f604482015261371760f11b606482015260840160405180910390fd5b6001600160a01b0381165f9081526005602052604090205460ff166200018e576001600160a01b0381165f818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b03191690911790555b50565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620001ba57607f821691505b602082108103620001d957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200022c575f81815260208120601f850160051c81016020861015620002075750805b601f850160051c820191505b81811015620002285782815560010162000213565b5050505b505050565b81516001600160401b038111156200024d576200024d62000191565b62000265816200025e8454620001a5565b84620001df565b602080601f8311600181146200029b575f8415620002835750858301515b5f19600386901b1c1916600185901b17855562000228565b5f85815260208120601f198616915b82811015620002cb57888601518255948401946001909101908401620002aa565b5085821015620002e957878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b611e3780620003075f395ff3fe60806040526004361061021d575f3560e01c80637065cb481161011e578063a457c2d7116100a8578063d1eff8951161006d578063d1eff89514610690578063d36223f1146106ad578063dd62ed3e146106cc578063e1461f12146106eb578063ec6be06e14610716575f80fd5b8063a457c2d7146105d1578063a9059cbb146105f0578063adfadad31461060f578063b33a599f1461063a578063b68de97414610659575f80fd5b806380dc439e116100ee57806380dc439e1461055857806388d0f86a1461056b57806390c3f38f1461058a57806395d89b41146105a9578063a0e67e2b146105bd575f80fd5b80637065cb48146104c557806370a08231146104e4578063724e5c17146105185780638003e27f14610537575f80fd5b80631abe7cb3116101aa5780633a932dba1161016f5780633a932dba146104355780633de4fdc81461045457806340c10f19146104735780635260f5e614610492578063578680be146104a6575f80fd5b80631abe7cb31461039e57806323b872dd146103bd5780632f54bf6e146103dc578063313ce567146103fb5780633950935114610416575f80fd5b806316bef596116101f057806316bef596146102eb578063173825d91461031c578063177ed0f31461033d57806318160ddd146103765780631a0925411461038a575f80fd5b806301ffc9a71461022157806306fdde0314610266578063095ea7b3146102875780630d8e6e2c146102a6575b5f80fd5b34801561022c575f80fd5b5061025161023b3660046117bb565b6001600160e01b0319166301ffc9a760e01b1490565b60405190151581526020015b60405180910390f35b348015610271575f80fd5b5061027a610735565b60405161025d91906117e9565b348015610292575f80fd5b506102516102a1366004611848565b6107c5565b3480156102b1575f80fd5b5060408051808201909152601981527f43726564656e7a6153656c6c61626c6554657374546f6b656e00000000000000602082015261027a565b3480156102f6575f80fd5b50600b546001600160a01b03165b6040516001600160a01b03909116815260200161025d565b348015610327575f80fd5b5061033b610336366004611872565b6107de565b005b348015610348575f80fd5b5061036861035736600461188d565b5f908152600a602052604090205490565b60405190815260200161025d565b348015610381575f80fd5b50600254610368565b348015610395575f80fd5b5061027a610898565b3480156103a9575f80fd5b5061033b6103b83660046118a4565b6108a7565b3480156103c8575f80fd5b506102516103d73660046118c4565b6108e7565b3480156103e7575f80fd5b506102516103f6366004611872565b61090a565b348015610406575f80fd5b506040516006815260200161025d565b348015610421575f80fd5b50610251610430366004611848565b610927565b348015610440575f80fd5b5061033b61044f366004611872565b610948565b34801561045f575f80fd5b5061033b61046e366004611872565b610997565b34801561047e575f80fd5b5061033b61048d366004611848565b610a2b565b34801561049d575f80fd5b5061033b610a7d565b3480156104b1575f80fd5b5061033b6104c03660046118a4565b610b22565b3480156104d0575f80fd5b5061033b6104df366004611872565b610b62565b3480156104ef575f80fd5b506103686104fe366004611872565b6001600160a01b03165f9081526020819052604090205490565b348015610523575f80fd5b5061033b610532366004611902565b610c03565b348015610542575f80fd5b5061054b610c40565b60405161025d9190611949565b61033b610566366004611995565b610c9f565b348015610576575f80fd5b5061033b6105853660046118a4565b610d19565b348015610595575f80fd5b5061033b6105a43660046119df565b610d59565b3480156105b4575f80fd5b5061027a610d94565b3480156105c8575f80fd5b5061054b610da3565b3480156105dc575f80fd5b506102516105eb366004611848565b610e01565b3480156105fb575f80fd5b5061025161060a366004611848565b610e7b565b34801561061a575f80fd5b5061036861062936600461188d565b5f9081526009602052604090205490565b348015610645575f80fd5b5061033b610654366004611872565b610e88565b348015610664575f80fd5b50610251610673366004611872565b6001600160a01b03165f908152600c602052604090205460ff1690565b34801561069b575f80fd5b50600e546001600160a01b0316610304565b3480156106b8575f80fd5b5061033b6106c7366004611995565b610f48565b3480156106d7575f80fd5b506103686106e6366004611a8a565b610fa6565b3480156106f6575f80fd5b5061036861070536600461188d565b5f9081526008602052604090205490565b348015610721575f80fd5b5061033b610730366004611872565b610fd0565b60606003805461074490611ac1565b80601f016020809104026020016040519081016040528092919081815260200182805461077090611ac1565b80156107bb5780601f10610792576101008083540402835291602001916107bb565b820191905f5260205f20905b81548152906001019060200180831161079e57829003601f168201915b5050505050905090565b5f336107d2818585611021565b60019150505b92915050565b60065415806107f157506107f13361090a565b6108165760405162461bcd60e51b815260040161080d90611af9565b60405180910390fd5b61081f8161090a565b61086b5760405162461bcd60e51b815260206004820152601e60248201527f5461726765742061646472657373206973206e6f7420616e206f776e65720000604482015260640161080d565b6001600160a01b0381165f908152600560205260409020805460ff19169055610895600682611144565b50565b60606007805461074490611ac1565b60065415806108ba57506108ba3361090a565b6108d65760405162461bcd60e51b815260040161080d90611af9565b5f9182526008602052604090912055565b5f336108f4858285611243565b6108ff8585856112bb565b506001949350505050565b6001600160a01b03165f9081526005602052604090205460ff1690565b5f336107d28185856109398383610fa6565b6109439190611b4f565b611021565b600654158061095b575061095b3361090a565b6109775760405162461bcd60e51b815260040161080d90611af9565b600b80546001600160a01b0319166001600160a01b038316179055610895815b60065415806109aa57506109aa3361090a565b6109c65760405162461bcd60e51b815260040161080d90611af9565b6001600160a01b03165f818152600c60205260408120805460ff19166001908117909155600d805491820181559091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319169091179055565b6006541580610a3e5750610a3e3361090a565b610a5a5760405162461bcd60e51b815260040161080d90611af9565b610a7982610a6a6006600a611c42565b610a749084611c50565b61145d565b5050565b6006541580610a905750610a903361090a565b610aac5760405162461bcd60e51b815260040161080d90611af9565b5f5b600654811015610b14575f60055f60068481548110610acf57610acf611c67565b5f918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905580610b0c81611c7b565b915050610aae565b50610b2060065f61178d565b565b6006541580610b355750610b353361090a565b610b515760405162461bcd60e51b815260040161080d90611af9565b5f918252600a602052604090912055565b6006541580610b755750610b753361090a565b610b915760405162461bcd60e51b815260040161080d90611af9565b610b9a8161090a565b610895576001600160a01b03165f818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b60405162461bcd60e51b815260206004820152601260248201527113d4115490551253d397d11254d05093115160721b604482015260640161080d565b6060600d8054806020026020016040519081016040528092919081815260200182805480156107bb57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610c78575050505050905090565b600e546001600160a01b03165f90815260208190526040902054821115610cf35760405162461bcd60e51b815260206004820152600860248201526714d3d31117d3d55560c21b604482015260640161080d565b610cfd838361151a565b600e54610d14906001600160a01b031682846112bb565b505050565b6006541580610d2c5750610d2c3361090a565b610d485760405162461bcd60e51b815260040161080d90611af9565b5f9182526009602052604090912055565b6006541580610d6c5750610d6c3361090a565b610d885760405162461bcd60e51b815260040161080d90611af9565b6007610a798282611cd8565b60606004805461074490611ac1565b606060068054806020026020016040519081016040528092919081815260200182805480156107bb57602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311610c78575050505050905090565b5f3381610e0e8286610fa6565b905083811015610e6e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161080d565b6108ff8286868403611021565b5f336107d28185856112bb565b6006541580610e9b5750610e9b3361090a565b610eb75760405162461bcd60e51b815260040161080d90611af9565b6001600160a01b0381165f908152600c602052604090205460ff16610f1e5760405162461bcd60e51b815260206004820181905260248201527f54617267657420636f6e7472616374206973206e6f7420617661696c61626c65604482015260640161080d565b6001600160a01b0381165f908152600c60205260409020805460ff19169055610895600d82611144565b600e546001600160a01b03165f90815260208190526040902054821115610f9c5760405162461bcd60e51b815260206004820152600860248201526714d3d31117d3d55560c21b604482015260640161080d565b610cfd8383611603565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6006541580610fe35750610fe33361090a565b610fff5760405162461bcd60e51b815260040161080d90611af9565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166110835760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161080d565b6001600160a01b0382166110e45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161080d565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f5b8254811015610d1457816001600160a01b031683828154811061116b5761116b611c67565b5f918252602090912001546001600160a01b031603611231578254839061119490600190611d94565b815481106111a4576111a4611c67565b905f5260205f20015f9054906101000a90046001600160a01b03168382815481106111d1576111d1611c67565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508280548061120c5761120c611da7565b5f8281526020902081015f1990810180546001600160a01b0319169055019055505050565b8061123b81611c7b565b915050611146565b5f61124e8484610fa6565b90505f1981146112b557818110156112a85760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161080d565b6112b58484848403611021565b50505050565b6001600160a01b03831661131f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161080d565b6001600160a01b0382166113815760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161080d565b6001600160a01b0383165f90815260208190526040902054818110156113f85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161080d565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36112b5565b6001600160a01b0382166114b35760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161080d565b8060025f8282546114c49190611b4f565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b5f82815260096020526040812054116115455760405162461bcd60e51b815260040161080d90611dbb565b600e546001600160a01b031661156d5760405162461bcd60e51b815260040161080d90611dbb565b5f82815260096020526040812054611586908390611c50565b9050803410156115cd5760405162461bcd60e51b8152602060048201526012602482015271494e53554646494349454e545f56414c554560701b604482015260640161080d565b600e546040516001600160a01b03909116903480156108fc02915f818181858888f193505050501580156112b5573d5f803e3d5ffd5b600b546001600160a01b03165f818152600c6020526040902054610a7991849184919060ff166116755760405162461bcd60e51b815260206004820152601f60248201527f43555252454e43595f434f4e54524143545f4e4f545f535550504f5254454400604482015260640161080d565b5f838152600a6020526040812054116116a05760405162461bcd60e51b815260040161080d90611dbb565b600e546001600160a01b03166116c85760405162461bcd60e51b815260040161080d90611dbb565b6001600160a01b0381166116ee5760405162461bcd60e51b815260040161080d90611dbb565b5f838152600a60205260408120546117069084611c50565b600e546040516323b872dd60e01b81523360048201526001600160a01b039182166024820152604481018390529192508391908216906323b872dd906064016020604051808303815f875af1158015611761573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117859190611de2565b505050505050565b5080545f8255905f5260205f209081019061089591905b808211156117b7575f81556001016117a4565b5090565b5f602082840312156117cb575f80fd5b81356001600160e01b0319811681146117e2575f80fd5b9392505050565b5f6020808352835180828501525f5b81811015611814578581018301518582016040015282016117f8565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610895575f80fd5b5f8060408385031215611859575f80fd5b823561186481611834565b946020939093013593505050565b5f60208284031215611882575f80fd5b81356117e281611834565b5f6020828403121561189d575f80fd5b5035919050565b5f80604083850312156118b5575f80fd5b50508035926020909101359150565b5f805f606084860312156118d6575f80fd5b83356118e181611834565b925060208401356118f181611834565b929592945050506040919091013590565b5f805f8060808587031215611915575f80fd5b8435935060208501359250604085013561192e81611834565b9150606085013561193e81611834565b939692955090935050565b602080825282518282018190525f9190848201906040850190845b818110156119895783516001600160a01b031683529284019291840191600101611964565b50909695505050505050565b5f805f606084860312156119a7575f80fd5b833592506020840135915060408401356119c081611834565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f602082840312156119ef575f80fd5b813567ffffffffffffffff80821115611a06575f80fd5b818401915084601f830112611a19575f80fd5b813581811115611a2b57611a2b6119cb565b604051601f8201601f19908116603f01168101908382118183101715611a5357611a536119cb565b81604052828152876020848701011115611a6b575f80fd5b826020860160208301375f928101602001929092525095945050505050565b5f8060408385031215611a9b575f80fd5b8235611aa681611834565b91506020830135611ab681611834565b809150509250929050565b600181811c90821680611ad557607f821691505b602082108103611af357634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526022908201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f604082015261371760f11b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156107d8576107d8611b3b565b600181815b80851115611b9c57815f1904821115611b8257611b82611b3b565b80851615611b8f57918102915b93841c9390800290611b67565b509250929050565b5f82611bb2575060016107d8565b81611bbe57505f6107d8565b8160018114611bd45760028114611bde57611bfa565b60019150506107d8565b60ff841115611bef57611bef611b3b565b50506001821b6107d8565b5060208310610133831016604e8410600b8410161715611c1d575081810a6107d8565b611c278383611b62565b805f1904821115611c3a57611c3a611b3b565b029392505050565b5f6117e260ff841683611ba4565b80820281158282048414176107d8576107d8611b3b565b634e487b7160e01b5f52603260045260245ffd5b5f60018201611c8c57611c8c611b3b565b5060010190565b601f821115610d14575f81815260208120601f850160051c81016020861015611cb95750805b601f850160051c820191505b8181101561178557828155600101611cc5565b815167ffffffffffffffff811115611cf257611cf26119cb565b611d0681611d008454611ac1565b84611c93565b602080601f831160018114611d39575f8415611d225750858301515b5f19600386901b1c1916600185901b178555611785565b5f85815260208120601f198616915b82811015611d6757888601518255948401946001909101908401611d48565b5085821015611d8457878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b818103818111156107d8576107d8611b3b565b634e487b7160e01b5f52603160045260245ffd5b6020808252600d908201526c14d1531317d11254d050931151609a1b604082015260600190565b5f60208284031215611df2575f80fd5b815180151581146117e2575f80fdfea26469706673582212201b1d6416db20abe126ed6b7f4321e0b311449cff5afc138cc15e4a5103a6a70964736f6c63430008140033",
  "deployedBytecode": "0x60806040526004361061021d575f3560e01c80637065cb481161011e578063a457c2d7116100a8578063d1eff8951161006d578063d1eff89514610690578063d36223f1146106ad578063dd62ed3e146106cc578063e1461f12146106eb578063ec6be06e14610716575f80fd5b8063a457c2d7146105d1578063a9059cbb146105f0578063adfadad31461060f578063b33a599f1461063a578063b68de97414610659575f80fd5b806380dc439e116100ee57806380dc439e1461055857806388d0f86a1461056b57806390c3f38f1461058a57806395d89b41146105a9578063a0e67e2b146105bd575f80fd5b80637065cb48146104c557806370a08231146104e4578063724e5c17146105185780638003e27f14610537575f80fd5b80631abe7cb3116101aa5780633a932dba1161016f5780633a932dba146104355780633de4fdc81461045457806340c10f19146104735780635260f5e614610492578063578680be146104a6575f80fd5b80631abe7cb31461039e57806323b872dd146103bd5780632f54bf6e146103dc578063313ce567146103fb5780633950935114610416575f80fd5b806316bef596116101f057806316bef596146102eb578063173825d91461031c578063177ed0f31461033d57806318160ddd146103765780631a0925411461038a575f80fd5b806301ffc9a71461022157806306fdde0314610266578063095ea7b3146102875780630d8e6e2c146102a6575b5f80fd5b34801561022c575f80fd5b5061025161023b3660046117bb565b6001600160e01b0319166301ffc9a760e01b1490565b60405190151581526020015b60405180910390f35b348015610271575f80fd5b5061027a610735565b60405161025d91906117e9565b348015610292575f80fd5b506102516102a1366004611848565b6107c5565b3480156102b1575f80fd5b5060408051808201909152601981527f43726564656e7a6153656c6c61626c6554657374546f6b656e00000000000000602082015261027a565b3480156102f6575f80fd5b50600b546001600160a01b03165b6040516001600160a01b03909116815260200161025d565b348015610327575f80fd5b5061033b610336366004611872565b6107de565b005b348015610348575f80fd5b5061036861035736600461188d565b5f908152600a602052604090205490565b60405190815260200161025d565b348015610381575f80fd5b50600254610368565b348015610395575f80fd5b5061027a610898565b3480156103a9575f80fd5b5061033b6103b83660046118a4565b6108a7565b3480156103c8575f80fd5b506102516103d73660046118c4565b6108e7565b3480156103e7575f80fd5b506102516103f6366004611872565b61090a565b348015610406575f80fd5b506040516006815260200161025d565b348015610421575f80fd5b50610251610430366004611848565b610927565b348015610440575f80fd5b5061033b61044f366004611872565b610948565b34801561045f575f80fd5b5061033b61046e366004611872565b610997565b34801561047e575f80fd5b5061033b61048d366004611848565b610a2b565b34801561049d575f80fd5b5061033b610a7d565b3480156104b1575f80fd5b5061033b6104c03660046118a4565b610b22565b3480156104d0575f80fd5b5061033b6104df366004611872565b610b62565b3480156104ef575f80fd5b506103686104fe366004611872565b6001600160a01b03165f9081526020819052604090205490565b348015610523575f80fd5b5061033b610532366004611902565b610c03565b348015610542575f80fd5b5061054b610c40565b60405161025d9190611949565b61033b610566366004611995565b610c9f565b348015610576575f80fd5b5061033b6105853660046118a4565b610d19565b348015610595575f80fd5b5061033b6105a43660046119df565b610d59565b3480156105b4575f80fd5b5061027a610d94565b3480156105c8575f80fd5b5061054b610da3565b3480156105dc575f80fd5b506102516105eb366004611848565b610e01565b3480156105fb575f80fd5b5061025161060a366004611848565b610e7b565b34801561061a575f80fd5b5061036861062936600461188d565b5f9081526009602052604090205490565b348015610645575f80fd5b5061033b610654366004611872565b610e88565b348015610664575f80fd5b50610251610673366004611872565b6001600160a01b03165f908152600c602052604090205460ff1690565b34801561069b575f80fd5b50600e546001600160a01b0316610304565b3480156106b8575f80fd5b5061033b6106c7366004611995565b610f48565b3480156106d7575f80fd5b506103686106e6366004611a8a565b610fa6565b3480156106f6575f80fd5b5061036861070536600461188d565b5f9081526008602052604090205490565b348015610721575f80fd5b5061033b610730366004611872565b610fd0565b60606003805461074490611ac1565b80601f016020809104026020016040519081016040528092919081815260200182805461077090611ac1565b80156107bb5780601f10610792576101008083540402835291602001916107bb565b820191905f5260205f20905b81548152906001019060200180831161079e57829003601f168201915b5050505050905090565b5f336107d2818585611021565b60019150505b92915050565b60065415806107f157506107f13361090a565b6108165760405162461bcd60e51b815260040161080d90611af9565b60405180910390fd5b61081f8161090a565b61086b5760405162461bcd60e51b815260206004820152601e60248201527f5461726765742061646472657373206973206e6f7420616e206f776e65720000604482015260640161080d565b6001600160a01b0381165f908152600560205260409020805460ff19169055610895600682611144565b50565b60606007805461074490611ac1565b60065415806108ba57506108ba3361090a565b6108d65760405162461bcd60e51b815260040161080d90611af9565b5f9182526008602052604090912055565b5f336108f4858285611243565b6108ff8585856112bb565b506001949350505050565b6001600160a01b03165f9081526005602052604090205460ff1690565b5f336107d28185856109398383610fa6565b6109439190611b4f565b611021565b600654158061095b575061095b3361090a565b6109775760405162461bcd60e51b815260040161080d90611af9565b600b80546001600160a01b0319166001600160a01b038316179055610895815b60065415806109aa57506109aa3361090a565b6109c65760405162461bcd60e51b815260040161080d90611af9565b6001600160a01b03165f818152600c60205260408120805460ff19166001908117909155600d805491820181559091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319169091179055565b6006541580610a3e5750610a3e3361090a565b610a5a5760405162461bcd60e51b815260040161080d90611af9565b610a7982610a6a6006600a611c42565b610a749084611c50565b61145d565b5050565b6006541580610a905750610a903361090a565b610aac5760405162461bcd60e51b815260040161080d90611af9565b5f5b600654811015610b14575f60055f60068481548110610acf57610acf611c67565b5f918252602080832091909101546001600160a01b031683528201929092526040019020805460ff191691151591909117905580610b0c81611c7b565b915050610aae565b50610b2060065f61178d565b565b6006541580610b355750610b353361090a565b610b515760405162461bcd60e51b815260040161080d90611af9565b5f918252600a602052604090912055565b6006541580610b755750610b753361090a565b610b915760405162461bcd60e51b815260040161080d90611af9565b610b9a8161090a565b610895576001600160a01b03165f818152600560205260408120805460ff191660019081179091556006805491820181559091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319169091179055565b60405162461bcd60e51b815260206004820152601260248201527113d4115490551253d397d11254d05093115160721b604482015260640161080d565b6060600d8054806020026020016040519081016040528092919081815260200182805480156107bb57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610c78575050505050905090565b600e546001600160a01b03165f90815260208190526040902054821115610cf35760405162461bcd60e51b815260206004820152600860248201526714d3d31117d3d55560c21b604482015260640161080d565b610cfd838361151a565b600e54610d14906001600160a01b031682846112bb565b505050565b6006541580610d2c5750610d2c3361090a565b610d485760405162461bcd60e51b815260040161080d90611af9565b5f9182526009602052604090912055565b6006541580610d6c5750610d6c3361090a565b610d885760405162461bcd60e51b815260040161080d90611af9565b6007610a798282611cd8565b60606004805461074490611ac1565b606060068054806020026020016040519081016040528092919081815260200182805480156107bb57602002820191905f5260205f209081546001600160a01b03168152600190910190602001808311610c78575050505050905090565b5f3381610e0e8286610fa6565b905083811015610e6e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161080d565b6108ff8286868403611021565b5f336107d28185856112bb565b6006541580610e9b5750610e9b3361090a565b610eb75760405162461bcd60e51b815260040161080d90611af9565b6001600160a01b0381165f908152600c602052604090205460ff16610f1e5760405162461bcd60e51b815260206004820181905260248201527f54617267657420636f6e7472616374206973206e6f7420617661696c61626c65604482015260640161080d565b6001600160a01b0381165f908152600c60205260409020805460ff19169055610895600d82611144565b600e546001600160a01b03165f90815260208190526040902054821115610f9c5760405162461bcd60e51b815260206004820152600860248201526714d3d31117d3d55560c21b604482015260640161080d565b610cfd8383611603565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6006541580610fe35750610fe33361090a565b610fff5760405162461bcd60e51b815260040161080d90611af9565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166110835760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161080d565b6001600160a01b0382166110e45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161080d565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f5b8254811015610d1457816001600160a01b031683828154811061116b5761116b611c67565b5f918252602090912001546001600160a01b031603611231578254839061119490600190611d94565b815481106111a4576111a4611c67565b905f5260205f20015f9054906101000a90046001600160a01b03168382815481106111d1576111d1611c67565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508280548061120c5761120c611da7565b5f8281526020902081015f1990810180546001600160a01b0319169055019055505050565b8061123b81611c7b565b915050611146565b5f61124e8484610fa6565b90505f1981146112b557818110156112a85760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161080d565b6112b58484848403611021565b50505050565b6001600160a01b03831661131f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161080d565b6001600160a01b0382166113815760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161080d565b6001600160a01b0383165f90815260208190526040902054818110156113f85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161080d565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36112b5565b6001600160a01b0382166114b35760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161080d565b8060025f8282546114c49190611b4f565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b5f82815260096020526040812054116115455760405162461bcd60e51b815260040161080d90611dbb565b600e546001600160a01b031661156d5760405162461bcd60e51b815260040161080d90611dbb565b5f82815260096020526040812054611586908390611c50565b9050803410156115cd5760405162461bcd60e51b8152602060048201526012602482015271494e53554646494349454e545f56414c554560701b604482015260640161080d565b600e546040516001600160a01b03909116903480156108fc02915f818181858888f193505050501580156112b5573d5f803e3d5ffd5b600b546001600160a01b03165f818152600c6020526040902054610a7991849184919060ff166116755760405162461bcd60e51b815260206004820152601f60248201527f43555252454e43595f434f4e54524143545f4e4f545f535550504f5254454400604482015260640161080d565b5f838152600a6020526040812054116116a05760405162461bcd60e51b815260040161080d90611dbb565b600e546001600160a01b03166116c85760405162461bcd60e51b815260040161080d90611dbb565b6001600160a01b0381166116ee5760405162461bcd60e51b815260040161080d90611dbb565b5f838152600a60205260408120546117069084611c50565b600e546040516323b872dd60e01b81523360048201526001600160a01b039182166024820152604481018390529192508391908216906323b872dd906064016020604051808303815f875af1158015611761573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117859190611de2565b505050505050565b5080545f8255905f5260205f209081019061089591905b808211156117b7575f81556001016117a4565b5090565b5f602082840312156117cb575f80fd5b81356001600160e01b0319811681146117e2575f80fd5b9392505050565b5f6020808352835180828501525f5b81811015611814578581018301518582016040015282016117f8565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610895575f80fd5b5f8060408385031215611859575f80fd5b823561186481611834565b946020939093013593505050565b5f60208284031215611882575f80fd5b81356117e281611834565b5f6020828403121561189d575f80fd5b5035919050565b5f80604083850312156118b5575f80fd5b50508035926020909101359150565b5f805f606084860312156118d6575f80fd5b83356118e181611834565b925060208401356118f181611834565b929592945050506040919091013590565b5f805f8060808587031215611915575f80fd5b8435935060208501359250604085013561192e81611834565b9150606085013561193e81611834565b939692955090935050565b602080825282518282018190525f9190848201906040850190845b818110156119895783516001600160a01b031683529284019291840191600101611964565b50909695505050505050565b5f805f606084860312156119a7575f80fd5b833592506020840135915060408401356119c081611834565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f602082840312156119ef575f80fd5b813567ffffffffffffffff80821115611a06575f80fd5b818401915084601f830112611a19575f80fd5b813581811115611a2b57611a2b6119cb565b604051601f8201601f19908116603f01168101908382118183101715611a5357611a536119cb565b81604052828152876020848701011115611a6b575f80fd5b826020860160208301375f928101602001929092525095945050505050565b5f8060408385031215611a9b575f80fd5b8235611aa681611834565b91506020830135611ab681611834565b809150509250929050565b600181811c90821680611ad557607f821691505b602082108103611af357634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526022908201527f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f604082015261371760f11b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156107d8576107d8611b3b565b600181815b80851115611b9c57815f1904821115611b8257611b82611b3b565b80851615611b8f57918102915b93841c9390800290611b67565b509250929050565b5f82611bb2575060016107d8565b81611bbe57505f6107d8565b8160018114611bd45760028114611bde57611bfa565b60019150506107d8565b60ff841115611bef57611bef611b3b565b50506001821b6107d8565b5060208310610133831016604e8410600b8410161715611c1d575081810a6107d8565b611c278383611b62565b805f1904821115611c3a57611c3a611b3b565b029392505050565b5f6117e260ff841683611ba4565b80820281158282048414176107d8576107d8611b3b565b634e487b7160e01b5f52603260045260245ffd5b5f60018201611c8c57611c8c611b3b565b5060010190565b601f821115610d14575f81815260208120601f850160051c81016020861015611cb95750805b601f850160051c820191505b8181101561178557828155600101611cc5565b815167ffffffffffffffff811115611cf257611cf26119cb565b611d0681611d008454611ac1565b84611c93565b602080601f831160018114611d39575f8415611d225750858301515b5f19600386901b1c1916600185901b178555611785565b5f85815260208120601f198616915b82811015611d6757888601518255948401946001909101908401611d48565b5085821015611d8457878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b818103818111156107d8576107d8611b3b565b634e487b7160e01b5f52603160045260245ffd5b6020808252600d908201526c14d1531317d11254d050931151609a1b604082015260600190565b5f60208284031215611df2575f80fd5b815180151581146117e2575f80fdfea26469706673582212201b1d6416db20abe126ed6b7f4321e0b311449cff5afc138cc15e4a5103a6a70964736f6c63430008140033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
