// File: contracts/bac-dai-reimburse.sol



// SPDX-License-Identifier: MIT
// from file output/bacdai.json
pragma solidity ^0.6.7;

interface ERC20 {
    function transfer(address _to, uint256 _value) external returns (bool success);
}

contract pBasisBacDaiReimbursement {
  mapping (address => uint256) public amounts;
  mapping (address => bool) public reimbursed;

  address public constant token = 0xd4405F0704621DBe9d4dEA60E128E0C3b26bddbD;
  address public constant gov = 0x9d074E37d408542FD38be78848e8814AFB38db17;

  constructor() public {
    amounts[0x631f82fB2A62496d28780A821f47786b05e2278A] = 386084027525914016695;
    amounts[0x061De24DC59A974b14F8c8ab400A88Fa62eB9083] = 38123380056733957469404;
    amounts[0x4f38F2DA7720F1077A45b80E88c0A78C0144c136] = 3551479056446299956081;
    amounts[0xdbeDB1B7d359b0776E139D385c78a5ac9B27C0f9] = 28508219099133373628444;
    amounts[0xf2e66768A8469A48E2eF282b006cD886147b4CB0] = 15432385574814198891925;
    amounts[0x3BAf349bE62f94E7141Cf748CF09d761219757B7] = 5100159785050106247931;
    amounts[0x712F15b512035CF0Dd6cFC8a1fcCD80B0F97e2B1] = 78634499414671426386403;
    amounts[0xF685E331EA5fd12c61c5F6A8e49fE251de9333B3] = 25152492742721980611020;
    amounts[0x6327d3c9ff7DFD612453c8815A1328C3fd3ACbD2] = 200677569795855697326092;
    amounts[0xf7700944B35C3F85A23E9d77beE065dc4F10d6F7] = 12340882427870791780115;
    amounts[0xe34e1FD01F5D2d5533a586941F22dC8D4894a0D3] = 150255381674332255040;
    amounts[0xE7A6d81a4B543c1Bf2BD10CEB74A72689Dc2E4b1] = 153108423184734928313618;
    amounts[0x8ac7AC7361d7917Ddd06a5d763c7f324b7F5E435] = 2500046547989999281486;
    amounts[0xDfD521fF2FaDf24C2e908c4c166CE46f5AcD76AC] = 24727722832396754026900;
    amounts[0x3c2714B19CC07FeB1FDE1e2674A19d045F02D255] = 8524023744201191841;
    amounts[0xb8d33B3e0f964230f6Da772bF2dB4873e66e3ffB] = 945565998557864;
    amounts[0x3C7108FAD72AbA31e2Fa59dFBc458b54F58d9966] = 1537998981533308109351;
    amounts[0x13aA36936529C57cc5AEE09c25BB24E2cd770487] = 255434263345033667230;
    amounts[0x3Cf8947182a01C4CeB1E93a3587595387Ec56429] = 2751177730732110182937;
    amounts[0xF5f08Ba7F46e2a86b5ef3BFD56c2097C9f4276D7] = 2554164825636105699574;
    amounts[0xF54432f5Bf98d9CC8817fb9c40272CCbef67A259] = 189951918258521538701;
    amounts[0x586dB0EA617db9A4254f295c5c93a13915c975Cd] = 927450077611129;
    amounts[0x6E03004F0F795697c572E537b168614e824E389F] = 20085354437314777352981;
    amounts[0x50aCbfD7d14fA64E9Bdf80d3f18F65Bf5D35EC3F] = 4836334692209847018044;
    amounts[0x777999bE819FfEceE44A995560A9D0e97780a30c] = 502889328824413;
    amounts[0x10959926fb4926D181a2ea46CeB234150Ab70C9B] = 1503815612009105986601;
    amounts[0x2e2495004eCb27C81AD17a38EDc099eDcB16903E] = 241538211920752004891;
    amounts[0xEeAb1c3B6F441C9824a27C91E45B6A17586cE3Bb] = 107683047283552334635;
    amounts[0x415E35bE0A67c5E1089F9Ed3Ba5d45a474af963c] = 854221940369377904065;
    amounts[0xb414c335E1800C8Cc6C11d8Da9feEd702f6aCc08] = 276797615933496217246;
    amounts[0x2E13851e1b58A72882b6Bacf3b6a761C50Cdd838] = 156533846703570342329;
    amounts[0x78A97188707a808044f0d3193af9b71254781CF8] = 58188223938977764151;
    amounts[0x1e39cC29009ED4760c186d8771295c1E224882d4] = 2135417938892361262001;
    amounts[0x87C0c0A2d4B9e39A1b6b525A2832a3e080ed6640] = 214415124300985474861;
    amounts[0x1592A365080559Ed871f06ca08e40171081D6cac] = 599024583822062752579;
    amounts[0xd7aC4581eF4E2BB6cC3734Da183B981bfd0Ee2A2] = 420405885436027569279;
    amounts[0xc0819E1e01204BCB9CB5a0a3Be826afedAd6EDEf] = 619374033001190500884265;
    amounts[0x0990fD97223D006eAE1f655e82467fA0eC5f0890] = 266834350013771292754994;
    amounts[0xc0b718D3551407E422a31553Cf50cd9A88B6b9f8] = 1781632669816863958397;
    amounts[0xeE113B5073B088d53a4931842834D77c4Aacc365] = 4529168070028929456637;
    amounts[0x177D71d1456423bf6b5104394B28Ea3E0C8451Be] = 266490655544422681465;
    amounts[0xD5dd2D695e921Bf0a8Da750199397c3C33b129e6] = 11857221854198031851915;
    amounts[0x9560C2B4d6F27310803e91e4AE17f2F3feE6ec24] = 210227772418596165573;
    amounts[0xc42861033FCE4516718C3ceEBF36330cD966F826] = 169412164829352887650;
    amounts[0xb1bf29Ff0FA7cFeb62e0D6622422805dcF2dd742] = 173810750737370134539;
    amounts[0xa9114aa398d545b5F9e7Ff2F9e0F239F88A57c2b] = 370671243235;
    amounts[0xF91876d94C5281aF7A02ef09EDaffda81B6CE260] = 355787163545989290010;
    amounts[0xbB6c28AeD4640b8bDeD57aF001aD6dB7E755b0dF] = 3499392709013010054446;
    amounts[0x835e7e74dDc84befa0A4663d3D6AB1493A2C71b8] = 1633017598797366512910;
    amounts[0x270db476080A1c74d434290291029581cb2E91fB] = 172721050480923780013;
    amounts[0xb6bbE5a785F6cfEd3F65F2BA91AD20586B00f7E6] = 8138572522238840422461;
    amounts[0xf32FC1113f4769f59984d615e91A8e94548F2790] = 13788359899466444576030;
    amounts[0x0B48897CF03c0566D85491120a87c3Df8fa95810] = 289553516468324735310;
    amounts[0xb7258743fFD0e2A175021d2847E3419DE7c53AAc] = 361464446606782077345;
    amounts[0x8de6cdC7dE78DCDB61ecA619b6247D794a5354C8] = 3133834648420796447918;
    amounts[0x296C2D4daaEf7b105ea4482a842e1Cc882583547] = 1715151146342727587935;
    amounts[0xCBBa9D9531a0ff828C75026E3bF15D6A2dEaf43b] = 1420248040793300527609;
    amounts[0x4db4C33b3571C5402774790Eff5ca7763b6B792e] = 7091530381772169838233;
    amounts[0x02aa0B826c7BA6386DdBE04C0a8715A1c0A16B24] = 1081793255215447724898;
    amounts[0x77FA39F3aDf09BDE9D4F175E40D0854D21a33318] = 331235842903895911623;
    amounts[0x3AcB5eaEcFaB99d01e86f7068Ae7B90479fb50e9] = 1649356271931395700229;
    amounts[0xAA4C1150F7503D469b7252ED6C803d51B2a05c69] = 31071938599563771051;
    amounts[0x3CC4d5E7D3f4aE8CDB34d1a011b07b00309B556F] = 911548678602529528940;
    amounts[0xC09475b70d4C48D07a04F7D6953489CA9e77587f] = 8126436762080131744744;
    amounts[0xD4F935181F2c19525416c8E0BA80F46F8cdACAD3] = 177254810521935554114;
    amounts[0xc193Ae16165BC02a79E7a374Ce604E08Ac5b59Cd] = 6941625775830648279313;
    amounts[0x4F672b005E0813f3f5dF81a09EC9AB99919d6075] = 1351090625821391646446;
    amounts[0x2b91EA7b82C3a49694cc6aD92Bf819E2eA0e7941] = 651027049009398555613;
    amounts[0x2C3f55F542B31722904E566b2BbeB3BCd9Af84e2] = 961227715566359511186;
    amounts[0x8B5d6ca04180af41FE2C5A18694358CdA99AE3bb] = 1926928968721589462584;
    amounts[0xcB4865E2ac8fAb7D454D041C932EFDC7D7e5D7E8] = 23721818186352243972102;
    amounts[0x26dEe656E7D761B01fc624DA3f3fEd66a2921EFe] = 1649217508632398317399;
    amounts[0x51F38506aFf0C9C2Ae218e815980dEB239A298A6] = 20081571134730312907510;
    amounts[0x25ADf50119f91cfDd59D20318fcB70aaA0F1b26F] = 8404654402136893385051;
    amounts[0x001853e110030Cfd8CCf7f39aea6eEE1bBB2310a] = 83601307972803463534;
    amounts[0xeC81fADA728b2242388640C0AfC196290B8567bc] = 310747794332954006095;
    amounts[0x090869E2f2764f300607861171de5a074b0bc9D6] = 300944860586398618842;
    amounts[0xc130956C8752D9e70e2f733e27b33fc34DE0Dfa1] = 500872915119598586316;
    amounts[0xaea90572ACd703FA8D6B72C2C2AfBc83eD0e7272] = 7317889218095072665499;
    amounts[0x3CeD977031323d4Dea3aA70C2886bbe96945929C] = 3070562397442076899697;
    amounts[0xfB6676656A4B6eAdE2c9A9F18C8cb71411E37289] = 161549293600383374274;
    amounts[0x4EdcF2c6B8273E0eD763e62A7CD53d3ADdE4ac4d] = 56475798949469371161028;
    amounts[0xF1e7ff0c3b52a89369a0CB405daB03afAf4156DD] = 462902469494783457752;
    amounts[0x2857aEC2D543A9C50A6d0a8408d21d4418a88672] = 168602380452304057912;
    amounts[0x228a8E197c746a4EfAF742CFfd72A8B2DfEe8db3] = 1192574254638719687807;
    amounts[0xB4b35B0008F273c082139956eE97251327746D19] = 1039789708240148920520;
    amounts[0x5C559f816695ab19E727aD6e5F0A31a6B95EFb5F] = 6066191342327764126626;
    amounts[0x39f6B2d21a5F93291fBA2eb2cc1E435D21bcbC89] = 249648651652925268834;
    amounts[0x757f179E05c4C0dd8932E8ce12e59Fd567130cFF] = 234009059703422058809;
    amounts[0xA2B0D0BB58cdCc9fa97a04c2F1C1E5df351046f2] = 130430588959947954128328;
    amounts[0xC13bA51d26d1b2022Fa51e25243bb49A54c4A953] = 15086730031440975006948;
    amounts[0xf034f41Cbe726666D62fddb7293C62fecAa78EeE] = 1962527843001902285388;
    amounts[0x203A7F560c1B04Ac3F4DD77672d7Bf163f0Cf63E] = 5973145845505513622033;
    amounts[0x6B5e3557d0E06815cb2FDcC62888df896d2eF2f1] = 4836623476026555641931;
    amounts[0xb56a9513ebaF18D26c7Ae45e4BA4D486AF363Fc6] = 10412070949225324288010;
    amounts[0x097aBF1858774b101DFe0962200279bEce2CC0a9] = 196374099443396937027;
    amounts[0x61522aA5F22cDb81AA211AA13c3DD18923889757] = 1000562933950684911094;
    amounts[0x914410f3A6f4C897f37df37A53dB4bFfEC34ce12] = 3256217504104229882956;
    amounts[0x19ECBaC74D8F8009DF0bbc6E855c90aA65059083] = 860191548690121702622;
    amounts[0xD8eD830E33859AF668Bf4bF1550DFe4CC9984157] = 2240595334260117979589;
    amounts[0x2292feca57A6343fCE0A3ad3aAAAfDF639D94e5A] = 728181739111735987870;
    amounts[0x929b30E99F3214fe3281E59D95f5B3554d749AAB] = 1272320114918803381803;
    amounts[0xC1D05aaA07a88897adf1f3391687796649796f5D] = 77586043254200840505227;
    amounts[0x50574A24d9ACB187484C024487d9E5029bdEaD82] = 1161617592490913452837;
    amounts[0x7c1b0394E1F83447f60FEbe7a0c62216b3Cde6f6] = 19218754829363888278191;
    amounts[0xDdE11a6e7a5Fb2f166f760C493D167ea58b818c7] = 40289992794071970569513;
    amounts[0xB378C7A1Ed5A2E2Db8F3f70a26FfD30c32848BaE] = 4665410774896189855232;
    amounts[0x6E5DC473FB594De466d1f8D175BcF0c2f2D68DFc] = 1002556637363253476988;
    amounts[0xF91048843BC3964C89999bc062aF3B8408471359] = 102642049737466082973;
    amounts[0x18bAfC34Abc16187b5887742C3DAC59e5b51d509] = 1670683359220403053778;
    amounts[0x97B04C20cA1Cf1E89249B7b7B7462eb382E943e7] = 2699189884487971874672;
    amounts[0x2c3Fa6aaC2D4c39DbB5770C6502ea43deF3a5be7] = 875253888822349494464;
    amounts[0x3D1BDa59A331B9a473a39aD1B6906D64F88BC8Ba] = 590459580368101563295;
    amounts[0x385BAe68690c1b86e2f1Ad75253d080C14fA6e16] = 2485879342177211284832;
    amounts[0x3Fbf75eA7C8682FD026faab57f1032439C69cA8b] = 18464673880878001746638;
    amounts[0xB6F8685648171ee510D9190C71AaC891f96731A8] = 1614763789394815979866;
    amounts[0xCe27B60A651CCdBdF14490D7cEED6693B3818183] = 1111801060591454754680;
    amounts[0x7fA2ef4E8AaB835B382B16fbFfff7Ce90FE037D8] = 1937422737181548069223;
    amounts[0x63298A0b1fd3C72C0cf44116649e9A1Ed919A8A6] = 1;
    amounts[0xe8bF424E047372d249d0826c5567655ba3B72f18] = 1794712806912745280672;
    amounts[0x7D411873898aB53EE8260273eE9232213524ad62] = 485585603824334106859107;
  }
  
  function claim() public {
    require(!reimbursed[msg.sender], "already reimbursed");
    require(amounts[msg.sender] > 0, "not claimable");
    require(ERC20(token).transfer(msg.sender, amounts[msg.sender]));
    reimbursed[msg.sender] = true;
  }

  function saveERC20(address _erc20, uint256 _amount) public {
    require(msg.sender == gov, "!gov");
    require(ERC20(_erc20).transfer(gov, _amount));
  }  
}