{
  "_format": "hh-sol-artifact-1",
  "contractName": "ERC1155FullBurnMock",
  "sourceName": "contracts/mocks/token/ERC1155/preset/ERC1155FullBurnMock.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "tokenName",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "tokenSymbol",
          "type": "string"
        },
        {
          "internalType": "contract ITokenMetadataResolver",
          "name": "metadataResolver",
          "type": "address"
        },
        {
          "internalType": "contract IOperatorFilterRegistry",
          "name": "filterRegistry",
          "type": "address"
        },
        {
          "internalType": "contract IForwarderRegistry",
          "name": "forwarderRegistry",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "ERC1155BalanceOfAddressZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "ERC1155BalanceOverflow",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "ERC1155InsufficientBalance",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC1155MintToAddressZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "ERC1155NonApproved",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        }
      ],
      "name": "ERC1155SafeBatchTransferRejected",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "ERC1155SafeTransferRejected",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "ERC1155SelfApprovalForAll",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC1155TransferToAddressZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "percentage",
          "type": "uint256"
        }
      ],
      "name": "ERC2981IncorrectRoyaltyPercentage",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC2981IncorrectRoyaltyReceiver",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FailedCall",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "IllegalInterfaceId",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InconsistentArrayLengths",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenContract",
          "type": "address"
        }
      ],
      "name": "IncorrectTokenContractType",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "needed",
          "type": "uint256"
        }
      ],
      "name": "InsufficientBalance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "NotContractOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "NotMetadataResolver",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "NotRoleHolder",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "OperatorNotAllowed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "SafeERC20FailedOperation",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        }
      ],
      "name": "TransferBatch",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "TransferSingle",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "value",
          "type": "string"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "URI",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "MINTER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "ROYALTY_FEE_DENOMINATOR",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "__msgData",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "owners",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        }
      ],
      "name": "balanceOfBatch",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "balances",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        }
      ],
      "name": "batchBurnFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        },
        {
          "internalType": "string[]",
          "name": "tokenURIs",
          "type": "string[]"
        }
      ],
      "name": "batchSetTokenURI",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "burnFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "forwarderRegistry",
      "outputs": [
        {
          "internalType": "contract IForwarderRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "hasRole_",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "approvedForAll",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "forwarder",
          "type": "address"
        }
      ],
      "name": "isTrustedForwarder",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "metadataResolver",
      "outputs": [
        {
          "internalType": "contract ITokenMetadataResolver",
          "name": "tokenMetadataResolver",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "tokenName",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "operatorFilterRegistry",
      "outputs": [
        {
          "internalType": "contract IOperatorFilterRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "contract IERC20[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "name": "recoverERC20s",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "contract IERC721[]",
          "name": "contracts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "recoverERC721s",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "name": "recoverETH",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "salePrice",
          "type": "uint256"
        }
      ],
      "name": "royaltyInfo",
      "outputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "royaltyAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeBatchMint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeBatchTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "recipients",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeDeliver",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeMint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "percentage",
          "type": "uint256"
        }
      ],
      "name": "setRoyaltyPercentage",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "setRoyaltyReceiver",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "tokenURI",
          "type": "string"
        }
      ],
      "name": "setTokenURI",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "tokenSymbol",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IOperatorFilterRegistry",
          "name": "registry",
          "type": "address"
        }
      ],
      "name": "updateOperatorFilterRegistry",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "uri",
      "outputs": [
        {
          "internalType": "string",
          "name": "metadataURI",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60a0604052346105f85761441680380380610019816105fd565b928339810160a0828203126105f85781516001600160401b0381116105f85781610044918401610622565b602083015190916001600160401b0382116105f857610064918401610622565b60408301519092906001600160a01b038116908190036105f85760608201516001600160a01b03811692908390036105f85760800151926001600160a01b03841684036105f85733610599575b7fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d60208190527fa53d5a615b1d5279f1a6647c5c0f31bf064b1e70af135676a4a96aeaeb691a2f805460ff199081166001908117909255636cdb3d1360e11b6000527f55f2baa086bcadb68563d14bf0ae4964705cc6bc8fd476a834dc8cb4e83cc92a805490911690911790557f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd3080546001600160a01b0319169094179093558051906001600160401b03821161046f576000805160206143d68339815191525490600182811c9216801561058f575b602083101461044f5781601f849311610512575b50602090601f831160011461049057600092610485575b50508160011b916000199060031b1c1916176000805160206143d6833981519152555b83516001600160401b03811161046f576000805160206143f683398151915254600181811c91168015610465575b602082101461044f57601f81116103dd575b50602094601f821160011461035c57948192939495600092610351575b50508160011b916000199060031b1c1916176000805160206143f6833981519152555b7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a680546001600160a01b0319169190911790556303a24d0760e21b60009081526020919091526040808220805460ff199081166001908117909255631464324b60e21b84528284208054821683179055633a2ae73360e21b8452828420805482168317905563921ed8d160e01b8452828420805482168317905563152a902d60e11b84529282902080549093161790915560809190915251613d48908161068e823960805181818161231701528181612fd9015281816135980152613be30152f35b01519050388061024c565b601f198216956000805160206143f6833981519152600052806000209160005b8881106103c5575083600195969798106103ac575b505050811b016000805160206143f68339815191525561026f565b015160001960f88460031b161c19169055388080610391565b9192602060018192868501518155019401920161037c565b6000805160206143f68339815191526000527fc39bad3db5d56dccf839bc8a79759b3192b97757d993f7663c9998f4fbefc8a1601f830160051c81019160208410610445575b601f0160051c01905b818110610439575061022f565b6000815560010161042c565b9091508190610423565b634e487b7160e01b600052602260045260246000fd5b90607f169061021d565b634e487b7160e01b600052604160045260246000fd5b0151905038806101cc565b6000805160206143d683398151915260009081528281209350601f198516905b8181106104fa57509084600195949392106104e1575b505050811b016000805160206143d6833981519152556101ef565b015160001960f88460031b161c191690553880806104c6565b929360206001819287860151815501950193016104b0565b6000805160206143d68339815191526000529091507f565de0cfbb8a3f70c938db1afc5562690ff7c55773c7234a649300f58e3b30bc601f840160051c81019160208510610585575b90601f859493920160051c01905b81811061057657506101b5565b60008155849350600101610569565b909150819061055b565b91607f16916101a1565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc80546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a36100b1565b600080fd5b6040519190601f01601f191682016001600160401b0381118382101761046f57604052565b81601f820112156105f8578051906001600160401b03821161046f57610651601f8301601f19166020016105fd565b92828452602083830101116105f85760005b82811061067857505060206000918301015290565b8060208092840101518282870101520161066356fe6080604052600436101561001257600080fd5b60003560e01c8062fdd58e14612b9257806301ffc9a714612b2c57806306fdde0314612ad15780630d6a5bbb1461286f5780630e89341c14612718578063114ba8ee14612619578063124d91e5146124fe578063162094c41461242e5780632a55205a1461233b5780632b4c9f16146122cc5780632eb2c2d614611ea65780632f2ff15d14611d1a57806331e66e1e14611ccc5780634e1273f414611bee578063572b6c0514611ba35780635cfa929714611ad957806361ba27da146119bd5780636706467b1461184c57806373c8a9581461169c578063805349341461150a5780638bb9c5bf1461139b5780638da5cb5b1461132a5780638dc251e3146111fd57806391d148541461116557806395d89b41146110f2578063a0c76f6214611081578063a22cb46514610f21578063b0ccc31e14610eb0578063c3666c3614610c73578063d539139314610c1a578063d547741f14610a91578063e1a8bf2c14610a55578063e8ab9ccc14610849578063e985e9c514610795578063f242432a14610463578063f2fde38b1461036f5763f7ba94bd146101b257600080fd5b34610313576101c036612d4a565b90917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80610201613581565b925416911690810361034257508181036103185760005b81811061022157005b61022c818387613021565b3573ffffffffffffffffffffffffffffffffffffffff811680910361031357610256828587613021565b35908147106102e157600080809381935af13d156102d9573d9061027982612f51565b916102876040519384612e7d565b82523d6000602084013e5b156102a05750600101610218565b8051156102af57602081519101fd5b7fd6bda2750000000000000000000000000000000000000000000000000000000060005260046000fd5b606090610292565b50477fcf4791810000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b600080fd5b7f658253360000000000000000000000000000000000000000000000000000000060005260046000fd5b7f2ef4875e0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b346103135760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610313576103a6612c00565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc906103d0613581565b9073ffffffffffffffffffffffffffffffffffffffff808454169216828103610342575073ffffffffffffffffffffffffffffffffffffffff169182820361041457005b827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b346103135760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103135761049a612c00565b6104a2612c23565b604435906064359260843567ffffffffffffffff8111610313576104ca903690600401612cdd565b926104d3613581565b937f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308573ffffffffffffffffffffffffffffffffffffffff861673ffffffffffffffffffffffffffffffffffffffff821603610785575b505073ffffffffffffffffffffffffffffffffffffffff8216947f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e8612861561075b576105768287836137be565b156107115773ffffffffffffffffffffffffffffffffffffffff9161059f8a8a878a8796613a05565b169416918583867fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62604080518c81528d6020820152a43b6105dc57005b6020926105ea913691612f8b565b9261064060405194859384937ff23a6e610000000000000000000000000000000000000000000000000000000085526004850152602484015287604484015288606484015260a0608484015260a4830190612c69565b03816000865af1908115610705577ff23a6e6100000000000000000000000000000000000000000000000000000000917fffffffff00000000000000000000000000000000000000000000000000000000916000916106d6575b5016036106a357005b7f40f39d380000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b6106f8915060203d6020116106fe575b6106f08183612e7d565b810190613786565b8661069a565b503d6106e6565b6040513d6000823e3d90fd5b73ffffffffffffffffffffffffffffffffffffffff8681847f05bbb9c400000000000000000000000000000000000000000000000000000000600052166004521660245260446000fd5b7fb5e890150000000000000000000000000000000000000000000000000000000060005260046000fd5b61078e9161391a565b878561052a565b346103135760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610313576107cc612c00565b73ffffffffffffffffffffffffffffffffffffffff6107e9612c23565b91166000527f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e861360205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052602060ff604060002054166040519015158152f35b346103135760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103135760043567ffffffffffffffff811161031357610898903690600401612cac565b60243567ffffffffffffffff8111610313576108b8903690600401612cac565b929060443567ffffffffffffffff8111610313576108da903690600401612cac565b93909160643567ffffffffffffffff8111610313576108fd903690600401612cdd565b939091610908613581565b97610933897fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22613260565b7f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e86129461095e81612eed565b9761096c604051998a612e7d565b818952602089019160051b81019036821161031357915b818310610a2857505050916109a16109a9926109b195943691612f05565b973691612f05565b933691612f8b565b9183519480518614801590610a1d575b6103185760005b8681106109d157005b80610a178673ffffffffffffffffffffffffffffffffffffffff6109f76001958b613322565b5116610a038487613322565b51610a0e8589613322565b51918d8a613400565b016109c8565b5081518614156109c1565b823573ffffffffffffffffffffffffffffffffffffffff8116810361031357815260209283019201610983565b346103135760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610313576020604051620186a08152f35b346103135760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031357600435610acb612c23565b610ad3613581565b9173ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc541673ffffffffffffffffffffffffffffffffffffffff841690810361034257507fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b228160005280602052604060002073ffffffffffffffffffffffffffffffffffffffff841660005260205260ff60406000205416610b8557005b60008281526020918252604080822073ffffffffffffffffffffffffffffffffffffffff9586168084529084529181902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905580519384529183015291909216908201527ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080606081015b0390a1005b346103135760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103135760206040517f6d696e74657200000000000000000000000000000000000000000000000000008152f35b3461031357610c8136612dee565b9094929390917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80610cc6613581565b92541691169081036103425750808214801590610ea6575b6103185760005b828110610cee57005b73ffffffffffffffffffffffffffffffffffffffff610d16610d1183858a613021565b6133df565b166040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80ac58cd000000000000000000000000000000000000000000000000000000006004820152602081602481855afa90811561070557600091610e78575b5015610e4b575073ffffffffffffffffffffffffffffffffffffffff610da5610d1183858a613021565b1690610db5610d11828689613021565b91610dc182878b613021565b3592813b1561031357606473ffffffffffffffffffffffffffffffffffffffff916000809460405197889586947f42842e0e00000000000000000000000000000000000000000000000000000000865230600487015216602485015260448401525af191821561070557600192610e3a575b5001610ce5565b6000610e4591612e7d565b88610e33565b7f986b9f1f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b610e99915060203d8111610e9f575b610e918183612e7d565b810190613569565b89610d7b565b503d610e87565b5082821415610cde565b346103135760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031357602073ffffffffffffffffffffffffffffffffffffffff7f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd305416604051908152f35b346103135760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031357610f58612c00565b602435908115159182810361031357611052575b73ffffffffffffffffffffffffffffffffffffffff80610f8a613581565b169116918183146110245760207f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191836000527f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e86138252604060002085600052825260406000207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff8316179055604051908152a3005b507ffb0fdf610000000000000000000000000000000000000000000000000000000060005260045260246000fd5b61107c817f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd3061391a565b610f6c565b346103135760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031357602073ffffffffffffffffffffffffffffffffffffffff7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a65416604051908152f35b346103135760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103135761116161114d7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a5613159565b604051918291602083526020830190612c69565b0390f35b346103135760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103135761119c612c23565b7fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b2260043560005260205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052602060ff604060002054166040519015158152f35b346103135760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031357611234612c00565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80611273613581565b925416911690810361034257507f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b800078268579073ffffffffffffffffffffffffffffffffffffffff8116156113005773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055600080f35b7f16de0c800000000000000000000000000000000000000000000000000000000060005260046000fd5b346103135760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031357602073ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc5416604051908152f35b346103135760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610313577fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b226004356113f6613581565b908060005282602052604060002073ffffffffffffffffffffffffffffffffffffffff831660005260205260ff60406000205416156114c25760008181526020938452604080822073ffffffffffffffffffffffffffffffffffffffff949094168083529385529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558051918252928101829052918201527ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b908060608101610c15565b73ffffffffffffffffffffffffffffffffffffffff92507f7aa72882000000000000000000000000000000000000000000000000000000006000526004521660245260446000fd5b346103135760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031357611541612c00565b60243567ffffffffffffffff811161031357611561903690600401612cac565b9060443567ffffffffffffffff811161031357611582903690600401612cac565b907f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e8612936115ad613581565b94838203610318576115c08688836137be565b156116525760005b828110611626575050946116217f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb9373ffffffffffffffffffffffffffffffffffffffff936000988560405196879616991697856133b5565b0390a4005b8061164c611637600193868a613021565b35611643838989613021565b35908b8661383e565b016115c8565b73ffffffffffffffffffffffffffffffffffffffff8781887f05bbb9c400000000000000000000000000000000000000000000000000000000600052166004521660245260446000fd5b34610313576116aa36612dee565b929392917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806116ed613581565b92541691169081036103425750808414801590611842575b6103185760005b84811061171557005b611720818388613021565b3573ffffffffffffffffffffffffffffffffffffffff811690818103610313576000602091611753610d11868b8e613021565b826117bd6117e9611765898d8d613021565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000089820190815273ffffffffffffffffffffffffffffffffffffffff9096166024820152903560448201529182906064820190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612e7d565b51925af115610705576000513d6118395750803b155b61180c575060010161170c565b7f5274afe70000000000000000000000000000000000000000000000000000000060005260045260246000fd5b600114156117ff565b5082841415611705565b346103135761185a36612d4a565b8083949293036103185773ffffffffffffffffffffffffffffffffffffffff7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a65416330361198f57916000907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301915b8581106118d657005b84811015611960578060051b820135838112156103135782019081359167ffffffffffffffff831161031357602001918036038313610313577f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b60019361193e848b8a613021565b3592611957604051928392602084526020840191612d0b565b0390a2016118cd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22060671000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b346103135760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610313576004357fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80611a2e613581565b925416911690810361034257507f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b8000782685790620186a08111611aac57815473ffffffffffffffffffffffffffffffffffffffff1660a09190911b7fffffffffffffffffffffffff000000000000000000000000000000000000000016179055005b7fac0404080000000000000000000000000000000000000000000000000000000060005260045260246000fd5b346103135760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031357611b10612c00565b6064359067ffffffffffffffff821161031357611b34611ba1923690600401612cdd565b611b93611b3f613581565b92611b6a847fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22613260565b7f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e8612923691612f8b565b926044359260243592613400565b005b346103135760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610313576020611be4611bdf612c00565b612fc2565b6040519015158152f35b3461031357611bfc36612d4a565b9192917f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e8612919080850361031857611c3285612eed565b94611c406040519687612e7d565b8086527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611c6d82612eed565b0136602088013760005b818110611c9457604051602080825281906111619082018a612dba565b80611cbb611ca8610d11600194868b613021565b611cb3838789613021565b359088613031565b611cc5828a613322565b5201611c77565b346103135760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031357611d03613bcc565b611161604051928392602084526020840191612d0b565b346103135760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031357600435611d54612c23565b611d5c613581565b9173ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc541673ffffffffffffffffffffffffffffffffffffffff841690810361034257507fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b228160005280602052604060002073ffffffffffffffffffffffffffffffffffffffff841660005260205260ff6040600020541615611e0f57005b60008281526020918252604080822073ffffffffffffffffffffffffffffffffffffffff9586168084529084529181902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580519384529183015291909216908201527f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d908060608101610c15565b346103135760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031357611edd612c00565b611ee5612c23565b60443567ffffffffffffffff811161031357611f05903690600401612cac565b929060643567ffffffffffffffff811161031357611f27903690600401612cac565b9360843567ffffffffffffffff811161031357611f48903690600401612cdd565b939091611f53613581565b957f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308773ffffffffffffffffffffffffffffffffffffffff831673ffffffffffffffffffffffffffffffffffffffff8216036122bc575b505073ffffffffffffffffffffffffffffffffffffffff8216967f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e8612881561075b57898b0361031857611ffd8284836137be565b156122725760005b8b8110612243575050928992888a73ffffffffffffffffffffffffffffffffffffffff9897947f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8a61206899169a8b92169889936040519182918d8c8b856133b5565b0390a43b61207257005b60209461208761208f92612097953691612f05565b993691612f05565b953691612f8b565b9261214760405194859384937fbc197c810000000000000000000000000000000000000000000000000000000085526004850152602484015260a060448401526121176120e760a485018b612dba565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc85820301606486015288612dba565b907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc848303016084850152612c69565b03816000875af1908115610705577fbc197c8100000000000000000000000000000000000000000000000000000000917fffffffff0000000000000000000000000000000000000000000000000000000091600091612224575b5016036121aa57005b612220906121f06040519485947fc287817e0000000000000000000000000000000000000000000000000000000086526004860152606060248601526064850190612dba565b907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc848303016044850152612dba565b0390fd5b61223d915060203d6020116106fe576106f08183612e7d565b866121a1565b8061226c8c6122628f9461225a816001978d613021565b35928d613021565b3590888887613a05565b01612005565b73ffffffffffffffffffffffffffffffffffffffff8381847f05bbb9c400000000000000000000000000000000000000000000000000000000600052166004521660245260446000fd5b6122c59161391a565b8987611faa565b346103135760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031357602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103135760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103135773ffffffffffffffffffffffffffffffffffffffff6024357f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b8000782685754908160a01c9080158015612426575b156123f057505061116160005b60405193849316836020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b61116191620186a08210156124135761240d90620186a092613336565b046123c0565b620186a06124219204613336565b6123c0565b5081156123b3565b346103135760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103135760243567ffffffffffffffff81116103135761247d903690600401612cdd565b9073ffffffffffffffffffffffffffffffffffffffff7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a65416330361198f576124f97f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b9160405191829160208352600435956020840191612d0b565b0390a2005b346103135760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031357612535612c00565b7f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e8612602435604435612564613581565b926125708486836137be565b156125cf5773ffffffffffffffffffffffffffffffffffffffff8086846125be7fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62968860009b60409861383e565b8451968752602087015216941692a4005b73ffffffffffffffffffffffffffffffffffffffff8581867f05bbb9c400000000000000000000000000000000000000000000000000000000600052166004521660245260446000fd5b346103135760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103135760043573ffffffffffffffffffffffffffffffffffffffff81168103610313577fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806126a7613581565b9254169116908103610342575073ffffffffffffffffffffffffffffffffffffffff7f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd3091167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055600080f35b346103135760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610313577f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a6546040517ff724dad700000000000000000000000000000000000000000000000000000000815230600480830191909152356024820152906000908290604490829073ffffffffffffffffffffffffffffffffffffffff165afa908115610705576000916127e7575b6040516020808252819061116190820185612c69565b3d8083833e6127f68183612e7d565b8101906020818303126128675780519067ffffffffffffffff821161286b570181601f820112156128675780519261282d84612f51565b9261283b6040519485612e7d565b8484526020858401011161286457506111619261285e9160208085019101612c46565b906127d1565b80fd5b8280fd5b8380fd5b346103135760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610313576128a6612c00565b60243567ffffffffffffffff8111610313576128c6903690600401612cac565b909160443567ffffffffffffffff8111610313576128e8903690600401612cac565b93909160643567ffffffffffffffff81116103135761297c93612912612984923690600401612cdd565b959091612974612920613581565b9661294b887fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22613260565b7f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e8612993691612f05565b983691612f05565b943691612f8b565b9173ffffffffffffffffffffffffffffffffffffffff8216948515612aa757865190855182036103185760005b828110612a7d5750505073ffffffffffffffffffffffffffffffffffffffff1690846000837f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6040516040815280612a1e612a108d6040840190612dba565b82810360208401528b612dba565b0390a43b612a2857005b6121479160209160405193849283927fbc197c8100000000000000000000000000000000000000000000000000000000845260048401526000602484015260a060448401526121176120e760a485018b612dba565b80612aa1612a8d6001938c613322565b51612a98838b613322565b519088866136a9565b016129b1565b7f021149bd0000000000000000000000000000000000000000000000000000000060005260046000fd5b346103135760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103135761116161114d7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a4613159565b346103135760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610313576004357fffffffff000000000000000000000000000000000000000000000000000000008116810361031357611be46020916130aa565b346103135760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610313576020612bf8612bce612c00565b602435907f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e8612613031565b604051908152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361031357565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361031357565b60005b838110612c595750506000910152565b8181015183820152602001612c49565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093612ca581518092818752878088019101612c46565b0116010190565b9181601f840112156103135782359167ffffffffffffffff8311610313576020808501948460051b01011161031357565b9181601f840112156103135782359167ffffffffffffffff8311610313576020838186019501011161031357565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126103135760043567ffffffffffffffff81116103135781612d9391600401612cac565b929092916024359067ffffffffffffffff821161031357612db691600401612cac565b9091565b906020808351928381520192019060005b818110612dd85750505090565b8251845260209384019390920191600101612dcb565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126103135760043567ffffffffffffffff81116103135781612e3791600401612cac565b9290929160243567ffffffffffffffff81116103135781612e5a91600401612cac565b929092916044359067ffffffffffffffff821161031357612db691600401612cac565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612ebe57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff8111612ebe5760051b60200190565b929190612f1181612eed565b93612f1f6040519586612e7d565b602085838152019160051b810192831161031357905b828210612f4157505050565b8135815260209182019101612f35565b67ffffffffffffffff8111612ebe57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192612f9782612f51565b91612fa56040519384612e7d565b829481845281830111610313578281602093846000960137010152565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690811561301a5773ffffffffffffffffffffffffffffffffffffffff161490565b5050600090565b91908110156119605760051b0190565b909173ffffffffffffffffffffffffffffffffffffffff8316156130805760005260205273ffffffffffffffffffffffffffffffffffffffff6040600020911660005260205260406000205490565b7fca2434a50000000000000000000000000000000000000000000000000000000060005260046000fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167fffffffff000000000000000000000000000000000000000000000000000000008114613153577f01ffc9a700000000000000000000000000000000000000000000000000000000811461314d576000527fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d60205260ff6040600020541690565b50600190565b50600090565b906040519160008154918260011c92600181168015613256575b602085108114613229578487528693929181156131e957506001146131a2575b506131a092500383612e7d565b565b90506000929192526020600020906000915b8183106131cd5750509060206131a09282010138613193565b60209193508060019154838589010152019101909184926131b4565b602093506131a09592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b82010138613193565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b93607f1693613173565b7f6d696e7465720000000000000000000000000000000000000000000000000000600052602052604060002073ffffffffffffffffffffffffffffffffffffffff821660005260205260ff60406000205416156132ba5750565b73ffffffffffffffffffffffffffffffffffffffff907f7aa72882000000000000000000000000000000000000000000000000000000006000527f6d696e74657200000000000000000000000000000000000000000000000000006004521660245260446000fd5b80518210156119605760209160051b010190565b8181029291811591840414171561334957565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83116103135760209260051b809284830137010190565b92906133ce906133dc9593604086526040860191613378565b926020818503910152613378565b90565b3573ffffffffffffffffffffffffffffffffffffffff811681036103135790565b94919092939473ffffffffffffffffffffffffffffffffffffffff8216938415612aa75761344587878573ffffffffffffffffffffffffffffffffffffffff956136a9565b1690836000837fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62604080518a81528b6020820152a43b613487575b5050505050565b6134e29160209160405193849283927ff23a6e6100000000000000000000000000000000000000000000000000000000845260048401526000602484015287604484015288606484015260a0608484015260a4830190612c69565b03816000865af1908115610705577ff23a6e6100000000000000000000000000000000000000000000000000000000917fffffffff000000000000000000000000000000000000000000000000000000009160009161354a575b5016036106a3578080613480565b613563915060203d6020116106fe576106f08183612e7d565b3861353c565b90816020910312610313575180151581036103135790565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016801561369a57323314801561369f575b61369a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90803314908115613609575b506133dc57503390565b6040517f019a202800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201523360248201523060448201529150602090829060649082905afa9081156107055760009161367b575b50386135ff565b613694915060203d602011610e9f57610e918183612e7d565b38613674565b503390565b50601836106135c8565b9091836136b7575b50505050565b8060005281602052604060002073ffffffffffffffffffffffffffffffffffffffff841660005260205260406000205493808501948086111561372d57505060005260205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052604060002055388080806136b1565b6040517f42fb00bc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86166004820152602481019390935260448301526064820152608490fd5b9081602091031261031357517fffffffff00000000000000000000000000000000000000000000000000000000811681036103135790565b73ffffffffffffffffffffffffffffffffffffffff80831690841614929183156137e9575b50505090565b600192935073ffffffffffffffffffffffffffffffffffffffff166000520160205273ffffffffffffffffffffffffffffffffffffffff6040600020911660005260205260ff604060002054163880806137e3565b90918361384b5750505050565b8060005281602052604060002073ffffffffffffffffffffffffffffffffffffffff84166000526020526040600020549380850394808610156138c157505060005260205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052604060002055388080806136b1565b6040517f03dee4c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86166004820152602481019390935260448301526064820152608490fd5b5473ffffffffffffffffffffffffffffffffffffffff1690811515806139fb575b613943575050565b602073ffffffffffffffffffffffffffffffffffffffff916044604051809481937fc617113400000000000000000000000000000000000000000000000000000000835230600484015216958660248301525afa908115610705576000916139dc575b50156139af5750565b7fede71dcc0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b6139f5915060203d602011610e9f57610e918183612e7d565b386139a6565b50813b151561393b565b91929084613a14575050505050565b8160005282602052604060002073ffffffffffffffffffffffffffffffffffffffff8216600052602052604060002054908582039180831015613b70575073ffffffffffffffffffffffffffffffffffffffff851673ffffffffffffffffffffffffffffffffffffffff821603613a8c575b50613480565b8260005283602052604060002073ffffffffffffffffffffffffffffffffffffffff8616600052602052604060002054958087019680881115613b1257505060009283526020938452604080842073ffffffffffffffffffffffffffffffffffffffff928316855280865281852093909355941682529091522055388080808080613a86565b6040517f42fb00bc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff881660048201526024810186905260448101919091526064810191909152608490fd5b6040517f03dee4c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92909216600483015260248201849052604482015260648101869052608490fd5b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168015613d00573233148015613d08575b613d0057803314908115613c5f575b50613c2e576000903690565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec3601903682116103135760009190565b6040517f019a20280000000000000000000000000000000000000000000000000000000081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c60048201523360248201523060448201529150602090829060649082905afa90811561070557600091613ce1575b5038613c22565b613cfa915060203d602011610e9f57610e918183612e7d565b38613cda565b506000903690565b5060183610613c1356fea2646970667358221220720af6b517ff81854080d6c38a0daaca07f835ff1fe373d7fb2dfe00577b86fb64736f6c634300081e00337ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a47ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a5",
  "deployedBytecode": "0x6080604052600436101561001257600080fd5b60003560e01c8062fdd58e14612b9257806301ffc9a714612b2c57806306fdde0314612ad15780630d6a5bbb1461286f5780630e89341c14612718578063114ba8ee14612619578063124d91e5146124fe578063162094c41461242e5780632a55205a1461233b5780632b4c9f16146122cc5780632eb2c2d614611ea65780632f2ff15d14611d1a57806331e66e1e14611ccc5780634e1273f414611bee578063572b6c0514611ba35780635cfa929714611ad957806361ba27da146119bd5780636706467b1461184c57806373c8a9581461169c578063805349341461150a5780638bb9c5bf1461139b5780638da5cb5b1461132a5780638dc251e3146111fd57806391d148541461116557806395d89b41146110f2578063a0c76f6214611081578063a22cb46514610f21578063b0ccc31e14610eb0578063c3666c3614610c73578063d539139314610c1a578063d547741f14610a91578063e1a8bf2c14610a55578063e8ab9ccc14610849578063e985e9c514610795578063f242432a14610463578063f2fde38b1461036f5763f7ba94bd146101b257600080fd5b34610313576101c036612d4a565b90917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80610201613581565b925416911690810361034257508181036103185760005b81811061022157005b61022c818387613021565b3573ffffffffffffffffffffffffffffffffffffffff811680910361031357610256828587613021565b35908147106102e157600080809381935af13d156102d9573d9061027982612f51565b916102876040519384612e7d565b82523d6000602084013e5b156102a05750600101610218565b8051156102af57602081519101fd5b7fd6bda2750000000000000000000000000000000000000000000000000000000060005260046000fd5b606090610292565b50477fcf4791810000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b600080fd5b7f658253360000000000000000000000000000000000000000000000000000000060005260046000fd5b7f2ef4875e0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b346103135760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610313576103a6612c00565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc906103d0613581565b9073ffffffffffffffffffffffffffffffffffffffff808454169216828103610342575073ffffffffffffffffffffffffffffffffffffffff169182820361041457005b827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b346103135760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103135761049a612c00565b6104a2612c23565b604435906064359260843567ffffffffffffffff8111610313576104ca903690600401612cdd565b926104d3613581565b937f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308573ffffffffffffffffffffffffffffffffffffffff861673ffffffffffffffffffffffffffffffffffffffff821603610785575b505073ffffffffffffffffffffffffffffffffffffffff8216947f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e8612861561075b576105768287836137be565b156107115773ffffffffffffffffffffffffffffffffffffffff9161059f8a8a878a8796613a05565b169416918583867fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62604080518c81528d6020820152a43b6105dc57005b6020926105ea913691612f8b565b9261064060405194859384937ff23a6e610000000000000000000000000000000000000000000000000000000085526004850152602484015287604484015288606484015260a0608484015260a4830190612c69565b03816000865af1908115610705577ff23a6e6100000000000000000000000000000000000000000000000000000000917fffffffff00000000000000000000000000000000000000000000000000000000916000916106d6575b5016036106a357005b7f40f39d380000000000000000000000000000000000000000000000000000000060005260045260245260445260646000fd5b6106f8915060203d6020116106fe575b6106f08183612e7d565b810190613786565b8661069a565b503d6106e6565b6040513d6000823e3d90fd5b73ffffffffffffffffffffffffffffffffffffffff8681847f05bbb9c400000000000000000000000000000000000000000000000000000000600052166004521660245260446000fd5b7fb5e890150000000000000000000000000000000000000000000000000000000060005260046000fd5b61078e9161391a565b878561052a565b346103135760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610313576107cc612c00565b73ffffffffffffffffffffffffffffffffffffffff6107e9612c23565b91166000527f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e861360205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052602060ff604060002054166040519015158152f35b346103135760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103135760043567ffffffffffffffff811161031357610898903690600401612cac565b60243567ffffffffffffffff8111610313576108b8903690600401612cac565b929060443567ffffffffffffffff8111610313576108da903690600401612cac565b93909160643567ffffffffffffffff8111610313576108fd903690600401612cdd565b939091610908613581565b97610933897fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22613260565b7f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e86129461095e81612eed565b9761096c604051998a612e7d565b818952602089019160051b81019036821161031357915b818310610a2857505050916109a16109a9926109b195943691612f05565b973691612f05565b933691612f8b565b9183519480518614801590610a1d575b6103185760005b8681106109d157005b80610a178673ffffffffffffffffffffffffffffffffffffffff6109f76001958b613322565b5116610a038487613322565b51610a0e8589613322565b51918d8a613400565b016109c8565b5081518614156109c1565b823573ffffffffffffffffffffffffffffffffffffffff8116810361031357815260209283019201610983565b346103135760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610313576020604051620186a08152f35b346103135760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031357600435610acb612c23565b610ad3613581565b9173ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc541673ffffffffffffffffffffffffffffffffffffffff841690810361034257507fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b228160005280602052604060002073ffffffffffffffffffffffffffffffffffffffff841660005260205260ff60406000205416610b8557005b60008281526020918252604080822073ffffffffffffffffffffffffffffffffffffffff9586168084529084529181902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905580519384529183015291909216908201527ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080606081015b0390a1005b346103135760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103135760206040517f6d696e74657200000000000000000000000000000000000000000000000000008152f35b3461031357610c8136612dee565b9094929390917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80610cc6613581565b92541691169081036103425750808214801590610ea6575b6103185760005b828110610cee57005b73ffffffffffffffffffffffffffffffffffffffff610d16610d1183858a613021565b6133df565b166040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80ac58cd000000000000000000000000000000000000000000000000000000006004820152602081602481855afa90811561070557600091610e78575b5015610e4b575073ffffffffffffffffffffffffffffffffffffffff610da5610d1183858a613021565b1690610db5610d11828689613021565b91610dc182878b613021565b3592813b1561031357606473ffffffffffffffffffffffffffffffffffffffff916000809460405197889586947f42842e0e00000000000000000000000000000000000000000000000000000000865230600487015216602485015260448401525af191821561070557600192610e3a575b5001610ce5565b6000610e4591612e7d565b88610e33565b7f986b9f1f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b610e99915060203d8111610e9f575b610e918183612e7d565b810190613569565b89610d7b565b503d610e87565b5082821415610cde565b346103135760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031357602073ffffffffffffffffffffffffffffffffffffffff7f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd305416604051908152f35b346103135760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031357610f58612c00565b602435908115159182810361031357611052575b73ffffffffffffffffffffffffffffffffffffffff80610f8a613581565b169116918183146110245760207f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191836000527f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e86138252604060002085600052825260406000207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff8316179055604051908152a3005b507ffb0fdf610000000000000000000000000000000000000000000000000000000060005260045260246000fd5b61107c817f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd3061391a565b610f6c565b346103135760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031357602073ffffffffffffffffffffffffffffffffffffffff7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a65416604051908152f35b346103135760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103135761116161114d7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a5613159565b604051918291602083526020830190612c69565b0390f35b346103135760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103135761119c612c23565b7fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b2260043560005260205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052602060ff604060002054166040519015158152f35b346103135760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031357611234612c00565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80611273613581565b925416911690810361034257507f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b800078268579073ffffffffffffffffffffffffffffffffffffffff8116156113005773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055600080f35b7f16de0c800000000000000000000000000000000000000000000000000000000060005260046000fd5b346103135760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031357602073ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc5416604051908152f35b346103135760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610313577fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b226004356113f6613581565b908060005282602052604060002073ffffffffffffffffffffffffffffffffffffffff831660005260205260ff60406000205416156114c25760008181526020938452604080822073ffffffffffffffffffffffffffffffffffffffff949094168083529385529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558051918252928101829052918201527ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b908060608101610c15565b73ffffffffffffffffffffffffffffffffffffffff92507f7aa72882000000000000000000000000000000000000000000000000000000006000526004521660245260446000fd5b346103135760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031357611541612c00565b60243567ffffffffffffffff811161031357611561903690600401612cac565b9060443567ffffffffffffffff811161031357611582903690600401612cac565b907f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e8612936115ad613581565b94838203610318576115c08688836137be565b156116525760005b828110611626575050946116217f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb9373ffffffffffffffffffffffffffffffffffffffff936000988560405196879616991697856133b5565b0390a4005b8061164c611637600193868a613021565b35611643838989613021565b35908b8661383e565b016115c8565b73ffffffffffffffffffffffffffffffffffffffff8781887f05bbb9c400000000000000000000000000000000000000000000000000000000600052166004521660245260446000fd5b34610313576116aa36612dee565b929392917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806116ed613581565b92541691169081036103425750808414801590611842575b6103185760005b84811061171557005b611720818388613021565b3573ffffffffffffffffffffffffffffffffffffffff811690818103610313576000602091611753610d11868b8e613021565b826117bd6117e9611765898d8d613021565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000089820190815273ffffffffffffffffffffffffffffffffffffffff9096166024820152903560448201529182906064820190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612e7d565b51925af115610705576000513d6118395750803b155b61180c575060010161170c565b7f5274afe70000000000000000000000000000000000000000000000000000000060005260045260246000fd5b600114156117ff565b5082841415611705565b346103135761185a36612d4a565b8083949293036103185773ffffffffffffffffffffffffffffffffffffffff7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a65416330361198f57916000907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301915b8581106118d657005b84811015611960578060051b820135838112156103135782019081359167ffffffffffffffff831161031357602001918036038313610313577f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b60019361193e848b8a613021565b3592611957604051928392602084526020840191612d0b565b0390a2016118cd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f22060671000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b346103135760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610313576004357fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80611a2e613581565b925416911690810361034257507f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b8000782685790620186a08111611aac57815473ffffffffffffffffffffffffffffffffffffffff1660a09190911b7fffffffffffffffffffffffff000000000000000000000000000000000000000016179055005b7fac0404080000000000000000000000000000000000000000000000000000000060005260045260246000fd5b346103135760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031357611b10612c00565b6064359067ffffffffffffffff821161031357611b34611ba1923690600401612cdd565b611b93611b3f613581565b92611b6a847fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22613260565b7f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e8612923691612f8b565b926044359260243592613400565b005b346103135760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610313576020611be4611bdf612c00565b612fc2565b6040519015158152f35b3461031357611bfc36612d4a565b9192917f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e8612919080850361031857611c3285612eed565b94611c406040519687612e7d565b8086527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611c6d82612eed565b0136602088013760005b818110611c9457604051602080825281906111619082018a612dba565b80611cbb611ca8610d11600194868b613021565b611cb3838789613021565b359088613031565b611cc5828a613322565b5201611c77565b346103135760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031357611d03613bcc565b611161604051928392602084526020840191612d0b565b346103135760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031357600435611d54612c23565b611d5c613581565b9173ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc541673ffffffffffffffffffffffffffffffffffffffff841690810361034257507fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b228160005280602052604060002073ffffffffffffffffffffffffffffffffffffffff841660005260205260ff6040600020541615611e0f57005b60008281526020918252604080822073ffffffffffffffffffffffffffffffffffffffff9586168084529084529181902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580519384529183015291909216908201527f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d908060608101610c15565b346103135760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031357611edd612c00565b611ee5612c23565b60443567ffffffffffffffff811161031357611f05903690600401612cac565b929060643567ffffffffffffffff811161031357611f27903690600401612cac565b9360843567ffffffffffffffff811161031357611f48903690600401612cdd565b939091611f53613581565b957f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308773ffffffffffffffffffffffffffffffffffffffff831673ffffffffffffffffffffffffffffffffffffffff8216036122bc575b505073ffffffffffffffffffffffffffffffffffffffff8216967f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e8612881561075b57898b0361031857611ffd8284836137be565b156122725760005b8b8110612243575050928992888a73ffffffffffffffffffffffffffffffffffffffff9897947f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8a61206899169a8b92169889936040519182918d8c8b856133b5565b0390a43b61207257005b60209461208761208f92612097953691612f05565b993691612f05565b953691612f8b565b9261214760405194859384937fbc197c810000000000000000000000000000000000000000000000000000000085526004850152602484015260a060448401526121176120e760a485018b612dba565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc85820301606486015288612dba565b907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc848303016084850152612c69565b03816000875af1908115610705577fbc197c8100000000000000000000000000000000000000000000000000000000917fffffffff0000000000000000000000000000000000000000000000000000000091600091612224575b5016036121aa57005b612220906121f06040519485947fc287817e0000000000000000000000000000000000000000000000000000000086526004860152606060248601526064850190612dba565b907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc848303016044850152612dba565b0390fd5b61223d915060203d6020116106fe576106f08183612e7d565b866121a1565b8061226c8c6122628f9461225a816001978d613021565b35928d613021565b3590888887613a05565b01612005565b73ffffffffffffffffffffffffffffffffffffffff8381847f05bbb9c400000000000000000000000000000000000000000000000000000000600052166004521660245260446000fd5b6122c59161391a565b8987611faa565b346103135760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031357602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346103135760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103135773ffffffffffffffffffffffffffffffffffffffff6024357f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b8000782685754908160a01c9080158015612426575b156123f057505061116160005b60405193849316836020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b61116191620186a08210156124135761240d90620186a092613336565b046123c0565b620186a06124219204613336565b6123c0565b5081156123b3565b346103135760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103135760243567ffffffffffffffff81116103135761247d903690600401612cdd565b9073ffffffffffffffffffffffffffffffffffffffff7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a65416330361198f576124f97f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b9160405191829160208352600435956020840191612d0b565b0390a2005b346103135760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031357612535612c00565b7f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e8612602435604435612564613581565b926125708486836137be565b156125cf5773ffffffffffffffffffffffffffffffffffffffff8086846125be7fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62968860009b60409861383e565b8451968752602087015216941692a4005b73ffffffffffffffffffffffffffffffffffffffff8581867f05bbb9c400000000000000000000000000000000000000000000000000000000600052166004521660245260446000fd5b346103135760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103135760043573ffffffffffffffffffffffffffffffffffffffff81168103610313577fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806126a7613581565b9254169116908103610342575073ffffffffffffffffffffffffffffffffffffffff7f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd3091167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055600080f35b346103135760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610313577f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a6546040517ff724dad700000000000000000000000000000000000000000000000000000000815230600480830191909152356024820152906000908290604490829073ffffffffffffffffffffffffffffffffffffffff165afa908115610705576000916127e7575b6040516020808252819061116190820185612c69565b3d8083833e6127f68183612e7d565b8101906020818303126128675780519067ffffffffffffffff821161286b570181601f820112156128675780519261282d84612f51565b9261283b6040519485612e7d565b8484526020858401011161286457506111619261285e9160208085019101612c46565b906127d1565b80fd5b8280fd5b8380fd5b346103135760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610313576128a6612c00565b60243567ffffffffffffffff8111610313576128c6903690600401612cac565b909160443567ffffffffffffffff8111610313576128e8903690600401612cac565b93909160643567ffffffffffffffff81116103135761297c93612912612984923690600401612cdd565b959091612974612920613581565b9661294b887fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22613260565b7f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e8612993691612f05565b983691612f05565b943691612f8b565b9173ffffffffffffffffffffffffffffffffffffffff8216948515612aa757865190855182036103185760005b828110612a7d5750505073ffffffffffffffffffffffffffffffffffffffff1690846000837f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb6040516040815280612a1e612a108d6040840190612dba565b82810360208401528b612dba565b0390a43b612a2857005b6121479160209160405193849283927fbc197c8100000000000000000000000000000000000000000000000000000000845260048401526000602484015260a060448401526121176120e760a485018b612dba565b80612aa1612a8d6001938c613322565b51612a98838b613322565b519088866136a9565b016129b1565b7f021149bd0000000000000000000000000000000000000000000000000000000060005260046000fd5b346103135760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103135761116161114d7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a4613159565b346103135760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610313576004357fffffffff000000000000000000000000000000000000000000000000000000008116810361031357611be46020916130aa565b346103135760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610313576020612bf8612bce612c00565b602435907f5ccf5846fa27a68fafc8e588671a68f5e67c2f9b56af4263806a4d71735e8612613031565b604051908152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361031357565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361031357565b60005b838110612c595750506000910152565b8181015183820152602001612c49565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602093612ca581518092818752878088019101612c46565b0116010190565b9181601f840112156103135782359167ffffffffffffffff8311610313576020808501948460051b01011161031357565b9181601f840112156103135782359167ffffffffffffffff8311610313576020838186019501011161031357565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126103135760043567ffffffffffffffff81116103135781612d9391600401612cac565b929092916024359067ffffffffffffffff821161031357612db691600401612cac565b9091565b906020808351928381520192019060005b818110612dd85750505090565b8251845260209384019390920191600101612dcb565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126103135760043567ffffffffffffffff81116103135781612e3791600401612cac565b9290929160243567ffffffffffffffff81116103135781612e5a91600401612cac565b929092916044359067ffffffffffffffff821161031357612db691600401612cac565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612ebe57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff8111612ebe5760051b60200190565b929190612f1181612eed565b93612f1f6040519586612e7d565b602085838152019160051b810192831161031357905b828210612f4157505050565b8135815260209182019101612f35565b67ffffffffffffffff8111612ebe57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192612f9782612f51565b91612fa56040519384612e7d565b829481845281830111610313578281602093846000960137010152565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690811561301a5773ffffffffffffffffffffffffffffffffffffffff161490565b5050600090565b91908110156119605760051b0190565b909173ffffffffffffffffffffffffffffffffffffffff8316156130805760005260205273ffffffffffffffffffffffffffffffffffffffff6040600020911660005260205260406000205490565b7fca2434a50000000000000000000000000000000000000000000000000000000060005260046000fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167fffffffff000000000000000000000000000000000000000000000000000000008114613153577f01ffc9a700000000000000000000000000000000000000000000000000000000811461314d576000527fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d60205260ff6040600020541690565b50600190565b50600090565b906040519160008154918260011c92600181168015613256575b602085108114613229578487528693929181156131e957506001146131a2575b506131a092500383612e7d565b565b90506000929192526020600020906000915b8183106131cd5750509060206131a09282010138613193565b60209193508060019154838589010152019101909184926131b4565b602093506131a09592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b82010138613193565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b93607f1693613173565b7f6d696e7465720000000000000000000000000000000000000000000000000000600052602052604060002073ffffffffffffffffffffffffffffffffffffffff821660005260205260ff60406000205416156132ba5750565b73ffffffffffffffffffffffffffffffffffffffff907f7aa72882000000000000000000000000000000000000000000000000000000006000527f6d696e74657200000000000000000000000000000000000000000000000000006004521660245260446000fd5b80518210156119605760209160051b010190565b8181029291811591840414171561334957565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83116103135760209260051b809284830137010190565b92906133ce906133dc9593604086526040860191613378565b926020818503910152613378565b90565b3573ffffffffffffffffffffffffffffffffffffffff811681036103135790565b94919092939473ffffffffffffffffffffffffffffffffffffffff8216938415612aa75761344587878573ffffffffffffffffffffffffffffffffffffffff956136a9565b1690836000837fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62604080518a81528b6020820152a43b613487575b5050505050565b6134e29160209160405193849283927ff23a6e6100000000000000000000000000000000000000000000000000000000845260048401526000602484015287604484015288606484015260a0608484015260a4830190612c69565b03816000865af1908115610705577ff23a6e6100000000000000000000000000000000000000000000000000000000917fffffffff000000000000000000000000000000000000000000000000000000009160009161354a575b5016036106a3578080613480565b613563915060203d6020116106fe576106f08183612e7d565b3861353c565b90816020910312610313575180151581036103135790565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016801561369a57323314801561369f575b61369a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90803314908115613609575b506133dc57503390565b6040517f019a202800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201523360248201523060448201529150602090829060649082905afa9081156107055760009161367b575b50386135ff565b613694915060203d602011610e9f57610e918183612e7d565b38613674565b503390565b50601836106135c8565b9091836136b7575b50505050565b8060005281602052604060002073ffffffffffffffffffffffffffffffffffffffff841660005260205260406000205493808501948086111561372d57505060005260205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052604060002055388080806136b1565b6040517f42fb00bc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86166004820152602481019390935260448301526064820152608490fd5b9081602091031261031357517fffffffff00000000000000000000000000000000000000000000000000000000811681036103135790565b73ffffffffffffffffffffffffffffffffffffffff80831690841614929183156137e9575b50505090565b600192935073ffffffffffffffffffffffffffffffffffffffff166000520160205273ffffffffffffffffffffffffffffffffffffffff6040600020911660005260205260ff604060002054163880806137e3565b90918361384b5750505050565b8060005281602052604060002073ffffffffffffffffffffffffffffffffffffffff84166000526020526040600020549380850394808610156138c157505060005260205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052604060002055388080806136b1565b6040517f03dee4c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86166004820152602481019390935260448301526064820152608490fd5b5473ffffffffffffffffffffffffffffffffffffffff1690811515806139fb575b613943575050565b602073ffffffffffffffffffffffffffffffffffffffff916044604051809481937fc617113400000000000000000000000000000000000000000000000000000000835230600484015216958660248301525afa908115610705576000916139dc575b50156139af5750565b7fede71dcc0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b6139f5915060203d602011610e9f57610e918183612e7d565b386139a6565b50813b151561393b565b91929084613a14575050505050565b8160005282602052604060002073ffffffffffffffffffffffffffffffffffffffff8216600052602052604060002054908582039180831015613b70575073ffffffffffffffffffffffffffffffffffffffff851673ffffffffffffffffffffffffffffffffffffffff821603613a8c575b50613480565b8260005283602052604060002073ffffffffffffffffffffffffffffffffffffffff8616600052602052604060002054958087019680881115613b1257505060009283526020938452604080842073ffffffffffffffffffffffffffffffffffffffff928316855280865281852093909355941682529091522055388080808080613a86565b6040517f42fb00bc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff881660048201526024810186905260448101919091526064810191909152608490fd5b6040517f03dee4c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92909216600483015260248201849052604482015260648101869052608490fd5b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168015613d00573233148015613d08575b613d0057803314908115613c5f575b50613c2e576000903690565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec3601903682116103135760009190565b6040517f019a20280000000000000000000000000000000000000000000000000000000081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c60048201523360248201523060448201529150602090829060649082905afa90811561070557600091613ce1575b5038613c22565b613cfa915060203d602011610e9f57610e918183612e7d565b38613cda565b506000903690565b5060183610613c1356fea2646970667358221220720af6b517ff81854080d6c38a0daaca07f835ff1fe373d7fb2dfe00577b86fb64736f6c634300081e0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
