{
  "_format": "hh-sol-artifact-1",
  "contractName": "veUSDToken_CrossChainTester",
  "sourceName": "contracts/TestContracts/veUSDToken_CrossChainTester.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "AddressZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "bridge",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "effectiveTime",
          "type": "uint256"
        }
      ],
      "name": "BridgeMintLimitProposalNotReady",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "alreadyHasRole",
          "type": "bytes32"
        }
      ],
      "name": "DuplicateBridgeAndProtocolRole",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "IXERC20_LimitsTooHigh",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "IXERC20_NotFactory",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "IXERC20_NotHighEnoughLimits",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InitializerAlreadySet",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InitializerNotSet",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "InvalidBurnerRole",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidEnableMintingRole",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "InvalidMinterRole",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidPauseMintingRole",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LockboxIsDisabled",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MintingAlreadySet",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "bridge",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "newMintLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "currentMintLimit",
          "type": "uint256"
        }
      ],
      "name": "MustProposeMintingLimitIncrease",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NoValidUpdatesProvided",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "NotAdminOrBridgeRiskManagerRole",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotAuthorizedInitializer",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "minRatio",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "currentRatio",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "protocolSupply",
          "type": "uint256"
        },
        {
          "internalType": "int256",
          "name": "bridgeSupply",
          "type": "int256"
        }
      ],
      "name": "SupplyRatioBelowLimit",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "ratio",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minRatio",
          "type": "uint256"
        }
      ],
      "name": "SupplyRatioTooLow",
      "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": false,
          "internalType": "address",
          "name": "_oldBorrowerOperationsAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_newBorrowerOperationsAddress",
          "type": "address"
        }
      ],
      "name": "BorrowerOperationsAddressChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "bridge",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "remainingBurnLimit",
          "type": "uint256"
        }
      ],
      "name": "BridgeBurn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_burningLimit",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_bridge",
          "type": "address"
        }
      ],
      "name": "BridgeBurnLimitChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_mintingLimit",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_burningLimit",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_bridge",
          "type": "address"
        }
      ],
      "name": "BridgeLimitsSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "bridge",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "remainingMintLimit",
          "type": "uint256"
        }
      ],
      "name": "BridgeMint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_mintingLimit",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_bridge",
          "type": "address"
        }
      ],
      "name": "BridgeMintLimitChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "bridge",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newMintLimit",
          "type": "uint256"
        }
      ],
      "name": "BridgeMintLimitIncreaseExecuted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "bridge",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newMintLimit",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "executionTime",
          "type": "uint256"
        }
      ],
      "name": "BridgeMintLimitIncreaseProposed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "bridge",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "currentMintLimit",
          "type": "uint256"
        }
      ],
      "name": "BridgeMintLimitIncreaseRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "BridgingPaused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "BridgingUnpaused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "EIP712DomainChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "lockbox",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "LockBoxBurn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "lockbox",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "LockBoxMint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "LockboxDisabled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_lockbox",
          "type": "address"
        }
      ],
      "name": "LockboxSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldRatio",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newRatio",
          "type": "uint256"
        }
      ],
      "name": "MinProtocolSupplyToBridgeSupplyRatioUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousAdminRole",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "newAdminRole",
          "type": "bytes32"
        }
      ],
      "name": "RoleAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_oldStabilityPoolAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_newStabilityPoolAddress",
          "type": "address"
        }
      ],
      "name": "StabilityPoolAddressChanged",
      "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"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "burner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "isValid",
          "type": "bool"
        }
      ],
      "name": "VEUSDBurnerChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "minter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "isValid",
          "type": "bool"
        }
      ],
      "name": "VEUSDMinterChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_oldVaultManagerDiamondAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_newVaultManagerDiamondAddress",
          "type": "address"
        }
      ],
      "name": "VaultManagerDiamondAddressChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "veUSDTokenBalanceUpdated",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "BRIDGE_MINT_INCREASE_DELAY",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "BRIDGE_PAUSER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "BRIDGE_RISK_MANAGER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "BRIDGE_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DOMAIN_SEPARATOR",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MINT_PAUSER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MIN_PROTOCOL_SUPPLY_TO_BRIDGE_SUPPLY_RATIO",
      "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": "PROTOCOL_BURNER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PROTOCOL_MINTER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "VERSION",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "borrowerOperationsAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "bridgeMintLimitIncreaseProposals",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "newMintLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "executionTime",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "bridgePaused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "bridgeSupply",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "bridges",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "ratePerSecond",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maxLimit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "currentLimit",
              "type": "uint256"
            }
          ],
          "internalType": "struct XERC20.BridgeParameters",
          "name": "minterParams",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "timestamp",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "ratePerSecond",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "maxLimit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "currentLimit",
              "type": "uint256"
            }
          ],
          "internalType": "struct XERC20.BridgeParameters",
          "name": "burnerParams",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "burnFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_bridge",
          "type": "address"
        }
      ],
      "name": "burningCurrentLimitOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_limit",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_bridge",
          "type": "address"
        }
      ],
      "name": "burningMaxLimitOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_limit",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "callInternalApprove",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "canMint",
      "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": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "eip712Domain",
      "outputs": [
        {
          "internalType": "bytes1",
          "name": "fields",
          "type": "bytes1"
        },
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "version",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "chainId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "verifyingContract",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "salt",
          "type": "bytes32"
        },
        {
          "internalType": "uint256[]",
          "name": "extensions",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_bridge",
          "type": "address"
        }
      ],
      "name": "executeMintLimitIncreaseProposal",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getChainId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "chainID",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "nonce",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "getDigest",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getRoleMember",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleMemberCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getSupplyRatio",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "supplyRatio",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "governorAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "vaultManagerDiamondAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "stabilityPoolAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "borrowerOperationsAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "governorAddress",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "ownerAndAdminRole",
              "type": "address"
            }
          ],
          "internalType": "struct IveUSDToken_Initializer.InitializerParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_account",
          "type": "address"
        }
      ],
      "name": "isValidProtocolBurner",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_account",
          "type": "address"
        }
      ],
      "name": "isValidProtocolMinter",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "lockbox",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_vaultManagerDiamondAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_stabilityPoolAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_borrowerOperationsAddress",
          "type": "address"
        }
      ],
      "name": "migrateProtocolContracts",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "minProtocolSupplyToBridgeSupplyRatio",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_bridge",
          "type": "address"
        }
      ],
      "name": "mintingCurrentLimitOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_limit",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_bridge",
          "type": "address"
        }
      ],
      "name": "mintingMaxLimitOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_limit",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "nonces",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pauseBridging",
      "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": "_bridge",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_newMintingLimit",
          "type": "uint256"
        }
      ],
      "name": "proposeMintLimitIncrease",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "protocolSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "digest",
          "type": "bytes32"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "recoverAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "initializer_",
          "type": "address"
        }
      ],
      "name": "registerInitializer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "registeredInitializer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_poolAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_receiver",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "returnFromPool",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_bridge",
          "type": "address"
        }
      ],
      "name": "revokeMintLimitIncreaseProposal",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_poolAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "sendToPool",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_bridge",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_mintingLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_burningLimit",
          "type": "uint256"
        }
      ],
      "name": "setLimits",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_lockbox",
          "type": "address"
        }
      ],
      "name": "setLockbox",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_ratio",
          "type": "uint256"
        }
      ],
      "name": "setMinProtocolSupplyToBridgeSupplyRatio",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "stabilityPoolAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpauseBridging",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "unprotectedBurn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "unprotectedMint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_poolAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_receiver",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "unprotectedReturnFromPool",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_poolAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "unprotectedSendToPool",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "_canMint",
          "type": "bool"
        }
      ],
      "name": "updateMinting",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "vaultManagerDiamondAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60a060405261019b805460ff191690557f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c96080523480156200004057600080fd5b506200004b6200005b565b620000556200005b565b6200011c565b600054610100900460ff1615620000c85760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146200011a576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6080516152656200013860003960006112c501526152656000f3fe608060405234801561001057600080fd5b506004361061058b5760003560e01c806379cc6790116102e2578063a3f4df7e11610191578063bb997bac116100ee578063cbf50de7116100a2578063d547741f1161007c578063d547741f14610c78578063dd62ed3e14610c8b578063ffa1ad7414610cc457600080fd5b8063cbf50de714610bbf578063ced67f0c14610bd2578063d505accf14610c6557600080fd5b8063beb9716d116100d3578063beb9716d14610b6a578063c1eb713714610b7f578063ca15c87314610bac57600080fd5b8063bb997bac14610b44578063bcf47d3314610b5757600080fd5b8063b599134711610145578063b655c2761161012a578063b655c27614610784578063b7f8cf9b14610b26578063b937134314610b3a57600080fd5b8063b599134714610aff578063b5bfddea14610b1157600080fd5b8063a9059cbb11610176578063a9059cbb14610ad1578063ae0e890a14610ae4578063b22b784014610aec57600080fd5b8063a3f4df7e14610a82578063a457c2d714610abe57600080fd5b806391d148541161023f5780639d1b636c116101f3578063a08d5654116101d8578063a08d565414610a2a578063a167490314610a3d578063a217fddf14610a7a57600080fd5b80639d1b636c146109f05780639dc29fac14610a1757600080fd5b806395d89b411161022457806395d89b41146109c2578063998955d3146109ca5780639a9232f6146109dd57600080fd5b806391d148541461099c578063933cc28f146109af57600080fd5b80638a1d7fd0116102965780638f656d221161027b5780638f656d221461094f5780639010d07c1461096257806390acdb0b1461097557600080fd5b80638a1d7fd0146109205780638da5cb5b1461094757600080fd5b80638428cf83116102c75780638428cf83146108e857806384b0196e146108fb57806387dc51821461091657600080fd5b806379cc6790146108c25780637ecebe00146108d557600080fd5b806336568abe1161043e5780634a0bea121161039b578063651fd2681161034f578063674ca23711610334578063674ca237146108855780636ccf20d51461088d57806370a082311461089957600080fd5b8063651fd2681461085e57806366cc57021461087157600080fd5b8063519e2cee11610380578063519e2cee1461082457806352033ede14610837578063651e1f911461084b57600080fd5b80634a0bea12146108095780635099f99f1461081157600080fd5b806340c10f19116103f2578063435350b7116103d7578063435350b7146107d0578063460ab5ad146107e3578063472fa5cb146107f657600080fd5b806340c10f19146107aa57806342966c68146107bd57600080fd5b80633ab60582116104235780633ab60582146107715780633dc2ea6d146107845780633f7f9d941461079757600080fd5b806336568abe1461074b578063395093511461075e57600080fd5b806320c582be116104ec578063313ce567116104a05780633408e470116104855780633408e47014610716578063363ce28d1461071c5780633644e5151461074357600080fd5b8063313ce567146106fd578063318e24861461070c57600080fd5b8063248a9ca3116104d1578063248a9ca3146106c3578063276f1c41146106d65780632f2ff15d146106ea57600080fd5b806320c582be1461069b57806323b872dd146106b057600080fd5b8063095ea7b3116105435780630c05f82c116105285780630c05f82c1461065c57806318160ddd146106895780631cfd2d621461069157600080fd5b8063095ea7b31461061d5780630b622ab21461063057600080fd5b806303d999461161057457806303d99946146105ed57806306fdde0314610600578063073aa8a91461061557600080fd5b8063015556e81461059057806301ffc9a7146105ca575b600080fd5b6105b77f48aa5217d2a4f2ac85d1a5ec9f419374dbb5bddc4679bbd76492d009921fdb4581565b6040519081526020015b60405180910390f35b6105dd6105d8366004614a0d565b610d00565b60405190151581526020016105c1565b6105dd6105fb366004614a53565b610d44565b610608610d5c565b6040516105c19190614adf565b6105b7600281565b6105dd61062b366004614af2565b610dee565b61016454610644906001600160a01b031681565b6040516001600160a01b0390911681526020016105c1565b6105b761066a366004614b1c565b6001600160a01b0316600090815261019a602052604090206002015490565b6035546105b7565b6105b76101ce5481565b6106ae6106a9366004614a53565b610dfc565b005b6105dd6106be366004614a53565b610e14565b6105b76106d1366004614b37565b610e32565b61016654610644906001600160a01b031681565b6106ae6106f8366004614b50565b610e49565b604051601281526020016105c1565b6105b76101d05481565b466105b7565b6105b77facdbad329d06d82720ee092349725be8da5a9281f8818864bbd5f988ed7afbaf81565b6105b7610e57565b6106ae610759366004614b50565b610e66565b6105dd61076c366004614af2565b610e70565b6106ae61077f366004614af2565b610eaf565b6106ae610792366004614a53565b610e04565b6106ae6107a5366004614b1c565b610eb9565b6106ae6107b8366004614af2565b610f84565b6106ae6107cb366004614b37565b611024565b6106ae6107de366004614b1c565b611031565b6106ae6107f1366004614b7c565b611044565b6105dd610804366004614b1c565b611268565b6106ae611294565b6106ae61081f366004614af2565b6112a8565b6105b7610832366004614bbf565b6112b2565b61016354610644906001600160a01b031681565b6106ae610859366004614b37565b61139c565b6105b761086c366004614b1c565b611483565b61019954610644906001600160a01b031681565b6105b76114b8565b61019b5460ff166105dd565b6105b76108a7366004614b1c565b6001600160a01b031660009081526033602052604090205490565b6106ae6108d0366004614af2565b6114eb565b6105b76108e3366004614b1c565b6114f5565b6106446108f6366004614c1d565b611513565b61090361157b565b6040516105c19796959493929190614c58565b6105b76201518081565b6105b77fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe0681565b61064461163d565b6106ae61095d366004614d20565b611649565b610644610970366004614dae565b6117f3565b6105b77feaf92ff5b0a04171fb36712b8be1d9fddd92ac9de80f5202de5ca962a75c6a0681565b6105dd6109aa366004614b50565b61180c565b6105dd6109bd366004614b1c565b611837565b610608611863565b6105b76109d8366004614b1c565b611872565b6106ae6109eb366004614b1c565b6118aa565b6105b77ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d744681565b6106ae610a25366004614af2565b611a07565b6106ae610a38366004614dd0565b611a7e565b610a65610a4b366004614b1c565b6101d1602052600090815260409020805460019091015482565b604080519283526020830191909152016105c1565b6105b7600081565b6106086040518060400160405280601b81526020017f7665555344546f6b656e5f43726f7373436861696e546573746572000000000081525081565b6105dd610acc366004614af2565b611b68565b6105dd610adf366004614af2565b611c1d565b6106ae611c32565b6106ae610afa366004614e03565b611c64565b610162546001600160a01b0316610644565b6105b760008051602061521083398151915281565b61016554610644906001600160a01b031681565b6105b76101cf5481565b6106ae610b52366004614a53565b611d56565b6106ae610b65366004614b1c565b611d5e565b610162546105dd90600160a81b900460ff1681565b6105b7610b8d366004614b1c565b6001600160a01b0316600090815261019a602052604090206006015490565b6105b7610bba366004614b37565b611de3565b6106ae610bcd366004614af2565b611dfb565b610c57610be0366004614b1c565b61019a602090815260009182526040918290208251608080820185528254825260018301548285015260028301548286015260038301546060808401919091528551918201865260048401548252600584015494820194909452600683015494810194909452600790910154918301919091529082565b6040516105c1929190614e25565b6106ae610c73366004614e71565b611f29565b6106ae610c86366004614b50565b61208d565b6105b7610c99366004614edb565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b6106086040518060400160405280600581526020017f312e322e3000000000000000000000000000000000000000000000000000000081525081565b60006001600160e01b031982167f5a05180f000000000000000000000000000000000000000000000000000000001480610d3e5750610d3e82612097565b92915050565b6000610d518484846120fe565b5060015b9392505050565b606060368054610d6b90614f05565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9790614f05565b8015610de45780601f10610db957610100808354040283529160200191610de4565b820191906000526020600020905b815481529060010190602001808311610dc757829003601f168201915b5050505050905090565b600033610d518185856120fe565b610e04612257565b610e0f8383836122ee565b505050565b6000610e1f836124e2565b610e2a848484612586565b949350505050565b600081815260fe6020526040812060010154610d3e565b610e53828261259f565b5050565b6000610e6161260d565b905090565b610e538282612617565b3360008181526034602090815260408083206001600160a01b0387168452909152812054909190610d519082908690610eaa908790614f4f565b6120fe565b610e53828261269f565b610ec460003361180c565b158015610ef85750610ef67f48aa5217d2a4f2ac85d1a5ec9f419374dbb5bddc4679bbd76492d009921fdb453361180c565b155b15610f1d57604051630eabe6ed60e01b81523360048201526024015b60405180910390fd5b6001600160a01b03811660008181526101d16020908152604080832083815560010183905561019a9091529020600201547f564c58dd75b142d7ff24af2e91492e8cdc5ae3e3b1b9a06b03c0c42e5040ba8c9060405190815260200160405180910390a250565b610f8c6126a9565b610fb67ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d74463361180c565b15610fc557610e538282612703565b610fdd6000805160206152108339815191523361180c565b15610fec57610e538282612726565b610199546001600160a01b0316330361100957610e53828261279d565b604051637ddde23760e01b8152336004820152602401610f14565b61102e3382611a07565b50565b61103b600061282d565b61102e81612837565b61104c61290a565b60006001600160a01b038416158015906110755750610163546001600160a01b03858116911614155b156110ec5761016354604080516001600160a01b03928316815291861660208301527fa97b341f77b0e4c8c68d09d703bbf67a1eaae5d761fcbdbecaca033d2af5ebd4910160405180910390a161016380546001600160a01b0319166001600160a01b038616179055806110e881614f62565b9150505b6001600160a01b038316158015906111135750610164546001600160a01b03848116911614155b1561118a5761016454604080516001600160a01b03928316815291851660208301527ff9610b18e4a1d98238bc4ce7a524941ee9f274fbec476687c10d11f4a51c03af910160405180910390a161016480546001600160a01b0319166001600160a01b0385161790558061118681614f62565b9150505b6001600160a01b038216158015906111b15750610165546001600160a01b03838116911614155b156112285761016554604080516001600160a01b03928316815291841660208301527f062e7312f73faf31fdc8f23b4c09073a463f3fb2c9c344d40858f2a23c03a2fa910160405180910390a161016580546001600160a01b0319166001600160a01b0384161790558061122481614f62565b9150505b80600003611262576040517f366deafc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6000610d3e7fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe068361180c565b61129e600061282d565b6112a661298b565b565b610e5382826129de565b60006119016112bf61260d565b604080517f000000000000000000000000000000000000000000000000000000000000000060208201526001600160a01b03808b169282019290925290881660608201526080810187905260a0810186905260c0810185905260e0016040516020818303038152906040528051906020012060405160200161137b9392919060f09390931b7fffff0000000000000000000000000000000000000000000000000000000000001683526002830191909152602282015260420190565b60405160208183030381529060405280519060200120905095945050505050565b6113a760003361180c565b1580156113db57506113d97f48aa5217d2a4f2ac85d1a5ec9f419374dbb5bddc4679bbd76492d009921fdb453361180c565b155b156113fb57604051630eabe6ed60e01b8152336004820152602401610f14565b6002811015611440576040517f3c267a030000000000000000000000000000000000000000000000000000000081526004810182905260026024820152604401610f14565b6101d05460408051918252602082018390527f1b61a6a4f8b6de02a48b7c5cecf97f9268b776620828a056b6fbb3eeb4ebc61d910160405180910390a16101d055565b6001600160a01b038116600090815261019a60205260408120600381015460028201548254600190930154610d3e93906129e8565b6000806114c3612a5e565b9050806000036114d65760001991505090565b806101ce546114e59190614f7b565b91505090565b610e538282611a07565b6001600160a01b038116600090815260996020526040812054610d3e565b6040805160008082526020820180845287905260ff861692820192909252606081018490526080810183905260019060a0016020604051602081039080840390855afa158015611567573d6000803e3d6000fd5b5050604051601f1901519695505050505050565b6000606080600080600060606065546000801b14801561159b5750606654155b6115e75760405162461bcd60e51b815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152606401610f14565b6115ef612a7f565b6115f7612a8e565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b6000610e6181806117f3565b600054610100900460ff16158080156116695750600054600160ff909116105b806116835750303b158015611683575060005460ff166001145b6116f55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610f14565b6000805460ff191660011790558015611718576000805461ff0019166101001790555b61016254600160a01b900460ff1661175c576040517f5009898300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610162546001600160a01b031633146117a1576040517f396c907f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117aa82612a9d565b8015610e53576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600082815261013060205260408120610d559083612b8e565b600082815260fe602090815260408083206001600160a01b038516845290915281205460ff16610d55565b6000610d3e7ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d74468361180c565b606060378054610d6b90614f05565b6001600160a01b038116600090815261019a60205260408120600781015460068201546004830154600590930154610d3e93906129e8565b6118b560003361180c565b1580156118e957506118e77f48aa5217d2a4f2ac85d1a5ec9f419374dbb5bddc4679bbd76492d009921fdb453361180c565b155b1561190957604051630eabe6ed60e01b8152336004820152602401610f14565b611911612b9a565b6001600160a01b03811660009081526101d160205260409020600101544281111561197a576040517f34f3c9cf0000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260248101829052604401610f14565b6001600160a01b03821660009081526101d1602052604090205461199f908390612bee565b6001600160a01b03821660008181526101d16020908152604080832083815560010183905561019a9091529020600201547fa9fe2dca31a7e17f0b1fd319f0b30fb7eb9b6ccc77a73c8e833b20803a18f4739060405190815260200160405180910390a25050565b611a1033611268565b15611a1f57610e538282612d00565b611a376000805160206152108339815191523361180c565b15611a4657610e538282612d23565b610199546001600160a01b03163303611a6357610e538282612da8565b604051630c3373f760e21b8152336004820152602401610f14565b611a8960003361180c565b158015611abd5750611abb7f48aa5217d2a4f2ac85d1a5ec9f419374dbb5bddc4679bbd76492d009921fdb453361180c565b155b15611add57604051630eabe6ed60e01b8152336004820152602401610f14565b6001600160a01b038316600090815261019a602052604090206002015480831115611b3457604051637d5e3dfb60e11b81526001600160a01b03851660048201526024810184905260448101829052606401610f14565b611b3f848484612e30565b82158015611b4b575081155b156112625761126260008051602061521083398151915285612e85565b3360008181526034602090815260408083206001600160a01b038716845290915281205490919083811015611c055760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610f14565b611c1282868684036120fe565b506001949350505050565b6000611c28836124e2565b610d558383612ed1565b7facdbad329d06d82720ee092349725be8da5a9281f8818864bbd5f988ed7afbaf611c5c8161282d565b61102e612edf565b61016254600160a81b900460ff16151581151503611cae576040517f9f0e7d7f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8015611cc157611cbc61290a565b611d37565b611ceb7feaf92ff5b0a04171fb36712b8be1d9fddd92ac9de80f5202de5ca962a75c6a063361180c565b158015611d005750611cfe60003361180c565b155b15611d37576040517f180b21fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101628054911515600160a81b0260ff60a81b19909216919091179055565b610e04612f1d565b61016254600160a01b900460ff1615611da3576040517ff20d240500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61016280547fffffffffffffffffffffff000000000000000000000000000000000000000000166001600160a01b0390921691909117600160a01b179055565b600081815261013060205260408120610d3e90612f9e565b611e05600061282d565b611e0d612b9a565b611e2560008051602061521083398151915283612fa8565b6001600160a01b038216600090815261019a6020526040902060020154811015611ea0578181611e6e846001600160a01b0316600090815261019a602052604090206002015490565b604051637d5e3dfb60e11b81526001600160a01b03909316600484015260248301919091526044820152606401610f14565b6000611eaf6201518042614f4f565b60408051808201825284815260208082018481526001600160a01b03881660008181526101d184528590209351845590516001909301929092558251868152908101849052929350917f72d7cf1baaca85718c75c17aa2992dd9d7b93a9f3911be475af37078dad40a3e91015b60405180910390a2505050565b83421115611f795760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610f14565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888611fa88c613001565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061200382613029565b9050600061201382878787613071565b9050896001600160a01b0316816001600160a01b0316146120765760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610f14565b6120818a8a8a6120fe565b50505050505050505050565b610e538282613099565b60006001600160e01b031982167f7965db0b000000000000000000000000000000000000000000000000000000001480610d3e57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b0319831614610d3e565b6001600160a01b0383166121795760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610f14565b6001600160a01b0382166121f55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610f14565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b610164546001600160a01b031633148061227c5750610163546001600160a01b031633145b6112a65760405162461bcd60e51b815260206004820152603e60248201527f76655553443a2043616c6c6572206973206e656974686572205661756c744d6160448201527f6e616765724469616d6f6e64206e6f722053746162696c697479506f6f6c00006064820152608401610f14565b6001600160a01b03831661236a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610f14565b6001600160a01b0382166123e65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610f14565b6001600160a01b038316600090815260336020526040902054818110156124755760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610f14565b6001600160a01b0380851660008181526033602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906124d59086815260200190565b60405180910390a3611262565b306001600160a01b0382160361102e5760405162461bcd60e51b815260206004820152604260248201527f76655553443a2043616e6e6f74207472616e7366657220746f6b656e7320646960448201527f726563746c7920746f2074686520766555534420746f6b656e20636f6e74726160648201527f6374000000000000000000000000000000000000000000000000000000000000608482015260a401610f14565b600033612594858285613177565b611c128585856122ee565b7ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d74468214806125ec57507fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe0682145b15612603576125f961290a565b610e538282613182565b610e5382826132f3565b6000610e6161330f565b6001600160a01b03811633146126955760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610f14565b610e538282612e85565b610e538282613383565b61016254600160a81b900460ff166112a65760405162461bcd60e51b815260206004820152601a60248201527f76655553443a204d696e74696e672069732064697361626c65640000000000006044820152606401610f14565b806101ce60008282546127169190614f4f565b90915550610e53905082826134ee565b61273d60008051602061521083398151915261282d565b336127498184846134fe565b826001600160a01b0316816001600160a01b03167fe3bac5b9cc7159f3586d12aeb1bb8a028deddd03280eae86def97a83d380c97e8461278885611483565b6040805192835260208301919091520161224a565b610199546001600160a01b031633146127cb57604051637ddde23760e01b8152336004820152602401610f14565b610199546127e3906001600160a01b031683836134fe565b610199546040518281526001600160a01b038481169216907f75bf99f7db25a13871e188edd8a7e112d434444f9d952848f4c6ccd8ae05356a906020015b60405180910390a35050565b61102e8133612fa8565b610199546001600160a01b031661deac190161287f576040517f30e0e3ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166128bf576040517f9fabe1c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6128c88161351a565b610199546001600160a01b031661deac190161102e576040517f78768828eab66fdac6a78204b2027bd64810f2cbf324c908f5f5999b9018d1d790600090a150565b610166546001600160a01b031633146112a65760405162461bcd60e51b815260206004820152602160248201527f76655553443a2043616c6c6572206973206e6f742074686520676f7665726e6f60448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610f14565b61299361356f565b61019b805460ff191690557f2cc50ebc4cffd414482dbc0d6ba24ba02e8e58e3174f391834ff08642aeabd87335b6040516001600160a01b03909116815260200160405180910390a1565b610e5382826135e8565b83838114610e2a57426129fe6201518085614f4f565b11612a0a575082610e2a565b42612a186201518085614f4f565b1115610e2a576000612a2a8442614f9d565b90506000612a388483614fb0565b612a429084614f4f565b9050858111612a515780612a53565b855b979650505050505050565b6000806101cf5412612a7257506101cf5490565b6101cf54610e6190614fc7565b606060678054610d6b90614f05565b606060688054610d6b90614f05565b600054610100900460ff16612b085760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610f14565b612b11816136a9565b612b1961398d565b600a6101d055612b386000805160206152108339815191526000613a00565b612b637facdbad329d06d82720ee092349725be8da5a9281f8818864bbd5f988ed7afbaf6000613a00565b61102e7f48aa5217d2a4f2ac85d1a5ec9f419374dbb5bddc4679bbd76492d009921fdb456000613a00565b6000610d558383613a53565b61019b5460ff16156112a65760405162461bcd60e51b815260206004820152601f60248201527f4272696467655061757361626c653a206272696467696e6720706175736564006044820152606401610f14565b80612bfc6002600019614f7b565b811115612c1c5760405163f596480960e01b815260040160405180910390fd5b6001600160a01b038316600090815261019a602052604081206002015490612c4385611483565b6001600160a01b038616600090815261019a602052604090206002018590559050612c6f848383613a7d565b6001600160a01b038616600090815261019a6020526040902060030155612c996201518085614f7b565b6001600160a01b038616600081815261019a60205260409081902060018101939093554290925590517f73a45fb9bdf4314eef462282cb306b703aff37ebf3d8365e1cb184b6e4f81e2690612cf19087815260200190565b60405180910390a25050505050565b806101ce6000828254612d139190614f9d565b90915550610e5390508282613ad4565b612d2b612b9a565b612d4260008051602061521083398151915261282d565b336001600160a01b0383168114612d5e57612d5e838284613177565b612d69818484613adc565b826001600160a01b0316816001600160a01b03167f23d4617ad0c271f3212274f0c9e7f4e0297eb842756610af3d94aee34be4b9ba8461278885611872565b610199546001600160a01b03163314612dd657604051630c3373f760e21b8152336004820152602401610f14565b61019954612dee906001600160a01b03168383613adc565b610199546040518281526001600160a01b038481169216907fce5305b40b7abd03afee067707e7d214b3e1eec39cdaa19123e9405bc5e60f3c90602001612821565b612e3a8383612bee565b612e448382613b00565b60408051838152602081018390526001600160a01b038516917f93f3bbfe8cfb354ec059175107653f49f6eb479a8622a7d83866ea015435c9449101611f1c565b6000805160206152108339815191528203612ec757612ea681600080612e30565b6001600160a01b03811660009081526101d160205260408120818155600101555b610e538282613c09565b600033610d518185856122ee565b612ee7612b9a565b61019b805460ff191660011790557faf0e7bc1034b70c2371e91aed036232c1e293fbb61b07a9b5f8d6b069b63e8096129c13390565b610164546001600160a01b031633146112a65760405162461bcd60e51b815260206004820152602660248201527f76655553443a2043616c6c6572206973206e6f74207468652053746162696c6960448201527f7479506f6f6c00000000000000000000000000000000000000000000000000006064820152608401610f14565b6000610d3e825490565b612fb2828261180c565b610e5357612fbf81613c2c565b612fca836020613c3e565b604051602001612fdb929190614fff565b60408051601f198184030181529082905262461bcd60e51b8252610f1491600401614adf565b6001600160a01b03811660009081526099602052604090208054600181018255905b50919050565b6000610d3e61303661260d565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b600080600061308287878787613e1f565b9150915061308f81613ee3565b5095945050505050565b7ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d7446820361310357604080516001600160a01b0383168152600060208201527f73d12e94857635af82b7d94f9c40b816942c33758efc90aee65a314c96415149910160405180910390a15b7fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe06820361316d57604080516001600160a01b0383168152600060208201527f19d9f64b5a71d1b38748c6d0200adb8687cbfdd74263adc72ffdf8d0b6225aba910160405180910390a15b610e538282614048565b610e0f838383614064565b7ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d74468203613203576131c16000805160206152108339815191528261180c565b156131fe57604051639c2b7ba760e01b81526001600160a01b03821660048201526000805160206152108339815191526024820152604401610f14565b6132e9565b60008051602061521083398151915282036132e9576132427ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d74468261180c565b1561329157604051639c2b7ba760e01b81526001600160a01b03821660048201527ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d74466024820152604401610f14565b61329a81611268565b156132e957604051639c2b7ba760e01b81526001600160a01b03821660048201527f50726f746f636f6c204275726e657200000000000000000000000000000000006024820152604401610f14565b610e5382826140f0565b6132fc82610e32565b6133058161282d565b610e0f8383613182565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61333a614113565b61334261416c565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6001600160a01b0382166133ff5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610f14565b6001600160a01b0382166000908152603360205260409020548181101561348e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610f14565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6134f66126a9565b6112a861419d565b613506612b9a565b613511838383614218565b610e0f81614272565b61019980546001600160a01b0319166001600160a01b0383169081179091556040519081527ffa2e15ea41196e438f0593ecdd6036acd83bdfcd39d627b77c17eab43f376a399060200160405180910390a150565b61019b5460ff166112a65760405162461bcd60e51b815260206004820152602360248201527f4272696467655061757361626c653a206272696467696e67206e6f742070617560448201527f73656400000000000000000000000000000000000000000000000000000000006064820152608401610f14565b6001600160a01b03821661363e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610f14565b80603560008282546136509190614f4f565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600054610100900460ff166137145760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610f14565b6137886040518060400160405280601481526020017f5661756c746564676520537461626c65636f696e0000000000000000000000008152506040518060400160405280600581526020017f7665555344000000000000000000000000000000000000000000000000000000815250614312565b6137c66040518060400160405280601481526020017f5661756c746564676520537461626c65636f696e000000000000000000000000815250614387565b6137ce614431565b610162805460ff60a81b1916600160a81b179055805161016380546001600160a01b039283166001600160a01b03199182161790915560208301516101648054918416918316919091179055604083015161016580549184169183169190911790556060830151610166805491909316911617905561386e7ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d74466000613a00565b6138997fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe066000613a00565b6138c47feaf92ff5b0a04171fb36712b8be1d9fddd92ac9de80f5202de5ca962a75c6a066000613a00565b6138d56000801b8260800151613182565b6139037ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d74468260400151613182565b6139317fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe068260000151613182565b61395f7fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe068260200151613182565b61102e7fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe068260400151613182565b600054610100900460ff166139f85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610f14565b6112a661449c565b6000613a0b83610e32565b600084815260fe6020526040808220600101859055519192508391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6000826000018281548110613a6a57613a6a615080565b9060005260206000200154905092915050565b60008084841115613ab357613a928585614f9d565b9050808311613aa2576000613aac565b613aac8184614f9d565b9150613acc565b613abd8486614f9d565b9050613ac98184614f4f565b91505b509392505050565b610eaf614514565b613ae4612b9a565b613aef83838361458f565b610e0f613afb82614fc7565b614272565b80613b0e6002600019614f7b565b811115613b2e5760405163f596480960e01b815260040160405180910390fd5b6001600160a01b038316600090815261019a602052604081206006015490613b5585611872565b6001600160a01b038616600090815261019a602052604090206006018590559050613b81848383613a7d565b6001600160a01b038616600090815261019a6020526040902060070155613bab6201518085614f7b565b6001600160a01b038616600081815261019a60205260409081902060058101939093554260049093019290925590517f1d819f0022f2d01a98a05488bb5993957bc7280bf8aac3550af10b75e84e9c5090612cf19087815260200190565b613c1382826145e9565b600082815261013060205260409020610e0f9082614650565b6060610d3e6001600160a01b03831660145b60606000613c4d836002614fb0565b613c58906002614f4f565b67ffffffffffffffff811115613c7057613c70614d0a565b6040519080825280601f01601f191660200182016040528015613c9a576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110613cd157613cd1615080565b60200101906001600160f81b031916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110613d1c57613d1c615080565b60200101906001600160f81b031916908160001a9053506000613d40846002614fb0565b613d4b906001614f4f565b90505b6001811115613dd0577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110613d8c57613d8c615080565b1a60f81b828281518110613da257613da2615080565b60200101906001600160f81b031916908160001a90535060049490941c93613dc981615096565b9050613d4e565b508315610d555760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610f14565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613e565750600090506003613eda565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613eaa573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613ed357600060019250925050613eda565b9150600090505b94509492505050565b6000816004811115613ef757613ef76150ad565b03613eff5750565b6001816004811115613f1357613f136150ad565b03613f605760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610f14565b6002816004811115613f7457613f746150ad565b03613fc15760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610f14565b6003816004811115613fd557613fd56150ad565b0361102e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610f14565b61405182610e32565b61405a8161282d565b610e0f8383612e85565b6001600160a01b03838116600090815260346020908152604080832093861683529290522054600019811461126257818110156140e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610f14565b61126284848484036120fe565b6140fa8282614665565b600082815261013060205260409020610e0f90826146eb565b60008061411e612a7f565b805190915015614135578051602090910120919050565b60655480156141445792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b600080614177612a8e565b80519091501561418e578051602090910120919050565b60665480156141445792915050565b6141a633611837565b6112a65760405162461bcd60e51b815260206004820152602660248201527f7665555344546f6b656e3a2043616c6c6572206973206e6f742056616c69642060448201527f4d696e74657200000000000000000000000000000000000000000000000000006064820152608401610f14565b610199546001600160a01b0384811691161461426857600061423984611483565b90508181101561425c576040516305b4215560e11b815260040160405180910390fd5b6142668483614700565b505b610e0f82826129de565b806101cf600082825461428591906150c3565b9091555050600081138061429d575060006101cf5412155b156142a55750565b60006142af6114b8565b90506101d054811015610e53576101d0546101ce546101cf546040517f0515664b00000000000000000000000000000000000000000000000000000000815260048101939093526024830184905260448301919091526064820152608401610f14565b600054610100900460ff1661437d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610f14565b610e538282614758565b600054610100900460ff166143f25760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610f14565b61102e816040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506147dc565b600054610100900460ff166112a65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610f14565b600054610100900460ff166145075760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610f14565b61019b805460ff19169055565b61451d33611268565b6112a65760405162461bcd60e51b815260206004820152602c60248201527f76655553443a2043616c6c6572206973206e6f7420612076616c69642070726f60448201527f746f636f6c206275726e657200000000000000000000000000000000000000006064820152608401610f14565b610199546001600160a01b038481169116146145df5760006145b084611872565b9050818110156145d3576040516305b4215560e11b815260040160405180910390fd5b6145dd848361486f565b505b610e0f828261269f565b6145f3828261180c565b15610e5357600082815260fe602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610d55836001600160a01b0384166148cb565b61466f828261180c565b610e5357600082815260fe602090815260408083206001600160a01b03851684529091529020805460ff191660011790556146a73390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610d55836001600160a01b0384166149be565b600061470b83611483565b6001600160a01b038416600090815261019a6020526040902042905590506147338282614f9d565b6001600160a01b03909316600090815261019a60205260409020600301929092555050565b600054610100900460ff166147c35760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610f14565b60366147cf8382615139565b506037610e0f8282615139565b600054610100900460ff166148475760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610f14565b60676148538382615139565b5060686148608282615139565b50506000606581905560665550565b600061487a83611872565b6001600160a01b038416600090815261019a602052604090204260049091015590506148a68282614f9d565b6001600160a01b03909316600090815261019a60205260409020600701929092555050565b600081815260018301602052604081205480156149b45760006148ef600183614f9d565b855490915060009061490390600190614f9d565b905081811461496857600086600001828154811061492357614923615080565b906000526020600020015490508087600001848154811061494657614946615080565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080614979576149796151f9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610d3e565b6000915050610d3e565b6000818152600183016020526040812054614a0557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610d3e565b506000610d3e565b600060208284031215614a1f57600080fd5b81356001600160e01b031981168114610d5557600080fd5b80356001600160a01b0381168114614a4e57600080fd5b919050565b600080600060608486031215614a6857600080fd5b614a7184614a37565b9250614a7f60208501614a37565b9150604084013590509250925092565b60005b83811015614aaa578181015183820152602001614a92565b50506000910152565b60008151808452614acb816020860160208601614a8f565b601f01601f19169290920160200192915050565b602081526000610d556020830184614ab3565b60008060408385031215614b0557600080fd5b614b0e83614a37565b946020939093013593505050565b600060208284031215614b2e57600080fd5b610d5582614a37565b600060208284031215614b4957600080fd5b5035919050565b60008060408385031215614b6357600080fd5b82359150614b7360208401614a37565b90509250929050565b600080600060608486031215614b9157600080fd5b614b9a84614a37565b9250614ba860208501614a37565b9150614bb660408501614a37565b90509250925092565b600080600080600060a08688031215614bd757600080fd5b614be086614a37565b9450614bee60208701614a37565b94979496505050506040830135926060810135926080909101359150565b803560ff81168114614a4e57600080fd5b60008060008060808587031215614c3357600080fd5b84359350614c4360208601614c0c565b93969395505050506040820135916060013590565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e081840152614c9460e084018a614ab3565b8381036040850152614ca6818a614ab3565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b81811015614cf857835183529284019291840191600101614cdc565b50909c9b505050505050505050505050565b634e487b7160e01b600052604160045260246000fd5b600060a08284031215614d3257600080fd5b60405160a0810181811067ffffffffffffffff82111715614d5557614d55614d0a565b604052614d6183614a37565b8152614d6f60208401614a37565b6020820152614d8060408401614a37565b6040820152614d9160608401614a37565b6060820152614da260808401614a37565b60808201529392505050565b60008060408385031215614dc157600080fd5b50508035926020909101359150565b600080600060608486031215614de557600080fd5b614dee84614a37565b95602085013595506040909401359392505050565b600060208284031215614e1557600080fd5b81358015158114610d5557600080fd5b82518152602080840151818301526040808501518184015260608086015181850152845160808501529184015160a084015283015160c083015282015160e08201526101008101610d55565b600080600080600080600060e0888a031215614e8c57600080fd5b614e9588614a37565b9650614ea360208901614a37565b95506040880135945060608801359350614ebf60808901614c0c565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215614eee57600080fd5b614ef783614a37565b9150614b7360208401614a37565b600181811c90821680614f1957607f821691505b60208210810361302357634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610d3e57610d3e614f39565b600060018201614f7457614f74614f39565b5060010190565b600082614f9857634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610d3e57610d3e614f39565b8082028115828204841417610d3e57610d3e614f39565b60007f80000000000000000000000000000000000000000000000000000000000000008203614ff857614ff8614f39565b5060000390565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351615037816017850160208801614a8f565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351615074816028840160208801614a8f565b01602801949350505050565b634e487b7160e01b600052603260045260246000fd5b6000816150a5576150a5614f39565b506000190190565b634e487b7160e01b600052602160045260246000fd5b80820182811260008312801582168215821617156150e3576150e3614f39565b505092915050565b601f821115610e0f57600081815260208120601f850160051c810160208610156151125750805b601f850160051c820191505b818110156151315782815560010161511e565b505050505050565b815167ffffffffffffffff81111561515357615153614d0a565b615167816151618454614f05565b846150eb565b602080601f83116001811461519c57600084156151845750858301515b600019600386901b1c1916600185901b178555615131565b600085815260208120601f198616915b828110156151cb578886015182559484019460019091019084016151ac565b50858210156151e95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603160045260246000fdfe52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5fa2646970667358221220e465519a44673980298dc2eaf49917df72f882bc9f3eb41e1be1396ebe45baf464736f6c63430008130033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061058b5760003560e01c806379cc6790116102e2578063a3f4df7e11610191578063bb997bac116100ee578063cbf50de7116100a2578063d547741f1161007c578063d547741f14610c78578063dd62ed3e14610c8b578063ffa1ad7414610cc457600080fd5b8063cbf50de714610bbf578063ced67f0c14610bd2578063d505accf14610c6557600080fd5b8063beb9716d116100d3578063beb9716d14610b6a578063c1eb713714610b7f578063ca15c87314610bac57600080fd5b8063bb997bac14610b44578063bcf47d3314610b5757600080fd5b8063b599134711610145578063b655c2761161012a578063b655c27614610784578063b7f8cf9b14610b26578063b937134314610b3a57600080fd5b8063b599134714610aff578063b5bfddea14610b1157600080fd5b8063a9059cbb11610176578063a9059cbb14610ad1578063ae0e890a14610ae4578063b22b784014610aec57600080fd5b8063a3f4df7e14610a82578063a457c2d714610abe57600080fd5b806391d148541161023f5780639d1b636c116101f3578063a08d5654116101d8578063a08d565414610a2a578063a167490314610a3d578063a217fddf14610a7a57600080fd5b80639d1b636c146109f05780639dc29fac14610a1757600080fd5b806395d89b411161022457806395d89b41146109c2578063998955d3146109ca5780639a9232f6146109dd57600080fd5b806391d148541461099c578063933cc28f146109af57600080fd5b80638a1d7fd0116102965780638f656d221161027b5780638f656d221461094f5780639010d07c1461096257806390acdb0b1461097557600080fd5b80638a1d7fd0146109205780638da5cb5b1461094757600080fd5b80638428cf83116102c75780638428cf83146108e857806384b0196e146108fb57806387dc51821461091657600080fd5b806379cc6790146108c25780637ecebe00146108d557600080fd5b806336568abe1161043e5780634a0bea121161039b578063651fd2681161034f578063674ca23711610334578063674ca237146108855780636ccf20d51461088d57806370a082311461089957600080fd5b8063651fd2681461085e57806366cc57021461087157600080fd5b8063519e2cee11610380578063519e2cee1461082457806352033ede14610837578063651e1f911461084b57600080fd5b80634a0bea12146108095780635099f99f1461081157600080fd5b806340c10f19116103f2578063435350b7116103d7578063435350b7146107d0578063460ab5ad146107e3578063472fa5cb146107f657600080fd5b806340c10f19146107aa57806342966c68146107bd57600080fd5b80633ab60582116104235780633ab60582146107715780633dc2ea6d146107845780633f7f9d941461079757600080fd5b806336568abe1461074b578063395093511461075e57600080fd5b806320c582be116104ec578063313ce567116104a05780633408e470116104855780633408e47014610716578063363ce28d1461071c5780633644e5151461074357600080fd5b8063313ce567146106fd578063318e24861461070c57600080fd5b8063248a9ca3116104d1578063248a9ca3146106c3578063276f1c41146106d65780632f2ff15d146106ea57600080fd5b806320c582be1461069b57806323b872dd146106b057600080fd5b8063095ea7b3116105435780630c05f82c116105285780630c05f82c1461065c57806318160ddd146106895780631cfd2d621461069157600080fd5b8063095ea7b31461061d5780630b622ab21461063057600080fd5b806303d999461161057457806303d99946146105ed57806306fdde0314610600578063073aa8a91461061557600080fd5b8063015556e81461059057806301ffc9a7146105ca575b600080fd5b6105b77f48aa5217d2a4f2ac85d1a5ec9f419374dbb5bddc4679bbd76492d009921fdb4581565b6040519081526020015b60405180910390f35b6105dd6105d8366004614a0d565b610d00565b60405190151581526020016105c1565b6105dd6105fb366004614a53565b610d44565b610608610d5c565b6040516105c19190614adf565b6105b7600281565b6105dd61062b366004614af2565b610dee565b61016454610644906001600160a01b031681565b6040516001600160a01b0390911681526020016105c1565b6105b761066a366004614b1c565b6001600160a01b0316600090815261019a602052604090206002015490565b6035546105b7565b6105b76101ce5481565b6106ae6106a9366004614a53565b610dfc565b005b6105dd6106be366004614a53565b610e14565b6105b76106d1366004614b37565b610e32565b61016654610644906001600160a01b031681565b6106ae6106f8366004614b50565b610e49565b604051601281526020016105c1565b6105b76101d05481565b466105b7565b6105b77facdbad329d06d82720ee092349725be8da5a9281f8818864bbd5f988ed7afbaf81565b6105b7610e57565b6106ae610759366004614b50565b610e66565b6105dd61076c366004614af2565b610e70565b6106ae61077f366004614af2565b610eaf565b6106ae610792366004614a53565b610e04565b6106ae6107a5366004614b1c565b610eb9565b6106ae6107b8366004614af2565b610f84565b6106ae6107cb366004614b37565b611024565b6106ae6107de366004614b1c565b611031565b6106ae6107f1366004614b7c565b611044565b6105dd610804366004614b1c565b611268565b6106ae611294565b6106ae61081f366004614af2565b6112a8565b6105b7610832366004614bbf565b6112b2565b61016354610644906001600160a01b031681565b6106ae610859366004614b37565b61139c565b6105b761086c366004614b1c565b611483565b61019954610644906001600160a01b031681565b6105b76114b8565b61019b5460ff166105dd565b6105b76108a7366004614b1c565b6001600160a01b031660009081526033602052604090205490565b6106ae6108d0366004614af2565b6114eb565b6105b76108e3366004614b1c565b6114f5565b6106446108f6366004614c1d565b611513565b61090361157b565b6040516105c19796959493929190614c58565b6105b76201518081565b6105b77fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe0681565b61064461163d565b6106ae61095d366004614d20565b611649565b610644610970366004614dae565b6117f3565b6105b77feaf92ff5b0a04171fb36712b8be1d9fddd92ac9de80f5202de5ca962a75c6a0681565b6105dd6109aa366004614b50565b61180c565b6105dd6109bd366004614b1c565b611837565b610608611863565b6105b76109d8366004614b1c565b611872565b6106ae6109eb366004614b1c565b6118aa565b6105b77ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d744681565b6106ae610a25366004614af2565b611a07565b6106ae610a38366004614dd0565b611a7e565b610a65610a4b366004614b1c565b6101d1602052600090815260409020805460019091015482565b604080519283526020830191909152016105c1565b6105b7600081565b6106086040518060400160405280601b81526020017f7665555344546f6b656e5f43726f7373436861696e546573746572000000000081525081565b6105dd610acc366004614af2565b611b68565b6105dd610adf366004614af2565b611c1d565b6106ae611c32565b6106ae610afa366004614e03565b611c64565b610162546001600160a01b0316610644565b6105b760008051602061521083398151915281565b61016554610644906001600160a01b031681565b6105b76101cf5481565b6106ae610b52366004614a53565b611d56565b6106ae610b65366004614b1c565b611d5e565b610162546105dd90600160a81b900460ff1681565b6105b7610b8d366004614b1c565b6001600160a01b0316600090815261019a602052604090206006015490565b6105b7610bba366004614b37565b611de3565b6106ae610bcd366004614af2565b611dfb565b610c57610be0366004614b1c565b61019a602090815260009182526040918290208251608080820185528254825260018301548285015260028301548286015260038301546060808401919091528551918201865260048401548252600584015494820194909452600683015494810194909452600790910154918301919091529082565b6040516105c1929190614e25565b6106ae610c73366004614e71565b611f29565b6106ae610c86366004614b50565b61208d565b6105b7610c99366004614edb565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b6106086040518060400160405280600581526020017f312e322e3000000000000000000000000000000000000000000000000000000081525081565b60006001600160e01b031982167f5a05180f000000000000000000000000000000000000000000000000000000001480610d3e5750610d3e82612097565b92915050565b6000610d518484846120fe565b5060015b9392505050565b606060368054610d6b90614f05565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9790614f05565b8015610de45780601f10610db957610100808354040283529160200191610de4565b820191906000526020600020905b815481529060010190602001808311610dc757829003601f168201915b5050505050905090565b600033610d518185856120fe565b610e04612257565b610e0f8383836122ee565b505050565b6000610e1f836124e2565b610e2a848484612586565b949350505050565b600081815260fe6020526040812060010154610d3e565b610e53828261259f565b5050565b6000610e6161260d565b905090565b610e538282612617565b3360008181526034602090815260408083206001600160a01b0387168452909152812054909190610d519082908690610eaa908790614f4f565b6120fe565b610e53828261269f565b610ec460003361180c565b158015610ef85750610ef67f48aa5217d2a4f2ac85d1a5ec9f419374dbb5bddc4679bbd76492d009921fdb453361180c565b155b15610f1d57604051630eabe6ed60e01b81523360048201526024015b60405180910390fd5b6001600160a01b03811660008181526101d16020908152604080832083815560010183905561019a9091529020600201547f564c58dd75b142d7ff24af2e91492e8cdc5ae3e3b1b9a06b03c0c42e5040ba8c9060405190815260200160405180910390a250565b610f8c6126a9565b610fb67ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d74463361180c565b15610fc557610e538282612703565b610fdd6000805160206152108339815191523361180c565b15610fec57610e538282612726565b610199546001600160a01b0316330361100957610e53828261279d565b604051637ddde23760e01b8152336004820152602401610f14565b61102e3382611a07565b50565b61103b600061282d565b61102e81612837565b61104c61290a565b60006001600160a01b038416158015906110755750610163546001600160a01b03858116911614155b156110ec5761016354604080516001600160a01b03928316815291861660208301527fa97b341f77b0e4c8c68d09d703bbf67a1eaae5d761fcbdbecaca033d2af5ebd4910160405180910390a161016380546001600160a01b0319166001600160a01b038616179055806110e881614f62565b9150505b6001600160a01b038316158015906111135750610164546001600160a01b03848116911614155b1561118a5761016454604080516001600160a01b03928316815291851660208301527ff9610b18e4a1d98238bc4ce7a524941ee9f274fbec476687c10d11f4a51c03af910160405180910390a161016480546001600160a01b0319166001600160a01b0385161790558061118681614f62565b9150505b6001600160a01b038216158015906111b15750610165546001600160a01b03838116911614155b156112285761016554604080516001600160a01b03928316815291841660208301527f062e7312f73faf31fdc8f23b4c09073a463f3fb2c9c344d40858f2a23c03a2fa910160405180910390a161016580546001600160a01b0319166001600160a01b0384161790558061122481614f62565b9150505b80600003611262576040517f366deafc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6000610d3e7fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe068361180c565b61129e600061282d565b6112a661298b565b565b610e5382826129de565b60006119016112bf61260d565b604080517f000000000000000000000000000000000000000000000000000000000000000060208201526001600160a01b03808b169282019290925290881660608201526080810187905260a0810186905260c0810185905260e0016040516020818303038152906040528051906020012060405160200161137b9392919060f09390931b7fffff0000000000000000000000000000000000000000000000000000000000001683526002830191909152602282015260420190565b60405160208183030381529060405280519060200120905095945050505050565b6113a760003361180c565b1580156113db57506113d97f48aa5217d2a4f2ac85d1a5ec9f419374dbb5bddc4679bbd76492d009921fdb453361180c565b155b156113fb57604051630eabe6ed60e01b8152336004820152602401610f14565b6002811015611440576040517f3c267a030000000000000000000000000000000000000000000000000000000081526004810182905260026024820152604401610f14565b6101d05460408051918252602082018390527f1b61a6a4f8b6de02a48b7c5cecf97f9268b776620828a056b6fbb3eeb4ebc61d910160405180910390a16101d055565b6001600160a01b038116600090815261019a60205260408120600381015460028201548254600190930154610d3e93906129e8565b6000806114c3612a5e565b9050806000036114d65760001991505090565b806101ce546114e59190614f7b565b91505090565b610e538282611a07565b6001600160a01b038116600090815260996020526040812054610d3e565b6040805160008082526020820180845287905260ff861692820192909252606081018490526080810183905260019060a0016020604051602081039080840390855afa158015611567573d6000803e3d6000fd5b5050604051601f1901519695505050505050565b6000606080600080600060606065546000801b14801561159b5750606654155b6115e75760405162461bcd60e51b815260206004820152601560248201527f4549503731323a20556e696e697469616c697a656400000000000000000000006044820152606401610f14565b6115ef612a7f565b6115f7612a8e565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b6000610e6181806117f3565b600054610100900460ff16158080156116695750600054600160ff909116105b806116835750303b158015611683575060005460ff166001145b6116f55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610f14565b6000805460ff191660011790558015611718576000805461ff0019166101001790555b61016254600160a01b900460ff1661175c576040517f5009898300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610162546001600160a01b031633146117a1576040517f396c907f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117aa82612a9d565b8015610e53576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600082815261013060205260408120610d559083612b8e565b600082815260fe602090815260408083206001600160a01b038516845290915281205460ff16610d55565b6000610d3e7ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d74468361180c565b606060378054610d6b90614f05565b6001600160a01b038116600090815261019a60205260408120600781015460068201546004830154600590930154610d3e93906129e8565b6118b560003361180c565b1580156118e957506118e77f48aa5217d2a4f2ac85d1a5ec9f419374dbb5bddc4679bbd76492d009921fdb453361180c565b155b1561190957604051630eabe6ed60e01b8152336004820152602401610f14565b611911612b9a565b6001600160a01b03811660009081526101d160205260409020600101544281111561197a576040517f34f3c9cf0000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260248101829052604401610f14565b6001600160a01b03821660009081526101d1602052604090205461199f908390612bee565b6001600160a01b03821660008181526101d16020908152604080832083815560010183905561019a9091529020600201547fa9fe2dca31a7e17f0b1fd319f0b30fb7eb9b6ccc77a73c8e833b20803a18f4739060405190815260200160405180910390a25050565b611a1033611268565b15611a1f57610e538282612d00565b611a376000805160206152108339815191523361180c565b15611a4657610e538282612d23565b610199546001600160a01b03163303611a6357610e538282612da8565b604051630c3373f760e21b8152336004820152602401610f14565b611a8960003361180c565b158015611abd5750611abb7f48aa5217d2a4f2ac85d1a5ec9f419374dbb5bddc4679bbd76492d009921fdb453361180c565b155b15611add57604051630eabe6ed60e01b8152336004820152602401610f14565b6001600160a01b038316600090815261019a602052604090206002015480831115611b3457604051637d5e3dfb60e11b81526001600160a01b03851660048201526024810184905260448101829052606401610f14565b611b3f848484612e30565b82158015611b4b575081155b156112625761126260008051602061521083398151915285612e85565b3360008181526034602090815260408083206001600160a01b038716845290915281205490919083811015611c055760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610f14565b611c1282868684036120fe565b506001949350505050565b6000611c28836124e2565b610d558383612ed1565b7facdbad329d06d82720ee092349725be8da5a9281f8818864bbd5f988ed7afbaf611c5c8161282d565b61102e612edf565b61016254600160a81b900460ff16151581151503611cae576040517f9f0e7d7f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8015611cc157611cbc61290a565b611d37565b611ceb7feaf92ff5b0a04171fb36712b8be1d9fddd92ac9de80f5202de5ca962a75c6a063361180c565b158015611d005750611cfe60003361180c565b155b15611d37576040517f180b21fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101628054911515600160a81b0260ff60a81b19909216919091179055565b610e04612f1d565b61016254600160a01b900460ff1615611da3576040517ff20d240500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61016280547fffffffffffffffffffffff000000000000000000000000000000000000000000166001600160a01b0390921691909117600160a01b179055565b600081815261013060205260408120610d3e90612f9e565b611e05600061282d565b611e0d612b9a565b611e2560008051602061521083398151915283612fa8565b6001600160a01b038216600090815261019a6020526040902060020154811015611ea0578181611e6e846001600160a01b0316600090815261019a602052604090206002015490565b604051637d5e3dfb60e11b81526001600160a01b03909316600484015260248301919091526044820152606401610f14565b6000611eaf6201518042614f4f565b60408051808201825284815260208082018481526001600160a01b03881660008181526101d184528590209351845590516001909301929092558251868152908101849052929350917f72d7cf1baaca85718c75c17aa2992dd9d7b93a9f3911be475af37078dad40a3e91015b60405180910390a2505050565b83421115611f795760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610f14565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888611fa88c613001565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061200382613029565b9050600061201382878787613071565b9050896001600160a01b0316816001600160a01b0316146120765760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610f14565b6120818a8a8a6120fe565b50505050505050505050565b610e538282613099565b60006001600160e01b031982167f7965db0b000000000000000000000000000000000000000000000000000000001480610d3e57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b0319831614610d3e565b6001600160a01b0383166121795760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610f14565b6001600160a01b0382166121f55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610f14565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b610164546001600160a01b031633148061227c5750610163546001600160a01b031633145b6112a65760405162461bcd60e51b815260206004820152603e60248201527f76655553443a2043616c6c6572206973206e656974686572205661756c744d6160448201527f6e616765724469616d6f6e64206e6f722053746162696c697479506f6f6c00006064820152608401610f14565b6001600160a01b03831661236a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610f14565b6001600160a01b0382166123e65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610f14565b6001600160a01b038316600090815260336020526040902054818110156124755760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610f14565b6001600160a01b0380851660008181526033602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906124d59086815260200190565b60405180910390a3611262565b306001600160a01b0382160361102e5760405162461bcd60e51b815260206004820152604260248201527f76655553443a2043616e6e6f74207472616e7366657220746f6b656e7320646960448201527f726563746c7920746f2074686520766555534420746f6b656e20636f6e74726160648201527f6374000000000000000000000000000000000000000000000000000000000000608482015260a401610f14565b600033612594858285613177565b611c128585856122ee565b7ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d74468214806125ec57507fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe0682145b15612603576125f961290a565b610e538282613182565b610e5382826132f3565b6000610e6161330f565b6001600160a01b03811633146126955760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610f14565b610e538282612e85565b610e538282613383565b61016254600160a81b900460ff166112a65760405162461bcd60e51b815260206004820152601a60248201527f76655553443a204d696e74696e672069732064697361626c65640000000000006044820152606401610f14565b806101ce60008282546127169190614f4f565b90915550610e53905082826134ee565b61273d60008051602061521083398151915261282d565b336127498184846134fe565b826001600160a01b0316816001600160a01b03167fe3bac5b9cc7159f3586d12aeb1bb8a028deddd03280eae86def97a83d380c97e8461278885611483565b6040805192835260208301919091520161224a565b610199546001600160a01b031633146127cb57604051637ddde23760e01b8152336004820152602401610f14565b610199546127e3906001600160a01b031683836134fe565b610199546040518281526001600160a01b038481169216907f75bf99f7db25a13871e188edd8a7e112d434444f9d952848f4c6ccd8ae05356a906020015b60405180910390a35050565b61102e8133612fa8565b610199546001600160a01b031661deac190161287f576040517f30e0e3ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166128bf576040517f9fabe1c100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6128c88161351a565b610199546001600160a01b031661deac190161102e576040517f78768828eab66fdac6a78204b2027bd64810f2cbf324c908f5f5999b9018d1d790600090a150565b610166546001600160a01b031633146112a65760405162461bcd60e51b815260206004820152602160248201527f76655553443a2043616c6c6572206973206e6f742074686520676f7665726e6f60448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610f14565b61299361356f565b61019b805460ff191690557f2cc50ebc4cffd414482dbc0d6ba24ba02e8e58e3174f391834ff08642aeabd87335b6040516001600160a01b03909116815260200160405180910390a1565b610e5382826135e8565b83838114610e2a57426129fe6201518085614f4f565b11612a0a575082610e2a565b42612a186201518085614f4f565b1115610e2a576000612a2a8442614f9d565b90506000612a388483614fb0565b612a429084614f4f565b9050858111612a515780612a53565b855b979650505050505050565b6000806101cf5412612a7257506101cf5490565b6101cf54610e6190614fc7565b606060678054610d6b90614f05565b606060688054610d6b90614f05565b600054610100900460ff16612b085760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610f14565b612b11816136a9565b612b1961398d565b600a6101d055612b386000805160206152108339815191526000613a00565b612b637facdbad329d06d82720ee092349725be8da5a9281f8818864bbd5f988ed7afbaf6000613a00565b61102e7f48aa5217d2a4f2ac85d1a5ec9f419374dbb5bddc4679bbd76492d009921fdb456000613a00565b6000610d558383613a53565b61019b5460ff16156112a65760405162461bcd60e51b815260206004820152601f60248201527f4272696467655061757361626c653a206272696467696e6720706175736564006044820152606401610f14565b80612bfc6002600019614f7b565b811115612c1c5760405163f596480960e01b815260040160405180910390fd5b6001600160a01b038316600090815261019a602052604081206002015490612c4385611483565b6001600160a01b038616600090815261019a602052604090206002018590559050612c6f848383613a7d565b6001600160a01b038616600090815261019a6020526040902060030155612c996201518085614f7b565b6001600160a01b038616600081815261019a60205260409081902060018101939093554290925590517f73a45fb9bdf4314eef462282cb306b703aff37ebf3d8365e1cb184b6e4f81e2690612cf19087815260200190565b60405180910390a25050505050565b806101ce6000828254612d139190614f9d565b90915550610e5390508282613ad4565b612d2b612b9a565b612d4260008051602061521083398151915261282d565b336001600160a01b0383168114612d5e57612d5e838284613177565b612d69818484613adc565b826001600160a01b0316816001600160a01b03167f23d4617ad0c271f3212274f0c9e7f4e0297eb842756610af3d94aee34be4b9ba8461278885611872565b610199546001600160a01b03163314612dd657604051630c3373f760e21b8152336004820152602401610f14565b61019954612dee906001600160a01b03168383613adc565b610199546040518281526001600160a01b038481169216907fce5305b40b7abd03afee067707e7d214b3e1eec39cdaa19123e9405bc5e60f3c90602001612821565b612e3a8383612bee565b612e448382613b00565b60408051838152602081018390526001600160a01b038516917f93f3bbfe8cfb354ec059175107653f49f6eb479a8622a7d83866ea015435c9449101611f1c565b6000805160206152108339815191528203612ec757612ea681600080612e30565b6001600160a01b03811660009081526101d160205260408120818155600101555b610e538282613c09565b600033610d518185856122ee565b612ee7612b9a565b61019b805460ff191660011790557faf0e7bc1034b70c2371e91aed036232c1e293fbb61b07a9b5f8d6b069b63e8096129c13390565b610164546001600160a01b031633146112a65760405162461bcd60e51b815260206004820152602660248201527f76655553443a2043616c6c6572206973206e6f74207468652053746162696c6960448201527f7479506f6f6c00000000000000000000000000000000000000000000000000006064820152608401610f14565b6000610d3e825490565b612fb2828261180c565b610e5357612fbf81613c2c565b612fca836020613c3e565b604051602001612fdb929190614fff565b60408051601f198184030181529082905262461bcd60e51b8252610f1491600401614adf565b6001600160a01b03811660009081526099602052604090208054600181018255905b50919050565b6000610d3e61303661260d565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b600080600061308287878787613e1f565b9150915061308f81613ee3565b5095945050505050565b7ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d7446820361310357604080516001600160a01b0383168152600060208201527f73d12e94857635af82b7d94f9c40b816942c33758efc90aee65a314c96415149910160405180910390a15b7fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe06820361316d57604080516001600160a01b0383168152600060208201527f19d9f64b5a71d1b38748c6d0200adb8687cbfdd74263adc72ffdf8d0b6225aba910160405180910390a15b610e538282614048565b610e0f838383614064565b7ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d74468203613203576131c16000805160206152108339815191528261180c565b156131fe57604051639c2b7ba760e01b81526001600160a01b03821660048201526000805160206152108339815191526024820152604401610f14565b6132e9565b60008051602061521083398151915282036132e9576132427ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d74468261180c565b1561329157604051639c2b7ba760e01b81526001600160a01b03821660048201527ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d74466024820152604401610f14565b61329a81611268565b156132e957604051639c2b7ba760e01b81526001600160a01b03821660048201527f50726f746f636f6c204275726e657200000000000000000000000000000000006024820152604401610f14565b610e5382826140f0565b6132fc82610e32565b6133058161282d565b610e0f8383613182565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61333a614113565b61334261416c565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6001600160a01b0382166133ff5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610f14565b6001600160a01b0382166000908152603360205260409020548181101561348e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610f14565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6134f66126a9565b6112a861419d565b613506612b9a565b613511838383614218565b610e0f81614272565b61019980546001600160a01b0319166001600160a01b0383169081179091556040519081527ffa2e15ea41196e438f0593ecdd6036acd83bdfcd39d627b77c17eab43f376a399060200160405180910390a150565b61019b5460ff166112a65760405162461bcd60e51b815260206004820152602360248201527f4272696467655061757361626c653a206272696467696e67206e6f742070617560448201527f73656400000000000000000000000000000000000000000000000000000000006064820152608401610f14565b6001600160a01b03821661363e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610f14565b80603560008282546136509190614f4f565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600054610100900460ff166137145760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610f14565b6137886040518060400160405280601481526020017f5661756c746564676520537461626c65636f696e0000000000000000000000008152506040518060400160405280600581526020017f7665555344000000000000000000000000000000000000000000000000000000815250614312565b6137c66040518060400160405280601481526020017f5661756c746564676520537461626c65636f696e000000000000000000000000815250614387565b6137ce614431565b610162805460ff60a81b1916600160a81b179055805161016380546001600160a01b039283166001600160a01b03199182161790915560208301516101648054918416918316919091179055604083015161016580549184169183169190911790556060830151610166805491909316911617905561386e7ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d74466000613a00565b6138997fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe066000613a00565b6138c47feaf92ff5b0a04171fb36712b8be1d9fddd92ac9de80f5202de5ca962a75c6a066000613a00565b6138d56000801b8260800151613182565b6139037ff8b2d55e902ff9299652e284033ed262811ead0a7a47c312d4ad5851174d74468260400151613182565b6139317fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe068260000151613182565b61395f7fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe068260200151613182565b61102e7fd8c9f0271204cf491da5dfc75eb319be1970bb5c9bcb0a84682f3f0ac1cffe068260400151613182565b600054610100900460ff166139f85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610f14565b6112a661449c565b6000613a0b83610e32565b600084815260fe6020526040808220600101859055519192508391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6000826000018281548110613a6a57613a6a615080565b9060005260206000200154905092915050565b60008084841115613ab357613a928585614f9d565b9050808311613aa2576000613aac565b613aac8184614f9d565b9150613acc565b613abd8486614f9d565b9050613ac98184614f4f565b91505b509392505050565b610eaf614514565b613ae4612b9a565b613aef83838361458f565b610e0f613afb82614fc7565b614272565b80613b0e6002600019614f7b565b811115613b2e5760405163f596480960e01b815260040160405180910390fd5b6001600160a01b038316600090815261019a602052604081206006015490613b5585611872565b6001600160a01b038616600090815261019a602052604090206006018590559050613b81848383613a7d565b6001600160a01b038616600090815261019a6020526040902060070155613bab6201518085614f7b565b6001600160a01b038616600081815261019a60205260409081902060058101939093554260049093019290925590517f1d819f0022f2d01a98a05488bb5993957bc7280bf8aac3550af10b75e84e9c5090612cf19087815260200190565b613c1382826145e9565b600082815261013060205260409020610e0f9082614650565b6060610d3e6001600160a01b03831660145b60606000613c4d836002614fb0565b613c58906002614f4f565b67ffffffffffffffff811115613c7057613c70614d0a565b6040519080825280601f01601f191660200182016040528015613c9a576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110613cd157613cd1615080565b60200101906001600160f81b031916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110613d1c57613d1c615080565b60200101906001600160f81b031916908160001a9053506000613d40846002614fb0565b613d4b906001614f4f565b90505b6001811115613dd0577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110613d8c57613d8c615080565b1a60f81b828281518110613da257613da2615080565b60200101906001600160f81b031916908160001a90535060049490941c93613dc981615096565b9050613d4e565b508315610d555760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610f14565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613e565750600090506003613eda565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613eaa573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613ed357600060019250925050613eda565b9150600090505b94509492505050565b6000816004811115613ef757613ef76150ad565b03613eff5750565b6001816004811115613f1357613f136150ad565b03613f605760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610f14565b6002816004811115613f7457613f746150ad565b03613fc15760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610f14565b6003816004811115613fd557613fd56150ad565b0361102e5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610f14565b61405182610e32565b61405a8161282d565b610e0f8383612e85565b6001600160a01b03838116600090815260346020908152604080832093861683529290522054600019811461126257818110156140e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610f14565b61126284848484036120fe565b6140fa8282614665565b600082815261013060205260409020610e0f90826146eb565b60008061411e612a7f565b805190915015614135578051602090910120919050565b60655480156141445792915050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709250505090565b600080614177612a8e565b80519091501561418e578051602090910120919050565b60665480156141445792915050565b6141a633611837565b6112a65760405162461bcd60e51b815260206004820152602660248201527f7665555344546f6b656e3a2043616c6c6572206973206e6f742056616c69642060448201527f4d696e74657200000000000000000000000000000000000000000000000000006064820152608401610f14565b610199546001600160a01b0384811691161461426857600061423984611483565b90508181101561425c576040516305b4215560e11b815260040160405180910390fd5b6142668483614700565b505b610e0f82826129de565b806101cf600082825461428591906150c3565b9091555050600081138061429d575060006101cf5412155b156142a55750565b60006142af6114b8565b90506101d054811015610e53576101d0546101ce546101cf546040517f0515664b00000000000000000000000000000000000000000000000000000000815260048101939093526024830184905260448301919091526064820152608401610f14565b600054610100900460ff1661437d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610f14565b610e538282614758565b600054610100900460ff166143f25760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610f14565b61102e816040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152506147dc565b600054610100900460ff166112a65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610f14565b600054610100900460ff166145075760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610f14565b61019b805460ff19169055565b61451d33611268565b6112a65760405162461bcd60e51b815260206004820152602c60248201527f76655553443a2043616c6c6572206973206e6f7420612076616c69642070726f60448201527f746f636f6c206275726e657200000000000000000000000000000000000000006064820152608401610f14565b610199546001600160a01b038481169116146145df5760006145b084611872565b9050818110156145d3576040516305b4215560e11b815260040160405180910390fd5b6145dd848361486f565b505b610e0f828261269f565b6145f3828261180c565b15610e5357600082815260fe602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610d55836001600160a01b0384166148cb565b61466f828261180c565b610e5357600082815260fe602090815260408083206001600160a01b03851684529091529020805460ff191660011790556146a73390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610d55836001600160a01b0384166149be565b600061470b83611483565b6001600160a01b038416600090815261019a6020526040902042905590506147338282614f9d565b6001600160a01b03909316600090815261019a60205260409020600301929092555050565b600054610100900460ff166147c35760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610f14565b60366147cf8382615139565b506037610e0f8282615139565b600054610100900460ff166148475760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610f14565b60676148538382615139565b5060686148608282615139565b50506000606581905560665550565b600061487a83611872565b6001600160a01b038416600090815261019a602052604090204260049091015590506148a68282614f9d565b6001600160a01b03909316600090815261019a60205260409020600701929092555050565b600081815260018301602052604081205480156149b45760006148ef600183614f9d565b855490915060009061490390600190614f9d565b905081811461496857600086600001828154811061492357614923615080565b906000526020600020015490508087600001848154811061494657614946615080565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080614979576149796151f9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610d3e565b6000915050610d3e565b6000818152600183016020526040812054614a0557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610d3e565b506000610d3e565b600060208284031215614a1f57600080fd5b81356001600160e01b031981168114610d5557600080fd5b80356001600160a01b0381168114614a4e57600080fd5b919050565b600080600060608486031215614a6857600080fd5b614a7184614a37565b9250614a7f60208501614a37565b9150604084013590509250925092565b60005b83811015614aaa578181015183820152602001614a92565b50506000910152565b60008151808452614acb816020860160208601614a8f565b601f01601f19169290920160200192915050565b602081526000610d556020830184614ab3565b60008060408385031215614b0557600080fd5b614b0e83614a37565b946020939093013593505050565b600060208284031215614b2e57600080fd5b610d5582614a37565b600060208284031215614b4957600080fd5b5035919050565b60008060408385031215614b6357600080fd5b82359150614b7360208401614a37565b90509250929050565b600080600060608486031215614b9157600080fd5b614b9a84614a37565b9250614ba860208501614a37565b9150614bb660408501614a37565b90509250925092565b600080600080600060a08688031215614bd757600080fd5b614be086614a37565b9450614bee60208701614a37565b94979496505050506040830135926060810135926080909101359150565b803560ff81168114614a4e57600080fd5b60008060008060808587031215614c3357600080fd5b84359350614c4360208601614c0c565b93969395505050506040820135916060013590565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e081840152614c9460e084018a614ab3565b8381036040850152614ca6818a614ab3565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b81811015614cf857835183529284019291840191600101614cdc565b50909c9b505050505050505050505050565b634e487b7160e01b600052604160045260246000fd5b600060a08284031215614d3257600080fd5b60405160a0810181811067ffffffffffffffff82111715614d5557614d55614d0a565b604052614d6183614a37565b8152614d6f60208401614a37565b6020820152614d8060408401614a37565b6040820152614d9160608401614a37565b6060820152614da260808401614a37565b60808201529392505050565b60008060408385031215614dc157600080fd5b50508035926020909101359150565b600080600060608486031215614de557600080fd5b614dee84614a37565b95602085013595506040909401359392505050565b600060208284031215614e1557600080fd5b81358015158114610d5557600080fd5b82518152602080840151818301526040808501518184015260608086015181850152845160808501529184015160a084015283015160c083015282015160e08201526101008101610d55565b600080600080600080600060e0888a031215614e8c57600080fd5b614e9588614a37565b9650614ea360208901614a37565b95506040880135945060608801359350614ebf60808901614c0c565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215614eee57600080fd5b614ef783614a37565b9150614b7360208401614a37565b600181811c90821680614f1957607f821691505b60208210810361302357634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610d3e57610d3e614f39565b600060018201614f7457614f74614f39565b5060010190565b600082614f9857634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610d3e57610d3e614f39565b8082028115828204841417610d3e57610d3e614f39565b60007f80000000000000000000000000000000000000000000000000000000000000008203614ff857614ff8614f39565b5060000390565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351615037816017850160208801614a8f565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351615074816028840160208801614a8f565b01602801949350505050565b634e487b7160e01b600052603260045260246000fd5b6000816150a5576150a5614f39565b506000190190565b634e487b7160e01b600052602160045260246000fd5b80820182811260008312801582168215821617156150e3576150e3614f39565b505092915050565b601f821115610e0f57600081815260208120601f850160051c810160208610156151125750805b601f850160051c820191505b818110156151315782815560010161511e565b505050505050565b815167ffffffffffffffff81111561515357615153614d0a565b615167816151618454614f05565b846150eb565b602080601f83116001811461519c57600084156151845750858301515b600019600386901b1c1916600185901b178555615131565b600085815260208120601f198616915b828110156151cb578886015182559484019460019091019084016151ac565b50858210156151e95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603160045260246000fdfe52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5fa2646970667358221220e465519a44673980298dc2eaf49917df72f882bc9f3eb41e1be1396ebe45baf464736f6c63430008130033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
