{
  "_format": "hh-sol-artifact-1",
  "contractName": "ERC721FullProxiedMock",
  "sourceName": "contracts/mocks/token/ERC721/preset/proxied/ERC721FullProxiedMock.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IForwarderRegistry",
          "name": "forwarderRegistry",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "percentage",
          "type": "uint256"
        }
      ],
      "name": "ERC2981IncorrectRoyaltyPercentage",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC2981IncorrectRoyaltyReceiver",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC721BalanceOfAddressZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ERC721ExistingToken",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC721MintToAddressZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ERC721NonApprovedForApproval",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ERC721NonApprovedForTransfer",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ERC721NonExistingToken",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ERC721NonOwnedToken",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ERC721SafeTransferRejected",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "ERC721SelfApproval",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "ERC721SelfApprovalForAll",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ERC721TransferToAddressZero",
      "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": "currentPhase",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "newPhase",
          "type": "uint256"
        }
      ],
      "name": "InitializationPhaseAlreadyReached",
      "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": "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": "approved",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "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": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "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": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "batchMint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "batchTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "recipients",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "deliver",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "forwarderRegistry",
      "outputs": [
        {
          "internalType": "contract IForwarderRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "approved",
          "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": "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"
        }
      ],
      "name": "init",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "tokenOwner",
          "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": "tokenId",
          "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": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "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": "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": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "uri",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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"
    }
  ],
  "bytecode": "0x60a03461007f57601f61437c38819003918201601f19168301916001600160401b038311848410176100845780849260209460405283398101031261007f57516001600160a01b038116810361007f576080526040516142e1908161009b82396080518181816123a80152818161361301528181613e80015261402b0152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001257600080fd5b60003560e01c806301ffc9a71461325457806306fdde03146131f9578063081812fc1461319c578063095ea7b314612f085780630e07f8541461264e578063114ba8ee1461256757806323b872dd146124bf5780632a55205a146123cc5780632b4c9f161461235d5780632f2ff15d146121d157806331e66e1e1461214e57806340c10f19146120be57806342842e0e14611fee5780634684d7e914611e0e578063572b6c0514611dc357806361ba27da14611ca75780636352211e14611c2c57806370a0823114611b6257806373c8a958146119b25780638832e6e3146117645780638bb9c5bf146115f55780638da5cb5b146115845780638dc251e31461145757806391d14854146113bf57806395d89b41146113505780639da5e83214611226578063a0c76f62146111b5578063a22cb46514611055578063b0ccc31e14610fe4578063b88d4fde14610ec2578063c3666c3614610c85578063c87b56dd14610ad2578063d539139314610a79578063d547741f146108f0578063e1a8bf2c146108b4578063e985e9c514610800578063f2fde38b1461070c578063f3993d11146103865763f7ba94bd146101c957600080fd5b3461032a576101d7366134eb565b90917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80610218613e69565b9254169116908103610359575081810361032f5760005b81811061023857005b610243818387613c73565b3573ffffffffffffffffffffffffffffffffffffffff811680910361032a5761026d828587613c73565b35908147106102f857600080809381935af13d156102f0573d906102908261365b565b9161029e6040519384613557565b82523d6000602084013e5b156102b7575060010161022f565b8051156102c657602081519101fd5b7fd6bda2750000000000000000000000000000000000000000000000000000000060005260046000fd5b6060906102a9565b50477fcf4791810000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b600080fd5b7f658253360000000000000000000000000000000000000000000000000000000060005260046000fd5b7f2ef4875e0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b3461032a5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a576103bd613341565b6103c5613364565b9060443567ffffffffffffffff811161032a576103e6903690600401613427565b926103ef613e69565b907f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308273ffffffffffffffffffffffffffffffffffffffff861673ffffffffffffffffffffffffffffffffffffffff8216036106fc575b505073ffffffffffffffffffffffffffffffffffffffff7fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c091169384156106d2576104948382849694613f94565b9373ffffffffffffffffffffffffffffffffffffffff600095159216945b87811061051757878787818114158061050e575b6104cc57005b60009081527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c16020526040808220805485900390559181522080549091019055005b508215156104c6565b610522818986613c73565b35806000528260205260406000205473ffffffffffffffffffffffffffffffffffffffff811680156106a4578803610672578461059b575b509081600192600052836020528860406000205588887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4016104b2565b740100000000000000000000000000000000000000001615801561060f575b6105c4578961055a565b8673ffffffffffffffffffffffffffffffffffffffff877fa4a3018b000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b50806000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c260205273ffffffffffffffffffffffffffffffffffffffff6040600020541673ffffffffffffffffffffffffffffffffffffffff871614156105ba565b50867f14dbb5360000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b827fdd5604750000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7f86c870670000000000000000000000000000000000000000000000000000000060005260046000fd5b61070591613d7e565b8582610446565b3461032a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a57610743613341565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc9061076d613e69565b9073ffffffffffffffffffffffffffffffffffffffff808454169216828103610359575073ffffffffffffffffffffffffffffffffffffffff16918282036107b157005b827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b3461032a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a57610837613341565b73ffffffffffffffffffffffffffffffffffffffff610854613364565b91166000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c360205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052602060ff604060002054166040519015158152f35b3461032a5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a576020604051620186a08152f35b3461032a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a5760043561092a613364565b610932613e69565b9173ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc541673ffffffffffffffffffffffffffffffffffffffff841690810361035957507fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b228160005280602052604060002073ffffffffffffffffffffffffffffffffffffffff841660005260205260ff604060002054166109e457005b60008281526020918252604080822073ffffffffffffffffffffffffffffffffffffffff9586168084529084529181902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905580519384529183015291909216908201527ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080606081015b0390a1005b3461032a5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a5760206040517f6d696e74657200000000000000000000000000000000000000000000000000008152f35b3461032a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a57610bc46000600435610b33817fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613c18565b5073ffffffffffffffffffffffffffffffffffffffff7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a6541660405180809581947ff724dad700000000000000000000000000000000000000000000000000000000835230600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03915afa908115610c7957600091610bf1575b60405160208082528190610bed908201856132fe565b0390f35b3d8083833e610c008183613557565b810190602081830312610c715780519067ffffffffffffffff8211610c75570181601f82011215610c7157805192610c378461365b565b92610c456040519485613557565b84845260208584010111610c6e5750610bed92610c6891602080850191016132db565b90610bd7565b80fd5b8280fd5b8380fd5b6040513d6000823e3d90fd5b3461032a57610c9336613458565b9094929390917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80610cd8613e69565b92541691169081036103595750808214801590610eb8575b61032f5760005b828110610d0057005b73ffffffffffffffffffffffffffffffffffffffff610d28610d2383858a613c73565b613c83565b166040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80ac58cd000000000000000000000000000000000000000000000000000000006004820152602081602481855afa908115610c7957600091610e8a575b5015610e5d575073ffffffffffffffffffffffffffffffffffffffff610db7610d2383858a613c73565b1690610dc7610d23828689613c73565b91610dd382878b613c73565b3592813b1561032a57606473ffffffffffffffffffffffffffffffffffffffff916000809460405197889586947f42842e0e00000000000000000000000000000000000000000000000000000000865230600487015216602485015260448401525af1918215610c7957600192610e4c575b5001610cf7565b6000610e5791613557565b88610e45565b7f986b9f1f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b610eab915060203d8111610eb1575b610ea38183613557565b810190613ca4565b89610d8d565b503d610e99565b5082821415610cf0565b3461032a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a57610ef9613341565b610f01613364565b60443560643567ffffffffffffffff811161032a57610f24903690600401613387565b929093610f2f613e69565b937f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308573ffffffffffffffffffffffffffffffffffffffff841673ffffffffffffffffffffffffffffffffffffffff821603610fd4575b5050610fb5848484887fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613818565b823b610fbd57005b610fd295610fcc913691613695565b9361415a565b005b610fdd91613d7e565b8685610f86565b3461032a5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a57602073ffffffffffffffffffffffffffffffffffffffff7f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd305416604051908152f35b3461032a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a5761108c613341565b602435908115159182810361032a57611186575b73ffffffffffffffffffffffffffffffffffffffff806110be613e69565b169116918183146111585760207f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191836000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c38252604060002085600052825260406000207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff8316179055604051908152a3005b507fe4215c6a0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b6111b0817f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd30613d7e565b6110a0565b3461032a5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a57602073ffffffffffffffffffffffffffffffffffffffff7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a65416604051908152f35b3461032a57611234366134eb565b6112667fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22611260613e69565b90613a51565b7fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c09261129181613598565b9461129f6040519687613557565b818652602086019160051b81019036821161032a57915b81831061132357505050906112cc9136916135b0565b918051918351830361032f5760005b8381106112e457005b8061131d73ffffffffffffffffffffffffffffffffffffffff61130960019487613bd5565b51166113158389613bd5565b519085613b13565b016112db565b823573ffffffffffffffffffffffffffffffffffffffff8116810361032a578152602092830192016112b6565b3461032a5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a57610bed6113ab7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a5613cbc565b6040519182916020835260208301906132fe565b3461032a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a576113f6613364565b7fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b2260043560005260205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052602060ff604060002054166040519015158152f35b3461032a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a5761148e613341565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806114cd613e69565b925416911690810361035957507f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b800078268579073ffffffffffffffffffffffffffffffffffffffff81161561155a5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055600080f35b7f16de0c800000000000000000000000000000000000000000000000000000000060005260046000fd5b3461032a5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a57602073ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc5416604051908152f35b3461032a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a577fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22600435611650613e69565b908060005282602052604060002073ffffffffffffffffffffffffffffffffffffffff831660005260205260ff604060002054161561171c5760008181526020938452604080822073ffffffffffffffffffffffffffffffffffffffff949094168083529385529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558051918252928101829052918201527ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b908060608101610a74565b73ffffffffffffffffffffffffffffffffffffffff92507f7aa72882000000000000000000000000000000000000000000000000000000006000526004521660245260446000fd5b3461032a5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a5761179b613341565b6024359060443567ffffffffffffffff811161032a576117bf903690600401613387565b916117ec7fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22611260613e69565b61182c84826118267fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c09561181e613e69565b973691613695565b94613b13565b803b61183457005b73ffffffffffffffffffffffffffffffffffffffff8060209216936118a160405194859384937f150b7a02000000000000000000000000000000000000000000000000000000008552166004840152600060248401528760448401526080606484015260848301906132fe565b03816000865af1908115610c7957600091611933575b507fffffffff000000000000000000000000000000000000000000000000000000007f150b7a020000000000000000000000000000000000000000000000000000000091160361190357005b7fc215a7a10000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b6020813d6020116119aa575b8161194c60209383613557565b810103126119a65751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610c6e57507fffffffff000000000000000000000000000000000000000000000000000000006118b7565b5080fd5b3d915061193f565b3461032a576119c036613458565b929392917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80611a03613e69565b92541691169081036103595750808414801590611b58575b61032f5760005b848110611a2b57005b611a36818388613c73565b3573ffffffffffffffffffffffffffffffffffffffff81169081810361032a576000602091611a69610d23868b8e613c73565b82611ad3611aff611a7b898d8d613c73565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000089820190815273ffffffffffffffffffffffffffffffffffffffff9096166024820152903560448201529182906064820190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282613557565b51925af115610c79576000513d611b4f5750803b155b611b225750600101611a22565b7f5274afe70000000000000000000000000000000000000000000000000000000060005260045260246000fd5b60011415611b15565b5082841415611a1b565b3461032a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a57611b99613341565b73ffffffffffffffffffffffffffffffffffffffff811615611c025773ffffffffffffffffffffffffffffffffffffffff166000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c16020526020604060002054604051908152f35b7faefbce4e0000000000000000000000000000000000000000000000000000000060005260046000fd5b3461032a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a576020611c896004357fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613c18565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b3461032a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a576004357fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80611d18613e69565b925416911690810361035957507f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b8000782685790620186a08111611d9657815473ffffffffffffffffffffffffffffffffffffffff1660a09190911b7fffffffffffffffffffffffff000000000000000000000000000000000000000016179055005b7fac0404080000000000000000000000000000000000000000000000000000000060005260045260246000fd5b3461032a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a576020611e04611dff613341565b6135fc565b6040519015158152f35b3461032a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a57611e45613341565b60243567ffffffffffffffff811161032a5773ffffffffffffffffffffffffffffffffffffffff611e7d611ed4923690600401613427565b9290611eab7fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22611260613e69565b7fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c09336916135b0565b9216908115611fc45782519260005b848110611f24575050506000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c16020526040600020908154019055600080f35b611f2e8183613bd5565b51806000528360205273ffffffffffffffffffffffffffffffffffffffff60406000205416611f9757908160019260005284602052856040600020558560007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a401611ee3565b7f753eceac0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7f7851b9cd0000000000000000000000000000000000000000000000000000000060005260046000fd5b3461032a57611ffc366133b5565b612004613e69565b917f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308373ffffffffffffffffffffffffffffffffffffffff861673ffffffffffffffffffffffffffffffffffffffff8216036120ae575b505061208a828286867fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613818565b803b61209257005b610fd293604051936120a5602086613557565b6000855261415a565b6120b791613d7e565b848361205b565b3461032a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a57610fd26120f8613341565b6121247fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22611260613e69565b602435907fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613b13565b3461032a5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a576040612187614014565b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8484519586946020865281602087015286860137600085828601015201168101030190f35b3461032a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a5760043561220b613364565b612213613e69565b9173ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc541673ffffffffffffffffffffffffffffffffffffffff841690810361035957507fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b228160005280602052604060002073ffffffffffffffffffffffffffffffffffffffff841660005260205260ff60406000205416156122c657005b60008281526020918252604080822073ffffffffffffffffffffffffffffffffffffffff9586168084529084529181902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580519384529183015291909216908201527f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d908060608101610a74565b3461032a5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461032a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a5773ffffffffffffffffffffffffffffffffffffffff6024357f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b8000782685754908160a01c90801580156124b7575b15612481575050610bed60005b60405193849316836020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b610bed91620186a08210156124a45761249e90620186a092613a0f565b04612451565b620186a06124b29204613a0f565b612451565b508115612444565b3461032a57610fd26124d0366133b5565b916124d9613e69565b7f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308173ffffffffffffffffffffffffffffffffffffffff841673ffffffffffffffffffffffffffffffffffffffff821603612557575b50507fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613818565b61256091613d7e565b858161252f565b3461032a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a5761259e613341565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806125dd613e69565b9254169116908103610359575073ffffffffffffffffffffffffffffffffffffffff7f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd3091167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055600080f35b3461032a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a5760043567ffffffffffffffff811161032a5761269d903690600401613387565b60243567ffffffffffffffff811161032a576126bd903690600401613387565b6044939193359173ffffffffffffffffffffffffffffffffffffffff8316830361032a576064359373ffffffffffffffffffffffffffffffffffffffff8516850361032a577fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc61272b613e69565b7f5b388d90dc1312ba799f321972f13311234fa1163bcabec7cf66101c4876eb83546001811015612bc7575060017f5b388d90dc1312ba799f321972f13311234fa1163bcabec7cf66101c4876eb835573ffffffffffffffffffffffffffffffffffffffff169081612eb3575b50507fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d6020527fa53d5a615b1d5279f1a6647c5c0f31bf064b1e70af135676a4a96aeaeb691a2f805460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091821681179092557f8ed2355fc3f859d445b81332ba1875c675be71b9fe1bab0a25be6436696b0ec780548216831790557f98ea984a1dd4b0fbb2764a2a70a93d7e6137ea3c70db196cc96460f50c0d1a1f80548216831790557f70a1033a668c0b93d699f00f1cf02b517801b7285ead3ea5fa8d9b43f89ed57180548216831790557f4f521d2bc326c534847f496e961505200b8e61c57a75e48fd6b97dc560e2c5a480548216831790557f0845b122e17f0ee9a0d1d2feeec009013976e8c85c80079e88858099492b187280548216831790557f2a55205a000000000000000000000000000000000000000000000000000000006000527f2d8b44ae6eaa7ac3b154622dbcfc94b3609ce793bb4cffd595b15ac18d28e5208054909116821790557f92f72593ca50a0096f68ee94e7000db40ed086164b695855e2250750b8bfaf58547f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a49391811015612bc7575060017f92f72593ca50a0096f68ee94e7000db40ed086164b695855e2250750b8bfaf585567ffffffffffffffff8211612d845781906129b384546137c5565b601f8111612e60575b50600090601f8311600114612dbe57600092612db3575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790555b67ffffffffffffffff8111612d8457612a3e7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a5546137c5565b601f8111612d00575b506000601f8211600114612c045781929394600092612bf9575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916177f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a5555b73ffffffffffffffffffffffffffffffffffffffff7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a691167fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd30907f2f02d396cb1be29636682c8684200b30a98554d3b74293aa4495cb5e1d252f6d546001811015612bc7575073ffffffffffffffffffffffffffffffffffffffff9060017f2f02d396cb1be29636682c8684200b30a98554d3b74293aa4495cb5e1d252f6d55167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055600080f35b7fbf0c18ec00000000000000000000000000000000000000000000000000000000600052600452600160245260446000fd5b013590508480612a61565b7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a581527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08216947fc39bad3db5d56dccf839bc8a79759b3192b97757d993f7663c9998f4fbefc8a191805b878110612ce8575083600195969710612cb0575b505050811b017f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a555612ab3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c19910135169055848080612c83565b90926020600181928686013581550194019101612c6f565b7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a56000527fc39bad3db5d56dccf839bc8a79759b3192b97757d993f7663c9998f4fbefc8a1601f830160051c81019160208410612d7a575b601f0160051c01905b818110612d6e5750612a47565b60008155600101612d61565b9091508190612d58565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b0135905087806129d3565b90917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016918481526020812092815b818110612e485750908460019594939210612e10575b505050811b019055612a05565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c19910135169055878080612e03565b91936020600181928787013581550195019201612ded565b909150836000526020600020601f840160051c81019160208510612ea9575b90601f859493920160051c01905b818110612e9a57506129bc565b60008155849350600101612e8d565b9091508190612e7f565b817fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a38680612798565b3461032a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a57612f3f613341565b6024359073ffffffffffffffffffffffffffffffffffffffff811690811590811561316c575b507fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0612f8f613e69565b9184600052816020526040600020549073ffffffffffffffffffffffffffffffffffffffff821693841561313e5784861461311057612fcf818686613f94565b156130c457501561303357740100000000000000000000000000000000000000001661301f575b505b7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600080a4005b836000526020528060406000205583612ff6565b907401000000000000000000000000000000000000000082178092036130b0575b5050826000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c26020526040600020827fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055612ff8565b846000526020526040600020558380613054565b8473ffffffffffffffffffffffffffffffffffffffff88927fc7563a18000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b847fb7fdc0100000000000000000000000000000000000000000000000000000000060005260045260246000fd5b867fdd5604750000000000000000000000000000000000000000000000000000000060005260045260246000fd5b613196907f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd30613d7e565b83612f65565b3461032a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a576020611c896004357fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613756565b3461032a5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a57610bed6113ab7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a4613cbc565b3461032a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a576004357fffffffff000000000000000000000000000000000000000000000000000000008116810361032a57611e046020917fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d6136cc565b60005b8381106132ee5750506000910152565b81810151838201526020016132de565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209361333a815180928187528780880191016132db565b0116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361032a57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361032a57565b9181601f8401121561032a5782359167ffffffffffffffff831161032a576020838186019501011161032a57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc606091011261032a5760043573ffffffffffffffffffffffffffffffffffffffff8116810361032a579060243573ffffffffffffffffffffffffffffffffffffffff8116810361032a579060443590565b9181601f8401121561032a5782359167ffffffffffffffff831161032a576020808501948460051b01011161032a57565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261032a5760043567ffffffffffffffff811161032a57816134a191600401613427565b9290929160243567ffffffffffffffff811161032a57816134c491600401613427565b929092916044359067ffffffffffffffff821161032a576134e791600401613427565b9091565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261032a5760043567ffffffffffffffff811161032a578161353491600401613427565b929092916024359067ffffffffffffffff821161032a576134e791600401613427565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612d8457604052565b67ffffffffffffffff8111612d845760051b60200190565b9291906135bc81613598565b936135ca6040519586613557565b602085838152019160051b810192831161032a57905b8282106135ec57505050565b81358152602091820191016135e0565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169081156136545773ffffffffffffffffffffffffffffffffffffffff161490565b5050600090565b67ffffffffffffffff8111612d8457601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926136a18261365b565b916136af6040519384613557565b82948184528183011161032a578281602093846000960137010152565b907fffffffff00000000000000000000000000000000000000000000000000000000167fffffffff000000000000000000000000000000000000000000000000000000008114613654577f01ffc9a700000000000000000000000000000000000000000000000000000000811461374f5760005260205260ff6040600020541690565b5050600190565b816000528060205260406000205473ffffffffffffffffffffffffffffffffffffffff8116156106a457740100000000000000000000000000000000000000001615613654576002916000520160205273ffffffffffffffffffffffffffffffffffffffff6040600020541690565b90600182811c9216801561380e575b60208310146137df57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f16916137d4565b909273ffffffffffffffffffffffffffffffffffffffff169283156106d257846000528160205260406000205473ffffffffffffffffffffffffffffffffffffffff811693841561313e5773ffffffffffffffffffffffffffffffffffffffff81168095036139dd578261388c9185613f94565b15613922575b50508360005280602052826040600020558282036138d3575b507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4565b600101816000528060205260406000207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff815401905582600052602052604060002060018154019055386138ab565b7401000000000000000000000000000000000000000016158015613997575b61394b5780613892565b8273ffffffffffffffffffffffffffffffffffffffff86927fa4a3018b000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b50846000526002820160205273ffffffffffffffffffffffffffffffffffffffff6040600020541673ffffffffffffffffffffffffffffffffffffffff82161415613941565b86857f14dbb5360000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b81810292918115918404141715613a2257565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f6d696e7465720000000000000000000000000000000000000000000000000000600052602052604060002073ffffffffffffffffffffffffffffffffffffffff821660005260205260ff6040600020541615613aab5750565b73ffffffffffffffffffffffffffffffffffffffff907f7aa72882000000000000000000000000000000000000000000000000000000006000527f6d696e74657200000000000000000000000000000000000000000000000000006004521660245260446000fd5b9073ffffffffffffffffffffffffffffffffffffffff16908115611fc457826000528060205273ffffffffffffffffffffffffffffffffffffffff60406000205416613ba757600190836000528060205282604060002055826000520160205260406000206001815401905560007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4565b827f753eceac0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b8051821015613be95760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8160005260205273ffffffffffffffffffffffffffffffffffffffff60406000205416908115613c46575090565b7fdd5604750000000000000000000000000000000000000000000000000000000060005260045260246000fd5b9190811015613be95760051b0190565b3573ffffffffffffffffffffffffffffffffffffffff8116810361032a5790565b9081602091031261032a5751801515810361032a5790565b9060405191826000825492613cd0846137c5565b8084529360018116908115613d3e5750600114613cf7575b50613cf592500383613557565b565b90506000929192526020600020906000915b818310613d22575050906020613cf59282010138613ce8565b6020919350806001915483858901015201910190918492613d09565b60209350613cf59592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b82010138613ce8565b5473ffffffffffffffffffffffffffffffffffffffff169081151580613e5f575b613da7575050565b602073ffffffffffffffffffffffffffffffffffffffff916044604051809481937fc617113400000000000000000000000000000000000000000000000000000000835230600484015216958660248301525afa908115610c7957600091613e40575b5015613e135750565b7fede71dcc0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b613e59915060203d602011610eb157610ea38183613557565b38613e0a565b50813b1515613d9f565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168015613f85573233148015613f8a575b613f85577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90803314908115613ef4575b50613ef157503390565b90565b6040517f019a202800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201523360248201523060448201529150602090829060649082905afa908115610c7957600091613f66575b5038613ee7565b613f7f915060203d602011610eb157610ea38183613557565b38613f5f565b503390565b5060183610613eb0565b73ffffffffffffffffffffffffffffffffffffffff8083169084161492918315613fbf575b50505090565b600392935073ffffffffffffffffffffffffffffffffffffffff166000520160205273ffffffffffffffffffffffffffffffffffffffff6040600020911660005260205260ff60406000205416388080613fb9565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168015614148573233148015614150575b614148578033149081156140a7575b50614076576000903690565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36019036821161032a5760009190565b6040517f019a20280000000000000000000000000000000000000000000000000000000081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c60048201523360248201523060448201529150602090829060649082905afa908115610c7957600091614129575b503861406a565b614142915060203d602011610eb157610ea38183613557565b38614122565b506000903690565b506018361061405b565b73ffffffffffffffffffffffffffffffffffffffff906141cc826020949597969716958360405196879586957f150b7a020000000000000000000000000000000000000000000000000000000087521660048601521660248401528760448401526080606484015260848301906132fe565b03816000865af1908115610c7957600091614230575b507fffffffff000000000000000000000000000000000000000000000000000000007f150b7a0200000000000000000000000000000000000000000000000000000000911603611903575050565b6020813d6020116142a3575b8161424960209383613557565b810103126119a65751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610c6e57507fffffffff000000000000000000000000000000000000000000000000000000006141e2565b3d915061423c56fea264697066735822122057ffd6aa7c3f0efa56dd1464548cc267ea5823dda516cc2a24cf59e2cefa774364736f6c634300081e0033",
  "deployedBytecode": "0x6080604052600436101561001257600080fd5b60003560e01c806301ffc9a71461325457806306fdde03146131f9578063081812fc1461319c578063095ea7b314612f085780630e07f8541461264e578063114ba8ee1461256757806323b872dd146124bf5780632a55205a146123cc5780632b4c9f161461235d5780632f2ff15d146121d157806331e66e1e1461214e57806340c10f19146120be57806342842e0e14611fee5780634684d7e914611e0e578063572b6c0514611dc357806361ba27da14611ca75780636352211e14611c2c57806370a0823114611b6257806373c8a958146119b25780638832e6e3146117645780638bb9c5bf146115f55780638da5cb5b146115845780638dc251e31461145757806391d14854146113bf57806395d89b41146113505780639da5e83214611226578063a0c76f62146111b5578063a22cb46514611055578063b0ccc31e14610fe4578063b88d4fde14610ec2578063c3666c3614610c85578063c87b56dd14610ad2578063d539139314610a79578063d547741f146108f0578063e1a8bf2c146108b4578063e985e9c514610800578063f2fde38b1461070c578063f3993d11146103865763f7ba94bd146101c957600080fd5b3461032a576101d7366134eb565b90917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80610218613e69565b9254169116908103610359575081810361032f5760005b81811061023857005b610243818387613c73565b3573ffffffffffffffffffffffffffffffffffffffff811680910361032a5761026d828587613c73565b35908147106102f857600080809381935af13d156102f0573d906102908261365b565b9161029e6040519384613557565b82523d6000602084013e5b156102b7575060010161022f565b8051156102c657602081519101fd5b7fd6bda2750000000000000000000000000000000000000000000000000000000060005260046000fd5b6060906102a9565b50477fcf4791810000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b600080fd5b7f658253360000000000000000000000000000000000000000000000000000000060005260046000fd5b7f2ef4875e0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b3461032a5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a576103bd613341565b6103c5613364565b9060443567ffffffffffffffff811161032a576103e6903690600401613427565b926103ef613e69565b907f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308273ffffffffffffffffffffffffffffffffffffffff861673ffffffffffffffffffffffffffffffffffffffff8216036106fc575b505073ffffffffffffffffffffffffffffffffffffffff7fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c091169384156106d2576104948382849694613f94565b9373ffffffffffffffffffffffffffffffffffffffff600095159216945b87811061051757878787818114158061050e575b6104cc57005b60009081527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c16020526040808220805485900390559181522080549091019055005b508215156104c6565b610522818986613c73565b35806000528260205260406000205473ffffffffffffffffffffffffffffffffffffffff811680156106a4578803610672578461059b575b509081600192600052836020528860406000205588887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4016104b2565b740100000000000000000000000000000000000000001615801561060f575b6105c4578961055a565b8673ffffffffffffffffffffffffffffffffffffffff877fa4a3018b000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b50806000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c260205273ffffffffffffffffffffffffffffffffffffffff6040600020541673ffffffffffffffffffffffffffffffffffffffff871614156105ba565b50867f14dbb5360000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b827fdd5604750000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7f86c870670000000000000000000000000000000000000000000000000000000060005260046000fd5b61070591613d7e565b8582610446565b3461032a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a57610743613341565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc9061076d613e69565b9073ffffffffffffffffffffffffffffffffffffffff808454169216828103610359575073ffffffffffffffffffffffffffffffffffffffff16918282036107b157005b827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b3461032a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a57610837613341565b73ffffffffffffffffffffffffffffffffffffffff610854613364565b91166000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c360205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052602060ff604060002054166040519015158152f35b3461032a5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a576020604051620186a08152f35b3461032a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a5760043561092a613364565b610932613e69565b9173ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc541673ffffffffffffffffffffffffffffffffffffffff841690810361035957507fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b228160005280602052604060002073ffffffffffffffffffffffffffffffffffffffff841660005260205260ff604060002054166109e457005b60008281526020918252604080822073ffffffffffffffffffffffffffffffffffffffff9586168084529084529181902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905580519384529183015291909216908201527ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080606081015b0390a1005b3461032a5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a5760206040517f6d696e74657200000000000000000000000000000000000000000000000000008152f35b3461032a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a57610bc46000600435610b33817fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613c18565b5073ffffffffffffffffffffffffffffffffffffffff7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a6541660405180809581947ff724dad700000000000000000000000000000000000000000000000000000000835230600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03915afa908115610c7957600091610bf1575b60405160208082528190610bed908201856132fe565b0390f35b3d8083833e610c008183613557565b810190602081830312610c715780519067ffffffffffffffff8211610c75570181601f82011215610c7157805192610c378461365b565b92610c456040519485613557565b84845260208584010111610c6e5750610bed92610c6891602080850191016132db565b90610bd7565b80fd5b8280fd5b8380fd5b6040513d6000823e3d90fd5b3461032a57610c9336613458565b9094929390917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80610cd8613e69565b92541691169081036103595750808214801590610eb8575b61032f5760005b828110610d0057005b73ffffffffffffffffffffffffffffffffffffffff610d28610d2383858a613c73565b613c83565b166040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80ac58cd000000000000000000000000000000000000000000000000000000006004820152602081602481855afa908115610c7957600091610e8a575b5015610e5d575073ffffffffffffffffffffffffffffffffffffffff610db7610d2383858a613c73565b1690610dc7610d23828689613c73565b91610dd382878b613c73565b3592813b1561032a57606473ffffffffffffffffffffffffffffffffffffffff916000809460405197889586947f42842e0e00000000000000000000000000000000000000000000000000000000865230600487015216602485015260448401525af1918215610c7957600192610e4c575b5001610cf7565b6000610e5791613557565b88610e45565b7f986b9f1f0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b610eab915060203d8111610eb1575b610ea38183613557565b810190613ca4565b89610d8d565b503d610e99565b5082821415610cf0565b3461032a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a57610ef9613341565b610f01613364565b60443560643567ffffffffffffffff811161032a57610f24903690600401613387565b929093610f2f613e69565b937f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308573ffffffffffffffffffffffffffffffffffffffff841673ffffffffffffffffffffffffffffffffffffffff821603610fd4575b5050610fb5848484887fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613818565b823b610fbd57005b610fd295610fcc913691613695565b9361415a565b005b610fdd91613d7e565b8685610f86565b3461032a5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a57602073ffffffffffffffffffffffffffffffffffffffff7f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd305416604051908152f35b3461032a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a5761108c613341565b602435908115159182810361032a57611186575b73ffffffffffffffffffffffffffffffffffffffff806110be613e69565b169116918183146111585760207f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191836000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c38252604060002085600052825260406000207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff8316179055604051908152a3005b507fe4215c6a0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b6111b0817f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd30613d7e565b6110a0565b3461032a5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a57602073ffffffffffffffffffffffffffffffffffffffff7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a65416604051908152f35b3461032a57611234366134eb565b6112667fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22611260613e69565b90613a51565b7fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c09261129181613598565b9461129f6040519687613557565b818652602086019160051b81019036821161032a57915b81831061132357505050906112cc9136916135b0565b918051918351830361032f5760005b8381106112e457005b8061131d73ffffffffffffffffffffffffffffffffffffffff61130960019487613bd5565b51166113158389613bd5565b519085613b13565b016112db565b823573ffffffffffffffffffffffffffffffffffffffff8116810361032a578152602092830192016112b6565b3461032a5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a57610bed6113ab7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a5613cbc565b6040519182916020835260208301906132fe565b3461032a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a576113f6613364565b7fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b2260043560005260205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052602060ff604060002054166040519015158152f35b3461032a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a5761148e613341565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806114cd613e69565b925416911690810361035957507f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b800078268579073ffffffffffffffffffffffffffffffffffffffff81161561155a5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055600080f35b7f16de0c800000000000000000000000000000000000000000000000000000000060005260046000fd5b3461032a5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a57602073ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc5416604051908152f35b3461032a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a577fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22600435611650613e69565b908060005282602052604060002073ffffffffffffffffffffffffffffffffffffffff831660005260205260ff604060002054161561171c5760008181526020938452604080822073ffffffffffffffffffffffffffffffffffffffff949094168083529385529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558051918252928101829052918201527ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b908060608101610a74565b73ffffffffffffffffffffffffffffffffffffffff92507f7aa72882000000000000000000000000000000000000000000000000000000006000526004521660245260446000fd5b3461032a5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a5761179b613341565b6024359060443567ffffffffffffffff811161032a576117bf903690600401613387565b916117ec7fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22611260613e69565b61182c84826118267fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c09561181e613e69565b973691613695565b94613b13565b803b61183457005b73ffffffffffffffffffffffffffffffffffffffff8060209216936118a160405194859384937f150b7a02000000000000000000000000000000000000000000000000000000008552166004840152600060248401528760448401526080606484015260848301906132fe565b03816000865af1908115610c7957600091611933575b507fffffffff000000000000000000000000000000000000000000000000000000007f150b7a020000000000000000000000000000000000000000000000000000000091160361190357005b7fc215a7a10000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b6020813d6020116119aa575b8161194c60209383613557565b810103126119a65751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610c6e57507fffffffff000000000000000000000000000000000000000000000000000000006118b7565b5080fd5b3d915061193f565b3461032a576119c036613458565b929392917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80611a03613e69565b92541691169081036103595750808414801590611b58575b61032f5760005b848110611a2b57005b611a36818388613c73565b3573ffffffffffffffffffffffffffffffffffffffff81169081810361032a576000602091611a69610d23868b8e613c73565b82611ad3611aff611a7b898d8d613c73565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000089820190815273ffffffffffffffffffffffffffffffffffffffff9096166024820152903560448201529182906064820190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282613557565b51925af115610c79576000513d611b4f5750803b155b611b225750600101611a22565b7f5274afe70000000000000000000000000000000000000000000000000000000060005260045260246000fd5b60011415611b15565b5082841415611a1b565b3461032a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a57611b99613341565b73ffffffffffffffffffffffffffffffffffffffff811615611c025773ffffffffffffffffffffffffffffffffffffffff166000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c16020526020604060002054604051908152f35b7faefbce4e0000000000000000000000000000000000000000000000000000000060005260046000fd5b3461032a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a576020611c896004357fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613c18565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b3461032a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a576004357fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff80611d18613e69565b925416911690810361035957507f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b8000782685790620186a08111611d9657815473ffffffffffffffffffffffffffffffffffffffff1660a09190911b7fffffffffffffffffffffffff000000000000000000000000000000000000000016179055005b7fac0404080000000000000000000000000000000000000000000000000000000060005260045260246000fd5b3461032a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a576020611e04611dff613341565b6135fc565b6040519015158152f35b3461032a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a57611e45613341565b60243567ffffffffffffffff811161032a5773ffffffffffffffffffffffffffffffffffffffff611e7d611ed4923690600401613427565b9290611eab7fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22611260613e69565b7fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c09336916135b0565b9216908115611fc45782519260005b848110611f24575050506000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c16020526040600020908154019055600080f35b611f2e8183613bd5565b51806000528360205273ffffffffffffffffffffffffffffffffffffffff60406000205416611f9757908160019260005284602052856040600020558560007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a401611ee3565b7f753eceac0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7f7851b9cd0000000000000000000000000000000000000000000000000000000060005260046000fd5b3461032a57611ffc366133b5565b612004613e69565b917f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308373ffffffffffffffffffffffffffffffffffffffff861673ffffffffffffffffffffffffffffffffffffffff8216036120ae575b505061208a828286867fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613818565b803b61209257005b610fd293604051936120a5602086613557565b6000855261415a565b6120b791613d7e565b848361205b565b3461032a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a57610fd26120f8613341565b6121247fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22611260613e69565b602435907fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613b13565b3461032a5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a576040612187614014565b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8484519586946020865281602087015286860137600085828601015201168101030190f35b3461032a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a5760043561220b613364565b612213613e69565b9173ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc541673ffffffffffffffffffffffffffffffffffffffff841690810361035957507fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b228160005280602052604060002073ffffffffffffffffffffffffffffffffffffffff841660005260205260ff60406000205416156122c657005b60008281526020918252604080822073ffffffffffffffffffffffffffffffffffffffff9586168084529084529181902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580519384529183015291909216908201527f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d908060608101610a74565b3461032a5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461032a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a5773ffffffffffffffffffffffffffffffffffffffff6024357f2c0cf10337caabbd02dcf226f05f5fd19a0919a41a8df8958c39b8000782685754908160a01c90801580156124b7575b15612481575050610bed60005b60405193849316836020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b610bed91620186a08210156124a45761249e90620186a092613a0f565b04612451565b620186a06124b29204613a0f565b612451565b508115612444565b3461032a57610fd26124d0366133b5565b916124d9613e69565b7f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd308173ffffffffffffffffffffffffffffffffffffffff841673ffffffffffffffffffffffffffffffffffffffff821603612557575b50507fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613818565b61256091613d7e565b858161252f565b3461032a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a5761259e613341565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806125dd613e69565b9254169116908103610359575073ffffffffffffffffffffffffffffffffffffffff7f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd3091167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055600080f35b3461032a5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a5760043567ffffffffffffffff811161032a5761269d903690600401613387565b60243567ffffffffffffffff811161032a576126bd903690600401613387565b6044939193359173ffffffffffffffffffffffffffffffffffffffff8316830361032a576064359373ffffffffffffffffffffffffffffffffffffffff8516850361032a577fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc61272b613e69565b7f5b388d90dc1312ba799f321972f13311234fa1163bcabec7cf66101c4876eb83546001811015612bc7575060017f5b388d90dc1312ba799f321972f13311234fa1163bcabec7cf66101c4876eb835573ffffffffffffffffffffffffffffffffffffffff169081612eb3575b50507fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d6020527fa53d5a615b1d5279f1a6647c5c0f31bf064b1e70af135676a4a96aeaeb691a2f805460017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091821681179092557f8ed2355fc3f859d445b81332ba1875c675be71b9fe1bab0a25be6436696b0ec780548216831790557f98ea984a1dd4b0fbb2764a2a70a93d7e6137ea3c70db196cc96460f50c0d1a1f80548216831790557f70a1033a668c0b93d699f00f1cf02b517801b7285ead3ea5fa8d9b43f89ed57180548216831790557f4f521d2bc326c534847f496e961505200b8e61c57a75e48fd6b97dc560e2c5a480548216831790557f0845b122e17f0ee9a0d1d2feeec009013976e8c85c80079e88858099492b187280548216831790557f2a55205a000000000000000000000000000000000000000000000000000000006000527f2d8b44ae6eaa7ac3b154622dbcfc94b3609ce793bb4cffd595b15ac18d28e5208054909116821790557f92f72593ca50a0096f68ee94e7000db40ed086164b695855e2250750b8bfaf58547f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a49391811015612bc7575060017f92f72593ca50a0096f68ee94e7000db40ed086164b695855e2250750b8bfaf585567ffffffffffffffff8211612d845781906129b384546137c5565b601f8111612e60575b50600090601f8311600114612dbe57600092612db3575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c19161790555b67ffffffffffffffff8111612d8457612a3e7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a5546137c5565b601f8111612d00575b506000601f8211600114612c045781929394600092612bf9575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b9260031b1c1916177f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a5555b73ffffffffffffffffffffffffffffffffffffffff7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a691167fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd30907f2f02d396cb1be29636682c8684200b30a98554d3b74293aa4495cb5e1d252f6d546001811015612bc7575073ffffffffffffffffffffffffffffffffffffffff9060017f2f02d396cb1be29636682c8684200b30a98554d3b74293aa4495cb5e1d252f6d55167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055600080f35b7fbf0c18ec00000000000000000000000000000000000000000000000000000000600052600452600160245260446000fd5b013590508480612a61565b7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a581527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08216947fc39bad3db5d56dccf839bc8a79759b3192b97757d993f7663c9998f4fbefc8a191805b878110612ce8575083600195969710612cb0575b505050811b017f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a555612ab3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c19910135169055848080612c83565b90926020600181928686013581550194019101612c6f565b7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a56000527fc39bad3db5d56dccf839bc8a79759b3192b97757d993f7663c9998f4fbefc8a1601f830160051c81019160208410612d7a575b601f0160051c01905b818110612d6e5750612a47565b60008155600101612d61565b9091508190612d58565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b0135905087806129d3565b90917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016918481526020812092815b818110612e485750908460019594939210612e10575b505050811b019055612a05565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88560031b161c19910135169055878080612e03565b91936020600181928787013581550195019201612ded565b909150836000526020600020601f840160051c81019160208510612ea9575b90601f859493920160051c01905b818110612e9a57506129bc565b60008155849350600101612e8d565b9091508190612e7f565b817fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a38680612798565b3461032a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a57612f3f613341565b6024359073ffffffffffffffffffffffffffffffffffffffff811690811590811561316c575b507fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0612f8f613e69565b9184600052816020526040600020549073ffffffffffffffffffffffffffffffffffffffff821693841561313e5784861461311057612fcf818686613f94565b156130c457501561303357740100000000000000000000000000000000000000001661301f575b505b7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600080a4005b836000526020528060406000205583612ff6565b907401000000000000000000000000000000000000000082178092036130b0575b5050826000527fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c26020526040600020827fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055612ff8565b846000526020526040600020558380613054565b8473ffffffffffffffffffffffffffffffffffffffff88927fc7563a18000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b847fb7fdc0100000000000000000000000000000000000000000000000000000000060005260045260246000fd5b867fdd5604750000000000000000000000000000000000000000000000000000000060005260045260246000fd5b613196907f609b85bcafa81ecfaf3ff62cdde2c6c9082a68dbe4922f07399c706bdeb7cd30613d7e565b83612f65565b3461032a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a576020611c896004357fddf3ee18ae6d688373c219468f8be446e7ae82215f4779d821c7ea5e8c13c0c0613756565b3461032a5760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a57610bed6113ab7f7ea68fd2dcf1c056b94db6a0a537aa80d26fa9ab1eacd85da1ba0b61b7e7a8a4613cbc565b3461032a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261032a576004357fffffffff000000000000000000000000000000000000000000000000000000008116810361032a57611e046020917fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d6136cc565b60005b8381106132ee5750506000910152565b81810151838201526020016132de565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209361333a815180928187528780880191016132db565b0116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361032a57565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361032a57565b9181601f8401121561032a5782359167ffffffffffffffff831161032a576020838186019501011161032a57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc606091011261032a5760043573ffffffffffffffffffffffffffffffffffffffff8116810361032a579060243573ffffffffffffffffffffffffffffffffffffffff8116810361032a579060443590565b9181601f8401121561032a5782359167ffffffffffffffff831161032a576020808501948460051b01011161032a57565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261032a5760043567ffffffffffffffff811161032a57816134a191600401613427565b9290929160243567ffffffffffffffff811161032a57816134c491600401613427565b929092916044359067ffffffffffffffff821161032a576134e791600401613427565b9091565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261032a5760043567ffffffffffffffff811161032a578161353491600401613427565b929092916024359067ffffffffffffffff821161032a576134e791600401613427565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612d8457604052565b67ffffffffffffffff8111612d845760051b60200190565b9291906135bc81613598565b936135ca6040519586613557565b602085838152019160051b810192831161032a57905b8282106135ec57505050565b81358152602091820191016135e0565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169081156136545773ffffffffffffffffffffffffffffffffffffffff161490565b5050600090565b67ffffffffffffffff8111612d8457601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926136a18261365b565b916136af6040519384613557565b82948184528183011161032a578281602093846000960137010152565b907fffffffff00000000000000000000000000000000000000000000000000000000167fffffffff000000000000000000000000000000000000000000000000000000008114613654577f01ffc9a700000000000000000000000000000000000000000000000000000000811461374f5760005260205260ff6040600020541690565b5050600190565b816000528060205260406000205473ffffffffffffffffffffffffffffffffffffffff8116156106a457740100000000000000000000000000000000000000001615613654576002916000520160205273ffffffffffffffffffffffffffffffffffffffff6040600020541690565b90600182811c9216801561380e575b60208310146137df57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f16916137d4565b909273ffffffffffffffffffffffffffffffffffffffff169283156106d257846000528160205260406000205473ffffffffffffffffffffffffffffffffffffffff811693841561313e5773ffffffffffffffffffffffffffffffffffffffff81168095036139dd578261388c9185613f94565b15613922575b50508360005280602052826040600020558282036138d3575b507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4565b600101816000528060205260406000207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff815401905582600052602052604060002060018154019055386138ab565b7401000000000000000000000000000000000000000016158015613997575b61394b5780613892565b8273ffffffffffffffffffffffffffffffffffffffff86927fa4a3018b000000000000000000000000000000000000000000000000000000006000521660045260245260445260646000fd5b50846000526002820160205273ffffffffffffffffffffffffffffffffffffffff6040600020541673ffffffffffffffffffffffffffffffffffffffff82161415613941565b86857f14dbb5360000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b81810292918115918404141715613a2257565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f6d696e7465720000000000000000000000000000000000000000000000000000600052602052604060002073ffffffffffffffffffffffffffffffffffffffff821660005260205260ff6040600020541615613aab5750565b73ffffffffffffffffffffffffffffffffffffffff907f7aa72882000000000000000000000000000000000000000000000000000000006000527f6d696e74657200000000000000000000000000000000000000000000000000006004521660245260446000fd5b9073ffffffffffffffffffffffffffffffffffffffff16908115611fc457826000528060205273ffffffffffffffffffffffffffffffffffffffff60406000205416613ba757600190836000528060205282604060002055826000520160205260406000206001815401905560007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4565b827f753eceac0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b8051821015613be95760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8160005260205273ffffffffffffffffffffffffffffffffffffffff60406000205416908115613c46575090565b7fdd5604750000000000000000000000000000000000000000000000000000000060005260045260246000fd5b9190811015613be95760051b0190565b3573ffffffffffffffffffffffffffffffffffffffff8116810361032a5790565b9081602091031261032a5751801515810361032a5790565b9060405191826000825492613cd0846137c5565b8084529360018116908115613d3e5750600114613cf7575b50613cf592500383613557565b565b90506000929192526020600020906000915b818310613d22575050906020613cf59282010138613ce8565b6020919350806001915483858901015201910190918492613d09565b60209350613cf59592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b82010138613ce8565b5473ffffffffffffffffffffffffffffffffffffffff169081151580613e5f575b613da7575050565b602073ffffffffffffffffffffffffffffffffffffffff916044604051809481937fc617113400000000000000000000000000000000000000000000000000000000835230600484015216958660248301525afa908115610c7957600091613e40575b5015613e135750565b7fede71dcc0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b613e59915060203d602011610eb157610ea38183613557565b38613e0a565b50813b1515613d9f565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168015613f85573233148015613f8a575b613f85577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90803314908115613ef4575b50613ef157503390565b90565b6040517f019a202800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201523360248201523060448201529150602090829060649082905afa908115610c7957600091613f66575b5038613ee7565b613f7f915060203d602011610eb157610ea38183613557565b38613f5f565b503390565b5060183610613eb0565b73ffffffffffffffffffffffffffffffffffffffff8083169084161492918315613fbf575b50505090565b600392935073ffffffffffffffffffffffffffffffffffffffff166000520160205273ffffffffffffffffffffffffffffffffffffffff6040600020911660005260205260ff60406000205416388080613fb9565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168015614148573233148015614150575b614148578033149081156140a7575b50614076576000903690565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36019036821161032a5760009190565b6040517f019a20280000000000000000000000000000000000000000000000000000000081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c60048201523360248201523060448201529150602090829060649082905afa908115610c7957600091614129575b503861406a565b614142915060203d602011610eb157610ea38183613557565b38614122565b506000903690565b506018361061405b565b73ffffffffffffffffffffffffffffffffffffffff906141cc826020949597969716958360405196879586957f150b7a020000000000000000000000000000000000000000000000000000000087521660048601521660248401528760448401526080606484015260848301906132fe565b03816000865af1908115610c7957600091614230575b507fffffffff000000000000000000000000000000000000000000000000000000007f150b7a0200000000000000000000000000000000000000000000000000000000911603611903575050565b6020813d6020116142a3575b8161424960209383613557565b810103126119a65751907fffffffff0000000000000000000000000000000000000000000000000000000082168203610c6e57507fffffffff000000000000000000000000000000000000000000000000000000006141e2565b3d915061423c56fea264697066735822122057ffd6aa7c3f0efa56dd1464548cc267ea5823dda516cc2a24cf59e2cefa774364736f6c634300081e0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
