Overview ERC721
Total Supply:
35 3VIDENZ

Holders:
17
Profile Summary
Blockchain:
Fuji (43113)

Contract Source Code Verified (Exact Match)
Contract Name:
EvidenzRevealableConsensualSBT

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Created At:
Tue, 09 Jan 2024 15:04:40 GMT
Ownable.sol
@openzeppelin
contracts
access
Ownable.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "name_",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "symbol",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "burnAuth",
        "type": "string"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "approved",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "Approval",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "approved",
        "type": "bool"
      }
    ],
    "name": "ApprovalForAll",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "enum IERC5484.BurnAuth",
        "name": "burnAuth",
        "type": "uint8"
      }
    ],
    "name": "Issued",
    "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": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "Reveal",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "Transfer",
    "type": "event"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "approve",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "burn",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "burnAuth",
    "outputs": [
      {
        "internalType": "enum IERC5484.BurnAuth",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "string",
        "name": "pinCode",
        "type": "string"
      },
      {
        "internalType": "bytes",
        "name": "signature",
        "type": "bytes"
      }
    ],
    "name": "claim",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "string",
        "name": "pinCode",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "publicKey",
        "type": "string"
      },
      {
        "internalType": "bytes",
        "name": "signature",
        "type": "bytes"
      }
    ],
    "name": "claimAndReveal",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "defaultImage",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "getApproved",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getDefaultImage",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "getHashedPinCode",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "getHashedPublicKey",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getIssuer",
    "outputs": [
      {
        "components": [
          {
            "internalType": "string",
            "name": "name",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "url",
            "type": "string"
          }
        ],
        "internalType": "struct IOnChainAssets.Issuer",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "getMessageToSign",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getTemplate",
    "outputs": [
      {
        "components": [
          {
            "internalType": "string",
            "name": "id",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "value",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "metadata",
            "type": "string"
          },
          {
            "components": [
              {
                "internalType": "string",
                "name": "url",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "params",
                "type": "string"
              }
            ],
            "internalType": "struct Environment.Endpoint",
            "name": "reader",
            "type": "tuple"
          },
          {
            "components": [
              {
                "internalType": "string",
                "name": "url",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "params",
                "type": "string"
              }
            ],
            "internalType": "struct Environment.Endpoint",
            "name": "toolbox",
            "type": "tuple"
          }
        ],
        "internalType": "struct CustomTemplate.Template",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      }
    ],
    "name": "isApprovedForAll",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "isRevealed",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "issuer",
    "outputs": [
      {
        "internalType": "string",
        "name": "name",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "url",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "string",
            "name": "data",
            "type": "string"
          },
          {
            "internalType": "bytes",
            "name": "hashedPublicKey",
            "type": "bytes"
          },
          {
            "internalType": "bytes32",
            "name": "hashedPinCode",
            "type": "bytes32"
          }
        ],
        "internalType": "struct EvidenzRevealableConsensualSBT.ToMint[]",
        "name": "toMint",
        "type": "tuple[]"
      }
    ],
    "name": "mint",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "ownerOf",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "string",
        "name": "publicKey",
        "type": "string"
      }
    ],
    "name": "reveal",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "data",
        "type": "bytes"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "approved",
        "type": "bool"
      }
    ],
    "name": "setApprovalForAll",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "newDefaultImage",
        "type": "string"
      }
    ],
    "name": "setDefaultImage",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "string",
            "name": "name",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "url",
            "type": "string"
          }
        ],
        "internalType": "struct IOnChainAssets.Issuer",
        "name": "issuer_",
        "type": "tuple"
      }
    ],
    "name": "setIssuer",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "newName",
        "type": "string"
      }
    ],
    "name": "setName",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "string",
            "name": "id",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "value",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "metadata",
            "type": "string"
          },
          {
            "components": [
              {
                "internalType": "string",
                "name": "url",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "params",
                "type": "string"
              }
            ],
            "internalType": "struct Environment.Endpoint",
            "name": "reader",
            "type": "tuple"
          },
          {
            "components": [
              {
                "internalType": "string",
                "name": "url",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "params",
                "type": "string"
              }
            ],
            "internalType": "struct Environment.Endpoint",
            "name": "toolbox",
            "type": "tuple"
          }
        ],
        "internalType": "struct CustomTemplate.Template",
        "name": "template_",
        "type": "tuple"
      }
    ],
    "name": "setTemplate",
    "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": "template",
    "outputs": [
      {
        "internalType": "string",
        "name": "id",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "value",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "metadata",
        "type": "string"
      },
      {
        "components": [
          {
            "internalType": "string",
            "name": "url",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "params",
            "type": "string"
          }
        ],
        "internalType": "struct Environment.Endpoint",
        "name": "reader",
        "type": "tuple"
      },
      {
        "components": [
          {
            "internalType": "string",
            "name": "url",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "params",
            "type": "string"
          }
        ],
        "internalType": "struct Environment.Endpoint",
        "name": "toolbox",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "tokenByIndex",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "tokenData",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "tokenOfOwnerByIndex",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "tokenURI",
    "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": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "transferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]


Contract Creation Code
60806040523480156200001157600080fd5b5060405162004f8138038062004f818339810160408190526200003491620004b4565b828083838282818160006200004a8382620005d4565b506001620000598282620005d4565b5050506200007662000070620000ea60201b60201c565b620000ee565b6200008d60076200014060201b62001a211760201c565b50506016805460ff19166003179055620000a78162000149565b6016805460ff19166001836003811115620000c657620000c6620006a0565b021790555050505080601b9081620000df9190620005d4565b5050505050620006d4565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80546001019055565b6000620001876040518060400160405280600a8152602001694973737565724f6e6c7960b01b815250836200037660201b62001a2a1790919060201c565b80620001c95750620001c9604051806040016040528060098152602001684f776e65724f6e6c7960b81b815250836200037660201b62001a2a1790919060201c565b806200020657506200020660405180604001604052806004815260200163084dee8d60e31b815250836200037660201b62001a2a1790919060201c565b8062000246575062000246604051806040016040528060078152602001662732b4ba3432b960c91b815250836200037660201b62001a2a1790919060201c565b620002975760405162461bcd60e51b815260206004820152601a60248201527f455243353438343a20696e76616c6964206275726e2061757468000000000000604482015260640160405180910390fd5b620002d36040518060400160405280600a8152602001694973737565724f6e6c7960b01b815250836200037660201b62001a2a1790919060201c565b15620002e157506000919050565b6200031c604051806040016040528060098152602001684f776e65724f6e6c7960b81b815250836200037660201b62001a2a1790919060201c565b156200032a57506001919050565b6200036060405180604001604052806004815260200163084dee8d60e31b815250836200037660201b62001a2a1790919060201c565b156200036e57506002919050565b506003919050565b600081518351146200038b57506000620003e1565b816040516020016200039e9190620006b6565b6040516020818303038152906040528051906020012083604051602001620003c79190620006b6565b604051602081830303815290604052805190602001201490505b92915050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200041a57818101518382015260200162000400565b50506000910152565b600082601f8301126200043557600080fd5b81516001600160401b0380821115620004525762000452620003e7565b604051601f8301601f19908116603f011681019082821181831017156200047d576200047d620003e7565b816040528381528660208588010111156200049757600080fd5b620004aa846020830160208901620003fd565b9695505050505050565b600080600060608486031215620004ca57600080fd5b83516001600160401b0380821115620004e257600080fd5b620004f08783880162000423565b945060208601519150808211156200050757600080fd5b620005158783880162000423565b935060408601519150808211156200052c57600080fd5b506200053b8682870162000423565b9150509250925092565b600181811c908216806200055a57607f821691505b6020821081036200057b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620005cf57600081815260208120601f850160051c81016020861015620005aa5750805b601f850160051c820191505b81811015620005cb57828155600101620005b6565b5050505b505050565b81516001600160401b03811115620005f057620005f0620003e7565b620006088162000601845462000545565b8462000581565b602080601f831160018114620006405760008415620006275750858301515b600019600386901b1c1916600185901b178555620005cb565b600085815260208120601f198616915b82811015620006715788860151825594840194600190910190840162000650565b5085821015620006905787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b60008251620006ca818460208701620003fd565b9190910192915050565b61489d80620006e46000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c80635879a9181161013b578063b4b5b48f116100b8578063c87b56dd1161007c578063c87b56dd14610506578063d3ad25c914610519578063df7510121461052c578063e985e9c51461053f578063f2fde38b1461057b57600080fd5b8063b4b5b48f146104a7578063b7838f1d146104ba578063b88d4fde146104cd578063c47f0027146104e0578063c6430576146104f357600080fd5b8063821606ec116100ff578063821606ec146104605780638da5cb5b1461046857806395d89b4114610479578063a22cb46514610481578063b3615dc81461049457600080fd5b80635879a918146104065780636352211e146104195780636f2ddd931461042c57806370a0823114610445578063715018a61461045857600080fd5b806323b872dd116101c957806342842e0e1161018d57806342842e0e146103a557806342966c68146103b85780634f6ccce7146103cb5780635055fbc3146103de57806352556421146103f157600080fd5b806323b872dd146103445780632f745c59146103575780632fa4548b1461036a578063321c48f21461037d578063404d31841461039257600080fd5b80630a8e79d7116102105780630a8e79d7146102ea578063124ba9ff1461030b57806318160ddd1461031e5780631d143848146103265780631f0630c21461033c57600080fd5b806301ffc9a71461024d5780630489b56f1461027557806306fdde0314610295578063081812fc146102aa578063095ea7b3146102d5575b600080fd5b61026061025b3660046136cf565b61058e565b60405190151581526020015b60405180910390f35b6102886102833660046136ec565b61059f565b60405161026c919061371b565b61029d6105b5565b60405161026c9190613793565b6102bd6102b83660046136ec565b6105c4565b6040516001600160a01b03909116815260200161026c565b6102e86102e33660046137bd565b6105eb565b005b6102fd6102f83660046136ec565b610705565b60405190815260200161026c565b6102e861031936600461382f565b610723565b6019546102fd565b61032e61074e565b60405161026c9291906138e2565b61029d61086e565b6102e8610352366004613910565b6108fc565b6102fd6103653660046137bd565b61092d565b6102e861037836600461394c565b6109c3565b610385610a2e565b60405161026c91906139c5565b6102fd6103a03660046136ec565b610e6e565b6102e86103b3366004613910565b610e8c565b6102e86103c63660046136ec565b610ea7565b6102fd6103d93660046136ec565b610f08565b6102606103ec3660046136ec565b610f9b565b6103f9610fbd565b60405161026c9190613a57565b6102e8610414366004613a6a565b611107565b6102bd6104273660046136ec565b61122a565b61043461128a565b60405161026c959493929190613ade565b6102fd610453366004613b4b565b6116a0565b6102e8611726565b61029d61173a565b6006546001600160a01b03166102bd565b61029d6117cc565b6102e861048f366004613b66565b6117db565b6102e86104a2366004613ba2565b6117ea565b61029d6104b53660046136ec565b6117ff565b6102e86104c8366004613bdc565b6118a8565b6102e86104db366004613c33565b6118bd565b6102e86104ee366004613bdc565b6118f5565b6102e8610501366004613d0e565b61190a565b61029d6105143660046136ec565b61191f565b6102fd6105273660046136ec565b61192a565b6102e861053a366004613d48565b611969565b61026061054d366004613dd1565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6102e8610589366004613b4b565b6119ab565b600061059982611a94565b92915050565b60006105aa82611ab9565b505060165460ff1690565b60606105bf611ac2565b905090565b60006105cf82611ab9565b506000908152600460205260409020546001600160a01b031690565b60006105f68261122a565b9050806001600160a01b0316836001600160a01b0316036106685760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806106845750610684813361054d565b6106f65760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000606482015260840161065f565b6107008383611ad1565b505050565b600061071082611ab9565b5060009081526014602052604090205490565b61072b611b3f565b610739888888888686611969565b610744878585611b99565b5050505050505050565b600f8054819061075d90613e04565b80601f016020809104026020016040519081016040528092919081815260200182805461078990613e04565b80156107d65780601f106107ab576101008083540402835291602001916107d6565b820191906000526020600020905b8154815290600101906020018083116107b957829003601f168201915b5050505050908060010180546107eb90613e04565b80601f016020809104026020016040519081016040528092919081815260200182805461081790613e04565b80156108645780601f1061083957610100808354040283529160200191610864565b820191906000526020600020905b81548152906001019060200180831161084757829003601f168201915b5050505050905082565b6013805461087b90613e04565b80601f01602080910402602001604051908101604052809291908181526020018280546108a790613e04565b80156108f45780601f106108c9576101008083540402835291602001916108f4565b820191906000526020600020905b8154815290600101906020018083116108d757829003601f168201915b505050505081565b6109063382611d3a565b6109225760405162461bcd60e51b815260040161065f90613e3e565b610700838383611db9565b6000610938836116a0565b821061099a5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b606482015260840161065f565b506001600160a01b03919091166000908152601760209081526040808320938352929052205490565b336109cd8461122a565b6001600160a01b031614610a235760405162461bcd60e51b815260206004820152601b60248201527f52657665616c61626c653a20746f6b656e206e6f74206f776e65640000000000604482015260640161065f565b610700838383611b99565b610a36613655565b60086040518060a0016040529081600082018054610a5390613e04565b80601f0160208091040260200160405190810160405280929190818152602001828054610a7f90613e04565b8015610acc5780601f10610aa157610100808354040283529160200191610acc565b820191906000526020600020905b815481529060010190602001808311610aaf57829003601f168201915b50505050508152602001600182018054610ae590613e04565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1190613e04565b8015610b5e5780601f10610b3357610100808354040283529160200191610b5e565b820191906000526020600020905b815481529060010190602001808311610b4157829003601f168201915b50505050508152602001600282018054610b7790613e04565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba390613e04565b8015610bf05780601f10610bc557610100808354040283529160200191610bf0565b820191906000526020600020905b815481529060010190602001808311610bd357829003601f168201915b5050505050815260200160038201604051806040016040529081600082018054610c1990613e04565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4590613e04565b8015610c925780601f10610c6757610100808354040283529160200191610c92565b820191906000526020600020905b815481529060010190602001808311610c7557829003601f168201915b50505050508152602001600182018054610cab90613e04565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd790613e04565b8015610d245780601f10610cf957610100808354040283529160200191610d24565b820191906000526020600020905b815481529060010190602001808311610d0757829003601f168201915b505050505081525050815260200160058201604051806040016040529081600082018054610d5190613e04565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7d90613e04565b8015610dca5780601f10610d9f57610100808354040283529160200191610dca565b820191906000526020600020905b815481529060010190602001808311610dad57829003601f168201915b50505050508152602001600182018054610de390613e04565b80601f0160208091040260200160405190810160405280929190818152602001828054610e0f90613e04565b8015610e5c5780601f10610e3157610100808354040283529160200191610e5c565b820191906000526020600020905b815481529060010190602001808311610e3f57829003601f168201915b50505050508152505081525050905090565b6000610e7982611ab9565b5060009081526015602052604090205490565b610700838383604051806020016040528060008152506118bd565b610eb081611dc4565b610efc5760405162461bcd60e51b815260206004820152601b60248201527f455243353438343a2073656e6465722063616e6e6f74206275726e0000000000604482015260640161065f565b610f0581611e98565b50565b6000610f1360195490565b8210610f765760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b606482015260840161065f565b60198281548110610f8957610f89613e8b565b90600052602060002001549050919050565b60008181526012602052604081208054610fb490613e04565b15159392505050565b6040805180820190915260608082526020820152600f604051806040016040529081600082018054610fee90613e04565b80601f016020809104026020016040519081016040528092919081815260200182805461101a90613e04565b80156110675780601f1061103c57610100808354040283529160200191611067565b820191906000526020600020905b81548152906001019060200180831161104a57829003601f168201915b5050505050815260200160018201805461108090613e04565b80601f01602080910402602001604051908101604052809291908181526020018280546110ac90613e04565b80156110f95780601f106110ce576101008083540402835291602001916110f9565b820191906000526020600020905b8154815290600101906020018083116110dc57829003601f168201915b505050505081525050905090565b61110f611b3f565b60005b81811015610700576000611124611ea1565b905083838381811061113857611138613e8b565b905060200281019061114a9190613ea1565b6111549080613ec1565b60008381526011602052604090209161116e919083613f62565b506111df8185858581811061118557611185613e8b565b90506020028101906111979190613ea1565b6111a5906020810190613ec1565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ee192505050565b8383838181106111f1576111f1613e8b565b90506020028101906112039190613ea1565b6000918252601560205260409182902091013590558061122281614031565b915050611112565b6000818152600260205260408120546001600160a01b0316806105995760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161065f565b60088054819061129990613e04565b80601f01602080910402602001604051908101604052809291908181526020018280546112c590613e04565b80156113125780601f106112e757610100808354040283529160200191611312565b820191906000526020600020905b8154815290600101906020018083116112f557829003601f168201915b50505050509080600101805461132790613e04565b80601f016020809104026020016040519081016040528092919081815260200182805461135390613e04565b80156113a05780601f10611375576101008083540402835291602001916113a0565b820191906000526020600020905b81548152906001019060200180831161138357829003601f168201915b5050505050908060020180546113b590613e04565b80601f01602080910402602001604051908101604052809291908181526020018280546113e190613e04565b801561142e5780601f106114035761010080835404028352916020019161142e565b820191906000526020600020905b81548152906001019060200180831161141157829003601f168201915b5050505050908060030160405180604001604052908160008201805461145390613e04565b80601f016020809104026020016040519081016040528092919081815260200182805461147f90613e04565b80156114cc5780601f106114a1576101008083540402835291602001916114cc565b820191906000526020600020905b8154815290600101906020018083116114af57829003601f168201915b505050505081526020016001820180546114e590613e04565b80601f016020809104026020016040519081016040528092919081815260200182805461151190613e04565b801561155e5780601f106115335761010080835404028352916020019161155e565b820191906000526020600020905b81548152906001019060200180831161154157829003601f168201915b505050505081525050908060050160405180604001604052908160008201805461158790613e04565b80601f01602080910402602001604051908101604052809291908181526020018280546115b390613e04565b80156116005780601f106115d557610100808354040283529160200191611600565b820191906000526020600020905b8154815290600101906020018083116115e357829003601f168201915b5050505050815260200160018201805461161990613e04565b80601f016020809104026020016040519081016040528092919081815260200182805461164590613e04565b80156116925780601f1061166757610100808354040283529160200191611692565b820191906000526020600020905b81548152906001019060200180831161167557829003601f168201915b505050505081525050905085565b60006001600160a01b03821661170a5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161065f565b506001600160a01b031660009081526003602052604090205490565b61172e611b3f565b6117386000611ef9565b565b60606013805461174990613e04565b80601f016020809104026020016040519081016040528092919081815260200182805461177590613e04565b80156117c25780601f10611797576101008083540402835291602001916117c2565b820191906000526020600020905b8154815290600101906020018083116117a557829003601f168201915b5050505050905090565b60606001805461174990613e04565b6117e6338383611f4b565b5050565b6117f2611b3f565b80600f6107008282614126565b606061180a82611ab9565b6000828152601160205260409020805461182390613e04565b80601f016020809104026020016040519081016040528092919081815260200182805461184f90613e04565b801561189c5780601f106118715761010080835404028352916020019161189c565b820191906000526020600020905b81548152906001019060200180831161187f57829003601f168201915b50505050509050919050565b6118b0611b3f565b6013610700828483613f62565b6118c73383611d3a565b6118e35760405162461bcd60e51b815260040161065f90613e3e565b6118ef84848484612019565b50505050565b6118fd611b3f565b601b610700828483613f62565b611912611b3f565b8060086107008282614146565b60606105998261204c565b60006119358261191f565b60165460405161194c929160ff169060200161426d565b604051602081830303815290604052805190602001209050919050565b611971611b3f565b61197a85611ab9565b611985858585612094565b6119a361199a6006546001600160a01b031690565b87878585612119565b505050505050565b6119b3611b3f565b6001600160a01b038116611a185760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161065f565b610f0581611ef9565b80546001019055565b60008151835114611a3d57506000610599565b81604051602001611a4e91906142b1565b6040516020818303038152906040528051906020012083604051602001611a7591906142b1565b6040516020818303038152906040528051906020012014905092915050565b60006001600160e01b0319821663c47f002760e01b14806105995750610599826121d2565b610f05816121f7565b6060601b805461174990613e04565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b068261122a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6006546001600160a01b031633146117385760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065f565b611ba283611ab9565b6006546001600160a01b0316611bb78461122a565b6001600160a01b031603611c0d5760405162461bcd60e51b815260206004820152601d60248201527f52657665616c61626c653a20746f6b656e206e6f7420636c61696d6564000000604482015260640161065f565b8181604051602001611c209291906142c3565b60408051601f1981840301815291815281516020928301206000868152601490935291205414611c925760405162461bcd60e51b815260206004820152601e60248201527f52657665616c61626c653a20696e76616c6964207075626c6963206b65790000604482015260640161065f565b611c9b83610f9b565b15611ce85760405162461bcd60e51b815260206004820152601c60248201527f52657665616c61626c653a2072657665616c656420616c726561647900000000604482015260640161065f565b6000838152601260205260409020611d01828483613f62565b506040518381527f1747b48b6ade85d7dc97c0f523e0e780795930a468c01b18a51546791fdd3ac09060200160405180910390a1505050565b600080611d468361122a565b9050806001600160a01b0316846001600160a01b03161480611d8d57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b80611db15750836001600160a01b0316611da6846105c4565b6001600160a01b0316145b949350505050565b6107008383836122b2565b6000611dd86006546001600160a01b031690565b6001600160a01b0316336001600160a01b0316148015611e2e5750600060165460ff166003811115611e0c57611e0c613705565b1480611e2e5750600260165460ff166003811115611e2c57611e2c613705565b145b806105995750611e3d8261122a565b6001600160a01b0316336001600160a01b03161480156105995750600160165460ff166003811115611e7157611e71613705565b14806105995750600260165460ff166003811115611e9157611e91613705565b1492915050565b610f05816122fa565b6000611eab611b3f565b6000611eb660075490565b9050611ec6600780546001019055565b6105bf611edb6006546001600160a01b031690565b8261232b565b60209081015160009283526014909152604090912055565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031603611fac5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161065f565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612024848484611db9565b61203084848484612345565b6118ef5760405162461bcd60e51b815260040161065f906142d3565b606061205782611ab9565b600061206283612446565b905061206d8161249f565b60405160200161207d9190614325565b604051602081830303815290604052915050919050565b81816040516020016120a79291906142c3565b60408051601f19818403018152918152815160209283012060008681526015909352912054146107005760405162461bcd60e51b815260206004820181905260248201527f45766964656e7a3a207468652070696e20636f646520697320696e76616c6964604482015260640161065f565b612125848484846125f1565b6121715760405162461bcd60e51b815260206004820152601a60248201527f455243353438343a20696e76616c6964207369676e6174757265000000000000604482015260640161065f565b61217c858585612620565b60165460405184916001600160a01b0380881692908916917f135ffb3383e06280e062ac5095bbf8faa98517161e596a2536bd98a9a8b64a88916121c39160ff169061371b565b60405180910390a45050505050565b60006001600160e01b0319821663780e9d6360e01b1480610599575061059982612791565b600061220260075490565b905081811161224e5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161065f565b6000828152600260205260409020546001600160a01b03166117e65760405162461bcd60e51b815260206004820181905260248201527f4552433732313a20696e76616c696420746f6b656e20494420286275726e7429604482015260640161065f565b60405162461bcd60e51b815260206004820152601f60248201527f455243353438343a206e6f6e2d7472616e7366657261626c6520746f6b656e00604482015260640161065f565b6040805160208082018352600080835284815260129091529190912090612321908261436a565b50610f05816127b6565b6117e6828260405180602001604052806000815250612859565b60006001600160a01b0384163b1561243b57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612389903390899088908890600401614423565b6020604051808303816000875af19250505080156123c4575060408051601f3d908101601f191682019092526123c191810190614460565b60015b612421573d8080156123f2576040519150601f19603f3d011682016040523d82523d6000602084013e6123f7565b606091505b5080516000036124195760405162461bcd60e51b815260040161065f906142d3565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611db1565b506001949350505050565b60606124518261288c565b61245a836128c3565b61246384612993565b61246c856129b8565b612475866129dd565b60405160200161248995949392919061447d565b6040516020818303038152906040529050919050565b606081516000036124be57505060408051602081019091526000815290565b600060405180606001604052806040815260200161482860409139905060006003845160026124ed9190614588565b6124f7919061459b565b6125029060046145bd565b6001600160401b0381111561251957612519613c1d565b6040519080825280601f01601f191660200182016040528015612543576020820181803683370190505b509050600182016020820185865187015b808210156125af576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f8116850151845350600183019250612554565b50506003865106600181146125cb57600281146125de576125e6565b603d6001830353603d60028303536125e6565b603d60018303535b509195945050505050565b60008282600081811061260657612606613e8b565b909101356001600160f81b03191615159695505050505050565b826001600160a01b03166126338261122a565b6001600160a01b0316146126595760405162461bcd60e51b815260040161065f906145d4565b6001600160a01b0382166126bb5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161065f565b6126c88383836001612a1a565b826001600160a01b03166126db8261122a565b6001600160a01b0316146127015760405162461bcd60e51b815260040161065f906145d4565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60006001600160e01b03198216630489b56f60e01b1480610599575061059982612a26565b60006127c18261122a565b90506127d1816000846001612a1a565b6127da8261122a565b600083815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080546000190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6128638383612a4b565b6128706000848484612345565b6107005760405162461bcd60e51b815260040161065f906142d3565b606061289782610f9b565b156128a55761059982612be4565b6128ae82612bee565b6040516020016124899190614619565b919050565b606060006128d08361122a565b90506000600f6000016040516020016128e9919061464d565b604051602081830303815290604052905061290c6006546001600160a01b031690565b6001600160a01b0316826001600160a01b031614612951578061292e83612c80565b60405160200161293f9291906146eb565b60405160208183030381529060405290505b61295a84610f9b565b1561298c5780612969856129b8565b60405160200161297a929190614731565b60405160208183030381529060405290505b9392505050565b606061299e82610f9b565b6129af576013805461182390613e04565b61059982612c96565b60606129c382610f9b565b6129d4576010805461182390613e04565b61059982612e76565b60606129e882610f9b565b15612a115750506040805180820190915260088152671c995d99585b195960c21b602082015290565b61059982612f34565b6118ef84848484612fad565b60006001600160e01b031982166392a9a24160e01b14806105995750610599826130ed565b6001600160a01b038216612aa15760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161065f565b6000818152600260205260409020546001600160a01b031615612b065760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161065f565b612b14600083836001612a1a565b6000818152600260205260409020546001600160a01b031615612b795760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161065f565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60606105996105b5565b60606000612bfb83613112565b60010190506000816001600160401b03811115612c1a57612c1a613c1d565b6040519080825280601f01601f191660200182016040528015612c44576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084612c4e57509392505050565b60606105996001600160a01b03831660146131ea565b6000818152601260205260409020805460609161059991612cb690613e04565b80601f0160208091040260200160405190810160405280929190818152602001828054612ce290613e04565b8015612d2f5780601f10612d0457610100808354040283529160200191612d2f565b820191906000526020600020905b815481529060010190602001808311612d1257829003601f168201915b50505050506008600501604051806040016040529081600082018054612d5490613e04565b80601f0160208091040260200160405190810160405280929190818152602001828054612d8090613e04565b8015612dcd5780601f10612da257610100808354040283529160200191612dcd565b820191906000526020600020905b815481529060010190602001808311612db057829003601f168201915b50505050508152602001600182018054612de690613e04565b80601f0160208091040260200160405190810160405280929190818152602001828054612e1290613e04565b8015612e5f5780601f10612e3457610100808354040283529160200191612e5f565b820191906000526020600020905b815481529060010190602001808311612e4257829003601f168201915b50505050508152505061338590919063ffffffff16565b6000818152601260205260409020805460609161059991612e9690613e04565b80601f0160208091040260200160405190810160405280929190818152602001828054612ec290613e04565b8015612f0f5780601f10612ee457610100808354040283529160200191612f0f565b820191906000526020600020905b815481529060010190602001808311612ef257829003601f168201915b50505050506008600301604051806040016040529081600082018054612d5490613e04565b6060612f486006546001600160a01b031690565b6001600160a01b0316612f5a8361122a565b6001600160a01b031614612f8b57505060408051808201909152600781526618db185a5b595960ca1b602082015290565b50506040805180820190915260068152651b5a5b9d195960d21b602082015290565b612fb9848484846133ed565b60018111156130285760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b606482015260840161065f565b816001600160a01b0385166130845761307f81601980546000838152601a60205260408120829055600182018355919091527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c96950155565b6130a7565b836001600160a01b0316856001600160a01b0316146130a7576130a78582613475565b6001600160a01b0384166130c3576130be81613512565b6130e6565b846001600160a01b0316846001600160a01b0316146130e6576130e684826135c1565b5050505050565b60006001600160e01b031982166307d4e94760e01b1480610599575061059982613605565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106131515772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061317d576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061319b57662386f26fc10000830492506010015b6305f5e10083106131b3576305f5e100830492506008015b61271083106131c757612710830492506004015b606483106131d9576064830492506002015b600a83106105995760010192915050565b606060006131f98360026145bd565b613204906002614588565b6001600160401b0381111561321b5761321b613c1d565b6040519080825280601f01601f191660200182016040528015613245576020820181803683370190505b509050600360fc1b8160008151811061326057613260613e8b565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061328f5761328f613e8b565b60200101906001600160f81b031916908160001a90535060006132b38460026145bd565b6132be906001614588565b90505b6001811115613336576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106132f2576132f2613e8b565b1a60f81b82828151811061330857613308613e8b565b60200101906001600160f81b031916908160001a90535060049490941c9361332f8161477c565b90506132c1565b50831561298c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161065f565b606060008360000151836040516020016133a0929190614793565b604051602081830303815290604052905083602001515160001461298c578084602001516040516020016133d59291906147c2565b60408051601f19818403018152919052949350505050565b60018111156118ef576001600160a01b03841615613433576001600160a01b0384166000908152600360205260408120805483929061342d9084906147fe565b90915550505b6001600160a01b038316156118ef576001600160a01b0383166000908152600360205260408120805483929061346a908490614588565b909155505050505050565b60006001613482846116a0565b61348c91906147fe565b6000838152601860205260409020549091508082146134df576001600160a01b03841660009081526017602090815260408083208584528252808320548484528184208190558352601890915290208190555b5060009182526018602090815260408084208490556001600160a01b039094168352601781528383209183525290812055565b601954600090613524906001906147fe565b6000838152601a60205260408120546019805493945090928490811061354c5761354c613e8b565b90600052602060002001549050806019838154811061356d5761356d613e8b565b6000918252602080832090910192909255828152601a909152604080822084905585825281205560198054806135a5576135a5614811565b6001900381819060005260206000200160009055905550505050565b60006135cc836116a0565b6001600160a01b039093166000908152601760209081526040808320868452825280832085905593825260189052919091209190915550565b60006001600160e01b031982166380ac58cd60e01b148061363657506001600160e01b03198216635b5e139f60e01b145b8061059957506301ffc9a760e01b6001600160e01b0319831614610599565b6040518060a00160405280606081526020016060815260200160608152602001613692604051806040016040528060608152602001606081525090565b81526020016136b4604051806040016040528060608152602001606081525090565b905290565b6001600160e01b031981168114610f0557600080fd5b6000602082840312156136e157600080fd5b813561298c816136b9565b6000602082840312156136fe57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b602081016004831061373d57634e487b7160e01b600052602160045260246000fd5b91905290565b60005b8381101561375e578181015183820152602001613746565b50506000910152565b6000815180845261377f816020860160208601613743565b601f01601f19169290920160200192915050565b60208152600061298c6020830184613767565b80356001600160a01b03811681146128be57600080fd5b600080604083850312156137d057600080fd5b6137d9836137a6565b946020939093013593505050565b60008083601f8401126137f957600080fd5b5081356001600160401b0381111561381057600080fd5b60208301915083602082850101111561382857600080fd5b9250929050565b60008060008060008060008060a0898b03121561384b57600080fd5b613854896137a6565b97506020890135965060408901356001600160401b038082111561387757600080fd5b6138838c838d016137e7565b909850965060608b013591508082111561389c57600080fd5b6138a88c838d016137e7565b909650945060808b01359150808211156138c157600080fd5b506138ce8b828c016137e7565b999c989b5096995094979396929594505050565b6040815260006138f56040830185613767565b82810360208401526139078185613767565b95945050505050565b60008060006060848603121561392557600080fd5b61392e846137a6565b925061393c602085016137a6565b9150604084013590509250925092565b60008060006040848603121561396157600080fd5b8335925060208401356001600160401b0381111561397e57600080fd5b61398a868287016137e7565b9497909650939450505050565b60008151604084526139ac6040850182613767565b9050602083015184820360208601526139078282613767565b602081526000825160a060208401526139e160c0840182613767565b90506020840151601f19808584030160408601526139ff8383613767565b92506040860151915080858403016060860152613a1c8383613767565b92506060860151915080858403016080860152613a398383613997565b925060808601519150808584030160a0860152506139078282613997565b60208152600061298c6020830184613997565b60008060208385031215613a7d57600080fd5b82356001600160401b0380821115613a9457600080fd5b818501915085601f830112613aa857600080fd5b813581811115613ab757600080fd5b8660208260051b8501011115613acc57600080fd5b60209290920196919550909350505050565b60a081526000613af160a0830188613767565b8281036020840152613b038188613767565b90508281036040840152613b178187613767565b90508281036060840152613b2b8186613997565b90508281036080840152613b3f8185613997565b98975050505050505050565b600060208284031215613b5d57600080fd5b61298c826137a6565b60008060408385031215613b7957600080fd5b613b82836137a6565b915060208301358015158114613b9757600080fd5b809150509250929050565b600060208284031215613bb457600080fd5b81356001600160401b03811115613bca57600080fd5b82016040818503121561298c57600080fd5b60008060208385031215613bef57600080fd5b82356001600160401b03811115613c0557600080fd5b613c11858286016137e7565b90969095509350505050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215613c4957600080fd5b613c52856137a6565b9350613c60602086016137a6565b92506040850135915060608501356001600160401b0380821115613c8357600080fd5b818701915087601f830112613c9757600080fd5b813581811115613ca957613ca9613c1d565b604051601f8201601f19908116603f01168101908382118183101715613cd157613cd1613c1d565b816040528281528a6020848701011115613cea57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600060208284031215613d2057600080fd5b81356001600160401b03811115613d3657600080fd5b820160a0818503121561298c57600080fd5b60008060008060008060808789031215613d6157600080fd5b613d6a876137a6565b95506020870135945060408701356001600160401b0380821115613d8d57600080fd5b613d998a838b016137e7565b90965094506060890135915080821115613db257600080fd5b50613dbf89828a016137e7565b979a9699509497509295939492505050565b60008060408385031215613de457600080fd5b613ded836137a6565b9150613dfb602084016137a6565b90509250929050565b600181811c90821680613e1857607f821691505b602082108103613e3857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008235605e19833603018112613eb757600080fd5b9190910192915050565b6000808335601e19843603018112613ed857600080fd5b8301803591506001600160401b03821115613ef257600080fd5b60200191503681900382131561382857600080fd5b601f82111561070057600081815260208120601f850160051c81016020861015613f2e5750805b601f850160051c820191505b818110156119a357828155600101613f3a565b600019600383901b1c191660019190911b1790565b6001600160401b03831115613f7957613f79613c1d565b613f8d83613f878354613e04565b83613f07565b6000601f841160018114613fbb5760008515613fa95750838201355b613fb38682613f4d565b8455506130e6565b600083815260209020601f19861690835b82811015613fec5786850135825560209485019460019092019101613fcc565b50868210156140095760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b634e487b7160e01b600052601160045260246000fd5b6000600182016140435761404361401b565b5060010190565b6140548283613ec1565b6001600160401b0381111561406b5761406b613c1d565b61407f816140798554613e04565b85613f07565b6000601f8211600181146140ad576000831561409b5750838201355b6140a58482613f4d565b865550614107565b600085815260209020601f19841690835b828110156140de57868501358255602094850194600190920191016140be565b50848210156140fb5760001960f88660031b161c19848701351681555b505060018360011b0185555b505050506141186020830183613ec1565b6118ef818360018601613f62565b6117e6828261404a565b60008235603e19833603018112613eb757600080fd5b6141508283613ec1565b6001600160401b0381111561416757614167613c1d565b614175816140798554613e04565b6000601f8211600181146141a357600083156141915750838201355b61419b8482613f4d565b8655506141fd565b600085815260209020601f19841690835b828110156141d457868501358255602094850194600190920191016141b4565b50848210156141f15760001960f88660031b161c19848701351681555b505060018360011b0185555b5050505061420e6020830183613ec1565b61421c818360018601613f62565b505061422b6040830183613ec1565b614239818360028601613f62565b505061425461424b6060840184614130565b6003830161404a565b6117e66142646080840184614130565b6005830161404a565b6000835161427f818460208801613743565b82016004841061429f57634e487b7160e01b600052602160045260246000fd5b60f89390931b83525050600101919050565b60008251613eb7818460208701613743565b8183823760009101908152919050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161435d81601d850160208701613743565b91909101601d0192915050565b81516001600160401b0381111561438357614383613c1d565b614397816143918454613e04565b84613f07565b602080601f8311600181146143c657600084156143b45750858301515b6143be8582613f4d565b8655506119a3565b600085815260208120601f198616915b828110156143f5578886015182559484019460019091019084016143d6565b50858210156144135787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061445690830184613767565b9695505050505050565b60006020828403121561447257600080fd5b815161298c816136b9565b693d913730b6b2911d101160b11b815285516000906144a381600a850160208b01613743565b711116113232b9b1b934b83a34b7b7111d101160711b600a9184019182015286516144d581601c840160208b01613743565b6b11161134b6b0b3b2911d101160a11b601c92909101918201528551614502816028840160208a01613743565b7211161132bc3a32b93730b62fbab936111d101160691b60289290910191820152845161453681603b840160208901613743565b6c11161139ba30ba3ab9911d101160991b603b92909101918201528351614564816048840160208801613743565b61457b60488284010161227d60f01b815260020190565b9998505050505050505050565b808201808211156105995761059961401b565b6000826145b857634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176105995761059961401b565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6b43726564656e7469616c202360a01b81526000825161464081600c850160208701613743565b91909101600c0192915050565b75021b2b93a34b334b1b0ba329034b9b9bab2b210313c960551b8152600060166000845461467a81613e04565b6001828116801561469257600181146146ab576146de565b60ff1984168887015282151583028801860194506146de565b8860005260208060002060005b858110156146d35781548b82018a01529084019082016146b8565b505050858389010194505b5092979650505050505050565b600083516146fd818460208801613743565b6a0161037bbb732b210313c960ad1b908301908152835161472581600b840160208801613743565b01600b01949350505050565b60008351614743818460208801613743565b6f0161030b1b1b2b9b9b4b136329030ba160851b9083019081528351614770816010840160208801613743565b01601001949350505050565b60008161478b5761478b61401b565b506000190190565b600083516147a5818460208801613743565b8351908301906147b9818360208801613743565b01949350505050565b600083516147d4818460208801613743565b603f60f81b90830190815283516147f2816001840160208801613743565b01600101949350505050565b818103818111156105995761059961401b565b634e487b7160e01b600052603160045260246000fdfe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220e367134d1c017200b0b859352be56868fbb32a1c072fc474d18b3db80022cc3664736f6c63430008120033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000002250726f6d6574686575732d58205665726966696564204964656e7469747920534254000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000733564944454e5a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004426f746800000000000000000000000000000000000000000000000000000000