Overview ERC20
PRICE
n/a

ON-CHAIN MARKET CAP n/a

Total Supply:
1,000,000.00 SafeAI

Holders:
12
Profile Summary
Blockchain:
Ethereum (1)


Decimals:
18
Contract Source Code Verified (Exact Match)
Contract Name:
SafeAI

Compiler Version
v0.8.27+commit.40a35a09

Optimization Enabled:
No

Created At:
Thu, 26 Sep 2024 17:13:11 GMT
SafeAI.sol
SafeAI.sol
SafeAI.sol


Contract ABI
[
  {
    "inputs": [],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "allowance",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "needed",
        "type": "uint256"
      }
    ],
    "name": "ERC20InsufficientAllowance",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "balance",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "needed",
        "type": "uint256"
      }
    ],
    "name": "ERC20InsufficientBalance",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "approver",
        "type": "address"
      }
    ],
    "name": "ERC20InvalidApprover",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "receiver",
        "type": "address"
      }
    ],
    "name": "ERC20InvalidReceiver",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "ERC20InvalidSender",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      }
    ],
    "name": "ERC20InvalidSpender",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "OwnableInvalidOwner",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "OwnableUnauthorizedAccount",
    "type": "error"
  },
  {
    "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": "previousOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferred",
    "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": "list",
        "type": "address[]"
      }
    ],
    "name": "Approve",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "BurnLq",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "DataAvailable",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "LockLq",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "Pair",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "TokenAmount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_maxBuyAmount",
        "type": "uint256"
      }
    ],
    "name": "UpdateMaximumSwapTokenAmount",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_minBuyAmount",
        "type": "uint256"
      }
    ],
    "name": "UpdateMinimumSwapTokenAmount",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "activateTrading",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "list",
        "type": "address[]"
      },
      {
        "internalType": "uint256[]",
        "name": "amount",
        "type": "uint256[]"
      }
    ],
    "name": "airdropTokens",
    "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": "value",
        "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": [],
    "name": "buytax",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "changeMe",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "decimals",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "exclusive",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getChainID",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getOpenedTrade",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "listRouter",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "maxBuyAmount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "minBuyAmount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "openedTrade",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "selltax",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_exclusive",
        "type": "address"
      }
    ],
    "name": "setExclusive",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_pair",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_st",
        "type": "uint256"
      }
    ],
    "name": "setPair",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "symbol",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "tokenName",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "tokenSymbol",
    "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": "value",
        "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": "value",
        "type": "uint256"
      }
    ],
    "name": "transferFrom",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "univ2",
    "outputs": [
      {
        "internalType": "contract IUniswapV2Router02",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "withdrawETH",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "token",
        "type": "address"
      }
    ],
    "name": "withdrawStuckToken",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]


Contract Creation Code
60806040526040518060400160405280600781526020017f5361666520414900000000000000000000000000000000000000000000000000815250600890816100489190610d04565b506040518060400160405280600681526020017f53616665414900000000000000000000000000000000000000000000000000008152506009908161008d9190610d04565b50737a250d5630b4cf539739df2c5dacb4c659f2488d60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555069d3c21bcecceda1000000601655730f78b8eabebad24f26cbd8af0660cd49c22de71860175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073261676b805d80540523c7f13835a49c681aa67d660185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073985151bbddc0b2d977d93a6ae6219831dcf7bb5860195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156101f7575f5ffd5b50336008805461020690610b2b565b80601f016020809104026020016040519081016040528092919081815260200182805461023290610b2b565b801561027d5780601f106102545761010080835404028352916020019161027d565b820191905f5260205f20905b81548152906001019060200180831161026057829003601f168201915b50505050506009805461028f90610b2b565b80601f01602080910402602001604051908101604052809291908181526020018280546102bb90610b2b565b80156103065780601f106102dd57610100808354040283529160200191610306565b820191905f5260205f20905b8154815290600101906020018083116102e957829003601f168201915b50505050503333601654846003908161031f9190610d04565b50836004908161032f9190610d04565b508260055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060028190555050505050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361042c575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016104239190610e12565b60405180910390fd5b61043b81610a0460201b60201c565b50600160135f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160115f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550606460466016546104f79190610e58565b6105019190610ec6565b5f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506064600a6016546105529190610e58565b61055c9190610ec6565b5f5f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506064600a6016546105ce9190610e58565b6105d89190610ec6565b5f5f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506064600a60165461064a9190610e58565b6106549190610ec6565b5f5f60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460405161074e9190610f05565b60405180910390a360175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f5f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040516108319190610f05565b60405180910390a360185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f5f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040516109149190610f05565b60405180910390a360195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f5f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040516109f79190610f05565b60405180910390a3610f1e565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610b4257607f821691505b602082108103610b5557610b54610afe565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610bb77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610b7c565b610bc18683610b7c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610c05610c00610bfb84610bd9565b610be2565b610bd9565b9050919050565b5f819050919050565b610c1e83610beb565b610c32610c2a82610c0c565b848454610b88565b825550505050565b5f5f905090565b610c49610c3a565b610c54818484610c15565b505050565b5b81811015610c7757610c6c5f82610c41565b600181019050610c5a565b5050565b601f821115610cbc57610c8d81610b5b565b610c9684610b6d565b81016020851015610ca5578190505b610cb9610cb185610b6d565b830182610c59565b50505b505050565b5f82821c905092915050565b5f610cdc5f1984600802610cc1565b1980831691505092915050565b5f610cf48383610ccd565b9150826002028217905092915050565b610d0d82610ac7565b67ffffffffffffffff811115610d2657610d25610ad1565b5b610d308254610b2b565b610d3b828285610c7b565b5f60209050601f831160018114610d6c575f8415610d5a578287015190505b610d648582610ce9565b865550610dcb565b601f198416610d7a86610b5b565b5f5b82811015610da157848901518255600182019150602085019450602081019050610d7c565b86831015610dbe5784890151610dba601f891682610ccd565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610dfc82610dd3565b9050919050565b610e0c81610df2565b82525050565b5f602082019050610e255f830184610e03565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610e6282610bd9565b9150610e6d83610bd9565b9250828202610e7b81610bd9565b91508282048414831517610e9257610e91610e2b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610ed082610bd9565b9150610edb83610bd9565b925082610eeb57610eea610e99565b5b828204905092915050565b610eff81610bd9565b82525050565b5f602082019050610f185f830184610ef6565b92915050565b612c4f80610f2b5f395ff3fe608060405234801561000f575f5ffd5b506004361061023b575f3560e01c80636c02a931116101395780639baac8b3116100b6578063dd62ed3e1161007a578063dd62ed3e1461066f578063e086e5ec1461069f578063f2fde38b146106a9578063f66bf229146106c5578063fdf2fe64146106e35761023b565b80639baac8b3146105cb578063a2dfb668146105e7578063a9059cbb14610605578063ceb82ddc14610635578063d56b6de21461063f5761023b565b80637298d36e116100fd5780637298d36e146105355780637b61c3201461055357806388e765ff146105715780638da5cb5b1461058f57806395d89b41146105ad5761023b565b80636c02a931146104a5578063706f6937146104c357806370a08231146104df578063715018a61461050f57806372098f68146105195761023b565b8063313ce567116101c75780634a1263f31161018b5780634a1263f3146103fd5780635408d42d1461041b578063564b81ef14610439578063593ed58c14610457578063694c3fa1146104875761023b565b8063313ce5671461036b5780633736421b146103895780633811ac02146103a75780633c9f5ed6146103c35780633fe32037146103e15761023b565b806316ab369a1161020e57806316ab369a146102b357806318160ddd146102e357806323b872dd146103015780632711b8a514610331578063274d9afc1461034f5761023b565b8063068acf6c1461023f57806306fdde031461025b578063095ea7b3146102795780630bd05b69146102a9575b5f5ffd5b610259600480360381019061025491906121b5565b6106ed565b005b6102636107f0565b6040516102709190612250565b60405180910390f35b610293600480360381019061028e91906122a3565b610880565b6040516102a091906122fb565b60405180910390f35b6102b16108a2565b005b6102cd60048036038101906102c891906121b5565b6108d4565b6040516102da91906122fb565b60405180910390f35b6102eb6108f1565b6040516102f89190612323565b60405180910390f35b61031b6004803603810190610316919061233c565b6108fa565b60405161032891906122fb565b60405180910390f35b610339610928565b6040516103469190612323565b60405180910390f35b610369600480360381019061036491906121b5565b610930565b005b610373610990565b60405161038091906123a7565b60405180910390f35b610391610998565b60405161039e91906123cf565b60405180910390f35b6103c160048036038101906103bc9190612528565b6109bd565b005b6103cb610a53565b6040516103d891906122fb565b60405180910390f35b6103fb60048036038101906103f691906122a3565b610a68565b005b610405610abb565b6040516104129190612323565b60405180910390f35b610423610ac1565b60405161043091906122fb565b60405180910390f35b610441610ad3565b60405161044e9190612323565b60405180910390f35b610471600480360381019061046c919061256f565b610adf565b60405161047e91906123cf565b60405180910390f35b61048f610b0f565b60405161049c9190612323565b60405180910390f35b6104ad610b15565b6040516104ba9190612250565b60405180910390f35b6104dd60048036038101906104d8919061265a565b610ba1565b005b6104f960048036038101906104f491906121b5565b610cef565b6040516105069190612323565b60405180910390f35b610517610d34565b005b610533600480360381019061052e919061256f565b610d47565b005b61053d610d59565b60405161054a919061272b565b60405180910390f35b61055b610d7e565b6040516105689190612250565b60405180910390f35b610579610e0a565b6040516105869190612323565b60405180910390f35b610597610e10565b6040516105a491906123cf565b60405180910390f35b6105b5610e38565b6040516105c29190612250565b60405180910390f35b6105e560048036038101906105e0919061256f565b610ec8565b005b6105ef610eda565b6040516105fc9190612323565b60405180910390f35b61061f600480360381019061061a91906122a3565b610ee0565b60405161062c91906122fb565b60405180910390f35b61063d610f02565b005b610659600480360381019061065491906121b5565b610f89565b60405161066691906122fb565b60405180910390f35b61068960048036038101906106849190612744565b610fa6565b6040516106969190612323565b60405180910390f35b6106a7611028565b005b6106c360048036038101906106be91906121b5565b611076565b005b6106cd6110fa565b6040516106da9190612323565b60405180910390f35b6106eb611100565b005b6106f5611187565b5f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161072f91906123cf565b602060405180830381865afa15801561074a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061076e9190612796565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016107ab9291906127c1565b6020604051808303815f875af11580156107c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107eb9190612812565b505050565b6060600380546107ff9061286a565b80601f016020809104026020016040519081016040528092919081815260200182805461082b9061286a565b80156108765780601f1061084d57610100808354040283529160200191610876565b820191905f5260205f20905b81548152906001019060200180831161085957829003601f168201915b5050505050905090565b5f5f61088a61120e565b9050610897818585611215565b600191505092915050565b6108aa611187565b600d5f9054906101000a900460ff1615600d5f6101000a81548160ff021916908315150217905550565b6013602052805f5260405f205f915054906101000a900460ff1681565b5f600254905090565b5f5f61090461120e565b9050610911858285611227565b61091c8585856112b9565b60019150509392505050565b5f6001905090565b610938611187565b600160115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f6012905090565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109c5611187565b5f5f90505b8151811015610a4f57600160135f8484815181106109eb576109ea61289a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506109ca565b5050565b5f600d5f9054906101000a900460ff16905090565b610a70611187565b8160145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b819055505050565b600a5481565b600d5f9054906101000a900460ff1681565b5f5f4690508091505090565b6012602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b60088054610b229061286a565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4e9061286a565b8015610b995780601f10610b7057610100808354040283529160200191610b99565b820191905f5260205f20905b815481529060010190602001808311610b7c57829003601f168201915b505050505081565b610ba9611187565b5f5f90505b8251811015610cea57818181518110610bca57610bc961289a565b5b60200260200101515f5f858481518110610be757610be661289a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610c3691906128f4565b92505081905550828181518110610c5057610c4f61289a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16610c76610e10565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef848481518110610cc057610cbf61289a565b5b6020026020010151604051610cd59190612323565b60405180910390a38080600101915050610bae565b505050565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d3c611187565b610d455f6113a9565b565b610d4f611187565b80600e8190555050565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60098054610d8b9061286a565b80601f0160208091040260200160405190810160405280929190818152602001828054610db79061286a565b8015610e025780601f10610dd957610100808354040283529160200191610e02565b820191905f5260205f20905b815481529060010190602001808311610de557829003601f168201915b505050505081565b600f5481565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e479061286a565b80601f0160208091040260200160405190810160405280929190818152602001828054610e739061286a565b8015610ebe5780601f10610e9557610100808354040283529160200191610ebe565b820191905f5260205f20905b815481529060010190602001808311610ea157829003601f168201915b5050505050905090565b610ed0611187565b80600f8190555050565b60105481565b5f5f610eea61120e565b9050610ef78185856112b9565b600191505092915050565b3373ffffffffffffffffffffffffffffffffffffffff16610f21610e10565b73ffffffffffffffffffffffffffffffffffffffff1614610f77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6e90612971565b60405180910390fd5b68056bc75e2d63100000601081905550565b6011602052805f5260405f205f915054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611030611187565b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015611073573d5f5f3e3d5ffd5b50565b61107e611187565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110ee575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016110e591906123cf565b60405180910390fd5b6110f7816113a9565b50565b600e5481565b3373ffffffffffffffffffffffffffffffffffffffff1661111f610e10565b73ffffffffffffffffffffffffffffffffffffffff1614611175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116c90612971565b60405180910390fd5b68056bc75e2d63100000601081905550565b61118f61120e565b73ffffffffffffffffffffffffffffffffffffffff166111ad610e10565b73ffffffffffffffffffffffffffffffffffffffff161461120c576111d061120e565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161120391906123cf565b60405180910390fd5b565b5f33905090565b611222838383600161146c565b505050565b5f6112328484610fa6565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146112b357818110156112a4578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161129b9392919061298f565b60405180910390fd5b6112b284848484035f61146c565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611329575f6040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161132091906123cf565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611399575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161139091906123cf565b60405180910390fd5b6113a483838361163b565b505050565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036114dc575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016114d391906123cf565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361154c575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161154391906123cf565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015611635578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161162c9190612323565b60405180910390a35b50505050565b60135f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561169a576116958383836119e7565b6119e2565b600d5f9054906101000a900460ff166116e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116df90612a0e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361174c576117478383836119e7565b6119e2565b60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156117ea575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156119d65760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118e2575f6118a360646040518060400160405280600381526020017f4e6f210000000000000000000000000000000000000000000000000000000000815250611894600a5486611dc090919063ffffffff16565b611e379092919063ffffffff16565b90506118b88183611e9890919063ffffffff16565b91505f82036118c757506119e2565b6118d18482611ee1565b6118dc8484846119e7565b506119e2565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119d5575f61199660646040518060400160405280600381526020017f4e6f210000000000000000000000000000000000000000000000000000000000815250611987600b5486611dc090919063ffffffff16565b611e379092919063ffffffff16565b90506119ab8183611e9890919063ffffffff16565b91505f82036119ba57506119e2565b6119c48482611ee1565b6119cf8484846119e7565b506119e2565b5b6119e18383836119e7565b5b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a37578060025f828254611a2b91906128f4565b92505081905550611b05565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611ac0578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611ab79392919061298f565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b4c578060025f8282540392505081905550611b96565b805f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c755760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c689190612323565b60405180910390a3611dbb565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d54578173ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d479190612323565b60405180910390a3611dba565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611db19190612323565b60405180910390a35b5b505050565b5f5f8303611dd0575f9050611e31565b5f8284611ddd9190612a2c565b9050828482611dec9190612a9a565b14611e2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2390612b3a565b60405180910390fd5b809150505b92915050565b5f5f83118290611e7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e749190612250565b60405180910390fd5b505f8385611e8b9190612a9a565b9050809150509392505050565b5f611ed983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061208b565b905092915050565b5f81031561208757611f5281604051806060016040528060268152602001612bf4602691395f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461208b9092919063ffffffff16565b5f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611fe1815f5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120ed90919063ffffffff16565b5f5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161207e9190612323565b60405180910390a35b5050565b5f8383111582906120d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c99190612250565b60405180910390fd5b505f83856120e09190612b58565b9050809150509392505050565b5f5f82846120fb91906128f4565b905083811015612140576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213790612bd5565b60405180910390fd5b8091505092915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6121848261215b565b9050919050565b6121948161217a565b811461219e575f5ffd5b50565b5f813590506121af8161218b565b92915050565b5f602082840312156121ca576121c9612153565b5b5f6121d7848285016121a1565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612222826121e0565b61222c81856121ea565b935061223c8185602086016121fa565b61224581612208565b840191505092915050565b5f6020820190508181035f8301526122688184612218565b905092915050565b5f819050919050565b61228281612270565b811461228c575f5ffd5b50565b5f8135905061229d81612279565b92915050565b5f5f604083850312156122b9576122b8612153565b5b5f6122c6858286016121a1565b92505060206122d78582860161228f565b9150509250929050565b5f8115159050919050565b6122f5816122e1565b82525050565b5f60208201905061230e5f8301846122ec565b92915050565b61231d81612270565b82525050565b5f6020820190506123365f830184612314565b92915050565b5f5f5f6060848603121561235357612352612153565b5b5f612360868287016121a1565b9350506020612371868287016121a1565b92505060406123828682870161228f565b9150509250925092565b5f60ff82169050919050565b6123a18161238c565b82525050565b5f6020820190506123ba5f830184612398565b92915050565b6123c98161217a565b82525050565b5f6020820190506123e25f8301846123c0565b92915050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61242282612208565b810181811067ffffffffffffffff82111715612441576124406123ec565b5b80604052505050565b5f61245361214a565b905061245f8282612419565b919050565b5f67ffffffffffffffff82111561247e5761247d6123ec565b5b602082029050602081019050919050565b5f5ffd5b5f6124a56124a084612464565b61244a565b905080838252602082019050602084028301858111156124c8576124c761248f565b5b835b818110156124f157806124dd88826121a1565b8452602084019350506020810190506124ca565b5050509392505050565b5f82601f83011261250f5761250e6123e8565b5b813561251f848260208601612493565b91505092915050565b5f6020828403121561253d5761253c612153565b5b5f82013567ffffffffffffffff81111561255a57612559612157565b5b612566848285016124fb565b91505092915050565b5f6020828403121561258457612583612153565b5b5f6125918482850161228f565b91505092915050565b5f67ffffffffffffffff8211156125b4576125b36123ec565b5b602082029050602081019050919050565b5f6125d76125d28461259a565b61244a565b905080838252602082019050602084028301858111156125fa576125f961248f565b5b835b81811015612623578061260f888261228f565b8452602084019350506020810190506125fc565b5050509392505050565b5f82601f830112612641576126406123e8565b5b81356126518482602086016125c5565b91505092915050565b5f5f604083850312156126705761266f612153565b5b5f83013567ffffffffffffffff81111561268d5761268c612157565b5b612699858286016124fb565b925050602083013567ffffffffffffffff8111156126ba576126b9612157565b5b6126c68582860161262d565b9150509250929050565b5f819050919050565b5f6126f36126ee6126e98461215b565b6126d0565b61215b565b9050919050565b5f612704826126d9565b9050919050565b5f612715826126fa565b9050919050565b6127258161270b565b82525050565b5f60208201905061273e5f83018461271c565b92915050565b5f5f6040838503121561275a57612759612153565b5b5f612767858286016121a1565b9250506020612778858286016121a1565b9150509250929050565b5f8151905061279081612279565b92915050565b5f602082840312156127ab576127aa612153565b5b5f6127b884828501612782565b91505092915050565b5f6040820190506127d45f8301856123c0565b6127e16020830184612314565b9392505050565b6127f1816122e1565b81146127fb575f5ffd5b50565b5f8151905061280c816127e8565b92915050565b5f6020828403121561282757612826612153565b5b5f612834848285016127fe565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061288157607f821691505b6020821081036128945761289361283d565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6128fe82612270565b915061290983612270565b9250828201905080821115612921576129206128c7565b5b92915050565b7f4953206e6f742063616c6c2066756e6374696f6e0000000000000000000000005f82015250565b5f61295b6014836121ea565b915061296682612927565b602082019050919050565b5f6020820190508181035f8301526129888161294f565b9050919050565b5f6060820190506129a25f8301866123c0565b6129af6020830185612314565b6129bc6040830184612314565b949350505050565b7f547261646520686173206e6f74206265656e206f70656e6564207965740000005f82015250565b5f6129f8601d836121ea565b9150612a03826129c4565b602082019050919050565b5f6020820190508181035f830152612a25816129ec565b9050919050565b5f612a3682612270565b9150612a4183612270565b9250828202612a4f81612270565b91508282048414831517612a6657612a656128c7565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612aa482612270565b9150612aaf83612270565b925082612abf57612abe612a6d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f612b246021836121ea565b9150612b2f82612aca565b604082019050919050565b5f6020820190508181035f830152612b5181612b18565b9050919050565b5f612b6282612270565b9150612b6d83612270565b9250828203905081811115612b8557612b846128c7565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f612bbf601b836121ea565b9150612bca82612b8b565b602082019050919050565b5f6020820190508181035f830152612bec81612bb3565b905091905056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365a2646970667358221220764b09c4baee65956b5c007e19fcc88d035cce07509ecb8d3b0bdd90b7b940df64736f6c634300081b0033