Overview ERC20
PRICE
n/a

ON-CHAIN MARKET CAP n/a

Total Supply:
43,360.98 NS3SR

Profile Summary
Blockchain:
Ethereum (1)


Decimals:
6
Contract Source Code Verified (Partial Match)
Contract Name:
TrancheToken

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 1000 runs

Created At:
Tue, 30 Apr 2024 14:33:11 GMT
Tranche.sol
src
token
Tranche.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "uint8",
        "name": "decimals_",
        "type": "uint8"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "trustedForwarder",
        "type": "address"
      }
    ],
    "name": "AddTrustedForwarder",
    "type": "event"
  },
  {
    "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": "user",
        "type": "address"
      }
    ],
    "name": "Deny",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "what",
        "type": "bytes32"
      },
      {
        "indexed": false,
        "internalType": "string",
        "name": "data",
        "type": "string"
      }
    ],
    "name": "File",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "what",
        "type": "bytes32"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "data",
        "type": "address"
      }
    ],
    "name": "File",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "user",
        "type": "address"
      }
    ],
    "name": "Rely",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "trustedForwarder",
        "type": "address"
      }
    ],
    "name": "RemoveTrustedForwarder",
    "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": [],
    "name": "DOMAIN_SEPARATOR",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "PERMIT_TYPEHASH",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "SUCCESS_CODE",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "trustedForwarder",
        "type": "address"
      }
    ],
    "name": "addTrustedForwarder",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "",
        "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": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "authTransferFrom",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "burn",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "checkTransferRestriction",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "decimals",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "user",
        "type": "address"
      }
    ],
    "name": "deny",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "deploymentChainId",
    "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": "value",
        "type": "uint256"
      }
    ],
    "name": "detectTransferRestriction",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "what",
        "type": "bytes32"
      },
      {
        "internalType": "string",
        "name": "data",
        "type": "string"
      }
    ],
    "name": "file",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "what",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "data",
        "type": "address"
      }
    ],
    "name": "file",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "forwarder",
        "type": "address"
      }
    ],
    "name": "isTrustedForwarder",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint8",
        "name": "restrictionCode",
        "type": "uint8"
      }
    ],
    "name": "messageForTransferRestriction",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "mint",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "nonces",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "deadline",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "signature",
        "type": "bytes"
      }
    ],
    "name": "permit",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "deadline",
        "type": "uint256"
      },
      {
        "internalType": "uint8",
        "name": "v",
        "type": "uint8"
      },
      {
        "internalType": "bytes32",
        "name": "r",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "s",
        "type": "bytes32"
      }
    ],
    "name": "permit",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "user",
        "type": "address"
      }
    ],
    "name": "rely",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "trustedForwarder",
        "type": "address"
      }
    ],
    "name": "removeTrustedForwarder",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "restrictionManager",
    "outputs": [
      {
        "internalType": "contract RestrictionManagerLike",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "symbol",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "transfer",
    "outputs": [
      {
        "internalType": "bool",
        "name": "success",
        "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": "success",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "trustedForwarders",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "wards",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  }
]


Contract Creation Code
6101206040523480156200001257600080fd5b50604051620028f8380380620028f88339810160408190526200003591620001c6565b60ff81166080528060016000806200004c6200018d565b6001600160a01b03168152602081019190915260400160002055620000706200018d565b6001600160a01b03167fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a6060405160405180910390a25050604080518082018252600a81526943656e7472696675676560b01b6020918201527fe416b338a274162320c79445ae6604141d1cb08275eb27011b69f002dc094d0560a09081528251808401845260018152603160f81b908301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660c08181524660e0819052835186517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81880152808801919091526060810193909352608083015230828401528451808303909301835201909252815191012061010052620001f2565b3360009081526008602052604081205460ff168015620001ae575060143610155b15620001c1575060131936013560601c90565b503390565b600060208284031215620001d957600080fd5b815160ff81168114620001eb57600080fd5b9392505050565b60805160a05160c05160e0516101005161269e6200025a60003960008181610ab501526113fc01526000818161048a015281816109e90152611331015260008181610a6401526113aa015260008181610a3f0152611385015260006102ce015261269e6000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c8063763e18731161010f578063a9059cbb116100a2578063d4e8be8311610071578063d4e8be83146104bf578063d505accf146104d2578063dd62ed3e146104e5578063fa1e71301461051057600080fd5b8063a9059cbb14610452578063bf353dbb14610465578063cd0d009614610485578063d4ce1415146104ac57600080fd5b806395d89b41116100de57806395d89b41146104115780639c52a7f1146104195780639dc29fac1461042c5780639fd5a6cf1461043f57600080fd5b8063763e1873146103a05780637ecebe00146103cb5780637f4ab1dd146103eb578063951ef30c146103fe57600080fd5b8063313ce5671161018757806354776bb91161015657806354776bb91461031e578063572b6c051461034157806365fae35e1461036d57806370a082311461038057600080fd5b8063313ce567146102c95780633644e515146102f05780633751d89c146102f857806340c10f191461030b57600080fd5b806318160ddd116101c357806318160ddd1461026557806323b872dd1461027c57806326d006681461028f57806330adf81f146102a257600080fd5b806306fdde03146101f5578063095ea7b314610213578063097ac46e146102365780630e969a051461024b575b600080fd5b6101fd610523565b60405161020a91906120db565b60405180910390f35b61022661022136600461210a565b6105b1565b604051901515815260200161020a565b6102496102443660046121e1565b610644565b005b6102536107aa565b60405160ff909116815260200161020a565b61026e60035481565b60405190815260200161020a565b61022661028a36600461223c565b610836565b61024961029d366004612278565b610928565b61026e7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6102537f000000000000000000000000000000000000000000000000000000000000000081565b61026e6109e5565b610249610306366004612278565b610ad7565b61024961031936600461210a565b610b91565b61022661032c366004612278565b60086020526000908152604090205460ff1681565b61022661034f366004612278565b6001600160a01b031660009081526008602052604090205460ff1690565b61024961037b366004612278565b610c73565b61026e61038e366004612278565b60046020526000908152604090205481565b6007546103b3906001600160a01b031681565b6040516001600160a01b03909116815260200161020a565b61026e6103d9366004612278565b60066020526000908152604090205481565b6101fd6103f93660046122a5565b610d29565b61022661040c36600461223c565b610db6565b6101fd610f6c565b610249610427366004612278565b610f79565b61024961043a36600461210a565b61102e565b61024961044d3660046122c2565b611266565b61022661046036600461210a565b6115a4565b61026e610473366004612278565b60006020819052908152604090205481565b61026e7f000000000000000000000000000000000000000000000000000000000000000081565b6102536104ba36600461223c565b611695565b6102496104cd366004612348565b61171b565b6102496104e0366004612374565b611893565b61026e6104f33660046123e1565b600560209081526000928352604080842090915290825290205481565b61022661051e36600461223c565b611902565b600180546105309061240b565b80601f016020809104026020016040519081016040528092919081815260200182805461055c9061240b565b80156105a95780601f1061057e576101008083540402835291602001916105a9565b820191906000526020600020905b81548152906001019060200180831161058c57829003601f168201915b505050505081565b600081600560006105c061199c565b6001600160a01b03908116825260208083019390935260409182016000908120918816808252919093529120919091556105f861199c565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161063291815260200190565b60405180910390a35060015b92915050565b60008061064f61199c565b6001600160a01b03166001600160a01b03168152602001908152602001600020546001146106ba5760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b60448201526064015b60405180910390fd5b817f6e616d6500000000000000000000000000000000000000000000000000000000036106f35760016106ed8282612494565b5061076e565b817f73796d626f6c0000000000000000000000000000000000000000000000000000036107265760026106ed8282612494565b60405162461bcd60e51b815260206004820152601d60248201527f45524332302f66696c652d756e7265636f676e697a65642d706172616d00000060448201526064016106b1565b817fe42e0b9a029dc87ccb1029c632e6359090acd0eb032b2b59c811e3ec70160dc68260405161079e91906120db565b60405180910390a25050565b600754604080517f0e969a0500000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691630e969a059160048083019260209291908290030181865afa15801561080d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108319190612554565b905090565b60008383836000610848848484611695565b90506108526107aa565b60ff168160ff161461086382610d29565b906108815760405162461bcd60e51b81526004016106b191906120db565b5061088d8888886119d3565b9450841561091d576007546040517ff49062ca0000000000000000000000000000000000000000000000000000000081526001600160a01b038a811660048301528981166024830152604482018990529091169063f49062ca90606401600060405180830381600087803b15801561090457600080fd5b505af1158015610918573d6000803e3d6000fd5b505050505b505050509392505050565b60008061093361199c565b6001600160a01b03166001600160a01b03168152602001908152602001600020546001146109995760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b60448201526064016106b1565b6001600160a01b038116600081815260086020526040808220805460ff19166001179055517f082d90063f8c6c89eced1ae61ca7cf122e418cb7aa4b92710956c8992fbc3f1d9190a250565b60007f00000000000000000000000000000000000000000000000000000000000000004614610ab25750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b600080610ae261199c565b6001600160a01b03166001600160a01b0316815260200190815260200160002054600114610b485760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b60448201526064016106b1565b6001600160a01b038116600081815260086020526040808220805460ff19169055517f97c8d641308ac436d8886240495203a084195660ac21e544ebf89ca639d52ab29190a250565b610b9961199c565b82826000610ba8848484611695565b9050610bb26107aa565b60ff168160ff1614610bc382610d29565b90610be15760405162461bcd60e51b81526004016106b191906120db565b50610bec8686611c00565b6007546040517f8a2fa94c0000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301526024820188905290911690638a2fa94c90604401600060405180830381600087803b158015610c5357600080fd5b505af1158015610c67573d6000803e3d6000fd5b50505050505050505050565b600080610c7e61199c565b6001600160a01b03166001600160a01b0316815260200190815260200160002054600114610ce45760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b60448201526064016106b1565b6001600160a01b03811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b6007546040517f7f4ab1dd00000000000000000000000000000000000000000000000000000000815260ff831660048201526060916001600160a01b031690637f4ab1dd90602401600060405180830381865afa158015610d8e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261063e9190810190612571565b6000806000610dc361199c565b6001600160a01b03166001600160a01b0316815260200190815260200160002054600114610e295760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b60448201526064016106b1565b6001600160a01b03831615801590610e4a57506001600160a01b0383163014155b610e8e5760405162461bcd60e51b815260206004820152601560248201527445524332302f696e76616c69642d6164647265737360581b60448201526064016106b1565b6001600160a01b03841660009081526004602052604090205482811015610ef75760405162461bcd60e51b815260206004820152601a60248201527f45524332302f696e73756666696369656e742d62616c616e636500000000000060448201526064016106b1565b6001600160a01b0380861660008181526004602052604080822087860390559287168082529083902080548701905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f579087815260200190565b60405180910390a360019150505b9392505050565b600280546105309061240b565b600080610f8461199c565b6001600160a01b03166001600160a01b0316815260200190815260200160002054600114610fea5760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b60448201526064016106b1565b6001600160a01b038116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b60008061103961199c565b6001600160a01b03166001600160a01b031681526020019081526020016000205460011461109f5760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b60448201526064016106b1565b6001600160a01b038216600090815260046020526040902054818110156111085760405162461bcd60e51b815260206004820152601a60248201527f45524332302f696e73756666696369656e742d62616c616e636500000000000060448201526064016106b1565b61111061199c565b6001600160a01b0316836001600160a01b031614611206576001600160a01b03831660009081526005602052604081208161114961199c565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050600019811461120457828110156111c55760405162461bcd60e51b815260206004820152601c60248201527f45524332302f696e73756666696369656e742d616c6c6f77616e63650000000060448201526064016106b1565b6001600160a01b0384166000908152600560205260408120848303916111e961199c565b6001600160a01b031681526020810191909152604001600020555b505b6001600160a01b03831660008181526004602090815260408083208686039055600380548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b814211156112b65760405162461bcd60e51b815260206004820152601460248201527f45524332302f7065726d69742d6578706972656400000000000000000000000060448201526064016106b1565b6001600160a01b03851661130c5760405162461bcd60e51b815260206004820152601360248201527f45524332302f696e76616c69642d6f776e65720000000000000000000000000060448201526064016106b1565b6001600160a01b038516600090815260066020526040812080546001810190915590467f0000000000000000000000000000000000000000000000000000000000000000146113fa57604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012061141c565b7f00000000000000000000000000000000000000000000000000000000000000005b604080517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960208201526001600160a01b03808b169282019290925290881660608201526080810187905260a0810184905260c0810186905260e001604051602081830303815290604052805190602001206040516020016114d09291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b6040516020818303038152906040528051906020012090506114f3878285611d4a565b61153f5760405162461bcd60e51b815260206004820152601460248201527f45524332302f696e76616c69642d7065726d697400000000000000000000000060448201526064016106b1565b6001600160a01b038781166000818152600560209081526040808320948b168084529482529182902089905590518881527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b60006115ae61199c565b838360006115bd848484611695565b90506115c76107aa565b60ff168160ff16146115d882610d29565b906115f65760405162461bcd60e51b81526004016106b191906120db565b506116018787611f09565b9450841561168b576007546001600160a01b031663f49062ca61162261199c565b6040516001600160e01b031960e084901b1681526001600160a01b039182166004820152908a16602482015260448101899052606401600060405180830381600087803b15801561167257600080fd5b505af1158015611686573d6000803e3d6000fd5b505050505b5050505092915050565b60075460405163d4ce141560e01b81526001600160a01b038581166004830152848116602483015260448201849052600092169063d4ce141590606401602060405180830381865afa1580156116ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117139190612554565b949350505050565b60008061172661199c565b6001600160a01b03166001600160a01b031681526020019081526020016000205460011461178c5760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b60448201526064016106b1565b817f7265737472696374696f6e4d616e616765720000000000000000000000000000036117eb57600780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316179055611858565b60405162461bcd60e51b8152602060048201526024808201527f5472616e636865546f6b656e2f66696c652d756e7265636f676e697a65642d7060448201527f6172616d0000000000000000000000000000000000000000000000000000000060648201526084016106b1565b6040516001600160a01b038216815282907f8fef588b5fc1afbf5b2f06c1a435d513f208da2e6704c3d8f0e0ec91167066ba9060200161079e565b6118f9878787878686896040516020016118e593929190928352602083019190915260f81b7fff0000000000000000000000000000000000000000000000000000000000000016604082015260410190565b604051602081830303815290604052611266565b50505050505050565b600061190c6107aa565b60075460405163d4ce141560e01b81526001600160a01b03878116600483015286811660248301526044820186905260ff93909316929091169063d4ce141590606401602060405180830381865afa15801561196c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119909190612554565b60ff1614949350505050565b3360009081526008602052604081205460ff1680156119bc575060143610155b156119ce575060131936013560601c90565b503390565b60006001600160a01b038316158015906119f657506001600160a01b0383163014155b611a3a5760405162461bcd60e51b815260206004820152601560248201527445524332302f696e76616c69642d6164647265737360581b60448201526064016106b1565b6001600160a01b03841660009081526004602052604090205482811015611aa35760405162461bcd60e51b815260206004820152601a60248201527f45524332302f696e73756666696369656e742d62616c616e636500000000000060448201526064016106b1565b611aab61199c565b6001600160a01b0316856001600160a01b031614610ef7576001600160a01b038516600090815260056020526040812081611ae461199c565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506000198114611b9f5783811015611b605760405162461bcd60e51b815260206004820152601c60248201527f45524332302f696e73756666696369656e742d616c6c6f77616e63650000000060448201526064016106b1565b6001600160a01b038616600090815260056020526040812085830391611b8461199c565b6001600160a01b031681526020810191909152604001600020555b506001600160a01b0380861660008181526004602052604080822087860390559287168082529083902080548701905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f579087815260200190565b600080611c0b61199c565b6001600160a01b03166001600160a01b0316815260200190815260200160002054600114611c715760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b60448201526064016106b1565b6001600160a01b03821615801590611c9257506001600160a01b0382163014155b611cd65760405162461bcd60e51b815260206004820152601560248201527445524332302f696e76616c69642d6164647265737360581b60448201526064016106b1565b6001600160a01b0382166000908152600460205260409020805482019055600354611d029082906125e8565b6003556040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60008151604103611de757602082810151604080850151606080870151835160008082529681018086528a9052951a928501839052840183905260808401819052919260019060a0016020604051602081039080840390855afa158015611db5573d6000803e3d6000fd5b505050602060405103516001600160a01b0316876001600160a01b031603611de35760019350505050610f65565b5050505b600080856001600160a01b0316631626ba7e60e01b8686604051602401611e0f929190612609565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001600160e01b0319909416939093179092529051611e629190612622565b600060405180830381855afa9150503d8060008114611e9d576040519150601f19603f3d011682016040523d82523d6000602084013e611ea2565b606091505b5091509150818015611eb5575080516020145b8015611eff575080517f1626ba7e0000000000000000000000000000000000000000000000000000000090611ef3908301602090810190840161263e565b6001600160e01b031916145b9695505050505050565b60006001600160a01b03831615801590611f2c57506001600160a01b0383163014155b611f705760405162461bcd60e51b815260206004820152601560248201527445524332302f696e76616c69642d6164647265737360581b60448201526064016106b1565b600060046000611f7e61199c565b6001600160a01b03166001600160a01b0316815260200190815260200160002054905082811015611ff15760405162461bcd60e51b815260206004820152601a60248201527f45524332302f696e73756666696369656e742d62616c616e636500000000000060448201526064016106b1565b8281036004600061200061199c565b6001600160a01b03908116825260208083019390935260409182016000908120949094558716808452600490925290912080548501905561203f61199c565b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161207991815260200190565b60405180910390a35060019392505050565b60005b838110156120a657818101518382015260200161208e565b50506000910152565b600081518084526120c781602086016020860161208b565b601f01601f19169290920160200192915050565b602081526000610f6560208301846120af565b80356001600160a01b038116811461210557600080fd5b919050565b6000806040838503121561211d57600080fd5b612126836120ee565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561217357612173612134565b604052919050565b600067ffffffffffffffff82111561219557612195612134565b50601f01601f191660200190565b60006121b66121b18461217b565b61214a565b90508281528383830111156121ca57600080fd5b828260208301376000602084830101529392505050565b600080604083850312156121f457600080fd5b82359150602083013567ffffffffffffffff81111561221257600080fd5b8301601f8101851361222357600080fd5b612232858235602084016121a3565b9150509250929050565b60008060006060848603121561225157600080fd5b61225a846120ee565b9250612268602085016120ee565b9150604084013590509250925092565b60006020828403121561228a57600080fd5b610f65826120ee565b60ff811681146122a257600080fd5b50565b6000602082840312156122b757600080fd5b8135610f6581612293565b600080600080600060a086880312156122da57600080fd5b6122e3866120ee565b94506122f1602087016120ee565b93506040860135925060608601359150608086013567ffffffffffffffff81111561231b57600080fd5b8601601f8101881361232c57600080fd5b61233b888235602084016121a3565b9150509295509295909350565b6000806040838503121561235b57600080fd5b8235915061236b602084016120ee565b90509250929050565b600080600080600080600060e0888a03121561238f57600080fd5b612398886120ee565b96506123a6602089016120ee565b9550604088013594506060880135935060808801356123c481612293565b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156123f457600080fd5b6123fd836120ee565b915061236b602084016120ee565b600181811c9082168061241f57607f821691505b60208210810361243f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561248f57600081815260208120601f850160051c8101602086101561246c5750805b601f850160051c820191505b8181101561248b57828155600101612478565b5050505b505050565b815167ffffffffffffffff8111156124ae576124ae612134565b6124c2816124bc845461240b565b84612445565b602080601f8311600181146124f757600084156124df5750858301515b600019600386901b1c1916600185901b17855561248b565b600085815260208120601f198616915b8281101561252657888601518255948401946001909101908401612507565b50858210156125445787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561256657600080fd5b8151610f6581612293565b60006020828403121561258357600080fd5b815167ffffffffffffffff81111561259a57600080fd5b8201601f810184136125ab57600080fd5b80516125b96121b18261217b565b8181528560208385010111156125ce57600080fd5b6125df82602083016020860161208b565b95945050505050565b8082018082111561063e57634e487b7160e01b600052601160045260246000fd5b82815260406020820152600061171360408301846120af565b6000825161263481846020870161208b565b9190910192915050565b60006020828403121561265057600080fd5b81516001600160e01b031981168114610f6557600080fdfea26469706673582212201bad09c5de307f0fc3cbca9d8918c0f891bffacec19c634490fed69220c80e1464736f6c634300081500330000000000000000000000000000000000000000000000000000000000000006