修正cec claim后, 状态没更新的问题
This commit is contained in:
parent
8595bc0e47
commit
1a9501717b
248
initdatas/cec_tag_holer.txt
Normal file
248
initdatas/cec_tag_holer.txt
Normal file
@ -0,0 +1,248 @@
|
||||
0xce3065566de9be9f7f66d40ea358ac7eaf755811 388983.0508
|
||||
0xdc6f942ccb8d20d135871eb6fb345a34991e5d47 101694.9153
|
||||
0xf14b02ce886553b754ae77abff882dc468f82b28 38135.59322
|
||||
0xe0deacd9aa484e0cb3a370da4276570c29a7ba04 35593.22034
|
||||
0x91af1d9a7d4041eba4e5cf6f4c792b1b6db6ec3b 33050.84746
|
||||
0xcd64bb95ee1b3a95586836d636849b71b871732b 30508.47458
|
||||
0x931bd858fd7bc2960f51a42489b84805881036cf 17796.61017
|
||||
0xccc1da34fa80458c4585d205857c8ea9d5ef94ea 17796.61017
|
||||
0x9fb23a9d484ee7ab3e5ec864da290e72b79716fe 15254.23729
|
||||
0x8436641d7c21540562e57abad156963e5291e22b 15254.23729
|
||||
0xeef775dec9fb448b68545ccc3a3c939fa36b1b4d 15254.23729
|
||||
0x17075c6717579318d2fafea354a23c59f31aa5c6 15254.23729
|
||||
0xe6be914865be32551793e378bccc9326d00d1a31 12711.86441
|
||||
0xddd1007d7d2272a59a2626bd92ae24bb43068db3 7627.118644
|
||||
0x05615398383d59599e30a8577bf8e23772d0d911 7627.118644
|
||||
0x4442b1f594e6cf47fad51c5ecb3d977f6ec7a66d 10169.49153
|
||||
0xc3a1717bde32c99202f56dbd0865e5f9ebb09482 10169.49153
|
||||
0x1d7cc86c28a75bb8d4f7a994a9f7775faaab1740 7627.118644
|
||||
0x061f1b164a0b5d64f553a8370842b2ece667b71a 5084.745763
|
||||
0x3c4aa4530b1351bad6ca196f418fbfce628ec6b8 5084.745763
|
||||
0x463217d8c4709d7000970126283d29fae984d307 5084.745763
|
||||
0x08edc50e8ab47649c216f5d16088708f66411541 5084.745763
|
||||
0xb67584d56580dfcb205749aee2160148dbf08741 5084.745763
|
||||
0xbd3a8c711a3e7b73efa40a12a35fa8bb92fece58 5084.745763
|
||||
0x07091fa2721bc19f5e31629af83b982777ea23d1 5084.745763
|
||||
0x53c8b1b74d31f3dc908c591fe3e491c740d67c13 5084.745763
|
||||
0x128dc7e97387477807464a1ced349de98d660020 5084.745763
|
||||
0x4572a8fe85170976c7f6046cc16e317e94b9a338 5084.745763
|
||||
0x1280b37a5fb199149e62868aa87ba7eb34f0e91d 5084.745763
|
||||
0x381921bb1c940eaecf2bc40a6dab81f970343299 5084.745763
|
||||
0x6c40630cb2bbc2982dda3768219f0a78b4bb67a6 5084.745763
|
||||
0x054573071ec476408039fed5a16333d350dd8a70 12711.86441
|
||||
0xeb3a320fcdb8efe552ee1fd2eaa2d22274a39499 12711.86441
|
||||
0xaca7ca703beb966a7e2abf8c17262509da513e78 12711.86441
|
||||
0xa741bafe0b2c28af674097fe9610ad8d816362a6 12711.86441
|
||||
0x0ba881395ae4697c58a586b4b2955d2d5c130807 12711.86441
|
||||
0xd78e9d7de29c15d982a4a0654583b59e52fd77e5 12711.86441
|
||||
0x326e77b0fee5411f21bf5064d06b793182519720 5084.745763
|
||||
0x344ad6781370af1d1a21a81b1016ce278bb24ea9 5084.745763
|
||||
0x90d4a8e0254ff8665e2311578a7355d5e3c10458 5084.745763
|
||||
0x83232fa96e47914b3367b8a9658100332251b4d7 5084.745763
|
||||
0x111ab543956d3a7b4dcf4ac8a41b303fcb19bbd6 5084.745763
|
||||
0x459cb09dc26923635623dd88aa6d101f585d8832 5084.745763
|
||||
0x15929d5e816d23a3ff8b447fe57b28cc524c1dd1 5084.745763
|
||||
0x647c96d571c1a157a02c498451c594635790c988 5084.745763
|
||||
0x1fd0368c8dd316ba3e95c6799511197c2f13392d 5084.745763
|
||||
0xe4fdc74545ce4dd153e940fa6e286f832a8d471d 5084.745763
|
||||
0x6fb04a8d70a797d2ac9ce2b6eba0fcf3f00f9e51 5084.745763
|
||||
0x709998b6cb56a467ed44f7c06082c2dd2a0ca697 5084.745763
|
||||
0xab8471472b825880d6f2865879229f547efefe30 5084.745763
|
||||
0xe123c76c7d1cf96fc05752580a4817ca1d9febde 5084.745763
|
||||
0xfa53de399971e0a05b7ed03462e63ad2c6026fce 5084.745763
|
||||
0x90cdba3a888e170a5b7fef40f525991205edfde9 5084.745763
|
||||
0xbff1ef6e9185d4fcd646552c9a206bd3ad76d600 2542.372881
|
||||
0x63e53c6226b8133db3f35865e5b44174ca674aaf 2542.372881
|
||||
0xb4c0834512e136f9a0760fda009846f8d50d79af 2542.372881
|
||||
0x1b24fe44d4b1c7fa0b5329c2a3c0ebc13967625a 2542.372881
|
||||
0x0711ce8fc0a94093eb3ad4bb422fbc26837c6399 2542.372881
|
||||
0x3045e9baa118555f1c5fd8c791ff82165aa3a7ae 2542.372881
|
||||
0x4b2289a61a5fee9d8e7fd1962335ec6086fe58e1 2542.372881
|
||||
0x422dfbb161b364b21a33cf04d1251168c49b0603 2542.372881
|
||||
0x65e5df518d7ec395256df4df598b823d17c09225 2542.372881
|
||||
0xd41797b1336e6cfa9632f347a628acf10f22e7bd 2542.372881
|
||||
0x9ac6a254ffb55022e9563f5441ad434d59a6d8b8 2542.372881
|
||||
0x60fd35191ffa774e40934efb8ed34b2ec42da320 2542.372881
|
||||
0x5513ea4be72db2f85a19281085ffd0cfaa52e692 2542.372881
|
||||
0x10c7a6e6e88441f85413e4c5290704604a04c0e1 2542.372881
|
||||
0x66da213025fd3c313a10184c97cab4f44e4e75b6 2542.372881
|
||||
0xc4a65629636ee4a1a31ce55cc32b6b1a429ca156 2542.372881
|
||||
0x40ba92d5fa03634ecb5ee70d44a8a7f2860d7561 2542.372881
|
||||
0x4133dfc1532e6e666d37099e73be00c4934e88c6 2542.372881
|
||||
0x1fff60e63d365fb485be75a6f3f9eab9db724348 2542.372881
|
||||
0xbb7c26186b783c528308b88cfd4b8c088a4a9de1 2542.372881
|
||||
0xe77b50153d64d112f0ae705d8a743f95939cb00d 2542.372881
|
||||
0x44655092bebabdf0d3e3b4f90f7f94afec904e72 2542.372881
|
||||
0xc1f298bf8e8385320a0752cc9fe1009213688186 2542.372881
|
||||
0x62f6bf824aa091266c92dce575bb2e6de6d23984 2542.372881
|
||||
0x07060eace5e1425071a13557a77312acf15ccf93 2542.372881
|
||||
0x1157261d71359053ba4373404375b5d7de0dcbac 2542.372881
|
||||
0x514ee7b24fd24cdab59703e9132d5bbdc2349b75 2542.372881
|
||||
0xcf001021fe6d8018139be807ee0542e26dcc7455 2542.372881
|
||||
0x9181ba66a0f5fbae05c46c39ad9cbeba452e6454 2542.372881
|
||||
0x8463f77cd9bd211ee7deb854d6f1c24a0b50fcce 2542.372881
|
||||
0xffbfec64e1cf52a089a971da456eb904103206c9 2542.372881
|
||||
0x110177710ad083ecfda2e73ae4ca6925dd6e9495 2542.372881
|
||||
0x3ea06201f8f7dc29ba776e6ffcdf1ef77528e8b2 2542.372881
|
||||
0x2102a9b98f899bc2ae30e00deb4efb38e1b79cde 2542.372881
|
||||
0xbb673508a9a784fb316042f57502b3d442fa3ba6 2542.372881
|
||||
0x61939bb47bb247c87e2c55c98a8fd15ee2bb56ce 2542.372881
|
||||
0xad47a5f98174cbea6934e8676d54bd36ae07d225 2542.372881
|
||||
0x8f10cf7e01345d29c4d708ca6cc36282a8add12f 2542.372881
|
||||
0xeb0939d7a8555106c187a17c9cfa8409d8cc2cb8 2542.372881
|
||||
0x441b63ca9f57f197c54e5b0f6c704758a78043c7 2542.372881
|
||||
0xef62e5468da004935d986ec149db4e37841a833b 2542.372881
|
||||
0xc5c6f9f0ea697c4727190da140bb776adae026b9 2542.372881
|
||||
0x99f5dfafb3bcd5bbcffce553e6a35fe5e1b08aca 2542.372881
|
||||
0x02aec689a094226aa529d64b1f9714901b8d6215 2542.372881
|
||||
0x82b7a1e57aec7e14801b3cecbbe38fc2335ec16c 2542.372881
|
||||
0x46f9cda8e931af33390c5e66db89a42d39f91007 2542.372881
|
||||
0xc9f51c54a7c3d26d62a8ac3a7c6bffdd5a6a9e53 2542.372881
|
||||
0xcc7079c9691d1ff5a6a82e7a1e0ef0c7c4fd859d 2542.372881
|
||||
0x36864b2234877af60b1d57c7c317df3812d9987a 2542.372881
|
||||
0x54be3a794282c030b15e43ae2bb182e14c409c5e 2542.372881
|
||||
0x481f99f02133e2e0d85f6f6248f2ad127d359659 2542.372881
|
||||
0xac59155d707121d20d803c0348eac37f8f410a46 2542.372881
|
||||
0x2d750f37415ea2cd039b8e0b20e37671e742b05f 2542.372881
|
||||
0x05adf3093237d32d5cfb0a2f7c013197ae070545 2542.372881
|
||||
0xa2f0d3582f4dbcedd0977856c528eab985d92afb 2542.372881
|
||||
0xb46bfc7d387bfc4e56bf013d4b1e2246abf456f3 2542.372881
|
||||
0x4875512ba1307729c4a767ed343e620efbbc3f77 2542.372881
|
||||
0x3fb26fdc65754fdeb3af6d5e9bb3d2de8154a988 2542.372881
|
||||
0x0166f6b0ac0900d0b7499755bf7038c4cc819b04 2542.372881
|
||||
0x9d1817d6fae6bb8b79b1113a32a6c178f6f9b8f8 2542.372881
|
||||
0x389b1930726972734b576965cd305877840cc33c 2542.372881
|
||||
0x110a929df2c3243046c562bf9d2988a340ebc584 2542.372881
|
||||
0xab8f80824fc189026cb887f22f3cd53777a374df 2542.372881
|
||||
0x2e79750671de844a2582c8ac2678a8afa6ce127c 2542.372881
|
||||
0x4f957d7e9bb1db3583e5f34774938413bc1a37ee 2542.372881
|
||||
0xcf0ef234b1917a50b7d59c10e043bbc4c80e03c1 2542.372881
|
||||
0x210b8b648220a4c7e1bbe508c7b9723e2ecdec24 2542.372881
|
||||
0x84ea3f44ecfb6c9de86df307e668a9edcd920a4d 2542.372881
|
||||
0x5c46bcd2afc105a165b6796e211be786a5c6278e 2542.372881
|
||||
0x17d36852625cd08bb7a538c17f498205cb8db537 2542.372881
|
||||
0xbdd877681a214e3b9bb280f9d40192f8e048a665 2542.372881
|
||||
0x8f3a94725a7686055d1aaba8a41be506c5dfd079 2542.372881
|
||||
0x73da1af06106a7f3ac717ef0fd637177175d98b7 2542.372881
|
||||
0x0da1ceb8c2edf88c240e259cc8a481ab340d7a55 2542.372881
|
||||
0x0a7e31ea661a6e09055e849c43848d8420e44778 2542.372881
|
||||
0x4093455e238eadeafb2da0b69b2ed61234cc8239 2542.372881
|
||||
0x94243ac3848850064511a616911c5ea7e5b25f92 2542.372881
|
||||
0xc8c311e8a266a3c6f959433df7c11a05446dad56 2542.372881
|
||||
0xc6e7a4b569d4ffa6d4a5988bb2129aae9067acfb 2542.372881
|
||||
0x1a0ed79a4742a1cbc7c2ea39bc33da9e26ee0501 2542.372881
|
||||
0x6e647959ed844044f25b8c77b34c2d0c399870cd 2542.372881
|
||||
0x8210a401239f580280ebf85082278e2266af8b2d 2542.372881
|
||||
0xa045bb2c43bfb1d4286e88ca60355e7a0d9746cb 2542.372881
|
||||
0xa215b8e30765e30f1faa78e786aa7cd119c3157b 2542.372881
|
||||
0x5cd67d75e55266be41732c1320ab077e6d8aaabb 2542.372881
|
||||
0xb2767b2646dbd09c39409fa990d582f36effc3ae 2542.372881
|
||||
0x4f0130ba51d69c8a0e70f990fc6f8638229c36a7 2542.372881
|
||||
0x6bbfa2a1faa657f95282673437b005d1838049ba 2542.372881
|
||||
0x299b54926ea6e99f0c82a2259749eea19e76c283 2542.372881
|
||||
0x9c9da552b36cc275c0fecaf508bd3327de944bff 2542.372881
|
||||
0x10ccefdd1323a0053f9bd819c1a7b8c73aebe959 2542.372881
|
||||
0x67f05ad11c67c72d8e3f0d6d3f05e2633a531b11 2542.372881
|
||||
0x6c9e3cc54248973b5e52a65348c3f89d2abb3c42 2542.372881
|
||||
0xb35d77527e9887f8343d7f44167a74ca06008c49 2542.372881
|
||||
0x32c0a4c8cb0d937c5e2f188a752ec2f591627b39 2542.372881
|
||||
0xd039b418180875f2cd413764349462b68c1c6460 2542.372881
|
||||
0xe73aec59250a38774638bf54e8a6277aac225735 2542.372881
|
||||
0x0decb04d7f0685d196beb845a62356ff2c4098fd 2542.372881
|
||||
0x68e33a587f1d697c5e0f8b8794cfa304b41a61e2 2542.372881
|
||||
0xa8b818472b0f855119481953eb696a8cfec5f6a7 2542.372881
|
||||
0xec544182ac353cc0cb632de61dee13cfda947472 2542.372881
|
||||
0x0b3be3ee356ce386592f6a944ce9dfc81d8081f8 2542.372881
|
||||
0x61bebcdc0de0c3d6ce7f7fefa795856f984d570f 2542.372881
|
||||
0x1941b936657408253f5c5dec9c7f5bbf84c760cd 2542.372881
|
||||
0x5f9e09b2243f0c950fc2f7e1eb1c681f4aa8a1f1 2542.372881
|
||||
0xaf4e4c99078be26db80f3bcd08dca89438024f4f 2542.372881
|
||||
0x44239db3d29828d05227b02c2e5b23a5c6919e44 2542.372881
|
||||
0x7c0f69d80b87b5403aca1f28e5eb95cae95cc649 2542.372881
|
||||
0xa2cad146bb7f1e72df8884539d4092bec51520a8 2542.372881
|
||||
0x70a7ff43e7dec3d1faa4db8dc7a1fc8faf45ef91 2542.372881
|
||||
0x86920e21ab0c18832369c2e09e93b27c4a5a1750 2542.372881
|
||||
0xd13a48109203ca22a0221a1a094ba8a033e112ef 2542.372881
|
||||
0x84264f134879b7ab714ab18ab653a73dd5448b16 2542.372881
|
||||
0xfa61cac2c8fd3b5a7bbfc0934284913b157e68aa 2542.372881
|
||||
0xa8078c69d2974e1a90e5aa0b3a3443742065241b 2542.372881
|
||||
0xad2dea1977055db01c66e6e53309c4604ab869b8 2542.372881
|
||||
0xdfe9c04c39a0b21929e71b43757be91ac36b0243 2542.372881
|
||||
0x46b399d3685bd5b0dadb613ed363469ffc985687 2542.372881
|
||||
0xd8e1c7e0a9dff7cded0303af9252ec8f32dd51cf 2542.372881
|
||||
0xd077bb17d13247be1227d4095fd7d790bc714132 2542.372881
|
||||
0x1487f1b080a2c726b24529676ad8ad3e5dac8eb0 2542.372881
|
||||
0x9c0171bd82e40265c146a01b278087a5947f91e1 2542.372881
|
||||
0x7ca80728e8c06482412f7ead49c0e9b1b8bbb51c 2542.372881
|
||||
0x88fd9c3b74b3559c2dc2f474f98296042ae87011 2542.372881
|
||||
0x81683af10aa7ee91f8df570726f55fd00d2915be 2542.372881
|
||||
0xe8c4170f68518c3b6bc3c6c9b33a071bea44e569 2542.372881
|
||||
0x4259efbde098e67cb45a8e23ff8f9a4b155d6100 2542.372881
|
||||
0x1aa666d676fde62ae9477c75e7f501f214d1849c 2542.372881
|
||||
0x94e403daa95675d54bfaabaf49b1730ec80fe13f 2542.372881
|
||||
0x141309877d11e6ff4302824c836675257f89f6b9 2542.372881
|
||||
0x4a92b853b30c01fb167c65bdeb9a8e6e14b74f52 2542.372881
|
||||
0xf388b107e627a47bd12ab8ad732fc1d4b9253c42 2542.372881
|
||||
0x2b65f85e81eec21eda840b8f9c4fd657f917b092 2542.372881
|
||||
0x13cf64fe5bef40e44908a6cc0aa7aaf8e35f0bbe 2542.372881
|
||||
0xc87e9dff30a7472329237c4ad222b35b529f0fb7 2542.372881
|
||||
0x88b7b36e038d4c2015d2c4419613d4ac093356e5 2542.372881
|
||||
0x9fae7ff188aaf70bdc9f0567cf1524df260dc8ee 2542.372881
|
||||
0xc196eb8d5a08fb6ce0297b2748e18137f2b431fc 2542.372881
|
||||
0x96c3a3795666d2e3909aa360dd2c4e6bed63dbd7 2542.372881
|
||||
0xf2aac76a8dc431201bf61528d99a30cfd37217dd 2542.372881
|
||||
0xaff81e3f863d19f1d2ecea1e54f4e988131a6122 2542.372881
|
||||
0xf025f82c16d5809a55cbccf3f373020b6e3b8b01 2542.372881
|
||||
0x8d6662deb08786547af2c10aa609d469e545baf8 2542.372881
|
||||
0x89d2d15bf0e3dbc0caf4620d1a694a3f7dc25c4a 2542.372881
|
||||
0x90f99fea4275ceddb169c631b5bff96781cc8dcc 2542.372881
|
||||
0xbaaf5a2178e9fa656513c27e43a393661b255332 2542.372881
|
||||
0x47954ca71620e84b0ad8212547a2f1d7d3976e3a 2542.372881
|
||||
0x5c2260103ba960d23603a7b824c80a24eae159b9 2542.372881
|
||||
0xbfe1d5893ddbb0b04e52afdbdb18842f42d733cb 2542.372881
|
||||
0x3c685d3a0e3f2b87ccfba12aef53dc00a605f797 2542.372881
|
||||
0xccede66765e2334c717280bafd5dfd0e3d7d1e32 2542.372881
|
||||
0x6a9eabbe45c28311911429e589723228c0eaeebb 2542.372881
|
||||
0xb6c4421ccd6be35937e9eda7326f8c01bd401c73 2542.372881
|
||||
0x4357637b486fe60ff11b4513e636c00f7833dd4a 2542.372881
|
||||
0x8256343b66dc32c06347673411c0e3d4bedfbb55 2542.372881
|
||||
0xab6e9887e3c6777095ae910ac7973e77b0f3a577 2542.372881
|
||||
0xbda75d5353a24f5d96c70a744a834d59af873fc3 2542.372881
|
||||
0xf1092fffdf736fce2881e16a57c3c68ac8e745d0 2542.372881
|
||||
0x6c433968265b57e74584309b2364af6d6b394ca0 2542.372881
|
||||
0xc497344dca4f96ae5d9aa2590234ea7d27fa2d59 2542.372881
|
||||
0x0722cab71aaded9ed36885c81828870f0534fcfc 2542.372881
|
||||
0x38f9ee175330828050640ee869068307770984c9 2542.372881
|
||||
0xd78519e60f29412615a256ca2dd17c7874afcf5b 2542.372881
|
||||
0x68dda17c32dc46dd13091b34a1d3108ac7b6a68b 2542.372881
|
||||
0x4ecd795a981842fd626bb6cd6bdb428d8de0a719 2542.372881
|
||||
0xb703b053556cc3f60d4a0f12813e7fd288912c7d 2542.372881
|
||||
0xb1c722ed5734d974eb5e52e77d9d4c6b5ab53de1 2542.372881
|
||||
0x9499054d02a725316d61fa896c29d58550ee4a5b 2542.372881
|
||||
0x701023a62871ad80aed12270ad5f0296cbfe8e88 2542.372881
|
||||
0xc6292599483a251a1c1c28ac5eb351061c5f69cf 2542.372881
|
||||
0xbc382148266fead8ea2762a2725de6e0f12f46b9 2542.372881
|
||||
0x8eec94936ac76db13c016a64939f3b0830dfc2fe 2542.372881
|
||||
0x1d074d446dc3c8f83390f36cab81528611ca353a 2542.372881
|
||||
0x39af18442470f2f6fd670d23466a02752ef55142 2542.372881
|
||||
0x8b6b7c70aa678e0f93808be74dc4b64bf3950e87 2542.372881
|
||||
0xd25db8c6bc09500ac7aa227a8e9d8b598d009f37 2542.372881
|
||||
0x2d7cf39e1f50efc84334ae7d5044dbc6c6241798 2542.372881
|
||||
0xb0481e4d9513924d3eef075781794ea81b14e0f7 2542.372881
|
||||
0x099af32b55a6f050f5852d2034cec92172f3f5ba 2542.372881
|
||||
0xd32baa0ae934520495f9134c3fd8a172989dc0b8 2542.372881
|
||||
0xbcc93f97e3bbe689caeb5d935fd85879e2a09aad 2542.372881
|
||||
0x14de65035af2634176876f51ab41bad38942e8f5 2542.372881
|
||||
0x9c1218103846887b469dd55b36de440cfa42045d 2542.372881
|
||||
0x4db49d1ebaa49270f252b7343cace7b95e6578d3 2542.372881
|
||||
0xeab824e199cd3bd5a657ab06d5502df66b5f87fc 2542.372881
|
||||
0x22dcb6342ef319a4d8b92b19fb280a0983940c7b 2542.372881
|
||||
0x1e676020e23255e4ff088e149e8fa047272d871b 2542.372881
|
||||
0x649b0894ce2ba6199f923f7db0c45625020c2427 2542.372881
|
||||
0x364e2aea672a791eb516999f16f510b92699a98c 2542.372881
|
||||
0x19747e0527d3f7b8bd3aa7b147d4a61435d08824 2542.372881
|
||||
0xb93b813eab11a81e52c7ff20e21b8bd8d336685c 2542.372881
|
||||
0xc5299f30c24ec5bb0d225bbcc43f50894d6c6124 2542.372881
|
||||
0x4764e2d1f34406cbfcbb91759103db97d8327e36 2542.372881
|
||||
0xbdff3294962039e9308f364e9312e1f6aec926c1 2542.372881
|
||||
0x71ce8da3f53254d414e9749ac028ea0932d58f9e 2542.372881
|
@ -23,7 +23,7 @@
|
||||
"sybil": "ts-node -r tsconfig-paths/register src/removeSybil.ts",
|
||||
"releation": "ts-node -r tsconfig-paths/register src/updateReleation.ts",
|
||||
"rankquery": "ts-node -r tsconfig-paths/register src/rankquery2.ts",
|
||||
"mail": "ts-node -r tsconfig-paths/register src/batchMail.ts",
|
||||
"mail": "ts-node -r tsconfig-paths/register src/batch_mail.ts",
|
||||
"eth": "ts-node -r tsconfig-paths/register src/queryEthTx.ts -s 0 -l 10000 -k TC7Y76AS4AMQ468XXNKKF2R3TI7V844HUC",
|
||||
"taskid": "ts-node -r tsconfig-paths/register src/generateTaskId.ts",
|
||||
"token": "ts-node -r tsconfig-paths/register src/generateToken.ts",
|
||||
@ -49,6 +49,7 @@
|
||||
"fastify": "^4.15.0",
|
||||
"fastify-plugin": "^3.0.0",
|
||||
"fastify-xml-body-parser": "^2.2.0",
|
||||
"fs-jetpack": "^5.1.0",
|
||||
"get-jwks": "^9.0.2",
|
||||
"google-auth-library": "^9.9.0",
|
||||
"ioredis": "^5.4.1",
|
||||
|
118
src/batch_mail.ts
Normal file
118
src/batch_mail.ts
Normal file
@ -0,0 +1,118 @@
|
||||
|
||||
let fs = require('fs')
|
||||
|
||||
const EMAIL_LIST_FILE = 'configs/email_list.txt';
|
||||
const USED_CODE_FILE = 'mail_out/used_code.txt';
|
||||
const HISTORY_FILE = 'mail_out/mail_history.txt'
|
||||
const HISTORY_FILE_FAIL = 'mail_out/mail_history_fail.txt'
|
||||
|
||||
const mailText='Go claim $CEC to Bitget now with 0 gas fee and grab a share of 1M $CEC rewards!! https://counterfire.games/claim \n\nDon’t miss the chance to increase and maximize your $CEC holdings.';
|
||||
|
||||
const mailHtml = `
|
||||
<p><img src="https://res3.counterfire.games/bitget/cec_bitget.jpg" width="800"/></p>
|
||||
<p>Go claim $CEC to Bitget now with 0 gas fee and grab a share of 1M $CEC rewards!! <a href="https://counterfire.games/claim">https://counterfire.games/claim</a> </p>
|
||||
<p></p>
|
||||
<p>Don’t miss the chance to increase and maximize your $CEC holdings.</p>
|
||||
`;
|
||||
|
||||
const sleep = (ms) => {
|
||||
return new Promise((resolve) => setTimeout(resolve, ms));
|
||||
}
|
||||
|
||||
const file = (path) => {
|
||||
if (!fs.existsSync(path)) {
|
||||
fs.writeFileSync(path, '');
|
||||
}
|
||||
}
|
||||
|
||||
const read = (path, encoding) => {
|
||||
return fs.readFileSync(path, encoding);
|
||||
}
|
||||
|
||||
const append = (path, data) => {
|
||||
fs.writeFileSync(path, data, { flag: 'a' });
|
||||
}
|
||||
|
||||
const send = async (msg) => {
|
||||
const url = 'https://oauth-svr.cebggame.com/mail/mail/send';
|
||||
const headers = {
|
||||
'Content-Type': 'application/json; charset=utf8',
|
||||
Authorization: 'Basic bWFpbHNlbmRlcjo3NjU0MzIxY2Yt',
|
||||
};
|
||||
const options = {
|
||||
method: 'POST',
|
||||
headers,
|
||||
body: JSON.stringify({ message: msg }),
|
||||
};
|
||||
|
||||
return fetch(url, options).then((res) => res.json());
|
||||
};
|
||||
|
||||
const sendOneMail = async (to) => {
|
||||
const msgData = {
|
||||
from: 'Counter Fire <noreply@counterfire.games>',
|
||||
to: to,
|
||||
subject: 'Counter Fire TGE confirmed! Check your CEC airdrop eligibility and earn more now!',
|
||||
text: mailText,
|
||||
html: mailHtml,
|
||||
};
|
||||
return send(msgData);
|
||||
};
|
||||
|
||||
const sendAll = async () => {
|
||||
file(HISTORY_FILE);
|
||||
file(HISTORY_FILE_FAIL);
|
||||
const emailList = read(EMAIL_LIST_FILE, 'utf8')
|
||||
.split('\n')
|
||||
.filter((item) => !!item);
|
||||
console.log('emailList: ', emailList.length);
|
||||
const sendedList = read(HISTORY_FILE, 'utf8')
|
||||
.split('\n')
|
||||
.filter((item) => !!item)
|
||||
.map((item) => item.toLowerCase());
|
||||
const sendFailList = read(HISTORY_FILE_FAIL, 'utf8')
|
||||
.split('\n')
|
||||
.filter((item) => !!item)
|
||||
.map((item) => item.toLowerCase());
|
||||
const failSet = new Set(sendFailList);
|
||||
const sendedSet = new Set(sendedList);
|
||||
console.log('sendedCount: ', sendedSet.size);
|
||||
const emailLis2 = emailList.filter((item) => !sendedSet.has(item) && !!item);
|
||||
console.log('emailLis2: ', emailLis2.length);
|
||||
const lsitToSend = [];
|
||||
let totalSuccess = 0
|
||||
let totalFail = 0
|
||||
let i = 0;
|
||||
for (let email of emailLis2) {
|
||||
email = email.toLowerCase();
|
||||
i++;
|
||||
try {
|
||||
let { errcode, errmsg, data } = await sendOneMail(email);
|
||||
if (errcode) {
|
||||
append(HISTORY_FILE_FAIL, email+'\n');
|
||||
console.log('error send mail:: email: ', email, ' errcode: ', errcode, ' errmsg: ', errmsg);
|
||||
continue;
|
||||
}
|
||||
writeHistory(email);
|
||||
totalSuccess += 1;
|
||||
console.log(i, 'success send mail: ', email);
|
||||
} catch (e) {
|
||||
totalFail += 1;
|
||||
append(HISTORY_FILE_FAIL, email+'\n');
|
||||
console.log(i, 'send mail error: ', email, e);
|
||||
}
|
||||
await sleep(100);
|
||||
}
|
||||
console.log('success: ', totalSuccess);
|
||||
console.log('fail: ', totalFail);
|
||||
return lsitToSend;
|
||||
};
|
||||
|
||||
const writeHistory = (mailAddress) => {
|
||||
append(HISTORY_FILE, mailAddress+'\n');
|
||||
};
|
||||
|
||||
|
||||
(async () => {
|
||||
await sendAll()
|
||||
})();
|
@ -239,12 +239,12 @@ const exportRecords = async () => {
|
||||
|
||||
;(async () => {
|
||||
try {
|
||||
// await importCecEvent();
|
||||
await importCecEvent();
|
||||
// await importUAW()
|
||||
// await loadGameSeason()
|
||||
// await loadHashRate()
|
||||
// await importGachaEvent()
|
||||
await loadStake()
|
||||
// await loadStake()
|
||||
// await loadGacha()
|
||||
// await exportRecords()
|
||||
} catch (e) {
|
||||
|
@ -1,5 +1,6 @@
|
||||
import { SyncLocker } from 'common/SyncLocker'
|
||||
import { BitgetUser } from 'models/BiggetUser'
|
||||
import { BitgetBindInfo } from 'models/BitgitBindInfo'
|
||||
import { SiweMessage } from 'siwe'
|
||||
import { ZError, BaseController, ROLE_ANON, role, router } from 'zutils'
|
||||
import { checkParamsNeeded } from 'zutils/utils/net.util'
|
||||
@ -129,7 +130,7 @@ class BiggetController extends BaseController {
|
||||
return {}
|
||||
}
|
||||
|
||||
@router('post /api/bigget/verify_email')
|
||||
// @router('post /api/bigget/verify_email')
|
||||
async verifyCode(req, res) {
|
||||
await new SyncLocker().checkLock(req)
|
||||
logger.db('verify_mail_code', req)
|
||||
@ -169,8 +170,8 @@ class BiggetController extends BaseController {
|
||||
return { token }
|
||||
}
|
||||
|
||||
@role(ROLE_ANON)
|
||||
@router('get /api/bigget/remove_email')
|
||||
// @role(ROLE_ANON)
|
||||
// @router('get /api/bigget/remove_email')
|
||||
async removeEmail(req, res) {
|
||||
let { email } = req.params
|
||||
if (!debug) {
|
||||
@ -190,4 +191,23 @@ class BiggetController extends BaseController {
|
||||
user.email = ''
|
||||
await user.save()
|
||||
}
|
||||
|
||||
@role(ROLE_ANON)
|
||||
@router('get /api/bitget/count_bind')
|
||||
async countBind(req) {
|
||||
let records = await BitgetBindInfo.aggregate([{ $group: { _id: {$dateToString: {format: "%Y-%m-%d-%H", date: "$createdAt"}}, count: {$sum: 1} }, }, {$sort:{"_id":1}} ])
|
||||
let results = []
|
||||
let countTotal = 0
|
||||
for (let record of records) {
|
||||
let arr = record._id.split('-')
|
||||
let time = new Date(new Date().setHours(0, 0, 0, 0))
|
||||
time.setUTCFullYear(parseInt(arr[0]))
|
||||
time.setUTCMonth(parseInt(arr[1]) - 1)
|
||||
time.setUTCDate(parseInt(arr[2]))
|
||||
time.setUTCHours(parseInt(arr[3]))
|
||||
countTotal += record.count
|
||||
results.push(time.toLocaleDateString() + '-' + time.getHours() +': '+record.count + ' ' +countTotal)
|
||||
}
|
||||
return results
|
||||
}
|
||||
}
|
||||
|
@ -11,11 +11,15 @@ import { Wallet } from 'models/Wallet'
|
||||
import { PlatEnum } from 'enums/PlatEnum'
|
||||
import { BitgetBindInfo } from 'models/BitgitBindInfo'
|
||||
import { hidePartString } from 'common/Utils'
|
||||
import { FixAddress } from 'models/ctrl/FixAddress'
|
||||
|
||||
const STAGE1_UNLOCK_TIME = Number(process.env.CEC_CLAIM_STAGE1)
|
||||
const STAGE2_UNLOCK_TIME = Number(process.env.CEC_CLAIM_STAGE2)
|
||||
const CEC_CLAIM_STAGE = Number(process.env.CEC_CLAIM_STAGE)
|
||||
const CEC_ADDRESS = process.env.CEC_CONTRACT
|
||||
const CEC_CLAIM_CONTRACT = process.env.CLAIM_CONTRACT
|
||||
|
||||
const isTest = process.env.IS_TEST === '1'
|
||||
|
||||
const checkAddress = (address: string) => {
|
||||
if (!address) {
|
||||
@ -27,6 +31,16 @@ const checkAddress = (address: string) => {
|
||||
return ethers.utils.getAddress(address).toLowerCase()
|
||||
}
|
||||
|
||||
const removeSmallNum = (val: any) => {
|
||||
if (val === 0n) {
|
||||
return val
|
||||
}
|
||||
var b = ethers.utils.formatEther(val)
|
||||
b = b.substring(0, b.indexOf('.')+3)
|
||||
var b1 = parseFloat(b)
|
||||
return BigInt(ethers.utils.parseEther(b1+'').toString())
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询cec claim状态
|
||||
* 第一期是比较特殊的记录, 在预售阶段, 需要展示第一期可领取的数量, 所以要特殊处理
|
||||
@ -38,9 +52,13 @@ const queryCECClaimStatus = async (address: string) => {
|
||||
let available = 0n
|
||||
let claimed = 0n
|
||||
let unavailable = 0n
|
||||
const fixed = await FixAddress.checkExist(address)
|
||||
if (fixed) {
|
||||
return { total, available, claimed, unavailable, bit: 0n, records: [], bindRecord: null }
|
||||
}
|
||||
const records = await CECRecordTotal.find({ address })
|
||||
//@ts-ignore
|
||||
await updateClaimStatus({ address, token: CEC_ADDRESS, records})
|
||||
await updateClaimStatus({ address: CEC_CLAIM_CONTRACT, account: address, token: CEC_ADDRESS, records})
|
||||
const bindRecord = await BitgetBindInfo.findOne({ wallet: address })
|
||||
let bit = 0n
|
||||
for (const record of records) {
|
||||
@ -71,6 +89,8 @@ const queryCECClaimStatus = async (address: string) => {
|
||||
}
|
||||
}
|
||||
}
|
||||
total = removeSmallNum(total)
|
||||
available = removeSmallNum(available)
|
||||
unavailable = total - available - claimed
|
||||
return { total, available, claimed, unavailable, bit, records, bindRecord }
|
||||
}
|
||||
@ -163,7 +183,7 @@ class CECController extends BaseController {
|
||||
available: available.toString(),
|
||||
claimed: claimed.toString(),
|
||||
unavailable: unavailable.toString(),
|
||||
records: records.map(record => record.toJson()),
|
||||
// records: records.map(record => record.toJson()),
|
||||
bindUid: bindRecord ? hidePartString(bindRecord.biggetAcc) : '',
|
||||
bindAddress: bindRecord ? hidePartString(bindRecord.address) : ''
|
||||
}
|
||||
@ -209,11 +229,40 @@ class CECController extends BaseController {
|
||||
})
|
||||
return { calls: [{trans_req: data, trans_id: ''}], direct: true }
|
||||
}
|
||||
|
||||
// @role(ROLE_ANON)
|
||||
// @router('get /api/cec/add_test/:address')
|
||||
async addTest(req: any) {
|
||||
if (!isTest) {
|
||||
throw new ZError(10, 'not allow')
|
||||
}
|
||||
let { address } = req.params
|
||||
address = checkAddress(address)
|
||||
address = address.toLowerCase()
|
||||
let record = new CECRecordTotal({
|
||||
address,
|
||||
num: 16,
|
||||
earnTime: 'before 2024',
|
||||
desc: 'test',
|
||||
status: 1,
|
||||
amount: '16000000000000000000',
|
||||
__v: 0,
|
||||
firstRate: 15,
|
||||
bit: 9,
|
||||
claimStatus: {
|
||||
'1': { bit: 16, rate: 15, status: 1, time: 0 },
|
||||
'2': { bit: 17, rate: 85, status: 1, time: 0 }
|
||||
}
|
||||
})
|
||||
await record.save()
|
||||
return record.toJson()
|
||||
}
|
||||
|
||||
@router('post /api/cec/bind_account')
|
||||
async bindAccount(req: any) {
|
||||
await new SyncLocker().checkLock(req)
|
||||
logger.db('bind_bitget_acc', req)
|
||||
return new ZError(100, 'the activity has ended')
|
||||
const user = req.user
|
||||
const { accid, address } = req.body
|
||||
if (CEC_CLAIM_STAGE !== 0) {
|
||||
|
150
src/exportBitget.ts
Normal file
150
src/exportBitget.ts
Normal file
@ -0,0 +1,150 @@
|
||||
import mongoose from 'mongoose'
|
||||
import * as dotenv from 'dotenv'
|
||||
import { ethers } from 'ethers'
|
||||
let fs = require('fs')
|
||||
|
||||
const envFile = process.env.NODE_ENV && process.env.NODE_ENV === 'production' ? `.env.production` : '.env.development'
|
||||
dotenv.config({ path: envFile })
|
||||
console.log(process.env.DB_MAIN)
|
||||
|
||||
import { BitgetBindInfo } from 'models/BitgitBindInfo'
|
||||
import { CECRecordTotal, ClaimStatusEnum } from 'models/CECRecordTotal'
|
||||
import { FixAddress } from 'models/ctrl/FixAddress'
|
||||
|
||||
const CEC_CLAIM_STAGE = 1
|
||||
const dbMain = mongoose.createConnection(process.env.DB_MAIN)
|
||||
|
||||
const removeSmallNum = (val: any) => {
|
||||
var b = ethers.utils.formatEther(val)
|
||||
b = b.substring(0, b.indexOf('.')+3)
|
||||
var b1 = parseFloat(b)
|
||||
return BigInt(ethers.utils.parseEther(b1+'').toString())
|
||||
}
|
||||
|
||||
const queryCECClaimStatus = async (bindRecord: any) => {
|
||||
let total = 0n
|
||||
let available = 0n
|
||||
let claimed = 0n
|
||||
let unavailable = 0n
|
||||
const records = await CECRecordTotal.find({ address: bindRecord.wallet })
|
||||
let bit = 0n
|
||||
for (const record of records) {
|
||||
let currentTotal = BigInt(record.amount)
|
||||
total += currentTotal
|
||||
// fetch status from claimStatus
|
||||
for (const [key, val] of record.claimStatus.entries()) {
|
||||
const stage = parseInt(key)
|
||||
// 预充值阶段, 需要展示第一期可领取的数量
|
||||
if (stage <= CEC_CLAIM_STAGE && val.status === ClaimStatusEnum.NORMAL) {
|
||||
available += (currentTotal * BigInt(val.rate)) / 100n
|
||||
}
|
||||
}
|
||||
}
|
||||
unavailable = total - available - claimed
|
||||
return { total, available, claimed, unavailable, bit, records, bindRecord }
|
||||
}
|
||||
|
||||
|
||||
|
||||
const queryAll = async () => {
|
||||
let addressCursor = BitgetBindInfo.find().cursor({ batchSize: 1000 })
|
||||
let available_all = 0n
|
||||
let total_all = 0n
|
||||
let results = []
|
||||
for await (let doc of addressCursor) {
|
||||
if (!doc.address) {
|
||||
continue
|
||||
}
|
||||
const { total, available } = await queryCECClaimStatus(doc)
|
||||
available_all += available
|
||||
total_all += total
|
||||
results.push([doc.wallet, doc.address, doc.biggetAcc, available, ethers.utils.formatEther(available)])
|
||||
}
|
||||
console.log('available_all: ', ethers.utils.formatEther(available_all))
|
||||
console.log('total: ', ethers.utils.formatEther(total_all))
|
||||
fs.writeFileSync('outdatas/cec_pre_charge.csv', results.map(r => r.join(',')).join('\n'))
|
||||
}
|
||||
|
||||
const queryFixData = async () => {
|
||||
let addressCursor = FixAddress.find().cursor({ batchSize: 1000 })
|
||||
let available_all = 0n
|
||||
let total_all = 0n
|
||||
let results = []
|
||||
for await (let doc of addressCursor) {
|
||||
if (!doc.address) {
|
||||
continue
|
||||
}
|
||||
const { total, available } = await queryCECClaimStatus({wallet: doc.address})
|
||||
available_all += available
|
||||
total_all += total
|
||||
}
|
||||
console.log('available_all: ', ethers.utils.formatEther(available_all))
|
||||
console.log('total: ', ethers.utils.formatEther(total_all))
|
||||
|
||||
}
|
||||
|
||||
const checkFixData = async () => {
|
||||
let addressCursor = FixAddress.find().cursor({ batchSize: 1000 })
|
||||
for await (let doc of addressCursor) {
|
||||
if (!doc.address) {
|
||||
continue
|
||||
}
|
||||
const bind = await BitgetBindInfo.findOne({ wallet: doc.address })
|
||||
if (bind) {
|
||||
console.log('found: ', doc.address)
|
||||
continue
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const queryRemain = async () => {
|
||||
const bindRecords = await BitgetBindInfo.find({invalid: false})
|
||||
const bindSet = new Set(bindRecords.map(r => r.wallet))
|
||||
const fixRecords = await FixAddress.find()
|
||||
const fixSet = new Set(fixRecords.map(r => r.address))
|
||||
let recordCursor = CECRecordTotal.find().cursor({ batchSize: 1000 })
|
||||
let available = 0n
|
||||
let fix = 0n
|
||||
let fixAndAba = 0n
|
||||
let bind = 0n
|
||||
for await (let record of recordCursor) {
|
||||
if (!record.address) {
|
||||
continue
|
||||
}
|
||||
|
||||
let currentTotal = BigInt(record.amount)
|
||||
// fetch status from claimStatus
|
||||
for (const [key, val] of record.claimStatus.entries()) {
|
||||
const stage = parseInt(key)
|
||||
// 预充值阶段, 需要展示第一期可领取的数量
|
||||
if (stage <= CEC_CLAIM_STAGE && val.status === ClaimStatusEnum.NORMAL) {
|
||||
if (fixSet.has(record.address)) {
|
||||
fix += (currentTotal * BigInt(val.rate)) / 100n
|
||||
fixAndAba += (currentTotal * BigInt(val.rate)) / 100n
|
||||
} else if (bindSet.has(record.address)) {
|
||||
bind += (currentTotal * BigInt(val.rate)) / 100n
|
||||
} else {
|
||||
available += (currentTotal * BigInt(val.rate)) / 100n
|
||||
fixAndAba += (currentTotal * BigInt(val.rate)) / 100n
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
console.log('bind: ', removeSmallNum(bind))
|
||||
console.log('fix: ', removeSmallNum(fix))
|
||||
console.log('available: ', removeSmallNum(available))
|
||||
console.log('fixAndAba: ', removeSmallNum(fixAndAba))
|
||||
|
||||
}
|
||||
|
||||
;(async () => {
|
||||
try {
|
||||
// await queryFixData()
|
||||
// await checkFixData()
|
||||
// await queryAll()
|
||||
await queryRemain()
|
||||
} catch (e) {
|
||||
console.log(e)
|
||||
}
|
||||
process.exit(0)
|
||||
})()
|
@ -3,7 +3,7 @@ import { dbconn } from 'decorators/dbconn'
|
||||
import { BaseModule } from '../Base'
|
||||
import { GeneralEventClass } from './GeneralEvent'
|
||||
|
||||
@dbconn()
|
||||
@dbconn('chain2')
|
||||
@index({ chain: 1, address: 1, token: 1, account: 1 }, { unique: true })
|
||||
@index({ chain: 1, address: 1, token: 1, user: 1 }, { unique: true })
|
||||
@modelOptions({
|
||||
|
@ -172,8 +172,8 @@ export const fetchClaimStatus = async (address: string, taskId: string) => {
|
||||
export const updateClaimStatus = async (
|
||||
{address, account, token, records}:
|
||||
{address: string, account: string, token: string, records: Partial<CECRecordTotalClass>[]}) => {
|
||||
const chain = process.env.CHAIN + ''
|
||||
const record = await TokenClaimRecord.findOne({ chain, address, account, token })
|
||||
const chain = process.env.CLAIM_CHAIN + ''
|
||||
const record = await TokenClaimRecord.findOne({ chain, address: address.toLowerCase(), token: token.toLowerCase(), account })
|
||||
if (!record) {
|
||||
return
|
||||
}
|
||||
@ -185,6 +185,8 @@ export const updateClaimStatus = async (
|
||||
if (value.status == ClaimStatusEnum.NORMAL && (bitTotal & 1n << bit) > 0n ) {
|
||||
value.status = ClaimStatusEnum.CLAIMED
|
||||
changed = true
|
||||
//@ts-ignore
|
||||
item.markModified('claimStatus')
|
||||
}
|
||||
}
|
||||
if (changed) {
|
||||
|
14
yarn.lock
14
yarn.lock
@ -3442,6 +3442,13 @@ fs-extra@^4.0.2:
|
||||
jsonfile "^4.0.0"
|
||||
universalify "^0.1.0"
|
||||
|
||||
fs-jetpack@^5.1.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-jetpack/-/fs-jetpack-5.1.0.tgz#dcd34d709b69007c9dc2420a6f2b9e8f986cff0d"
|
||||
integrity sha512-Xn4fDhLydXkuzepZVsr02jakLlmoARPy+YWIclo4kh0GyNGUHnTqeH/w/qIsVn50dFxtp8otPL2t/HcPJBbxUA==
|
||||
dependencies:
|
||||
minimatch "^5.1.0"
|
||||
|
||||
fs-minipass@^1.2.7:
|
||||
version "1.2.7"
|
||||
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7"
|
||||
@ -4870,6 +4877,13 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
|
||||
dependencies:
|
||||
brace-expansion "^1.1.7"
|
||||
|
||||
minimatch@^5.1.0:
|
||||
version "5.1.6"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96"
|
||||
integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==
|
||||
dependencies:
|
||||
brace-expansion "^2.0.1"
|
||||
|
||||
minimist@^1.2.0, minimist@^1.2.6:
|
||||
version "1.2.8"
|
||||
resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz"
|
||||
|
Loading…
x
Reference in New Issue
Block a user