{
  "_format": "hh-sol-artifact-1",
  "contractName": "VenusERC4626",
  "sourceName": "contracts/ERC4626/VenusERC4626.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "ERC4626__DepositMoreThanMax",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC4626__MintMoreThanMax",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC4626__RedeemMoreThanMax",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC4626__WithdrawMoreThanMax",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "operation",
          "type": "string"
        }
      ],
      "name": "ERC4626__ZeroAmount",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "loopsLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "requiredLoops",
          "type": "uint256"
        }
      ],
      "name": "MaxLoopsLimitExceeded",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "calledContract",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "methodSignature",
          "type": "string"
        }
      ],
      "name": "Unauthorized",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "errorCode",
          "type": "uint256"
        }
      ],
      "name": "VenusERC4626__VenusError",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ZeroAddressNotAllowed",
      "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": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "rewardToken",
          "type": "address"
        }
      ],
      "name": "ClaimRewards",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "assets",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        }
      ],
      "name": "Deposit",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldMaxLoopsLimit",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newmaxLoopsLimit",
          "type": "uint256"
        }
      ],
      "name": "MaxLoopsLimitUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldAccessControlManager",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newAccessControlManager",
          "type": "address"
        }
      ],
      "name": "NewAccessControlManager",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferStarted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "oldRecipient",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newRecipient",
          "type": "address"
        }
      ],
      "name": "RewardRecipientUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "SweepToken",
      "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": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "assets",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        }
      ],
      "name": "Withdraw",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "acceptOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "accessControlManager",
      "outputs": [
        {
          "internalType": "contract IAccessControlManagerV8",
          "name": "",
          "type": "address"
        }
      ],
      "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": [],
      "name": "asset",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claimRewards",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "comptroller",
      "outputs": [
        {
          "internalType": "contract IComptroller",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        }
      ],
      "name": "convertToAssets",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "assets",
          "type": "uint256"
        }
      ],
      "name": "convertToShares",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "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": [
        {
          "internalType": "uint256",
          "name": "assets",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "deposit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "vToken_",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "accessControlManager_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "rewardRecipient_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "loopsLimit_",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "vaultOwner_",
          "type": "address"
        }
      ],
      "name": "initialize2",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "maxDeposit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxLoopsLimit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "maxMint",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "maxRedeem",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "maxWithdraw",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "mint",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendingOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "assets",
          "type": "uint256"
        }
      ],
      "name": "previewDeposit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        }
      ],
      "name": "previewMint",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        }
      ],
      "name": "previewRedeem",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "assets",
          "type": "uint256"
        }
      ],
      "name": "previewWithdraw",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "redeem",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rewardRecipient",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "accessControlManager_",
          "type": "address"
        }
      ],
      "name": "setAccessControlManager",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "loopsLimit",
          "type": "uint256"
        }
      ],
      "name": "setMaxLoopsLimit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newRecipient",
          "type": "address"
        }
      ],
      "name": "setRewardRecipient",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20Upgradeable",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "sweepToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalAssets",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "vToken",
      "outputs": [
        {
          "internalType": "contract VToken",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "assets",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "withdraw",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5061001961001e565b610105565b600054610100900460ff161561004f5760405162461bcd60e51b8152600401610046906100a5565b60405180910390fd5b60005460ff908116146100a3576000805460ff191660ff9081179091556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989161009a916100f6565b60405180910390a15b565b602080825281016100f081602781527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469602082015266616c697a696e6760c81b604082015260600190565b92915050565b60ff82168152602081016100f0565b614951806101146000396000f3fe608060405234801561001057600080fd5b50600436106102745760003560e01c806380d45a2d11610151578063be26317e116100c3578063d905777e11610087578063d905777e14610543578063dd62ed3e14610556578063e30c397814610569578063e521136f1461057a578063ef8b30f71461051d578063f2fde38b1461058d57600080fd5b8063be26317e146104ed578063c4d66de8146104f7578063c63d75b61461050a578063c6e6f5921461051d578063ce96cb771461053057600080fd5b8063a457c2d711610115578063a457c2d71461047d578063a9059cbb14610490578063b3d7f6b9146104a3578063b460af94146104b6578063b4a0bdf3146104c9578063ba087652146104da57600080fd5b806380d45a2d1461042a5780638da5cb5b1461043d57806394bf804d1461044e57806395d89b41146104615780639bb1a99c1461046957600080fd5b8063372500ab116101ea5780634cdad506116101ae5780634cdad506146102ac5780635fe3b567146103bd5780636e553f65146103de57806370a08231146103f1578063715018a61461041a57806379ba50971461042257600080fd5b8063372500ab1461036b57806338d52e0f146103735780633950935114610384578063402d267d1461039757806341e11a5a146103aa57600080fd5b80630e32cb861161023c5780630e32cb86146102f257806317f333401461030757806318160ddd146103285780631be195601461033057806323b872dd14610343578063313ce5671461035657600080fd5b806301e1d1141461027957806306fdde031461029757806307a2d13a146102ac578063095ea7b3146102bf5780630a28a477146102df575b600080fd5b6102816105a0565b60405161028e91906134b9565b60405180910390f35b61029f6106ae565b60405161028e919061351d565b6102816102ba366004613546565b610740565b6102d26102cd36600461358c565b610753565b60405161028e91906135d1565b6102816102ed366004613546565b61076b565b6103056103003660046135df565b610778565b005b6101935461031b906001600160a01b031681565b60405161028e9190613609565b603554610281565b61030561033e366004613636565b61078c565b6102d2610351366004613657565b61087e565b61035e6108a4565b60405161028e91906136b0565b6103056108c5565b6065546001600160a01b031661031b565b6102d261039236600461358c565b610bc7565b6102816103a53660046135df565b610be9565b6103056103b83660046136be565b610e21565b610192546103d1906001600160a01b031681565b60405161028e9190613764565b6102816103ec366004613772565b610ef3565b6102816103ff3660046135df565b6001600160a01b031660009081526033602052604090205490565b610305611038565b61030561104c565b610305610438366004613546565b611081565b6097546001600160a01b031661031b565b61028161045c366004613772565b6110c8565b61029f6111e7565b610191546103d1906001600160a01b031681565b6102d261048b36600461358c565b6111f6565b6102d261049e36600461358c565b61123e565b6102816104b1366004613546565b61124c565b6102816104c43660046137a5565b611259565b60fb546001600160a01b03166103d1565b6102816104e83660046137a5565b61136b565b61028161012d5481565b6103056105053660046135df565b611494565b6102816105183660046135df565b611698565b61028161052b366004613546565b6116a7565b61028161053e3660046135df565b6116b4565b6102816105513660046135df565b61188c565b6102816105643660046137eb565b611a6e565b60c9546001600160a01b031661031b565b6103056105883660046135df565b611a99565b61030561059b3660046135df565b611ae0565b6000670de0b6b3a764000061019160009054906101000a90046001600160a01b03166001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106239190613818565b610191546040516370a0823160e01b81526001600160a01b03909116906370a0823190610654903090600401613609565b602060405180830381865afa158015610671573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106959190613818565b61069f919061384f565b6106a99190613884565b905090565b6060603680546106bd906138ae565b80601f01602080910402602001604051908101604052809291908181526020018280546106e9906138ae565b80156107365780601f1061070b57610100808354040283529160200191610736565b820191906000526020600020905b81548152906001019060200180831161071957829003601f168201915b5050505050905090565b600061074d826000611b51565b92915050565b600033610761818585611b92565b5060019392505050565b600061074d826001611c39565b610780611c71565b61078981611c9b565b50565b610794611c71565b6040516370a0823160e01b81526000906001600160a01b038316906370a08231906107c3903090600401613609565b602060405180830381865afa1580156107e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108049190613818565b9050801561087a5760006108206097546001600160a01b031690565b905061082d838284611d14565b806001600160a01b0316836001600160a01b03167f6d25be279134f4ecaa4770aff0c3d916d9e7c5ef37b65ed95dbdba411f5d54d58460405161087091906134b9565b60405180910390a3505b5050565b60003361088c858285611d6f565b610897858585611db9565b60019150505b9392505050565b60006108ae611ea9565b6065546106a99190600160a01b900460ff166138da565b610192546101915461019354604080516361252fd160e01b815290516001600160a01b0394851694938416939092169160009185916361252fd19160048082019286929091908290030181865afa158015610924573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261094c9190810190613a09565b90506109588151611f29565b60005b8151811015610bc057600082828151811061097857610978613a44565b602002602001015190506000816001600160a01b031663f7c618c16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e69190613a5a565b60408051600180825281830190925291925060009190602080830190803683370190505090508681600081518110610a2057610a20613a44565b6001600160a01b039283166020918202929092010152604051624caeb160e41b8152908416906304caeb1090610a5c9030908590600401613ad8565b600060405180830381600087803b158015610a7657600080fd5b505af1158015610a8a573d6000803e3d6000fd5b50506040516370a0823160e01b8152600092506001600160a01b03851691506370a0823190610abd903090600401613609565b602060405180830381865afa158015610ada573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afe9190613818565b90508015610b6f57610b11838883611d14565b6040516305bebb3b60e21b81526001600160a01b038816906316faecec90610b42908c908790600290600401613b3c565b600060405180830381600087803b158015610b5c57600080fd5b505af1925050508015610b6d575060015b505b826001600160a01b03167fba56c3ab1f752776eef60db959a4e6b643e89595315edbbd945e104623fa03ba82604051610ba891906134b9565b60405180910390a250506001909201915061095b9050565b5050505050565b600033610761818585610bda8383611a6e565b610be49190613b64565b611b92565b6101925461019154604051630742d14b60e51b81526000926001600160a01b039081169263e85a296092610c2592909116908590600401613ba5565b602060405180830381865afa158015610c42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c669190613bd3565b15610c7357506000919050565b61019254610191546040516302c3bcbb60e01b81526000926001600160a01b03908116926302c3bcbb92610cad9290911690600401613609565b602060405180830381865afa158015610cca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cee9190613818565b90506000670de0b6b3a764000061019160009054906101000a90046001600160a01b03166001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d739190613818565b61019160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610deb9190613818565b610df5919061384f565b610dff9190613884565b9050808211610e0f576000610e19565b610e198183613bf4565b949350505050565b600054600290610100900460ff16158015610e43575060005460ff8083169116105b610e685760405162461bcd60e51b8152600401610e5f90613c55565b60405180910390fd5b6000805461ffff191660ff831617610100179055610e8582611f54565b610e8e85611f7b565b610e9783611fb3565b610ea084612010565b610ea982612077565b6000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890610ee49083906136b0565b60405180910390a15050505050565b6000610efd612090565b610f0682611f54565b61019160009054906101000a90046001600160a01b03166001600160a01b031663a6afed956040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610f5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f809190613818565b5082600003610fa2576040516304dd32c560e11b8152600401610e5f90613c86565b610fab82610be9565b831115610fcb576040516326ac6ee160e01b815260040160405180910390fd5b6000610fd6846116a7565b905080600003610ff9576040516304dd32c560e11b8152600401610e5f90613c86565b600061100460355490565b9050611012338587856120bb565b60008161101e60355490565b6110289190613bf4565b935050505061074d600161015f55565b611040611c71565b61104a6000612077565b565b60c95433906001600160a01b031681146110785760405162461bcd60e51b8152600401610e5f90613cdc565b61078981612077565b6110bf6040518060400160405280601981526020017f7365744d61784c6f6f70734c696d69742875696e74323536290000000000000081525061245f565b61078981611fb3565b60006110d2612090565b6110db82611f54565b61019160009054906101000a90046001600160a01b03166001600160a01b031663a6afed956040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611131573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111559190613818565b5082600003611177576040516304dd32c560e11b8152600401610e5f90613d07565b61118082611698565b8311156111a0576040516340868f7960e01b815260040160405180910390fd5b60006111ab8461124c565b9050806000036111ce576040516304dd32c560e11b8152600401610e5f90613d07565b6111da338483876120bb565b905061074d600161015f55565b6060603780546106bd906138ae565b600033816112048286611a6e565b9050838110156112265760405162461bcd60e51b8152600401610e5f90613d59565b6112338286868403611b92565b506001949350505050565b600033610761818585611db9565b600061074d826001611b51565b6000611263612090565b61126c83611f54565b61127582611f54565b61019160009054906101000a90046001600160a01b03166001600160a01b031663a6afed956040518163ffffffff1660e01b81526004016020604051808303816000875af11580156112cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ef9190613818565b5083600003611311576040516304dd32c560e11b8152600401610e5f90613d88565b61131a826116b4565b84111561133a5760405163e9ed951560e01b815260040160405180910390fd5b600080611346866124f9565b9150915061135d6113543390565b868685856127ed565b91505061089d600161015f55565b6000611375612090565b61137e83611f54565b61138782611f54565b61019160009054906101000a90046001600160a01b03166001600160a01b031663a6afed956040518163ffffffff1660e01b81526004016020604051808303816000875af11580156113dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114019190613818565b5083600003611423576040516304dd32c560e11b8152600401610e5f90613db5565b61142c8261188c565b84111561144c57604051638890247960e01b815260040160405180910390fd5b600061145785612890565b90508060000361147a576040516304dd32c560e11b8152600401610e5f90613db5565b61148733858584896127ed565b905061089d600161015f55565b600054610100900460ff16158080156114b45750600054600160ff909116105b806114ce5750303b1580156114ce575060005460ff166001145b6114ea5760405162461bcd60e51b8152600401610e5f90613c55565b6000805460ff19166001179055801561150d576000805461ff0019166101001790555b61151682611f54565b61019180546001600160a01b0319166001600160a01b03841690811790915560408051635fe3b56760e01b81529051635fe3b567916004808201926020929091908290030181865afa158015611570573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115949190613a5a565b61019280546001600160a01b0319166001600160a01b039283161790556101915460408051636f307dc360e01b815290516000939290921691636f307dc3916004808201926020929091908290030181865afa1580156115f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161c9190613dd0565b905061163861162a82612ad3565b61163383612b61565b612bd9565b61164181612c0a565b611649612c3a565b50801561087a576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989061168c90600190613e05565b60405180910390a15050565b600061074d61052b6000610be9565b600061074d826000611c39565b6101925461019154604051630742d14b60e51b81526000926001600160a01b039081169263e85a2960926116f19290911690600190600401613ba5565b602060405180830381865afa15801561170e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117329190613bd3565b1561173f57506000919050565b6101915460408051631d8e90d160e11b815290516000926001600160a01b031691633b1d21a29160048083019260209291908290030181865afa15801561178a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ae9190613818565b9050600061019160009054906101000a90046001600160a01b03166001600160a01b0316638f840ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182a9190613818565b905060006118506102ba866001600160a01b031660009081526033602052604090205490565b90508183101561186557506000949350505050565b60006118718385613bf4565b90508181106118805781611882565b805b9695505050505050565b6101925461019154604051630742d14b60e51b81526000926001600160a01b039081169263e85a2960926118c99290911690600190600401613ba5565b602060405180830381865afa1580156118e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190a9190613bd3565b1561191757506000919050565b6101915460408051631d8e90d160e11b815290516000926001600160a01b031691633b1d21a29160048083019260209291908290030181865afa158015611962573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119869190613818565b9050600061019160009054906101000a90046001600160a01b03166001600160a01b0316638f840ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a029190613818565b905080821015611a16575060009392505050565b6000611a228284613bf4565b90506000611a2f826116a7565b90506000611a52876001600160a01b031660009081526033602052604090205490565b9050808210611a615780611a63565b815b979650505050505050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b611ad76040518060400160405280601b81526020017f736574526577617264526563697069656e74286164647265737329000000000081525061245f565b61078981612010565b611ae8611c71565b60c980546001600160a01b0383166001600160a01b03199091168117909155611b196097546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b600061089d611b5e6105a0565b611b69906001613b64565b611b71611ea9565b611b7c90600a613f21565b603554611b899190613b64565b85919085612c69565b6001600160a01b038316611bb85760405162461bcd60e51b8152600401610e5f90613f77565b6001600160a01b038216611bde5760405162461bcd60e51b8152600401610e5f90613fc6565b6001600160a01b0380841660008181526034602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108709085906134b9565b600061089d611c46611ea9565b611c5190600a613f21565b603554611c5e9190613b64565b611c666105a0565b611b89906001613b64565b6097546001600160a01b0316331461104a5760405162461bcd60e51b8152600401610e5f90614008565b6001600160a01b038116611cc15760405162461bcd60e51b8152600401610e5f9061405a565b60fb80546001600160a01b038381166001600160a01b03198316179092556040519116907f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa09061168c908390859061406a565b611d6a8363a9059cbb60e01b8484604051602401611d33929190614085565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612cc6565b505050565b6000611d7b8484611a6e565b90506000198114611db35781811015611da65760405162461bcd60e51b8152600401610e5f906140d4565b611db38484848403611b92565b50505050565b6001600160a01b038316611ddf5760405162461bcd60e51b8152600401610e5f90614126565b6001600160a01b038216611e055760405162461bcd60e51b8152600401610e5f90614176565b6001600160a01b03831660009081526033602052604090205481811015611e3e5760405162461bcd60e51b8152600401610e5f906141c9565b6001600160a01b0380851660008181526033602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611e9c9086906134b9565b60405180910390a3611db3565b6000611ebd6065546001600160a01b031690565b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1e91906141ed565b6106a990601261420e565b61012d548111156107895761012d548160405163792bfb1b60e11b8152600401610e5f92919061422b565b6001600160a01b038116610789576040516342bcdf7f60e11b815260040160405180910390fd5b600054610100900460ff16611fa25760405162461bcd60e51b8152600401610e5f90614281565b611faa612d58565b61078981612d87565b61012d548111611fd55760405162461bcd60e51b8152600401610e5f906142d0565b61012d8054908290556040517fc2d09fef144f7c8a86f71ea459f8fc17f675768eb1ae369cbd77fb31d467aafa9061168c908390859061422b565b61201981611f54565b610193546040516001600160a01b038084169216907fc8c11bb97ac2ffa10ce2e2a98f4c1fd8df84cfa2e1a15e013ed2383ab1f527ad90600090a361019380546001600160a01b0319166001600160a01b0392909216919091179055565b60c980546001600160a01b031916905561078981612dae565b600261015f54036120b35760405162461bcd60e51b8152600401610e5f90614314565b600261015f55565b60006120cf6065546001600160a01b031690565b6001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016120fa9190613609565b602060405180830381865afa158015612117573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213b9190613818565b610191546040516370a0823160e01b81529192506000916001600160a01b03909116906370a0823190612172903090600401613609565b602060405180830381865afa15801561218f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b39190613818565b90506121d26121ca6065546001600160a01b031690565b873087612e00565b6000826121e76065546001600160a01b031690565b6001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016122129190613609565b602060405180830381865afa15801561222f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122539190613818565b61225d9190613bf4565b905061226881612e21565b610191546040516370a0823160e01b815260009184916001600160a01b03909116906370a082319061229e903090600401613609565b602060405180830381865afa1580156122bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122df9190613818565b6122e99190613bf4565b90508060000361230c576040516304dd32c560e11b8152600401610e5f90614358565b6000670de0b6b3a764000061019160009054906101000a90046001600160a01b03166001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa15801561236b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061238f9190613818565b612399908461384f565b6123a39190613884565b905060006123f26123b2611ea9565b6123bd90600a613f21565b6035546123ca9190613b64565b836123d36105a0565b6123de906001613b64565b6123e89190613bf4565b8491906000612c69565b90506123fe8982612eed565b886001600160a01b03168a6001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78a8460405161244392919061422b565b60405180910390a350505050505050505050565b600161015f55565b60fb546040516318c5e8ab60e01b81526000916001600160a01b0316906318c5e8ab906124929033908690600401614368565b602060405180830381865afa1580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d39190613bd3565b90508061087a57333083604051634a3fa29360e01b8152600401610e5f93929190614388565b60008060006125106065546001600160a01b031690565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016125409190613609565b602060405180830381865afa15801561255d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125819190613818565b610191546040516370a0823160e01b81529192506000916001600160a01b03909116906370a08231906125b8903090600401613609565b602060405180830381865afa1580156125d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f99190613818565b6101915460405163852a12e360e01b81529192506000916001600160a01b039091169063852a12e390612630908a906004016134b9565b6020604051808303816000875af115801561264f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126739190613818565b905080156126965780604051630864657760e21b8152600401610e5f91906134b9565b6040516370a0823160e01b815283906001600160a01b038616906370a08231906126c4903090600401613609565b602060405180830381865afa1580156126e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127059190613818565b61270f9190613bf4565b610191546040516370a0823160e01b81529197506000916001600160a01b03909116906370a0823190612746903090600401613609565b602060405180830381865afa158015612763573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127879190613818565b6127919084613bf4565b9050806000036127b4576040516304dd32c560e11b8152600401610e5f906143e7565b6127e16127bf611ea9565b6127ca90600a613f21565b6035546127d79190613b64565b8290856001612c69565b95505050505050915091565b826001600160a01b0316856001600160a01b03161461281157612811838683611d6f565b61281b8382612f83565b606554612832906001600160a01b03168584611d14565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db858560405161288192919061422b565b60405180910390a45050505050565b6000806128a56065546001600160a01b031690565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016128d59190613609565b602060405180830381865afa1580156128f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129169190613818565b610191546040516370a0823160e01b81529192506000916129ba916001600160a01b0316906370a082319061294f903090600401613609565b602060405180830381865afa15801561296c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129909190613818565b612998611ea9565b6129a390600a613f21565b6035546129b09190613b64565b8791906000612c69565b6101915460405163db006a7560e01b81529192506000916001600160a01b039091169063db006a75906129f19085906004016134b9565b6020604051808303816000875af1158015612a10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a349190613818565b90508015612a575780604051630864657760e21b8152600401610e5f91906134b9565b6040516370a0823160e01b81526000906001600160a01b038616906370a0823190612a86903090600401613609565b602060405180830381865afa158015612aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac79190613818565b9050611a638482613bf4565b6060816001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015612b13573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b3b9190810190614482565b604051602001612b4b91906144df565b6040516020818303038152906040529050919050565b6060816001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015612ba1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612bc99190810190614482565b604051602001612b4b919061450e565b600054610100900460ff16612c005760405162461bcd60e51b8152600401610e5f90614281565b61087a828261303a565b600054610100900460ff16612c315760405162461bcd60e51b8152600401610e5f90614281565b6107898161307a565b600054610100900460ff16612c615760405162461bcd60e51b8152600401610e5f90614281565b61104a6130ff565b600080612c77868686613126565b90506001836002811115612c8d57612c8d613af8565b148015612caa575060008480612ca557612ca561386e565b868809115b15612cbd57612cba600182613b64565b90505b95945050505050565b6000612d1b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166131e89092919063ffffffff16565b9050805160001480612d3c575080806020019051810190612d3c9190613bd3565b611d6a5760405162461bcd60e51b8152600401610e5f9061456b565b600054610100900460ff16612d7f5760405162461bcd60e51b8152600401610e5f90614281565b61104a6131f7565b600054610100900460ff166107805760405162461bcd60e51b8152600401610e5f90614281565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611db3846323b872dd60e01b858585604051602401611d339392919061457b565b61019154612e55906001600160a01b031682612e456065546001600160a01b031690565b6001600160a01b03169190613227565b6101915460405163140e25ad60e31b81526000916001600160a01b03169063a0712d6890612e879085906004016134b9565b6020604051808303816000875af1158015612ea6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eca9190613818565b9050801561087a5780604051630864657760e21b8152600401610e5f91906134b9565b6001600160a01b038216612f135760405162461bcd60e51b8152600401610e5f906145d7565b8060356000828254612f259190613b64565b90915550506001600160a01b038216600081815260336020526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612f779085906134b9565b60405180910390a35050565b6001600160a01b038216612fa95760405162461bcd60e51b8152600401610e5f90614625565b6001600160a01b03821660009081526033602052604090205481811015612fe25760405162461bcd60e51b8152600401610e5f90614674565b6001600160a01b0383166000818152603360205260408082208585039055603580548690039055519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108709086906134b9565b600054610100900460ff166130615760405162461bcd60e51b8152600401610e5f90614281565b603661306d8382614715565b506037611d6a8282614715565b600054610100900460ff166130a15760405162461bcd60e51b8152600401610e5f90614281565b6000806130ad836132db565b91509150816130bd5760126130bf565b805b606580546001600160a01b039095166001600160a01b031960ff93909316600160a01b02929092166001600160a81b031990951694909417179092555050565b600054610100900460ff166124575760405162461bcd60e51b8152600401610e5f90614281565b6000808060001985870985870292508281108382030391505080600003613160578382816131565761315661386e565b049250505061089d565b80841161317f5760405162461bcd60e51b8152600401610e5f90614805565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6060610e1984846000856133b7565b600054610100900460ff1661321e5760405162461bcd60e51b8152600401610e5f90614281565b61104a33612077565b8015806132a05750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e9061325d903090869060040161406a565b602060405180830381865afa15801561327a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061329e9190613818565b155b6132bc5760405162461bcd60e51b8152600401610e5f90614868565b611d6a8363095ea7b360e01b8484604051602401611d33929190614085565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516000918291829182916001600160a01b0387169161332291614878565b600060405180830381855afa9150503d806000811461335d576040519150601f19603f3d011682016040523d82523d6000602084013e613362565b606091505b509150915081801561337657506020815110155b156133aa576000818060200190518101906133919190613818565b905060ff81116133a8576001969095509350505050565b505b5060009485945092505050565b6060824710156133d95760405162461bcd60e51b8152600401610e5f906148c7565b600080866001600160a01b031685876040516133f59190614878565b60006040518083038185875af1925050503d8060008114613432576040519150601f19603f3d011682016040523d82523d6000602084013e613437565b606091505b5091509150611a63878383876060831561348257825160000361347b576001600160a01b0385163b61347b5760405162461bcd60e51b8152600401610e5f9061490b565b5081610e19565b610e1983838151156134975781518083602001fd5b8060405162461bcd60e51b8152600401610e5f919061351d565b805b82525050565b6020810161074d82846134b1565b60005b838110156134e25781810151838201526020016134ca565b50506000910152565b60006134f5825190565b80845260208401935061350c8185602086016134c7565b601f01601f19169290920192915050565b6020808252810161089d81846134eb565b805b811461078957600080fd5b803561074d8161352e565b60006020828403121561355b5761355b600080fd5b6000610e19848461353b565b60006001600160a01b03821661074d565b61353081613567565b803561074d81613578565b600080604083850312156135a2576135a2600080fd5b60006135ae8585613581565b92505060206135bf8582860161353b565b9150509250929050565b8015156134b3565b6020810161074d82846135c9565b6000602082840312156135f4576135f4600080fd5b6000610e198484613581565b6134b381613567565b6020810161074d8284613600565b600061074d82613567565b61353081613617565b803561074d81613622565b60006020828403121561364b5761364b600080fd5b6000610e19848461362b565b60008060006060848603121561366f5761366f600080fd5b600061367b8686613581565b935050602061368c86828701613581565b925050604061369d8682870161353b565b9150509250925092565b60ff81166134b3565b6020810161074d82846136a7565b600080600080608085870312156136d7576136d7600080fd5b60006136e38787613581565b94505060206136f487828801613581565b93505060406137058782880161353b565b925050606061371687828801613581565b91505092959194509250565b600061074d6001600160a01b038316613739565b90565b6001600160a01b031690565b600061074d82613722565b600061074d82613745565b6134b381613750565b6020810161074d828461375b565b6000806040838503121561378857613788600080fd5b6000613794858561353b565b92505060206135bf85828601613581565b6000806000606084860312156137bd576137bd600080fd5b60006137c9868661353b565b93505060206137da86828701613581565b925050604061369d86828701613581565b6000806040838503121561380157613801600080fd5b60006137948585613581565b805161074d8161352e565b60006020828403121561382d5761382d600080fd5b6000610e19848461380d565b634e487b7160e01b600052601160045260246000fd5b81810280821583820485141761386757613867613839565b5092915050565b634e487b7160e01b600052601260045260246000fd5b6000826138935761389361386e565b500490565b634e487b7160e01b600052602260045260246000fd5b6002810460018216806138c257607f821691505b6020821081036138d4576138d4613898565b50919050565b60ff91821691908116908282019081111561074d5761074d613839565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715613933576139336138f7565b6040525050565b600061394560405190565b9050613951828261390d565b919050565b600067ffffffffffffffff821115613970576139706138f7565b5060209081020190565b805161074d81613622565b600061399861399384613956565b61393a565b838152905060208082019084028301858111156139b7576139b7600080fd5b835b818110156139db57806139cc888261397a565b845250602092830192016139b9565b5050509392505050565b600082601f8301126139f9576139f9600080fd5b8151610e19848260208601613985565b600060208284031215613a1e57613a1e600080fd5b815167ffffffffffffffff811115613a3857613a38600080fd5b610e19848285016139e5565b634e487b7160e01b600052603260045260246000fd5b600060208284031215613a6f57613a6f600080fd5b6000610e19848461397a565b6000613a87838361375b565b505060200190565b6000613a99825190565b80845260209384019383018060005b83811015613acd578151613abc8882613a7b565b975060208301925050600101613aa8565b509495945050505050565b60408101613ae68285613600565b8181036020830152610e198184613a8f565b634e487b7160e01b600052602160045260246000fd5b6004811061078957610789613af8565b8061395181613b0e565b600061074d82613b1e565b6134b381613b28565b60608101613b4a8286613600565b613b576020830185613600565b610e196040830184613b33565b8082018082111561074d5761074d613839565b6009811061078957610789613af8565b8061395181613b77565b600061074d82613b87565b6134b381613b91565b60408101613bb38285613600565b61089d6020830184613b9c565b801515613530565b805161074d81613bc0565b600060208284031215613be857613be8600080fd5b6000610e198484613bc8565b8181038181111561074d5761074d613839565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b602082015291505b5060400190565b6020808252810161074d81613c07565b600781526000602082016619195c1bdcda5d60ca1b815291505b5060200190565b6020808252810161074d81613c65565b602981526000602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b60208201529150613c4e565b6020808252810161074d81613c96565b60048152600060208201631b5a5b9d60e21b81529150613c7f565b6020808252810161074d81613cec565b602581526000602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77815264207a65726f60d81b60208201529150613c4e565b6020808252810161074d81613d17565b6008815260006020820167776974686472617760c01b81529150613c7f565b6020808252810161074d81613d69565b600681526000602082016572656465656d60d01b81529150613c7f565b6020808252810161074d81613d98565b805161074d81613578565b600060208284031215613de557613de5600080fd5b6000610e198484613dc5565b600060ff821661074d565b6134b381613df1565b6020810161074d8284613dfc565b80825b6001851115613e5257808604811115613e3157613e31613839565b6001851615613e3f57908102905b8002613e4b8560011c90565b9450613e16565b94509492505050565b600082613e6a5750600161089d565b81613e775750600061089d565b8160018114613e8d5760028114613e9757613ec4565b600191505061089d565b60ff841115613ea857613ea8613839565b8360020a915084821115613ebe57613ebe613839565b5061089d565b5060208310610133831016604e8410600b8410161715613ef7575081810a83811115613ef257613ef2613839565b61089d565b613f048484846001613e13565b92509050818404811115613f1a57613f1a613839565b0292915050565b600060ff8316925061089d6000198484613e5b565b602481526000602082017f45524332303a20617070726f76652066726f6d20746865207a65726f206164648152637265737360e01b60208201529150613c4e565b6020808252810161074d81613f36565b602281526000602082017f45524332303a20617070726f766520746f20746865207a65726f206164647265815261737360f01b60208201529150613c4e565b6020808252810161074d81613f87565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081526000613c7f565b6020808252810161074d81613fd6565b602581526000602082017f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164815264647265737360d81b60208201529150613c4e565b6020808252810161074d81614018565b604081016140788285613600565b61089d6020830184613600565b604081016140938285613600565b61089d60208301846134b1565b601d81526000602082017f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000081529150613c7f565b6020808252810161074d816140a0565b602581526000602082017f45524332303a207472616e736665722066726f6d20746865207a65726f206164815264647265737360d81b60208201529150613c4e565b6020808252810161074d816140e4565b602381526000602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281526265737360e81b60208201529150613c4e565b6020808252810161074d81614136565b602681526000602082017f45524332303a207472616e7366657220616d6f756e7420657863656564732062815265616c616e636560d01b60208201529150613c4e565b6020808252810161074d81614186565b60ff8116613530565b805161074d816141d9565b60006020828403121561420257614202600080fd5b6000610e1984846141e2565b60ff91821691908116908282039081111561074d5761074d613839565b6040810161409382856134b1565b602b81526000602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b60208201529150613c4e565b6020808252810161074d81614239565b602281526000602082017f436f6d7074726f6c6c65723a20496e76616c6964206d61784c6f6f70734c696d8152611a5d60f21b60208201529150613c4e565b6020808252810161074d81614291565b601f81526000602082017f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081529150613c7f565b6020808252810161074d816142e0565b601b81526000602082017f76546f6b656e735265636569766564206174205f6465706f736974000000000081529150613c7f565b6020808252810161074d81614324565b604081016143768285613600565b8181036020830152610e1981846134eb565b606081016143968286613600565b6143a36020830185613600565b8181036040830152612cbd81846134eb565b60208082527f61637475616c56546f6b656e73206174205f6265666f7265576974686472617791019081526000613c7f565b6020808252810161074d816143b5565b600067ffffffffffffffff821115614411576144116138f7565b601f19601f83011660200192915050565b6000614430613993846143f7565b90508281526020810184848401111561444b5761444b600080fd5b6144568482856134c7565b509392505050565b600082601f83011261447257614472600080fd5b8151610e19848260208601614422565b60006020828403121561449757614497600080fd5b815167ffffffffffffffff8111156144b1576144b1600080fd5b610e198482850161445e565b60006144c7825190565b6144d58185602086016134c7565b9290920192915050565b75022a9219a1b191b16abb930b83832b2102b32b73ab9960551b81526000601682015b915061089d82846144bd565b643b1a1b191b60d91b8152600060058201614502565b602a81526000602082017f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b60208201529150613c4e565b6020808252810161074d81614524565b606081016145898286613600565b6145966020830185613600565b610e1960408301846134b1565b601f81526000602082017f45524332303a206d696e7420746f20746865207a65726f20616464726573730081529150613c7f565b6020808252810161074d816145a3565b602181526000602082017f45524332303a206275726e2066726f6d20746865207a65726f206164647265738152607360f81b60208201529150613c4e565b6020808252810161074d816145e7565b602281526000602082017f45524332303a206275726e20616d6f756e7420657863656564732062616c616e815261636560f01b60208201529150613c4e565b6020808252810161074d81614635565b600061074d6137368381565b61469983614684565b815460001960089490940293841b1916921b91909117905550565b6000611d6a818484614690565b8181101561087a576146d46000826146b4565b6001016146c1565b601f821115611d6a576000818152602090206020601f850104810160208510156147035750805b610bc06020601f8601048301826146c1565b815167ffffffffffffffff81111561472f5761472f6138f7565b61473982546138ae565b6147448282856146dc565b6020601f83116001811461477857600084156147605750858201515b600019600886021c19811660028602178655506147d1565b600085815260208120601f198616915b828110156147a85788850151825560209485019460019092019101614788565b868310156147c45784890151600019601f89166008021c191682555b6001600288020188555050505b505050505050565b60158152600060208201744d6174683a206d756c446976206f766572666c6f7760581b81529150613c7f565b6020808252810161074d816147d9565b603681526000602082017f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f81527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b60208201529150613c4e565b6020808252810161074d81614815565b600061089d82846144bd565b602681526000602082017f416464726573733a20696e73756666696369656e742062616c616e636520666f8152651c8818d85b1b60d21b60208201529150613c4e565b6020808252810161074d81614884565b601d81526000602082017f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081529150613c7f565b6020808252810161074d816148d756fea264697066735822122094d0079d5c5c4e933c1f74396514ba6540d1c30d307d4c8d004e4e436033887064736f6c63430008190033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102745760003560e01c806380d45a2d11610151578063be26317e116100c3578063d905777e11610087578063d905777e14610543578063dd62ed3e14610556578063e30c397814610569578063e521136f1461057a578063ef8b30f71461051d578063f2fde38b1461058d57600080fd5b8063be26317e146104ed578063c4d66de8146104f7578063c63d75b61461050a578063c6e6f5921461051d578063ce96cb771461053057600080fd5b8063a457c2d711610115578063a457c2d71461047d578063a9059cbb14610490578063b3d7f6b9146104a3578063b460af94146104b6578063b4a0bdf3146104c9578063ba087652146104da57600080fd5b806380d45a2d1461042a5780638da5cb5b1461043d57806394bf804d1461044e57806395d89b41146104615780639bb1a99c1461046957600080fd5b8063372500ab116101ea5780634cdad506116101ae5780634cdad506146102ac5780635fe3b567146103bd5780636e553f65146103de57806370a08231146103f1578063715018a61461041a57806379ba50971461042257600080fd5b8063372500ab1461036b57806338d52e0f146103735780633950935114610384578063402d267d1461039757806341e11a5a146103aa57600080fd5b80630e32cb861161023c5780630e32cb86146102f257806317f333401461030757806318160ddd146103285780631be195601461033057806323b872dd14610343578063313ce5671461035657600080fd5b806301e1d1141461027957806306fdde031461029757806307a2d13a146102ac578063095ea7b3146102bf5780630a28a477146102df575b600080fd5b6102816105a0565b60405161028e91906134b9565b60405180910390f35b61029f6106ae565b60405161028e919061351d565b6102816102ba366004613546565b610740565b6102d26102cd36600461358c565b610753565b60405161028e91906135d1565b6102816102ed366004613546565b61076b565b6103056103003660046135df565b610778565b005b6101935461031b906001600160a01b031681565b60405161028e9190613609565b603554610281565b61030561033e366004613636565b61078c565b6102d2610351366004613657565b61087e565b61035e6108a4565b60405161028e91906136b0565b6103056108c5565b6065546001600160a01b031661031b565b6102d261039236600461358c565b610bc7565b6102816103a53660046135df565b610be9565b6103056103b83660046136be565b610e21565b610192546103d1906001600160a01b031681565b60405161028e9190613764565b6102816103ec366004613772565b610ef3565b6102816103ff3660046135df565b6001600160a01b031660009081526033602052604090205490565b610305611038565b61030561104c565b610305610438366004613546565b611081565b6097546001600160a01b031661031b565b61028161045c366004613772565b6110c8565b61029f6111e7565b610191546103d1906001600160a01b031681565b6102d261048b36600461358c565b6111f6565b6102d261049e36600461358c565b61123e565b6102816104b1366004613546565b61124c565b6102816104c43660046137a5565b611259565b60fb546001600160a01b03166103d1565b6102816104e83660046137a5565b61136b565b61028161012d5481565b6103056105053660046135df565b611494565b6102816105183660046135df565b611698565b61028161052b366004613546565b6116a7565b61028161053e3660046135df565b6116b4565b6102816105513660046135df565b61188c565b6102816105643660046137eb565b611a6e565b60c9546001600160a01b031661031b565b6103056105883660046135df565b611a99565b61030561059b3660046135df565b611ae0565b6000670de0b6b3a764000061019160009054906101000a90046001600160a01b03166001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106239190613818565b610191546040516370a0823160e01b81526001600160a01b03909116906370a0823190610654903090600401613609565b602060405180830381865afa158015610671573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106959190613818565b61069f919061384f565b6106a99190613884565b905090565b6060603680546106bd906138ae565b80601f01602080910402602001604051908101604052809291908181526020018280546106e9906138ae565b80156107365780601f1061070b57610100808354040283529160200191610736565b820191906000526020600020905b81548152906001019060200180831161071957829003601f168201915b5050505050905090565b600061074d826000611b51565b92915050565b600033610761818585611b92565b5060019392505050565b600061074d826001611c39565b610780611c71565b61078981611c9b565b50565b610794611c71565b6040516370a0823160e01b81526000906001600160a01b038316906370a08231906107c3903090600401613609565b602060405180830381865afa1580156107e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108049190613818565b9050801561087a5760006108206097546001600160a01b031690565b905061082d838284611d14565b806001600160a01b0316836001600160a01b03167f6d25be279134f4ecaa4770aff0c3d916d9e7c5ef37b65ed95dbdba411f5d54d58460405161087091906134b9565b60405180910390a3505b5050565b60003361088c858285611d6f565b610897858585611db9565b60019150505b9392505050565b60006108ae611ea9565b6065546106a99190600160a01b900460ff166138da565b610192546101915461019354604080516361252fd160e01b815290516001600160a01b0394851694938416939092169160009185916361252fd19160048082019286929091908290030181865afa158015610924573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261094c9190810190613a09565b90506109588151611f29565b60005b8151811015610bc057600082828151811061097857610978613a44565b602002602001015190506000816001600160a01b031663f7c618c16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e69190613a5a565b60408051600180825281830190925291925060009190602080830190803683370190505090508681600081518110610a2057610a20613a44565b6001600160a01b039283166020918202929092010152604051624caeb160e41b8152908416906304caeb1090610a5c9030908590600401613ad8565b600060405180830381600087803b158015610a7657600080fd5b505af1158015610a8a573d6000803e3d6000fd5b50506040516370a0823160e01b8152600092506001600160a01b03851691506370a0823190610abd903090600401613609565b602060405180830381865afa158015610ada573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afe9190613818565b90508015610b6f57610b11838883611d14565b6040516305bebb3b60e21b81526001600160a01b038816906316faecec90610b42908c908790600290600401613b3c565b600060405180830381600087803b158015610b5c57600080fd5b505af1925050508015610b6d575060015b505b826001600160a01b03167fba56c3ab1f752776eef60db959a4e6b643e89595315edbbd945e104623fa03ba82604051610ba891906134b9565b60405180910390a250506001909201915061095b9050565b5050505050565b600033610761818585610bda8383611a6e565b610be49190613b64565b611b92565b6101925461019154604051630742d14b60e51b81526000926001600160a01b039081169263e85a296092610c2592909116908590600401613ba5565b602060405180830381865afa158015610c42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c669190613bd3565b15610c7357506000919050565b61019254610191546040516302c3bcbb60e01b81526000926001600160a01b03908116926302c3bcbb92610cad9290911690600401613609565b602060405180830381865afa158015610cca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cee9190613818565b90506000670de0b6b3a764000061019160009054906101000a90046001600160a01b03166001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d739190613818565b61019160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610deb9190613818565b610df5919061384f565b610dff9190613884565b9050808211610e0f576000610e19565b610e198183613bf4565b949350505050565b600054600290610100900460ff16158015610e43575060005460ff8083169116105b610e685760405162461bcd60e51b8152600401610e5f90613c55565b60405180910390fd5b6000805461ffff191660ff831617610100179055610e8582611f54565b610e8e85611f7b565b610e9783611fb3565b610ea084612010565b610ea982612077565b6000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890610ee49083906136b0565b60405180910390a15050505050565b6000610efd612090565b610f0682611f54565b61019160009054906101000a90046001600160a01b03166001600160a01b031663a6afed956040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610f5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f809190613818565b5082600003610fa2576040516304dd32c560e11b8152600401610e5f90613c86565b610fab82610be9565b831115610fcb576040516326ac6ee160e01b815260040160405180910390fd5b6000610fd6846116a7565b905080600003610ff9576040516304dd32c560e11b8152600401610e5f90613c86565b600061100460355490565b9050611012338587856120bb565b60008161101e60355490565b6110289190613bf4565b935050505061074d600161015f55565b611040611c71565b61104a6000612077565b565b60c95433906001600160a01b031681146110785760405162461bcd60e51b8152600401610e5f90613cdc565b61078981612077565b6110bf6040518060400160405280601981526020017f7365744d61784c6f6f70734c696d69742875696e74323536290000000000000081525061245f565b61078981611fb3565b60006110d2612090565b6110db82611f54565b61019160009054906101000a90046001600160a01b03166001600160a01b031663a6afed956040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611131573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111559190613818565b5082600003611177576040516304dd32c560e11b8152600401610e5f90613d07565b61118082611698565b8311156111a0576040516340868f7960e01b815260040160405180910390fd5b60006111ab8461124c565b9050806000036111ce576040516304dd32c560e11b8152600401610e5f90613d07565b6111da338483876120bb565b905061074d600161015f55565b6060603780546106bd906138ae565b600033816112048286611a6e565b9050838110156112265760405162461bcd60e51b8152600401610e5f90613d59565b6112338286868403611b92565b506001949350505050565b600033610761818585611db9565b600061074d826001611b51565b6000611263612090565b61126c83611f54565b61127582611f54565b61019160009054906101000a90046001600160a01b03166001600160a01b031663a6afed956040518163ffffffff1660e01b81526004016020604051808303816000875af11580156112cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ef9190613818565b5083600003611311576040516304dd32c560e11b8152600401610e5f90613d88565b61131a826116b4565b84111561133a5760405163e9ed951560e01b815260040160405180910390fd5b600080611346866124f9565b9150915061135d6113543390565b868685856127ed565b91505061089d600161015f55565b6000611375612090565b61137e83611f54565b61138782611f54565b61019160009054906101000a90046001600160a01b03166001600160a01b031663a6afed956040518163ffffffff1660e01b81526004016020604051808303816000875af11580156113dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114019190613818565b5083600003611423576040516304dd32c560e11b8152600401610e5f90613db5565b61142c8261188c565b84111561144c57604051638890247960e01b815260040160405180910390fd5b600061145785612890565b90508060000361147a576040516304dd32c560e11b8152600401610e5f90613db5565b61148733858584896127ed565b905061089d600161015f55565b600054610100900460ff16158080156114b45750600054600160ff909116105b806114ce5750303b1580156114ce575060005460ff166001145b6114ea5760405162461bcd60e51b8152600401610e5f90613c55565b6000805460ff19166001179055801561150d576000805461ff0019166101001790555b61151682611f54565b61019180546001600160a01b0319166001600160a01b03841690811790915560408051635fe3b56760e01b81529051635fe3b567916004808201926020929091908290030181865afa158015611570573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115949190613a5a565b61019280546001600160a01b0319166001600160a01b039283161790556101915460408051636f307dc360e01b815290516000939290921691636f307dc3916004808201926020929091908290030181865afa1580156115f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161c9190613dd0565b905061163861162a82612ad3565b61163383612b61565b612bd9565b61164181612c0a565b611649612c3a565b50801561087a576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989061168c90600190613e05565b60405180910390a15050565b600061074d61052b6000610be9565b600061074d826000611c39565b6101925461019154604051630742d14b60e51b81526000926001600160a01b039081169263e85a2960926116f19290911690600190600401613ba5565b602060405180830381865afa15801561170e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117329190613bd3565b1561173f57506000919050565b6101915460408051631d8e90d160e11b815290516000926001600160a01b031691633b1d21a29160048083019260209291908290030181865afa15801561178a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ae9190613818565b9050600061019160009054906101000a90046001600160a01b03166001600160a01b0316638f840ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182a9190613818565b905060006118506102ba866001600160a01b031660009081526033602052604090205490565b90508183101561186557506000949350505050565b60006118718385613bf4565b90508181106118805781611882565b805b9695505050505050565b6101925461019154604051630742d14b60e51b81526000926001600160a01b039081169263e85a2960926118c99290911690600190600401613ba5565b602060405180830381865afa1580156118e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190a9190613bd3565b1561191757506000919050565b6101915460408051631d8e90d160e11b815290516000926001600160a01b031691633b1d21a29160048083019260209291908290030181865afa158015611962573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119869190613818565b9050600061019160009054906101000a90046001600160a01b03166001600160a01b0316638f840ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a029190613818565b905080821015611a16575060009392505050565b6000611a228284613bf4565b90506000611a2f826116a7565b90506000611a52876001600160a01b031660009081526033602052604090205490565b9050808210611a615780611a63565b815b979650505050505050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b611ad76040518060400160405280601b81526020017f736574526577617264526563697069656e74286164647265737329000000000081525061245f565b61078981612010565b611ae8611c71565b60c980546001600160a01b0383166001600160a01b03199091168117909155611b196097546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b600061089d611b5e6105a0565b611b69906001613b64565b611b71611ea9565b611b7c90600a613f21565b603554611b899190613b64565b85919085612c69565b6001600160a01b038316611bb85760405162461bcd60e51b8152600401610e5f90613f77565b6001600160a01b038216611bde5760405162461bcd60e51b8152600401610e5f90613fc6565b6001600160a01b0380841660008181526034602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108709085906134b9565b600061089d611c46611ea9565b611c5190600a613f21565b603554611c5e9190613b64565b611c666105a0565b611b89906001613b64565b6097546001600160a01b0316331461104a5760405162461bcd60e51b8152600401610e5f90614008565b6001600160a01b038116611cc15760405162461bcd60e51b8152600401610e5f9061405a565b60fb80546001600160a01b038381166001600160a01b03198316179092556040519116907f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa09061168c908390859061406a565b611d6a8363a9059cbb60e01b8484604051602401611d33929190614085565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612cc6565b505050565b6000611d7b8484611a6e565b90506000198114611db35781811015611da65760405162461bcd60e51b8152600401610e5f906140d4565b611db38484848403611b92565b50505050565b6001600160a01b038316611ddf5760405162461bcd60e51b8152600401610e5f90614126565b6001600160a01b038216611e055760405162461bcd60e51b8152600401610e5f90614176565b6001600160a01b03831660009081526033602052604090205481811015611e3e5760405162461bcd60e51b8152600401610e5f906141c9565b6001600160a01b0380851660008181526033602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611e9c9086906134b9565b60405180910390a3611db3565b6000611ebd6065546001600160a01b031690565b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1e91906141ed565b6106a990601261420e565b61012d548111156107895761012d548160405163792bfb1b60e11b8152600401610e5f92919061422b565b6001600160a01b038116610789576040516342bcdf7f60e11b815260040160405180910390fd5b600054610100900460ff16611fa25760405162461bcd60e51b8152600401610e5f90614281565b611faa612d58565b61078981612d87565b61012d548111611fd55760405162461bcd60e51b8152600401610e5f906142d0565b61012d8054908290556040517fc2d09fef144f7c8a86f71ea459f8fc17f675768eb1ae369cbd77fb31d467aafa9061168c908390859061422b565b61201981611f54565b610193546040516001600160a01b038084169216907fc8c11bb97ac2ffa10ce2e2a98f4c1fd8df84cfa2e1a15e013ed2383ab1f527ad90600090a361019380546001600160a01b0319166001600160a01b0392909216919091179055565b60c980546001600160a01b031916905561078981612dae565b600261015f54036120b35760405162461bcd60e51b8152600401610e5f90614314565b600261015f55565b60006120cf6065546001600160a01b031690565b6001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016120fa9190613609565b602060405180830381865afa158015612117573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213b9190613818565b610191546040516370a0823160e01b81529192506000916001600160a01b03909116906370a0823190612172903090600401613609565b602060405180830381865afa15801561218f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b39190613818565b90506121d26121ca6065546001600160a01b031690565b873087612e00565b6000826121e76065546001600160a01b031690565b6001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016122129190613609565b602060405180830381865afa15801561222f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122539190613818565b61225d9190613bf4565b905061226881612e21565b610191546040516370a0823160e01b815260009184916001600160a01b03909116906370a082319061229e903090600401613609565b602060405180830381865afa1580156122bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122df9190613818565b6122e99190613bf4565b90508060000361230c576040516304dd32c560e11b8152600401610e5f90614358565b6000670de0b6b3a764000061019160009054906101000a90046001600160a01b03166001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa15801561236b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061238f9190613818565b612399908461384f565b6123a39190613884565b905060006123f26123b2611ea9565b6123bd90600a613f21565b6035546123ca9190613b64565b836123d36105a0565b6123de906001613b64565b6123e89190613bf4565b8491906000612c69565b90506123fe8982612eed565b886001600160a01b03168a6001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78a8460405161244392919061422b565b60405180910390a350505050505050505050565b600161015f55565b60fb546040516318c5e8ab60e01b81526000916001600160a01b0316906318c5e8ab906124929033908690600401614368565b602060405180830381865afa1580156124af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d39190613bd3565b90508061087a57333083604051634a3fa29360e01b8152600401610e5f93929190614388565b60008060006125106065546001600160a01b031690565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016125409190613609565b602060405180830381865afa15801561255d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125819190613818565b610191546040516370a0823160e01b81529192506000916001600160a01b03909116906370a08231906125b8903090600401613609565b602060405180830381865afa1580156125d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f99190613818565b6101915460405163852a12e360e01b81529192506000916001600160a01b039091169063852a12e390612630908a906004016134b9565b6020604051808303816000875af115801561264f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126739190613818565b905080156126965780604051630864657760e21b8152600401610e5f91906134b9565b6040516370a0823160e01b815283906001600160a01b038616906370a08231906126c4903090600401613609565b602060405180830381865afa1580156126e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127059190613818565b61270f9190613bf4565b610191546040516370a0823160e01b81529197506000916001600160a01b03909116906370a0823190612746903090600401613609565b602060405180830381865afa158015612763573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127879190613818565b6127919084613bf4565b9050806000036127b4576040516304dd32c560e11b8152600401610e5f906143e7565b6127e16127bf611ea9565b6127ca90600a613f21565b6035546127d79190613b64565b8290856001612c69565b95505050505050915091565b826001600160a01b0316856001600160a01b03161461281157612811838683611d6f565b61281b8382612f83565b606554612832906001600160a01b03168584611d14565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db858560405161288192919061422b565b60405180910390a45050505050565b6000806128a56065546001600160a01b031690565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016128d59190613609565b602060405180830381865afa1580156128f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129169190613818565b610191546040516370a0823160e01b81529192506000916129ba916001600160a01b0316906370a082319061294f903090600401613609565b602060405180830381865afa15801561296c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129909190613818565b612998611ea9565b6129a390600a613f21565b6035546129b09190613b64565b8791906000612c69565b6101915460405163db006a7560e01b81529192506000916001600160a01b039091169063db006a75906129f19085906004016134b9565b6020604051808303816000875af1158015612a10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a349190613818565b90508015612a575780604051630864657760e21b8152600401610e5f91906134b9565b6040516370a0823160e01b81526000906001600160a01b038616906370a0823190612a86903090600401613609565b602060405180830381865afa158015612aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac79190613818565b9050611a638482613bf4565b6060816001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015612b13573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b3b9190810190614482565b604051602001612b4b91906144df565b6040516020818303038152906040529050919050565b6060816001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015612ba1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612bc99190810190614482565b604051602001612b4b919061450e565b600054610100900460ff16612c005760405162461bcd60e51b8152600401610e5f90614281565b61087a828261303a565b600054610100900460ff16612c315760405162461bcd60e51b8152600401610e5f90614281565b6107898161307a565b600054610100900460ff16612c615760405162461bcd60e51b8152600401610e5f90614281565b61104a6130ff565b600080612c77868686613126565b90506001836002811115612c8d57612c8d613af8565b148015612caa575060008480612ca557612ca561386e565b868809115b15612cbd57612cba600182613b64565b90505b95945050505050565b6000612d1b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166131e89092919063ffffffff16565b9050805160001480612d3c575080806020019051810190612d3c9190613bd3565b611d6a5760405162461bcd60e51b8152600401610e5f9061456b565b600054610100900460ff16612d7f5760405162461bcd60e51b8152600401610e5f90614281565b61104a6131f7565b600054610100900460ff166107805760405162461bcd60e51b8152600401610e5f90614281565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611db3846323b872dd60e01b858585604051602401611d339392919061457b565b61019154612e55906001600160a01b031682612e456065546001600160a01b031690565b6001600160a01b03169190613227565b6101915460405163140e25ad60e31b81526000916001600160a01b03169063a0712d6890612e879085906004016134b9565b6020604051808303816000875af1158015612ea6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eca9190613818565b9050801561087a5780604051630864657760e21b8152600401610e5f91906134b9565b6001600160a01b038216612f135760405162461bcd60e51b8152600401610e5f906145d7565b8060356000828254612f259190613b64565b90915550506001600160a01b038216600081815260336020526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612f779085906134b9565b60405180910390a35050565b6001600160a01b038216612fa95760405162461bcd60e51b8152600401610e5f90614625565b6001600160a01b03821660009081526033602052604090205481811015612fe25760405162461bcd60e51b8152600401610e5f90614674565b6001600160a01b0383166000818152603360205260408082208585039055603580548690039055519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108709086906134b9565b600054610100900460ff166130615760405162461bcd60e51b8152600401610e5f90614281565b603661306d8382614715565b506037611d6a8282614715565b600054610100900460ff166130a15760405162461bcd60e51b8152600401610e5f90614281565b6000806130ad836132db565b91509150816130bd5760126130bf565b805b606580546001600160a01b039095166001600160a01b031960ff93909316600160a01b02929092166001600160a81b031990951694909417179092555050565b600054610100900460ff166124575760405162461bcd60e51b8152600401610e5f90614281565b6000808060001985870985870292508281108382030391505080600003613160578382816131565761315661386e565b049250505061089d565b80841161317f5760405162461bcd60e51b8152600401610e5f90614805565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6060610e1984846000856133b7565b600054610100900460ff1661321e5760405162461bcd60e51b8152600401610e5f90614281565b61104a33612077565b8015806132a05750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e9061325d903090869060040161406a565b602060405180830381865afa15801561327a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061329e9190613818565b155b6132bc5760405162461bcd60e51b8152600401610e5f90614868565b611d6a8363095ea7b360e01b8484604051602401611d33929190614085565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516000918291829182916001600160a01b0387169161332291614878565b600060405180830381855afa9150503d806000811461335d576040519150601f19603f3d011682016040523d82523d6000602084013e613362565b606091505b509150915081801561337657506020815110155b156133aa576000818060200190518101906133919190613818565b905060ff81116133a8576001969095509350505050565b505b5060009485945092505050565b6060824710156133d95760405162461bcd60e51b8152600401610e5f906148c7565b600080866001600160a01b031685876040516133f59190614878565b60006040518083038185875af1925050503d8060008114613432576040519150601f19603f3d011682016040523d82523d6000602084013e613437565b606091505b5091509150611a63878383876060831561348257825160000361347b576001600160a01b0385163b61347b5760405162461bcd60e51b8152600401610e5f9061490b565b5081610e19565b610e1983838151156134975781518083602001fd5b8060405162461bcd60e51b8152600401610e5f919061351d565b805b82525050565b6020810161074d82846134b1565b60005b838110156134e25781810151838201526020016134ca565b50506000910152565b60006134f5825190565b80845260208401935061350c8185602086016134c7565b601f01601f19169290920192915050565b6020808252810161089d81846134eb565b805b811461078957600080fd5b803561074d8161352e565b60006020828403121561355b5761355b600080fd5b6000610e19848461353b565b60006001600160a01b03821661074d565b61353081613567565b803561074d81613578565b600080604083850312156135a2576135a2600080fd5b60006135ae8585613581565b92505060206135bf8582860161353b565b9150509250929050565b8015156134b3565b6020810161074d82846135c9565b6000602082840312156135f4576135f4600080fd5b6000610e198484613581565b6134b381613567565b6020810161074d8284613600565b600061074d82613567565b61353081613617565b803561074d81613622565b60006020828403121561364b5761364b600080fd5b6000610e19848461362b565b60008060006060848603121561366f5761366f600080fd5b600061367b8686613581565b935050602061368c86828701613581565b925050604061369d8682870161353b565b9150509250925092565b60ff81166134b3565b6020810161074d82846136a7565b600080600080608085870312156136d7576136d7600080fd5b60006136e38787613581565b94505060206136f487828801613581565b93505060406137058782880161353b565b925050606061371687828801613581565b91505092959194509250565b600061074d6001600160a01b038316613739565b90565b6001600160a01b031690565b600061074d82613722565b600061074d82613745565b6134b381613750565b6020810161074d828461375b565b6000806040838503121561378857613788600080fd5b6000613794858561353b565b92505060206135bf85828601613581565b6000806000606084860312156137bd576137bd600080fd5b60006137c9868661353b565b93505060206137da86828701613581565b925050604061369d86828701613581565b6000806040838503121561380157613801600080fd5b60006137948585613581565b805161074d8161352e565b60006020828403121561382d5761382d600080fd5b6000610e19848461380d565b634e487b7160e01b600052601160045260246000fd5b81810280821583820485141761386757613867613839565b5092915050565b634e487b7160e01b600052601260045260246000fd5b6000826138935761389361386e565b500490565b634e487b7160e01b600052602260045260246000fd5b6002810460018216806138c257607f821691505b6020821081036138d4576138d4613898565b50919050565b60ff91821691908116908282019081111561074d5761074d613839565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715613933576139336138f7565b6040525050565b600061394560405190565b9050613951828261390d565b919050565b600067ffffffffffffffff821115613970576139706138f7565b5060209081020190565b805161074d81613622565b600061399861399384613956565b61393a565b838152905060208082019084028301858111156139b7576139b7600080fd5b835b818110156139db57806139cc888261397a565b845250602092830192016139b9565b5050509392505050565b600082601f8301126139f9576139f9600080fd5b8151610e19848260208601613985565b600060208284031215613a1e57613a1e600080fd5b815167ffffffffffffffff811115613a3857613a38600080fd5b610e19848285016139e5565b634e487b7160e01b600052603260045260246000fd5b600060208284031215613a6f57613a6f600080fd5b6000610e19848461397a565b6000613a87838361375b565b505060200190565b6000613a99825190565b80845260209384019383018060005b83811015613acd578151613abc8882613a7b565b975060208301925050600101613aa8565b509495945050505050565b60408101613ae68285613600565b8181036020830152610e198184613a8f565b634e487b7160e01b600052602160045260246000fd5b6004811061078957610789613af8565b8061395181613b0e565b600061074d82613b1e565b6134b381613b28565b60608101613b4a8286613600565b613b576020830185613600565b610e196040830184613b33565b8082018082111561074d5761074d613839565b6009811061078957610789613af8565b8061395181613b77565b600061074d82613b87565b6134b381613b91565b60408101613bb38285613600565b61089d6020830184613b9c565b801515613530565b805161074d81613bc0565b600060208284031215613be857613be8600080fd5b6000610e198484613bc8565b8181038181111561074d5761074d613839565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b602082015291505b5060400190565b6020808252810161074d81613c07565b600781526000602082016619195c1bdcda5d60ca1b815291505b5060200190565b6020808252810161074d81613c65565b602981526000602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b60208201529150613c4e565b6020808252810161074d81613c96565b60048152600060208201631b5a5b9d60e21b81529150613c7f565b6020808252810161074d81613cec565b602581526000602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77815264207a65726f60d81b60208201529150613c4e565b6020808252810161074d81613d17565b6008815260006020820167776974686472617760c01b81529150613c7f565b6020808252810161074d81613d69565b600681526000602082016572656465656d60d01b81529150613c7f565b6020808252810161074d81613d98565b805161074d81613578565b600060208284031215613de557613de5600080fd5b6000610e198484613dc5565b600060ff821661074d565b6134b381613df1565b6020810161074d8284613dfc565b80825b6001851115613e5257808604811115613e3157613e31613839565b6001851615613e3f57908102905b8002613e4b8560011c90565b9450613e16565b94509492505050565b600082613e6a5750600161089d565b81613e775750600061089d565b8160018114613e8d5760028114613e9757613ec4565b600191505061089d565b60ff841115613ea857613ea8613839565b8360020a915084821115613ebe57613ebe613839565b5061089d565b5060208310610133831016604e8410600b8410161715613ef7575081810a83811115613ef257613ef2613839565b61089d565b613f048484846001613e13565b92509050818404811115613f1a57613f1a613839565b0292915050565b600060ff8316925061089d6000198484613e5b565b602481526000602082017f45524332303a20617070726f76652066726f6d20746865207a65726f206164648152637265737360e01b60208201529150613c4e565b6020808252810161074d81613f36565b602281526000602082017f45524332303a20617070726f766520746f20746865207a65726f206164647265815261737360f01b60208201529150613c4e565b6020808252810161074d81613f87565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081526000613c7f565b6020808252810161074d81613fd6565b602581526000602082017f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164815264647265737360d81b60208201529150613c4e565b6020808252810161074d81614018565b604081016140788285613600565b61089d6020830184613600565b604081016140938285613600565b61089d60208301846134b1565b601d81526000602082017f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000081529150613c7f565b6020808252810161074d816140a0565b602581526000602082017f45524332303a207472616e736665722066726f6d20746865207a65726f206164815264647265737360d81b60208201529150613c4e565b6020808252810161074d816140e4565b602381526000602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281526265737360e81b60208201529150613c4e565b6020808252810161074d81614136565b602681526000602082017f45524332303a207472616e7366657220616d6f756e7420657863656564732062815265616c616e636560d01b60208201529150613c4e565b6020808252810161074d81614186565b60ff8116613530565b805161074d816141d9565b60006020828403121561420257614202600080fd5b6000610e1984846141e2565b60ff91821691908116908282039081111561074d5761074d613839565b6040810161409382856134b1565b602b81526000602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b60208201529150613c4e565b6020808252810161074d81614239565b602281526000602082017f436f6d7074726f6c6c65723a20496e76616c6964206d61784c6f6f70734c696d8152611a5d60f21b60208201529150613c4e565b6020808252810161074d81614291565b601f81526000602082017f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0081529150613c7f565b6020808252810161074d816142e0565b601b81526000602082017f76546f6b656e735265636569766564206174205f6465706f736974000000000081529150613c7f565b6020808252810161074d81614324565b604081016143768285613600565b8181036020830152610e1981846134eb565b606081016143968286613600565b6143a36020830185613600565b8181036040830152612cbd81846134eb565b60208082527f61637475616c56546f6b656e73206174205f6265666f7265576974686472617791019081526000613c7f565b6020808252810161074d816143b5565b600067ffffffffffffffff821115614411576144116138f7565b601f19601f83011660200192915050565b6000614430613993846143f7565b90508281526020810184848401111561444b5761444b600080fd5b6144568482856134c7565b509392505050565b600082601f83011261447257614472600080fd5b8151610e19848260208601614422565b60006020828403121561449757614497600080fd5b815167ffffffffffffffff8111156144b1576144b1600080fd5b610e198482850161445e565b60006144c7825190565b6144d58185602086016134c7565b9290920192915050565b75022a9219a1b191b16abb930b83832b2102b32b73ab9960551b81526000601682015b915061089d82846144bd565b643b1a1b191b60d91b8152600060058201614502565b602a81526000602082017f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b60208201529150613c4e565b6020808252810161074d81614524565b606081016145898286613600565b6145966020830185613600565b610e1960408301846134b1565b601f81526000602082017f45524332303a206d696e7420746f20746865207a65726f20616464726573730081529150613c7f565b6020808252810161074d816145a3565b602181526000602082017f45524332303a206275726e2066726f6d20746865207a65726f206164647265738152607360f81b60208201529150613c4e565b6020808252810161074d816145e7565b602281526000602082017f45524332303a206275726e20616d6f756e7420657863656564732062616c616e815261636560f01b60208201529150613c4e565b6020808252810161074d81614635565b600061074d6137368381565b61469983614684565b815460001960089490940293841b1916921b91909117905550565b6000611d6a818484614690565b8181101561087a576146d46000826146b4565b6001016146c1565b601f821115611d6a576000818152602090206020601f850104810160208510156147035750805b610bc06020601f8601048301826146c1565b815167ffffffffffffffff81111561472f5761472f6138f7565b61473982546138ae565b6147448282856146dc565b6020601f83116001811461477857600084156147605750858201515b600019600886021c19811660028602178655506147d1565b600085815260208120601f198616915b828110156147a85788850151825560209485019460019092019101614788565b868310156147c45784890151600019601f89166008021c191682555b6001600288020188555050505b505050505050565b60158152600060208201744d6174683a206d756c446976206f766572666c6f7760581b81529150613c7f565b6020808252810161074d816147d9565b603681526000602082017f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f81527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b60208201529150613c4e565b6020808252810161074d81614815565b600061089d82846144bd565b602681526000602082017f416464726573733a20696e73756666696369656e742062616c616e636520666f8152651c8818d85b1b60d21b60208201529150613c4e565b6020808252810161074d81614884565b601d81526000602082017f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081529150613c7f565b6020808252810161074d816148d756fea264697066735822122094d0079d5c5c4e933c1f74396514ba6540d1c30d307d4c8d004e4e436033887064736f6c63430008190033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
