{
  "_format": "hh-sol-artifact-1",
  "contractName": "LinearPoolClaimRemainderMock",
  "sourceName": "contracts/mocks/staking/linear/LinearPoolClaimRemainderMock.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "scalingFactorDecimals",
          "type": "uint8"
        },
        {
          "internalType": "contract IForwarderRegistry",
          "name": "forwarderRegistry",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "FailedCall",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "IllegalInterfaceId",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InconsistentArrayLengths",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenContract",
          "type": "address"
        }
      ],
      "name": "IncorrectTokenContractType",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "needed",
          "type": "uint256"
        }
      ],
      "name": "InsufficientBalance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "claimable",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "claimed",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "unclaimed",
          "type": "uint256"
        }
      ],
      "name": "InvalidClaimSum",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidDuration",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidRewardAmount",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidStakeAmount",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidWithdrawAmount",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "NotContractOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "staker",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "stake",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "withdraw",
          "type": "uint256"
        }
      ],
      "name": "NotEnoughStake",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "NotRoleHolder",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ReentrancyGuardReentrantCall",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "currentRewardRate",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "newRewardRate",
          "type": "uint256"
        }
      ],
      "name": "RewardDilution",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RewardOverflow",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "SafeERC20FailedOperation",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ScalingFactorOutOfBounds",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalReward",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "transferredReward",
          "type": "uint256"
        }
      ],
      "name": "ClaimTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "staker",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "claimData",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "claimed",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "unclaimed",
          "type": "uint256"
        }
      ],
      "name": "Claimed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "rewarder",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "reward",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "duration",
          "type": "uint256"
        }
      ],
      "name": "RewardAdded",
      "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": "staker",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "stakeData",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "stakePoints",
          "type": "uint256"
        }
      ],
      "name": "Staked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "staker",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "withdrawData",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "stakePoints",
          "type": "uint256"
        }
      ],
      "name": "Withdrawn",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "REWARDER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "SCALING_FACTOR",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "reward",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "duration",
          "type": "uint256"
        }
      ],
      "name": "addReward",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "claimData",
          "type": "bytes"
        }
      ],
      "name": "claim",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "distributionEnd",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "earned",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "forwarderRegistry",
      "outputs": [
        {
          "internalType": "contract IForwarderRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "hasRole_",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "forwarder",
          "type": "address"
        }
      ],
      "name": "isTrustedForwarder",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "lastTimeRewardApplicable",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "lastUpdated",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "contract IERC20[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "name": "recoverERC20s",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "contract IERC721[]",
          "name": "contracts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        }
      ],
      "name": "recoverERC721s",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "name": "recoverETH",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rewardPerStakePoint",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "staker",
          "type": "address"
        }
      ],
      "name": "rewardPerStakePointPaid",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "paid",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rewardPerStakePointStored",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rewardRate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "staker",
          "type": "address"
        }
      ],
      "name": "rewards",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "reward",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "stakeData",
          "type": "bytes"
        }
      ],
      "name": "stake",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "staker",
          "type": "address"
        }
      ],
      "name": "staked",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "stakePoints",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalStaked",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "withdrawData",
          "type": "bytes"
        }
      ],
      "name": "withdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60c0346101a457601f6124e238819003918201601f19168301916001600160401b038311848410176101a95780849260409485528339810103126101a45780519060ff82168092036101a457602001516001600160a01b03811681036101a45733610145575b6307f5828d60e41b60009081527fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d6020527fa53d5a615b1d5279f1a6647c5c0f31bf064b1e70af135676a4a96aeaeb691a2f805460ff191660019081179091559055608052604d81101561013457604d811161011e57600a0a60a05260405161232290816101c0823960805181818161191d01528181611f0e01526121d2015260a0518181816105150152818161076a01526110bc0152f35b634e487b7160e01b600052601160045260246000fd5b63a54ad6c560e01b60005260046000fd5b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc80546001600160a01b0319163390811790915560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3610065565b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001257600080fd5b6000803560e01c80628cc26214611b1157806301ffc9a714611aa95780630700037d14611a465780630968f264146119415780632b4c9f16146118d25780632c9d0b80146118995780632d1e0c02146117b55780632f2ff15d146115e6578063572b6c051461159a57806373c8a958146113b657806375c93bb9146110005780637b0a47ee14610fc457806380faa57d14610f83578063817b1cd214610f475780638580cf7614610eee5780638bb9c5bf14610d895780638da5cb5b14610d1757806391d1485414610c8557806398807d8414610c225780639d696e3614610be6578063c3666c361461093d578063c5c8f770146108da578063c63ff8dd14610723578063d0b06f5d146106e7578063d547741f14610538578063ef4cadc5146104df578063efa90b54146104a3578063f2fde38b1461037d5763f7ba94bd1461015b57600080fd5b3461037a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a5760043567ffffffffffffffff8111610378576101aa903690600401611c0d565b60243567ffffffffffffffff8111610374576101ca903690600401611c0d565b90917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff8061020b6121bb565b9254169116908103610347575081810361031f57845b81811061022c578580f35b610237818387612083565b3573ffffffffffffffffffffffffffffffffffffffff811680910361031b57610261828587612083565b35908147106102eb578780809381935af13d156102e3573d9061028382611e07565b916102916040519384611d97565b82523d88602084013e5b156102a95750600101610221565b80518790156102bb5750602081519101fd5b807fd6bda2750000000000000000000000000000000000000000000000000000000060049252fd5b60609061029b565b60448883477fcf479181000000000000000000000000000000000000000000000000000000008352600452602452fd5b8680fd5b6004857f65825336000000000000000000000000000000000000000000000000000000008152fd5b7f2ef4875e0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b8380fd5b505b80fd5b503461037a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a576103b5611b53565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc6103de6121bb565b9080549273ffffffffffffffffffffffffffffffffffffffff8085169316838103610478575073ffffffffffffffffffffffffffffffffffffffff1692838303610426578480f35b7fffffffffffffffffffffffff000000000000000000000000000000000000000016831790557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a3388080808480f35b7f2ef4875e000000000000000000000000000000000000000000000000000000008652600452602485fd5b503461037a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a576020600554604051908152f35b503461037a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b503461037a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a57600435610573611b7b565b61057b6121bb565b9173ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc541673ffffffffffffffffffffffffffffffffffffffff841690810361034757507fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22818552806020526040852073ffffffffffffffffffffffffffffffffffffffff841660005260205260ff6040600020541661062d578480f35b7ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b936106dc918387526020526040862073ffffffffffffffffffffffffffffffffffffffff851660005260205260406000207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541690556040519384938491604091949373ffffffffffffffffffffffffffffffffffffffff80926060860197865216602085015216910152565b0390a1388080808480f35b503461037a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a576020600254604051908152f35b503461037a5761073236611b9e565b61073a612180565b6107426121bb565b9061074c826120e3565b61075582611d2d565b9283610764575b846001815580f35b909192937f00000000000000000000000000000000000000000000000000000000000000006107938187611e78565b9181156108ad577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830192808411610880578560809473ffffffffffffffffffffffffffffffffffffffff610835867f019eda09011e476781de26947e4b78ee0a834e7182f5ff2eb62bcf8c523f42ca9a999787601f977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09950509d06611d20565b9916988960005260076020526040600020556040519687956060875281606088015287870137600086838701015260208501526001604085015201168101030190a23880808061075c565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526012600452fd5b503461037a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a57604060209173ffffffffffffffffffffffffffffffffffffffff61092c611b53565b168152600883522054604051908152f35b503461037a5761094c36611c3e565b9294939092917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806109916121bb565b9254169116908103610bbb5750808214801590610bb1575b610b8957865b8281106109ba578780f35b73ffffffffffffffffffffffffffffffffffffffff6109e26109dd83858b612083565b6120c2565b166040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80ac58cd000000000000000000000000000000000000000000000000000000006004820152602081602481855afa908115610b7e578a91610b50575b5015610b25575073ffffffffffffffffffffffffffffffffffffffff610a706109dd83858b612083565b169088610a816109dd83878b612083565b610a8c83888a612083565b3593803b15610b215773ffffffffffffffffffffffffffffffffffffffff918360649260405197889586947f42842e0e00000000000000000000000000000000000000000000000000000000865230600487015216602485015260448401525af191898315610b1557600193610b05575b5050016109af565b610b0e91611d97565b3889610afd565b604051903d90823e3d90fd5b8280fd5b7f986b9f1f000000000000000000000000000000000000000000000000000000008952600452602488fd5b610b71915060203d8111610b77575b610b698183611d97565b810190612168565b38610a46565b503d610b5f565b6040513d8c823e3d90fd5b6004877f65825336000000000000000000000000000000000000000000000000000000008152fd5b50828214156109a9565b7f2ef4875e000000000000000000000000000000000000000000000000000000008852600452602487fd5b503461037a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a576020600454604051908152f35b503461037a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a57604060209173ffffffffffffffffffffffffffffffffffffffff610c74611b53565b168152600683522054604051908152f35b503461037a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a5760ff6040602092610cc4611b7b565b7fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b226004358352855273ffffffffffffffffffffffffffffffffffffffff8383209116825284522054166040519015158152f35b503461037a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a5750602073ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc5416604051908152f35b503461037a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a57600435907fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22610de66121bb565b90838352806020526040832073ffffffffffffffffffffffffffffffffffffffff8316845260205260ff60408420541615610ea8578383526020908152604080842073ffffffffffffffffffffffffffffffffffffffff9390931680855292825280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558051948552908401829052830152907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90606090a180f35b5073ffffffffffffffffffffffffffffffffffffffff906044937f7aa7288200000000000000000000000000000000000000000000000000000000845260045216602452fd5b503461037a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a5760206040517f72657761726465720000000000000000000000000000000000000000000000008152f35b503461037a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a576020600154604051908152f35b503461037a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a576020610fbc611f56565b604051908152f35b503461037a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a576020600354604051908152f35b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a576004356024356110396121bb565b907fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b227f726577617264657200000000000000000000000000000000000000000000000085526020526040842073ffffffffffffffffffffffffffffffffffffffff8316855260205260ff60408520541615611350578215611328578015611300577f0000000000000000000000000000000000000000000000000000000000000000808402908482041480910290156112d8576110f4611eb1565b60045560055442108015906112cd575b6112bd575b600554906111178342611d20565b914281116111805750928273ffffffffffffffffffffffffffffffffffffffff926111656040957f6a6f77044107a33658235d41bedbbaf2fe9ccdceb313143c947a5e76e1ec847497611e78565b6003556005555b42600255835195865260208601521692a280f35b9160039391935461119a6111944286611cd1565b82611d0d565b8501948510948515029461129557838211611209575050507f6a6f77044107a33658235d41bedbbaf2fe9ccdceb313143c947a5e76e1ec8474926040926112016111fa73ffffffffffffffffffffffffffffffffffffffff944290611cd1565b8092611e78565b60035561116c565b916112179193508094611e78565b9080821061126757509260409273ffffffffffffffffffffffffffffffffffffffff927f6a6f77044107a33658235d41bedbbaf2fe9ccdceb313143c947a5e76e1ec84749560035560055561116c565b7f19e2447d000000000000000000000000000000000000000000000000000000008752600452602452604485fd5b6004887f50082065000000000000000000000000000000000000000000000000000000008152fd5b6112c5611f56565b600255611109565b506001541515611104565b6004857f50082065000000000000000000000000000000000000000000000000000000008152fd5b6004847f76166401000000000000000000000000000000000000000000000000000000008152fd5b6004847f38539865000000000000000000000000000000000000000000000000000000008152fd5b60448473ffffffffffffffffffffffffffffffffffffffff847f7aa728820000000000000000000000000000000000000000000000000000000083527f726577617264657200000000000000000000000000000000000000000000000060045216602452fd5b503461037a576113c536611c3e565b929594939290917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff8061140b6121bb565b925416911690810361156f5750808414801590611565575b61153d57855b848110611434578680f35b61143f81838a612083565b3573ffffffffffffffffffffffffffffffffffffffff81169081810361153957886020916114716109dd868b8d612083565b8261147d878a8c612083565b356040519073ffffffffffffffffffffffffffffffffffffffff878301947fa9059cbb0000000000000000000000000000000000000000000000000000000086521660248301526044820152604481526114d8606482611d97565b51925af11561152e5787513d6115255750803b155b6114fa5750600101611429565b7f5274afe7000000000000000000000000000000000000000000000000000000008852600452602487fd5b600114156114ed565b6040513d89823e3d90fd5b8880fd5b6004867f65825336000000000000000000000000000000000000000000000000000000008152fd5b5081841415611423565b7f2ef4875e000000000000000000000000000000000000000000000000000000008752600452602486fd5b503461037a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a5760206115dc6115d7611b53565b611ef7565b6040519015158152f35b503461037a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a57600435611621611b7b565b6116296121bb565b9173ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc541673ffffffffffffffffffffffffffffffffffffffff841690810361178a57507fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22818552806020526040852073ffffffffffffffffffffffffffffffffffffffff8416865260205260ff604086205416156116da578480f35b7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d936106dc918387526020526040862073ffffffffffffffffffffffffffffffffffffffff851687526020526040862060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790556040519384938491604091949373ffffffffffffffffffffffffffffffffffffffff80926060860197865216602085015216910152565b7f2ef4875e000000000000000000000000000000000000000000000000000000008552600452602484fd5b506117d46117c236611b9e565b91906117cc6121bb565b923691611e41565b906117dd612180565b6117e6816120e3565b6117ef826122d8565b908115611871579073ffffffffffffffffffffffffffffffffffffffff7ff4679d394f1f97f1a3df1d73e193866ec5a813168ad5fa6958f9be21b10a594e9261183a83600154611d20565b6001551692838552600660205260408520611856838254611d20565b905561186760405192839283612017565b0390a26001815580f35b6004847f040ef8ec000000000000000000000000000000000000000000000000000000008152fd5b503461037a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a576020610fbc611eb1565b503461037a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461037a576119536117c236611b9e565b9061195c612180565b611965816120e3565b61196e826122d8565b908115611a1e5773ffffffffffffffffffffffffffffffffffffffff1691828452600660205260408420548281106119ea5790827faae638dec0d864ccb08558c28981bcfaee41330f57c4911cbe2d8432d0fb729e93928587526006602052036040862055816001540360015561186760405192839283612017565b905083927f2b6a77580000000000000000000000000000000000000000000000000000000060649552600452602452604452fd5b6004847fdb73cdf0000000000000000000000000000000000000000000000000000000008152fd5b503461037a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a57604060209173ffffffffffffffffffffffffffffffffffffffff611a98611b53565b168152600783522054604051908152f35b503461037a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a57600435907fffffffff000000000000000000000000000000000000000000000000000000008216820361037a5760206115dc83611f68565b503461037a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a576020610fbc611b4e611b53565b611d2d565b6004359073ffffffffffffffffffffffffffffffffffffffff82168203611b7657565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff82168203611b7657565b9060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc830112611b765760043567ffffffffffffffff8111611b765782602382011215611b765780600401359267ffffffffffffffff8411611b765760248483010111611b76576024019190565b9181601f84011215611b765782359167ffffffffffffffff8311611b76576020808501948460051b010111611b7657565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc820112611b765760043567ffffffffffffffff8111611b765781611c8791600401611c0d565b9290929160243567ffffffffffffffff8111611b765781611caa91600401611c0d565b929092916044359067ffffffffffffffff8211611b7657611ccd91600401611c0d565b9091565b91908203918211611cde57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810292918115918404141715611cde57565b91908201809211611cde57565b73ffffffffffffffffffffffffffffffffffffffff611d949116806000526006602052611d7f604060002054611d79611d64611eb1565b84600052600860205260406000205490611cd1565b90611d0d565b90600052600760205260406000205490611d20565b90565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611dd857604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff8111611dd857601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192611e4d82611e07565b91611e5b6040519384611d97565b829481845281830111611b76578281602093846000960137010152565b8115611e82570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6001548015611ef057611d9490611eea60045491611ee5611edc611ed3611f56565b60025490611cd1565b60035490611d0d565b611e78565b90611d20565b5060045490565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908115611f4f5773ffffffffffffffffffffffffffffffffffffffff161490565b5050600090565b600554804210600014611d9457504290565b7fffffffff00000000000000000000000000000000000000000000000000000000167fffffffff000000000000000000000000000000000000000000000000000000008114612011577f01ffc9a700000000000000000000000000000000000000000000000000000000811461200b576000527fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d60205260ff6040600020541690565b50600190565b50600090565b9291906040845280519081604086015260005b82811061206d57505060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f836000846020968a0101520116850101930152565b806020809284010151606082890101520161202a565b91908110156120935760051b0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b3573ffffffffffffffffffffffffffffffffffffffff81168103611b765790565b6120eb611eb1565b600455600554421080159061215d575b61214d575b73ffffffffffffffffffffffffffffffffffffffff81169081612121575050565b61212a90611d2d565b816000526007602052604060002055600454906000526008602052604060002055565b612155611f56565b600255612100565b5060015415156120fb565b90816020910312611b7657518015158103611b765790565b600260005414612191576002600055565b7f3ee5aeb50000000000000000000000000000000000000000000000000000000060005260046000fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680156122c95732331480156122ce575b6122c9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90803314908115612243575b50611d9457503390565b60649150602090604051928380927f019a20280000000000000000000000000000000000000000000000000000000082528660048301523360248301523060448301525afa9081156122bd5760009161229e575b5038612239565b6122b7915060203d602011610b7757610b698183611d97565b38612297565b6040513d6000823e3d90fd5b503390565b5060183610612202565b602081805181010312611b7657602001519056fea264697066735822122015a8fb031f0ee4ef18ee9b15cbc9adba2fc93515dfb67552c64a19b531a05af864736f6c634300081e0033",
  "deployedBytecode": "0x6080604052600436101561001257600080fd5b6000803560e01c80628cc26214611b1157806301ffc9a714611aa95780630700037d14611a465780630968f264146119415780632b4c9f16146118d25780632c9d0b80146118995780632d1e0c02146117b55780632f2ff15d146115e6578063572b6c051461159a57806373c8a958146113b657806375c93bb9146110005780637b0a47ee14610fc457806380faa57d14610f83578063817b1cd214610f475780638580cf7614610eee5780638bb9c5bf14610d895780638da5cb5b14610d1757806391d1485414610c8557806398807d8414610c225780639d696e3614610be6578063c3666c361461093d578063c5c8f770146108da578063c63ff8dd14610723578063d0b06f5d146106e7578063d547741f14610538578063ef4cadc5146104df578063efa90b54146104a3578063f2fde38b1461037d5763f7ba94bd1461015b57600080fd5b3461037a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a5760043567ffffffffffffffff8111610378576101aa903690600401611c0d565b60243567ffffffffffffffff8111610374576101ca903690600401611c0d565b90917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff8061020b6121bb565b9254169116908103610347575081810361031f57845b81811061022c578580f35b610237818387612083565b3573ffffffffffffffffffffffffffffffffffffffff811680910361031b57610261828587612083565b35908147106102eb578780809381935af13d156102e3573d9061028382611e07565b916102916040519384611d97565b82523d88602084013e5b156102a95750600101610221565b80518790156102bb5750602081519101fd5b807fd6bda2750000000000000000000000000000000000000000000000000000000060049252fd5b60609061029b565b60448883477fcf479181000000000000000000000000000000000000000000000000000000008352600452602452fd5b8680fd5b6004857f65825336000000000000000000000000000000000000000000000000000000008152fd5b7f2ef4875e0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b8380fd5b505b80fd5b503461037a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a576103b5611b53565b7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc6103de6121bb565b9080549273ffffffffffffffffffffffffffffffffffffffff8085169316838103610478575073ffffffffffffffffffffffffffffffffffffffff1692838303610426578480f35b7fffffffffffffffffffffffff000000000000000000000000000000000000000016831790557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a3388080808480f35b7f2ef4875e000000000000000000000000000000000000000000000000000000008652600452602485fd5b503461037a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a576020600554604051908152f35b503461037a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b503461037a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a57600435610573611b7b565b61057b6121bb565b9173ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc541673ffffffffffffffffffffffffffffffffffffffff841690810361034757507fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22818552806020526040852073ffffffffffffffffffffffffffffffffffffffff841660005260205260ff6040600020541661062d578480f35b7ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b936106dc918387526020526040862073ffffffffffffffffffffffffffffffffffffffff851660005260205260406000207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541690556040519384938491604091949373ffffffffffffffffffffffffffffffffffffffff80926060860197865216602085015216910152565b0390a1388080808480f35b503461037a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a576020600254604051908152f35b503461037a5761073236611b9e565b61073a612180565b6107426121bb565b9061074c826120e3565b61075582611d2d565b9283610764575b846001815580f35b909192937f00000000000000000000000000000000000000000000000000000000000000006107938187611e78565b9181156108ad577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830192808411610880578560809473ffffffffffffffffffffffffffffffffffffffff610835867f019eda09011e476781de26947e4b78ee0a834e7182f5ff2eb62bcf8c523f42ca9a999787601f977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09950509d06611d20565b9916988960005260076020526040600020556040519687956060875281606088015287870137600086838701015260208501526001604085015201168101030190a23880808061075c565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526012600452fd5b503461037a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a57604060209173ffffffffffffffffffffffffffffffffffffffff61092c611b53565b168152600883522054604051908152f35b503461037a5761094c36611c3e565b9294939092917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff806109916121bb565b9254169116908103610bbb5750808214801590610bb1575b610b8957865b8281106109ba578780f35b73ffffffffffffffffffffffffffffffffffffffff6109e26109dd83858b612083565b6120c2565b166040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80ac58cd000000000000000000000000000000000000000000000000000000006004820152602081602481855afa908115610b7e578a91610b50575b5015610b25575073ffffffffffffffffffffffffffffffffffffffff610a706109dd83858b612083565b169088610a816109dd83878b612083565b610a8c83888a612083565b3593803b15610b215773ffffffffffffffffffffffffffffffffffffffff918360649260405197889586947f42842e0e00000000000000000000000000000000000000000000000000000000865230600487015216602485015260448401525af191898315610b1557600193610b05575b5050016109af565b610b0e91611d97565b3889610afd565b604051903d90823e3d90fd5b8280fd5b7f986b9f1f000000000000000000000000000000000000000000000000000000008952600452602488fd5b610b71915060203d8111610b77575b610b698183611d97565b810190612168565b38610a46565b503d610b5f565b6040513d8c823e3d90fd5b6004877f65825336000000000000000000000000000000000000000000000000000000008152fd5b50828214156109a9565b7f2ef4875e000000000000000000000000000000000000000000000000000000008852600452602487fd5b503461037a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a576020600454604051908152f35b503461037a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a57604060209173ffffffffffffffffffffffffffffffffffffffff610c74611b53565b168152600683522054604051908152f35b503461037a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a5760ff6040602092610cc4611b7b565b7fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b226004358352855273ffffffffffffffffffffffffffffffffffffffff8383209116825284522054166040519015158152f35b503461037a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a5750602073ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc5416604051908152f35b503461037a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a57600435907fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22610de66121bb565b90838352806020526040832073ffffffffffffffffffffffffffffffffffffffff8316845260205260ff60408420541615610ea8578383526020908152604080842073ffffffffffffffffffffffffffffffffffffffff9390931680855292825280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690558051948552908401829052830152907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b90606090a180f35b5073ffffffffffffffffffffffffffffffffffffffff906044937f7aa7288200000000000000000000000000000000000000000000000000000000845260045216602452fd5b503461037a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a5760206040517f72657761726465720000000000000000000000000000000000000000000000008152f35b503461037a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a576020600154604051908152f35b503461037a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a576020610fbc611f56565b604051908152f35b503461037a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a576020600354604051908152f35b5060407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a576004356024356110396121bb565b907fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b227f726577617264657200000000000000000000000000000000000000000000000085526020526040842073ffffffffffffffffffffffffffffffffffffffff8316855260205260ff60408520541615611350578215611328578015611300577f0000000000000000000000000000000000000000000000000000000000000000808402908482041480910290156112d8576110f4611eb1565b60045560055442108015906112cd575b6112bd575b600554906111178342611d20565b914281116111805750928273ffffffffffffffffffffffffffffffffffffffff926111656040957f6a6f77044107a33658235d41bedbbaf2fe9ccdceb313143c947a5e76e1ec847497611e78565b6003556005555b42600255835195865260208601521692a280f35b9160039391935461119a6111944286611cd1565b82611d0d565b8501948510948515029461129557838211611209575050507f6a6f77044107a33658235d41bedbbaf2fe9ccdceb313143c947a5e76e1ec8474926040926112016111fa73ffffffffffffffffffffffffffffffffffffffff944290611cd1565b8092611e78565b60035561116c565b916112179193508094611e78565b9080821061126757509260409273ffffffffffffffffffffffffffffffffffffffff927f6a6f77044107a33658235d41bedbbaf2fe9ccdceb313143c947a5e76e1ec84749560035560055561116c565b7f19e2447d000000000000000000000000000000000000000000000000000000008752600452602452604485fd5b6004887f50082065000000000000000000000000000000000000000000000000000000008152fd5b6112c5611f56565b600255611109565b506001541515611104565b6004857f50082065000000000000000000000000000000000000000000000000000000008152fd5b6004847f76166401000000000000000000000000000000000000000000000000000000008152fd5b6004847f38539865000000000000000000000000000000000000000000000000000000008152fd5b60448473ffffffffffffffffffffffffffffffffffffffff847f7aa728820000000000000000000000000000000000000000000000000000000083527f726577617264657200000000000000000000000000000000000000000000000060045216602452fd5b503461037a576113c536611c3e565b929594939290917fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc73ffffffffffffffffffffffffffffffffffffffff8061140b6121bb565b925416911690810361156f5750808414801590611565575b61153d57855b848110611434578680f35b61143f81838a612083565b3573ffffffffffffffffffffffffffffffffffffffff81169081810361153957886020916114716109dd868b8d612083565b8261147d878a8c612083565b356040519073ffffffffffffffffffffffffffffffffffffffff878301947fa9059cbb0000000000000000000000000000000000000000000000000000000086521660248301526044820152604481526114d8606482611d97565b51925af11561152e5787513d6115255750803b155b6114fa5750600101611429565b7f5274afe7000000000000000000000000000000000000000000000000000000008852600452602487fd5b600114156114ed565b6040513d89823e3d90fd5b8880fd5b6004867f65825336000000000000000000000000000000000000000000000000000000008152fd5b5081841415611423565b7f2ef4875e000000000000000000000000000000000000000000000000000000008752600452602486fd5b503461037a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a5760206115dc6115d7611b53565b611ef7565b6040519015158152f35b503461037a5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a57600435611621611b7b565b6116296121bb565b9173ffffffffffffffffffffffffffffffffffffffff7fc9ed16f33ab3a66c84bfd83099ccb2a8845871e2e1c1928f63797152f0fd54cc541673ffffffffffffffffffffffffffffffffffffffff841690810361178a57507fc8827d3282af6f37b64c3e9e6f3ac9df286ab0bb0fccd6f8661bf19adb368b22818552806020526040852073ffffffffffffffffffffffffffffffffffffffff8416865260205260ff604086205416156116da578480f35b7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d936106dc918387526020526040862073ffffffffffffffffffffffffffffffffffffffff851687526020526040862060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790556040519384938491604091949373ffffffffffffffffffffffffffffffffffffffff80926060860197865216602085015216910152565b7f2ef4875e000000000000000000000000000000000000000000000000000000008552600452602484fd5b506117d46117c236611b9e565b91906117cc6121bb565b923691611e41565b906117dd612180565b6117e6816120e3565b6117ef826122d8565b908115611871579073ffffffffffffffffffffffffffffffffffffffff7ff4679d394f1f97f1a3df1d73e193866ec5a813168ad5fa6958f9be21b10a594e9261183a83600154611d20565b6001551692838552600660205260408520611856838254611d20565b905561186760405192839283612017565b0390a26001815580f35b6004847f040ef8ec000000000000000000000000000000000000000000000000000000008152fd5b503461037a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a576020610fbc611eb1565b503461037a57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461037a576119536117c236611b9e565b9061195c612180565b611965816120e3565b61196e826122d8565b908115611a1e5773ffffffffffffffffffffffffffffffffffffffff1691828452600660205260408420548281106119ea5790827faae638dec0d864ccb08558c28981bcfaee41330f57c4911cbe2d8432d0fb729e93928587526006602052036040862055816001540360015561186760405192839283612017565b905083927f2b6a77580000000000000000000000000000000000000000000000000000000060649552600452602452604452fd5b6004847fdb73cdf0000000000000000000000000000000000000000000000000000000008152fd5b503461037a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a57604060209173ffffffffffffffffffffffffffffffffffffffff611a98611b53565b168152600783522054604051908152f35b503461037a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a57600435907fffffffff000000000000000000000000000000000000000000000000000000008216820361037a5760206115dc83611f68565b503461037a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261037a576020610fbc611b4e611b53565b611d2d565b6004359073ffffffffffffffffffffffffffffffffffffffff82168203611b7657565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff82168203611b7657565b9060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc830112611b765760043567ffffffffffffffff8111611b765782602382011215611b765780600401359267ffffffffffffffff8411611b765760248483010111611b76576024019190565b9181601f84011215611b765782359167ffffffffffffffff8311611b76576020808501948460051b010111611b7657565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc820112611b765760043567ffffffffffffffff8111611b765781611c8791600401611c0d565b9290929160243567ffffffffffffffff8111611b765781611caa91600401611c0d565b929092916044359067ffffffffffffffff8211611b7657611ccd91600401611c0d565b9091565b91908203918211611cde57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810292918115918404141715611cde57565b91908201809211611cde57565b73ffffffffffffffffffffffffffffffffffffffff611d949116806000526006602052611d7f604060002054611d79611d64611eb1565b84600052600860205260406000205490611cd1565b90611d0d565b90600052600760205260406000205490611d20565b90565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611dd857604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff8111611dd857601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192611e4d82611e07565b91611e5b6040519384611d97565b829481845281830111611b76578281602093846000960137010152565b8115611e82570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6001548015611ef057611d9490611eea60045491611ee5611edc611ed3611f56565b60025490611cd1565b60035490611d0d565b611e78565b90611d20565b5060045490565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908115611f4f5773ffffffffffffffffffffffffffffffffffffffff161490565b5050600090565b600554804210600014611d9457504290565b7fffffffff00000000000000000000000000000000000000000000000000000000167fffffffff000000000000000000000000000000000000000000000000000000008114612011577f01ffc9a700000000000000000000000000000000000000000000000000000000811461200b576000527fca9d3e17f264b0f3984e2634e94adb37fa3e6a8103f06aeae6fa59e21c769f5d60205260ff6040600020541690565b50600190565b50600090565b9291906040845280519081604086015260005b82811061206d57505060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f836000846020968a0101520116850101930152565b806020809284010151606082890101520161202a565b91908110156120935760051b0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b3573ffffffffffffffffffffffffffffffffffffffff81168103611b765790565b6120eb611eb1565b600455600554421080159061215d575b61214d575b73ffffffffffffffffffffffffffffffffffffffff81169081612121575050565b61212a90611d2d565b816000526007602052604060002055600454906000526008602052604060002055565b612155611f56565b600255612100565b5060015415156120fb565b90816020910312611b7657518015158103611b765790565b600260005414612191576002600055565b7f3ee5aeb50000000000000000000000000000000000000000000000000000000060005260046000fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680156122c95732331480156122ce575b6122c9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c90803314908115612243575b50611d9457503390565b60649150602090604051928380927f019a20280000000000000000000000000000000000000000000000000000000082528660048301523360248301523060448301525afa9081156122bd5760009161229e575b5038612239565b6122b7915060203d602011610b7757610b698183611d97565b38612297565b6040513d6000823e3d90fd5b503390565b5060183610612202565b602081805181010312611b7657602001519056fea264697066735822122015a8fb031f0ee4ef18ee9b15cbc9adba2fc93515dfb67552c64a19b531a05af864736f6c634300081e0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
