opang

Posted on Sep 28, 2022Read on Mirror.xyz

FTX Exchange Sybil Attack Analysis and Loss Estimation

1 Background

From time to time, major exchanges hold various events to attract new users, increase user activity and attention on the exchange, launch new coins, and so on. No matter what the intention is, the exchange certainly does not want a user to control a bunch of accounts and pretend that they are eligible for the exchange's intention and start sybil attack. Now let's analyze the sybil attack situation of recent activity on the FTX exchange.

Introduction to the analyzed activity (approx. 66% multi-bonus-getting users content):

This is a recent launch of FTX's Euro stable coin top-up prize pool.

  1. Activity target group: FTX.COM and FTX Pro users who have passed Level 2 KYC identification requires name date of birth, address, English name, phone number and SMS authentication, description of source of funds, passport or other government-issued identification (front and back), which also includes face recognition. In terms of results, KYC is of limited use for sybil attack prevention.

  2. Get the bonus conditions: if you make a net top-up of more than 100EUROC to the FTX wallet during the campaign period, you will get the bonus.

  3. Event period: July 29th 14:00 UTC to August 12th 14:00 UTC Campaign Bonus: Bonus per user = 150,000 EUROC / Total number of eligible users Since a top-up of more than 100 EUROC is counted as one user, the sybil attackers have the will to control a large number of accounts to increase the final percentage of the bonus

  4. Activity links:

    https://help.ftx.com/hc/en-us/articles/8073943197076-Deposit-100-EUR-fiat-or-EUROC-to-share-a-pool-of-150-000-EUROC-

The analyzed activity

The analyzed activityThe following chart shows the number of addresses deposited to EURO coin before and after de-duplication, which shows that during the campaign there were many cases when one address gave deposits to multiple addresses. In the graph below, the blue line shows the number of addresses before the de-duplication, and the green line shows the number of addresses after the de-duplication.

The number of addresses deposited to EURO coin

2 Methods of detecting the same person on the chain

Data to be analyzed: FTX exchange EUROC currency deposits, cumulative deposits greater than or equal to 100EUROC will be considered, upward tracing of data within 5 hops

Analysis of judgment criteria: If A address deposit EUROC to B address , A and B is considered a two-person group. If A and B is a group, B and C is a group, then ABCD is a group. A group can also be commonly understood as a group of people who have had a direct or indirect EUROC transfer relationship during the activity. The final implementation uses the Union-Find Algorithm - all addresses that have made EUROC transfers to each other during the campaign are placed in the same group, and after eliminating non-exchange addresses the final group corresponding to the FTX exchange users is obtained. Then the hot wallet addresses of contracts and exchanges are excluded.

The funding flow tracking algorithm used: a fusion of depth-first algorithm and width-first, which can be understood as a simple version of the network flow. The user's funding stream is tracked in one or more hops according to the timeline.

2.1 Analysis of one-step based transfers

Analyzing from the perspective of on-chain information, the case of the same person topping up to different accounts to get more rewards during the activity period just corresponds to the case of topping up EUROC to different accounts of FTX from the same address.

So first, analyze the aggregation behavior of FTX based on the on-chain information to get the most recent aggregation address of FTX, then invert all the user addresses based on the characteristics of aggregation, and finally analyze the deposit behavior of these user addresses to EUROC during the campaign period. The following figure is a group that can be analyzed in one jump, whose tail number is 8b5c.It directly deposited 100EUROC to four FTX exchange user addresses in order to obtain more bonuses.

Group 5 0x1b33b9d0322d84434cc217c76611902515db8b5c

2.2 Analysis of multi-step based transfers

But analysis of one-step based transfers, can only analyze the case of a person directly using the same address to FTX multiple users to play money. If the person is a little smarter, in order to avoid tracking, he chose to send money to several different addresses at first, and then let these addresses send money to FTX exchange.We can not detect this situation.

For example, this figure below shows the group. This address with suffix of afac can be said to be very clever . He perfectly bypassed the detection of one hop. This example is a good illustration of the necessity of analysis of multi-step based transfers.

Group 1 0x15392e0fc17d655720c3f6e3bb8d65d89119afac

But this algorithm can also lead to some minor problems, such as if the hot wallet of the outgoing funds from Exchange A is traced, it will lead to all users of Exchange A being detected as a group, because the outgoing funds from the exchange are made through a large pool called the hot wallet.

We have to do something to prevent this misclassification from being discovered, so if we identify it as an exchange hot wallet address (yes, we can identify it as an exchange hot wallet address, and by transferring money to >100 people in a short period of time at that address and some other judgment conditions, we can also determine which exchange it corresponds to), then we will stop the tracing and will not group the groups into one as a result.

Moreover, if we encounter a smart contract address, we will not put the addresses that have interaction with this contract into the same group.

3 Group Display

Group Type 1

These groups do not hide their actions, perhaps with confidence in the benevolent generosity of FTX. He directly topped up multiple FTX wallets greater than or equal to 100EUROC in some one- step transfers. if FTX does not take any anti-fleece measures, he will be a fully loaded winner of this game.

Group 2 0x1719f0381c17bfd7f80b16bd3e9d8929a400d5de

Group 4 0x88ce43b0c597db8d669dbd75613210abba416bc9

Group 5 0x1b33b9d0322d84434cc217c76611902515db8b5c

Group 6 0x5912cb37dbd803d0671c1b63bf1c5b08574362c1

Group 7 0x2e697b953ca2db42ee2d92c4d0ed3170d0c87e05

Group 8 0xbcdffecb673431f13069fc29bc2bbca52232eaf5

Group 9 0xf5683a32f8a795416081919ccabb200a9b5af137

Group 11 0x231887a438073623f58176ee91a086438209b98e

Group 12 0x7bf97c7a86508cdb54cccbd3e853042b14778ee9

Group 13 0x75bff95e3598bfd65d9150405eb201b52c0aaace

Group 14 0x9ee3f286e4b3ca837e4acb5294da10ff5219429a

Group 15 0x0e2ae905b17dc5f090270bbc8d1c4e3281a0f33c

Group 10 0x1b69c4a788ad8f940e624341ab45c731d01190de

Group type 2

This type of group has a portion of funds that are directly topped up and then called to several other addresses to get them to participate in the activity as well.

Group 3 0x1e03bf06e248ffa3ac32f6ac3c772817a174ad54

Group 16 0x18c12986c2586ceeba256b99ea443c519d868cf2

Group Type 3

This group variety, which I call the smartest attackers, perfectly circumvented the detection of analysis of one-step based transfers, but still had a little less patience, were detected after the analysis of multi-step based transfers. The size of this group is 10.

Group 1 0x15392e0fc17d655720c3f6e3bb8d65d89119afac

Group type 4

As shown below, 0x2551f92a90914a813798b56530ab82fa704482e0 controls 366 FTX wallets, which means that his earnings are 87980.7636 EUROC, or 58.65% of the total prize pool. The vast majority of this group's direct top-ups were in the amount of 101EUROC, associated with 12 FTX users.And the rest were first allocated n 101EUROC to an intermediate address, which then topped up the money to the corresponding multiple FTX accounts. All top-ups occurred on August 9, 2022. The source of their funds all originated from address 0x2551f92a90914a813798b56530ab82fa704482e0.

Group 17 0x2551f92a90914a813798b56530ab82fa704482e0

4 FTX Loss Analysis - Estimated Loss of 112,260EUROC with 66.35% Attacker Content

The intention of FTX is to have more real users join this campaign, on the one hand, to have new users, and on the other hand, to have more people accept and use the Euro stable coin. However, because of the existence of sybil attack, most of the prize money went to the hands of attackers. At the same time, the interests of real users are also very much damaged, the bonus pool that should belong to real users is divided by the devil a large part. If FTX had the ability to identify witches, the woolly party of this event would not be so simple to attack directly, so presumably FTX would not filter them. This also illustrates the importance and necessity of the basic risk control service of anti-wool from another perspective.

A simple calculation, FTX's bonus pool is 150,000 EUROC, a total of 624 users with cumulative recharge greater than or equal to 100 participated in this activity. The final analysis shows that there are a total of 442 user addresses which belong to attackers, excluding groups below the size of 5, a total of 414, or 66.35%, normal users only account for 33.65%. In other words, 99525EUROC were given to the attackers for no reason, and I can already imagine FTX's face after losing so much money because of the wool party.

Now let me imagine the expressions of the users. If the prize was awarded to 624 users, each user would have received 240.3846 EUROC, but if FTX had taken the war seriously, eliminated the wool players and awarded the prize to 210 real users, each user would have received 714.2857 EUROC. Users lost 473.9011 EUROC. which is about twice the amount the user really got.

P.S. If there is a need for related testing or anti-sybil attack services, please do not hesitate to contact us directly. We sincerely hope we can help you.

5 Appendix

Appendix: The following is a summary of FTX users whose belong to attackers

Group 1 0x15392e0fc17d655720c3f6e3bb8d65d89119afac:
    0x085b1a4da5fe1892edd3d43129471dc0b997e6d3
    0x9db2cb089d0285b4f977e39a03bf53c41fa45b0c
    0x053c7dccb49a44875038dc2967a88c7c1c8a508d
    0xe7d3a284a39cf4b7d505f57ca77cf3dd701fa45e
    0x42d761640d3cce83cee77bb5ace971a5d67168e9
    0x41983b029393392f5341126ba3e1308e6727a7ab
    0xea1954274fcff5b896ed96d8342ad3487a0a3b61
    0x344259bfad646c524efc42b68c5589a06d2843e5
    0xed95a246baad323c840c1d39aba4864deb8a56d7
    0xdf08a9a2b4a289cd17543518c7b1f5e6bbca570d
Group 2 0x1719f0381c17bfd7f80b16bd3e9d8929a400d5de:
    0x0f3497372c800c9bffc6857aff2f56e2c1a2c241
    0x1d0b2d159d419cb180a7f4ae1441b36dee1e4d8e
    0x1e053f113f7a3a510dcd3a7d3a4983c47ad46951
    0x37bb7b5c2f067ddaba180346b893782a2c29f1a9
    0x3b07003982b3903bc9ad0cd354380d33ce041dd9
    0x43718629109835da0a5c24e820dc0840962ee3a5
    0x6e4216d234e0a0709f65bc61a7f41db130a1c23d
    0x768027dc6e02494c05fbea255fd99bca2b6e5815
    0x798cbe5ef1e5ff23ee8bab2452d97e292d72efaf
    0x7ce8b7f56692a8430b687daa6a5ac2b669fb010e
    0x7fc3e1c8bb6e5679f2117653f4cc67a121325c09
    0x861835b4351dfe08fd15c19cee4e00566d5ed698
    0xc5411cad8db599c2f5c1d1d563776e98a856358a
    0xd8a060ed8eed31d863bcf04611b3f55b5de567d2
Group 3 0x1e03bf06e248ffa3ac32f6ac3c772817a174ad54:
    0x0940edc63d648f642710deca73d7bf1ebc3f9293
    0x0b2ee81b1f0a5ebeb9ef9722f4f97e03b2218384
    0x15b7d0f5b5f56037aeceefc74974996de54fa71a
    0x6438ab4061ae45f5feeabf8f1ba6be72ac5748ae
    0x98d7fb7f6f85385161cf4984abb93a14ebb7fd6b
    0xdf92a30b040bacf448398023d4ee696e789817ca
Group 4 0x88ce43b0c597db8d669dbd75613210abba416bc9:
    0x2c750783b15eac82b9521a3cdd432e8a9f598604
    0xa85d9d2b854cffd8c753ae15877b8ec05dd30fbc
    0xc42bf15cee3acfc724c93a4ecb2c547226ffcfda 
Group 5 0x1b33b9d0322d84434cc217c76611902515db8b5c:
    0x2918abd7d381eb06e525784bbfb48a32d50c1c90
    0x461e5f939ecb30e6ee3a342807b0cf985b3076e9
    0x84a4c58a10263303b765dee231dc4b73e240e144
    0xa0f04b90a0296bdbeb6a2450e0e9d54485f8995d
Group 6 0x5912cb37dbd803d0671c1b63bf1c5b08574362c1:
    0x4b32df8b2c429ee70d5ee6112cfbfe3b57432f7d
    0x95b86510560d32c18662778e346c03e27f33adb3
    0x97f382a64cbecd8552ffd363079ba04b61f8ed08
Group 7 0x2e697b953ca2db42ee2d92c4d0ed3170d0c87e05:
    0x4885259ad7d3a9b8e92bd00dc9083625be85c3f3
    0xb2e23d27a43649d295e887fc3ffe9c4ffc2442c1
    0x4b57c864afd63c5ada7878df1cf9d162fb9fcbfb
    0x51dcaec927e7e698713cf7cd8cc38c1c2fed3662
    0x9ed35cbdc142744b5c0d3c48578dad46134abc30
    0x724c5fe137d87cc8450c1ec96aa26b58aaa31982
    0xf57aa4ee96ff71ac6cf6bb37e453e3198c729c3b
    0xf6216e9658f471dca80b037267614e4654a884a2
Group 8 0xbcdffecb673431f13069fc29bc2bbca52232eaf5:
    0xa3914c554a9bff9d421ea44e9ff88dca475dd56e
    0xed529e8f4bc56acf8bb52689d8507b753c03831a
Group 9 0xf5683a32f8a795416081919ccabb200a9b5af137:
    0x8f3e3614c74f37c8a02097648c2425337edf2ecd
    0x997975db01dcf114977f07f7c7f6dc7725bed6b1
    0xa04dbec8e6f5344e396fbebae092834e179ca76d
    0xe2c1d6ed6a7011157639c8f85bb0d28a6e3046c0
Group 10 0x1b69c4a788ad8f940e624341ab45c731d01190de:
    0x7d80eba0f48bce681481555fc64446350c366864
    0xdefd9d443116c4e72dd0624a9e9c921c2658670a
Group 11 0x231887a438073623f58176ee91a086438209b98e:
    0x05debf984ad68c58349ee681143bae0d0715c4e7
    0x2927853b9d3e610a2ca7ee9c49e611dc378d9e75
    0xb0d14f628de0029b9fe03015c382be021ea707b7
    0xc575bc2ba28d7395a3e4f215329f07e8bcf66cd8
    0xc9e50c18808b9c77c8c805714d984e1d61b95879
Group 12 0x7bf97c7a86508cdb54cccbd3e853042b14778ee9:
    0x259914ab523330486bf939c94bfaf4842a83bd96
    0xeddb991be62ec7fa6c059328b76604557d2e688b
Group 13 0x75bff95e3598bfd65d9150405eb201b52c0aaace:
    0x95515829bd4b78d6782de5a15f989dbe27476479
    0xdfb87ae5636782b89d1c111dfb08d25a9ea5bfa2
Group 14 0x9ee3f286e4b3ca837e4acb5294da10ff5219429a:
    0x2475de89fcfebc90f14c1281d99fe94ec56a4c5e
    0x38bee14a4f5e150b508564f6cb3cf9b34946f414
    0x5c1a563ed5032885e3b03b8477a750de2ee1a532
    0x78899122cee6de6b2b034de788a0e8225a2a3062
    0xd6a66ccb8cfa04083fe3b8223612da362ea5be01
Group 15 0x0e2ae905b17dc5f090270bbc8d1c4e3281a0f33c:
    0x81aaa250aec718ab1e73abf3ff5cb958a592891c
    0xfa97bbc0cb1616ab80a64c46cec1e64e9967fc07
Group 16 0x18c12986c2586ceeba256b99ea443c519d868cf2:
    0xbc6053ee227578e161fadc0da5f5260164cdf2a5
    0x887efd597b20562cac3c2b14e9406b3f868b7b78
    0xc2df5ba2b235d5eeeb11adf1f19a0199830d897e
    0x1a7674b56897c1f606aaf297e527ef7f861f747b
Group 17 0x2551f92a90914a813798b56530ab82fa704482e0:
    0x00562fbcc6ff61411bcc9bcaef091658acb9ddcd
    0x023cc205596c18966e729301b9892b23bcd2a254
    0x0245586787b703f9cb8aa95eaca7d014c026598e
    0x0366722210bb0d889fca775f44ecce51592e841c
    0x060c431b695f763b00d75dd380070ef8624510f3
    0x063bea8ccc8310f40dc0d11426412a5c45a49405
    0x07aaf96bbd2e1ca4f40bf504375eab945579498b
    0x0848fbcd42b61fcac3cf95f4ab2a5d99fff9f4f2
    0x091757c41bfcc87dfe7698c4fd22920ed3ca8afe
    0x097c99f9b15b5f7ec85d19e3ded8a2579abff64d
    0x09f18ffb68009a0ef864e61f3a389773b7548432
    0x0aaa665392f3db13808bc41c28cb50c2dc71d6bb
    0x0bc70880dd639a1130aafcc8d5ea2bf3161c798d
    0x0bf7689495a8db3c40fa543ad51c0330733d0591
    0x0d3cba0802b8076ef6af79146f775a3cd180dc1b
    0x0dd6537f7ce32c5640c09de2c472897a897d7464
    0x0df74aa586e82d46ff38bd7fa07ea81b6976d297
    0x0e53a8ff81b9493d0b96d374a2aed6908516b7b9
    0x101cd382bcdda6205e3c15f367bcdf96b96d6961
    0x10a495212bf0ad3fd5b8562d66134f2048f70c3e
    0x119289c02a0f74aea9d6385f0b8c257ea00474d9
    0x130b401e3ec1de9653c26bc149cc9ed8ef576fe6
    0x139851db0b517f34a70d79cbfa45be2d6facbc3d
    0x13f1a43794670e707938c3c9244e728df4401e81
    0x1462ed5f1a51db3f06057551048bbfc03698bee3
    0x146e6ce655c4200806c4ef49965348de0d2b6196
    0x14f9f4519c73f28b26ee9b7dac8e8bf7137c67fb
    0x1577f3ffd0dee8c47c060251e950bbf2c379e1ea
    0x1663d16b0a7ac4d3c827e3babcbcdca1d40cb35b
    0x1672de5e44a6fa9e89e0dd9e49a80e6f36eef2d7
    0x16c35679c8b784477b71024ee8dbea9b7617b7e2
    0x171c580cbab9728a93a1791ad74825a02e445b6f
    0x175af6da943834a0b12c30d9bda1add3e48d5e16
    0x17f098724c03b63dc9afb99d250d0f036ed86837
    0x187cea953d483dce67b527cefce5f3febbb421d4
    0x19188a30d4d419c69b041e2eb9d68ab02a405e97
    0x193005b99e34a5bfe6181f4116adaed1ad638de2
    0x197aac657e86b62c143443e8fd4480e45a0a0dfb
    0x1a9beddd2b96d35bfce11291441177afa06275ff
    0x1ad9543a36bf8c3be45981630f3aae6957469d66
    0x1af99379b11ac48f66e7865f6c2c88a45d249cbe
    0x1b623293072f73d121dd7f4b32d7b6fc1cfb4bd7
    0x1bff6ff765eb31567ca20dfb62d16bce8c1a0b1c
    0x1c29a463636d54894ba20eda173c948d2ccedf2c
    0x1c48c52480551a663e40455b2da719d4367c201d
    0x1dce2d05123570fe572e62aada5460831036f63f
    0x1e0b54af5ad91c7d238910a92a4ab2ffb9068b53
    0x1fa32cbf996d621dd93d702a704247d079072b0c
    0x2139abd925524a4b953a5f429530802e6a3f0125
    0x21dee4c48f656f842de576247631a1b86c97c10f
    0x221c51eaef4564a655adc12b7cfe6ff04383d856
    0x2268a65e2632963667654708833ca4d37c63ec04
    0x2279340df3f007ccfdfe38454b95f422716595d2
    0x22f69fc506093b8d9bed294e04b4ed5de151a7a7
    0x230b3c97f3903c77231ec648c00cde38bd3614db
    0x23cd26f3b8a65d4bc362859d38a2843f434032e9
    0x243dae9191e3d5110b62411c22c27c60dc2fd07d
    0x249412ac005b99c23dc571d17cbe8f5c76047ba5
    0x2545ac2ae11fabf99643e7f6333d45a61ea7afeb
    0x25c1643ff891a8f582741013f91025440e761a4a
    0x25d47681204dc32d77bd62edd526e37519c889ca
    0x25ea0ec1b5d6c2eb8f355967ab735fef2c15d53e
    0x26f7bb6f1ff2d16a8902ef2d2a0ddb7e251dc725
    0x276d77da7f3d9613689957ef717f0538a96606c1
    0x27b4ecc680636d463968e045fc4ea3a05540a529
    0x2eceb7ac14b0bcd9126b451296a5a51e7dcd0e0a
    0x2f67d56c1903d62ce84764c4e8b6ade9720a28de
    0x2f978b2c7f42e9c920d38c955c8c344ca7e34c92
    0x310047842c545fc1578069c060cde949eaebbb0b
    0x31474fdae7710563e27975c47f457ad92bd52179
    0x33018d91d08a4ef4769dad0f28f5a795db29d5ae
    0x3507a8848ec10b94244b2663642b25342d9f07df
    0x35ac802cd23a832bafb85ce03a2d4f92672a2c2c
    0x35bc1cbbbd4b458b87775600b05b4dc7007ac7c2
    0x35f8c9ff0c04141c23b0b7b4149d1beb3c582a8b
    0x36d25303f13875174b323fba408f8dacfd82b4f1
    0x393816ee07ca169fa27502e054dec4f2c629d916
    0x39a1d3aad62d937288b20f5a01f50b65d6728309
    0x3afe0ab919ebf75033e9baba079ad37f9804e4a9
    0x3d09da5f69771a518ca8aadeb54deb2828e2e92e
    0x3d107f25001afa5e6b3293655aa07f32cfe2fd0a
    0x3d3a3b17603fe56c8c6f226bfb30147dba580236
    0x3ec2c2b6e7f6c7177633b6db399420c6716433c4
    0x3fdde0bea45b76e5323271689b63eba5bbc6fa16
    0x40b9aaeab00e60b9de57f1d448e49a48bbcb7f0d
    0x41bc499a45cd918a880c76ef5cd87969677909d5
    0x42258ddcec56b3499c38e3d64e96a4a799854172
    0x4230c32b60b108eb6d5d19a527b2580ed3789e6b
    0x42c5497bf7bf994e888593bd60b332c827d8b4be
    0x4325a731c3f4042a2c0e72f2daa083403cd517ee
    0x436564ce4acd4670765b858fd8ace547e2606233
    0x4382ac9f473968950955d21cfcfb5f7da046d4f6
    0x44849cdf92a59349dac19ce0dd59fb787bab2c38
    0x45480d597a9e6dba055eb9137803630138c9afe6
    0x45702c14d61b0b59dce52c96dc338acbee963f50
    0x47a211f1dfdb73fee16998b04789be24f323c06a
    0x48a7fcbbd5b882e0565894e49e15e852bd6f5bde
    0x4984441be556dc5385d0bc11ff94e2a4b8d4dca6
    0x49923e062f9204aa108060e494701a8a31fdc2f1
    0x499e6df76f465eaccf6ab16f5031c6ce0db41076
    0x4a079408914cb2345f3dc6f90fdf3df4138e916c
    0x4a97b0d58a13e3752aabdc2e6c41474e6544c362
    0x4ade18e875fab4c521b2ee59e68a4bbba4b5acb1
    0x4b31c2c34b0b2c1cec3ec31a642ccd3345ab83a6
    0x4bffbfce96d454c17cf2594fe1142c8d3b15fb95
    0x4c7d2d8154e8a1d7555a1f2aae70a3e7cd2c4b13
    0x4ca04eec7b5a8445c804a90b1a344861d9997da4
    0x4efa9f4e743eadf36cec2e61aaf25853367e38d3
    0x4f00e136154fb61339c1aefbd54bc21b193ad7a0
    0x51142ab9d9106617f058f7f36c167862a548d8cb
    0x515f3c2ed231736530b72b7d58aefab4e5274ce1
    0x518b2eb2b6c17993e4dad124451afc4ac82493f4
    0x519d2b7eec5c5c1e56f6a96d3972dc6c75ecab45
    0x51cf3f665e0f8d9ebdd926824bf472ec3c1a41f9
    0x52255d6e8d3941c705698d4c0e8999fbaac18927
    0x53025e6fe8eb8962a6c0613243e9e1df3734c0ef
    0x5394cc1bca9be1913f3287275a7cccdad053630a
    0x53a64b4da5576ffa9b7e26768e87685ee0ce0032
    0x563db4dff60a609aa1e2efa7301f58619ca14ba1
    0x576f08ecfe6c5dec14bd866879656d6b190591eb
    0x5858ccbef4730f1991208621da890f23afbf024b
    0x58faf9e20f52ee033f4f3a254e970b98eb86ca1e
    0x591d2f313fb9e0af337a9871b8cca282699e0568
    0x5940e12fd806dd93b5b1c8c0e96c89736935ea87
    0x59e8abf1d0b5acd52cdf03d2e16eeea667bad39c
    0x5a0d7083c0df003e41f81b7e15b2c7afac02c46e
    0x5a933e9026e002b67e769bfebd0f7787bbe470ba
    0x5ab91c8bcfed8daccee54fc3869fa1e8dd148edf
    0x5bc3613c6c06b5759551f5555f4520a83d3351f1
    0x5c050b22dd1a965f0d68c2010c871d509395c4cf
    0x5cad17c9ea74d142831e594e5d41895b8166f9ae
    0x5cb2afaa9649dfbb89c76205caa913a7c0102986
    0x5dd80a0ecd158f8cd1b75359e856eb41cdbd3852
    0x5f32677695059807be225239fca348ddae604aaa
    0x5fbaa60fc3827e493b912acc195fc1aa758986a5
    0x6068d743fd2aa386b39763a307c6184609682d72
    0x6070c07ff882b2e2683b57bd4996596847d7b233
    0x607fdd7cdf38f38bd7dbbc1e8f91e018050f8498
    0x609069fba87f0b8ca18920ee19668e61d274d54d
    0x60909b11830ac3c5e3a6dd05a84822b73f8a6fe2
    0x61a7a617aa208e19d1b0ae94385a05e01b45f441
    0x61ca34ea672168c20d8955f59d0b73c45d29b64f
    0x61eeeb0c47bbe73e7d5b335a938e362d3f7ba0ff
    0x62c0f610a1c47a23b3c7eac0887a701f4d0f3810
    0x634e927dfbcae4656ebda2e49402ec01b2a474a2
    0x634e9be4af5cb8293dcaee52faaf1519604ffd3a
    0x64ffd18739b6dbce3f2cb25249d21532a1d2bcd7
    0x65fa45b8ca7ad7b8cb840c2432506655bf27f28e
    0x679f8224959716ed49cef5c21ee9da350ea71627
    0x6831d444061a0ada3f2cc3a99df3126d7fa75cc5
    0x6a03a79ba98b6d340e7de1368662e4a7aebf47a7
    0x6a0874852ed3c161ae3944674d2adec4eae4d75e
    0x6a48af6c05ad9361823e2dec5838634717f05f3b
    0x6a7f3fc41c259d379a516d52f85be9a56068960e
    0x6b67764ab2d88ff999ba2f10105a5876bf8c1926
    0x6bda35e2bd4f5e9dcfd3513a81fb3be0a5461a00
    0x6c400d7d3395b0cbc6698f39bf8901ae35ce9c60
    0x706d060647b9d8a124d0e41246be1e2ce082b73f
    0x71412288a14efff751424aa72db7851dda04fba0
    0x71bb1e4f87fd13a7dd781bfc93b19e4103a92cea
    0x72d74990b4bf6e14fdb7a6edce369cdeaca26ee9
    0x72d7dafb9f7f0d400fbf5805a3d045bc24e8bd1c
    0x7307068790061e718df9beb142e31101230d2ec6
    0x730906988febb2ec494771c0316d340c542e1db3
    0x7353932ea31822a0dc27a47d0ca242fe84b024b1
    0x7379f1c0331e672942a6f827f01823ba53584b59
    0x7413063824b76f1e5b4af1f341834cd38647c389
    0x743cd76737ac54b6d60aefc3c80b0fdc0dda3fc8
    0x749c4458d20719b0d12ee8bb8526d57e9e8fa11c
    0x754a6cd5c9f35318dfa898c67a4d892e39d10243
    0x75fd60617e3bb772b7a18cad110ca466d1cf65a0
    0x7624e822fcdf691f2fe66d0f60bde62147dd8b7c
    0x768ae568657c18be6b132d2f4f3d9ae08a211fc8
    0x77084dcd7e7c3dc4f8ce77a0c61a5cc6b255af56
    0x77364dff67131e6cd3a07b5a2aabb51786cbe56e
    0x7738029d3d509020d9e0489ef0c5b325226b8190
    0x7780230df7e78b4c549a4e30179482a4dcdbc4bd
    0x788b855e51d783c796bc4bf99bbec38606d29c15
    0x789103c13f83d453b8d406fef5ed63d13fb2565d
    0x790898df362c6283ebe1f999ccf4cb22672bdfc2
    0x795d59a1ca83ca32790278deb968ca27d9f0614a
    0x796deb4ca715bb8dbc1f7b80517b570551765b33
    0x7988f5596b3f43cbf3226ac3ee44c033e2f88db8
    0x79effab60819f5673203183d9e02e5bd3011bd08
    0x7a5b8679693b132b3e114490d9fea068b7667f61
    0x7b68ddf92ef42803bff9307b3bc6ee80ede5e12b
    0x7be59c3c0d96629e11532e5c70a7232f3283a83d
    0x7c0642662a3d30c3547d366f81fae5c5e1629350
    0x7c4e805640a39a3d35857b50fae5e6c4196975f2
    0x7c6a5662977ef03c16f40f34aec4d57e3efb7d3d
    0x7cd75f9b2fa24f9f351269b19437b859ea66950e
    0x7cfd50f22a55760e0a715e6dc12a8052158d8899
    0x7dbb1710ec9f8272cedcbc59f53cf6db72536f6f
    0x7dbeea85096850a5036c5331793a9cd6be637072
    0x7f2b3aff29a17b24afdcd41402ca49f94daabe2e
    0x7f3a1f3093662f43178597bd94b9de6457687a2a
    0x7f3ca344e59163748dbe20bffa400a725868248f
    0x7f50ffddf8262dd79b01ae76e5d4dad8e79b3843
    0x801f60bf45634472a22f5f4e6551cec0932caa12
    0x810f6a54bf1ea1873443162b9f4a4c5cdcba58d8
    0x81b065c0cfdd12357d0ae10a91fa930a38d0d594
    0x81b1eedae2fa226e1c6504977fcda862b91e849b
    0x820f9108138dc94eae25914f394ddfe21d6f9740
    0x82538949135a3ece0edd38266142f5e0255cf2f6
    0x82b828551670a3d83a7c8ed82859bb3b4f29e155
    0x85cbee089dd61923a83d9da72751e13c77b32138
    0x86027ea959d21a0f638599d9216c37ba3624c171
    0x86473d8f44d92cddf655979fd234809752cf8184
    0x86a602997c1c029840b9e2543d8cbc7020f32ba8
    0x86dbf4fd518d6c533a7ec053ab46e9e81a2d9a56
    0x873109869d893c49bf00842a6816a2763e566638
    0x878f0fab40637f5c79c6e9968264b72ac71f6929
    0x87ee2608bcccd165410eafd67b518732791cacb9
    0x887b16a1797041b17dbf08b7e0bcee01a73820aa
    0x896fe7adaeb41e4c00acaab14a736dd9480cc1f1
    0x89be643766c476e53758205eb39cc88fac23d55b
    0x8a90a6516825fc87b1068f939739e39500798b3d
    0x8aa00dad8dc55d537c89b92dcb4776eff797ff69
    0x8b4b9e2ed08a82550d8ce7b9b7b8c5722cb61e3e
    0x8c119472b3678cb0d8c800bbf79b5aa9dce28eb5
    0x8c8d53503734a5b7b750fd02a70da04aeeadfbee
    0x8d494c8053c537807c678f8fffa4a657640646f7
    0x8d72e5867c2d1172bdbc10eb432656de839e4afb
    0x8d9019aa782c6ee3b4e491e80f686ceda80b1916
    0x8de5917c2cc1a9ac952931b69a2f76a241cf1be2
    0x8e1422925de79ea4086004286399cd81a340fb9f
    0x8e592ec9d9cc306787ba98676da89917b17fff96
    0x8f20553e0c3a95f385801d95eeeace824604edfc
    0x907b3908bf1e140fc82898a2ff4f1b1c3b947e35
    0x91dc634a5caf12d90683fb68fcd8b2abc36c9973
    0x91f17ce440c12d0e5d288ab58632fc0734924e37
    0x92cc395f79f45c40d351ca7dc87212c49a3ed737
    0x92f58a972f87040ff368ba0673231a91f0c80455
    0x9308798ca7c6650ac3f8833b239cc04acf882653
    0x93baf549bb3dd1c3fead579acfdb390eb19c3d7f
    0x9492bcf98e0094b70a6c0c3bd35efd611f940433
    0x96de33926acea65556dd99da13c2fe5daf081c6b
    0x9737fab30c7eeb50cbf842963fee218a4901c954
    0x9827f99a40f1e9cfc3aee230a66b40aa2adacd80
    0x98346d937adb58ac52a6fdfef45935cccd6b9a6d
    0x9858b4e7063a06d2a20a24c315981f99f59bdbf1
    0x9a1eeeeb6f862fb581409998c4dc7e166adfbc4b
    0x9a71d66209d75e77a26dfe888ebc1e635cd7ec1b
    0x9ab4dfcd0f890ef00535846c789220a1b276e06d
    0x9c3a9520d7683192359818f47a761302c530732c
    0x9df3574d3b2f68b08c26cb4bfb2906a9d0f8d234
    0x9eb610a081164c918e8d36d79ad770ba9b166f80
    0xa1219fbe8e5d0a5f1894229cc7f44f2adcc7ee8e
    0xa1de69026e8866e625a4e7005b8f99587d92744b
    0xa223aacba5b08f470fc1559dfc579d32d7f350f3
    0xa2a7137f1a7d19ff03da21210b7975f9643b0928
    0xa3162338ad4c25b7f756cb7e812daec9de27ac28
    0xa467d4786c701b9fb4bc312a8b02f0cf3d966ead
    0xa46dfe6bbef5fed07595d1bff5019ccac65392a2
    0xa52ec3fe2fce72a4ef68cb23c93db3f8576d1cbe
    0xa5d5b511151dd17515b4b03e61756e9063347bc2
    0xa745993a9876a248fbac8760ae86e1dbdf19d324
    0xa78a621bbeaeeb95f18331ae0fda66895986fad5
    0xa7b854a16f9f588c1ce3952b8f07573c6e1caca3
    0xa91d803af4b674467451e89892310b8d82aa213e
    0xa93b05afff9a27dbbcbdb67fdd75627b6312fb89
    0xa983b624312d4f5600366d505069968bcac9d92d
    0xaa2285f75ec449468e214ee00b38b153eb534d06
    0xaa5ddc43355a83b22be25c1b37e8921687bb7807
    0xaad701a384f057e2e5299a72c732f7ad4453c5d9
    0xac95063f90c07f230ebbe8f9c4ea36077bb31036
    0xadad587741329d4c410079568ee15601a734159e
    0xae10e9dbe896be59cb5d18baeed4ec3ba55986f8
    0xae35fef5944652b2a77325da877705c07cddcd96
    0xae4ce26fd95384162973037de21a1c8542ca1288
    0xaea39f0ca2e09b22eb79019b181d74f41ebd622e
    0xaf7cebe45aed15801b16a26c0023b352afcc5c25
    0xb1669d99b486a57ed7e45ce8e35c0070ad5e4d2c
    0xb2d05c798e26e5f10381c5bd742717af1609018f
    0xb324ddf80e50f49de974f3a1ec6de4f3d78bbccf
    0xb38a2250dee4e32a663e7c2f633699ca3b9aa130
    0xb47401de9bcf517dc108aace5a44d48e9d98ec24
    0xb4ca2939eac0c0c7ce2da669ab2e6f2d62bdd72d
    0xb501671fb69f5d808fd763ddb4808c4fc26b1dfc
    0xb54d7aa16d2671368687ad3dc1e1bf20771d3b05
    0xb5f42bd628613bffd7896ef912e8d8eef3aaa68f
    0xb5faf81de7cb6e1f2d24f08bb58c9f831b1b16b8
    0xb774b9fcc3a5968aa9932aaef8f79d1d94a3867d
    0xb98d3d23dcf2ae6111d6dd9a13153299452c9850
    0xb9e7e1bf06c23f951d334006f4e4e59d0ef71e4b
    0xbb05028efb56dda4da1be5fb3c5895d6193677e5
    0xbb47efb453303e8d072ba80c30a5d95542893ff3
    0xbb6d75e430dd28dd54f7d420dd69e5dca15373cd
    0xbbd947fb272250e4d315f8459c4c1b35e6185fa3
    0xbbf81f57d976aa7a8307063f1326884a243ba46d
    0xbcf0e8cd2b8fccbb0a9e8110fbd6ca1d8075bc04
    0xbd623b2b8f81585a0263e7d69529e948f0f19216
    0xc022765d0b4aa923fca84f23de18ef07895be0a2
    0xc0e777f6526e0395444f98a1e2d3fb678e0858bb
    0xc103c9de170d43703ad324e646bc0093dbd2dcc3
    0xc2471d01e209cd8813c6b523194c87c36ad0d662
    0xc65f4e99e04e815157b6f62b0a97cfcfe0156856
    0xc83e45c0c763008d461d60ec15389f48e84960e7
    0xc931dc5930aa5cc84a2d034474553d685e3b33b2
    0xca0fd07a59116c34e7178d39550f9447ccd3bcd2
    0xca131999d59ad0dcd0df8d21d0acb61f136d3c47
    0xcbb139e1dc958869ed5c19ae4fbdb865943e8778
    0xcbb5bf79c5e9c400b851b0cc57ed24ad07f3ed26
    0xccc93c325454cd52a43819de82a0f59d08ddf895
    0xcd6376e02abeece0b0ae7742d4ff18fe28e9c1bb
    0xcd819151ad9ee741cefb9fda7a020135fe354652
    0xcf18a5e73f0c419f68c88cdc24851df678350de8
    0xcf5bd5f9b26f396e8939d644466eebd6df826dd6
    0xcf6814586a90488faa7084ae0aadbd12a52fb51d
    0xd0cae0bda53a045c927fcc761f5ceeec498b3b66
    0xd36c87320a236e9e09e1f101daf31bcccd44171d
    0xd3b2a3f0ee6e6ae8045069f54affa597ffb5d29a
    0xd66ec02727a8abc4de5c0904b895b34f5e9c3b43
    0xd8156215dc397aca158441ba4762d54e951958c9
    0xd89f3b69ed5ca4193fe11a134bd45cf05b03730a
    0xd8eda506478b9657288a8bf32fac46f3e48881a6
    0xd9844bdd005ad9af85fae49d567eefb52ebaea23
    0xdb76237840f642bc0c014ed92733d53e3e88df45
    0xdbeb8be58f1e1f33119febdecc0d01551e7106e4
    0xdca2bac384d6e0166870c6a0a0493e13b4bc1a8e
    0xdcafaf8c2b1ffa8bee9d7e06371050557e73fade
    0xde2088255ff4a75dfc207a29ce5c3e4eddb7fd56
    0xde89529c73fad00ec40b6a826cc687edb1eea04f
    0xdf26ae239a80cb5dbfc03ce2f88bfd1bfa5bcd55
    0xdf34b913539962bfc4b65d59c7311616f842ac8e
    0xdfeeafcde49107991f32f1be32101f6d87b1e57c
    0xe03e98d5a7e8f04bb030e3f4bc95f3d10d091eb1
    0xe0859279453a44393ea3ea1d8584d779b97c8d02
    0xe1fbb8cc91a7ead380d40c9a9b1a8d159dc2d2b1
    0xe3541cfb896f77abb9c7385bc90cf2eae47ef221
    0xe3cf24eb3c2f2d2e509c58d57a8423b8f6753a77
    0xe4fe4ed1b7507022bf1baa1ae6b8065e342a4bc1
    0xe506cde7e515cf3cdbe7703540af832194dcbbdc
    0xe6b6b2d7413ae105fb111d717020792f56d27076
    0xe76188f9300c5d396fbcc78c64b60d44351ca384
    0xe854e767759635344c2b48a6ab4377850a538da8
    0xe91abe452e0725e974bf1fec8c55e02079eea419
    0xe95ccc5c8f6c1048bfbda8d877b9542a8a8f4591
    0xea0f75f3a66c7e45c684dcdd82e8c550a308d9ad
    0xeb8a004225d12699e1492cc273f36ea76cd3d307
    0xec5a968dd09b161074eab0ab31d838229526cb22
    0xecf9dd4133772cb0b9267c1e3a26aa39a8d56d61
    0xed31a0000982e5352ce7d448f47b1b8ce496c4eb
    0xee3b26ea6ef364697f5f3ed3991932ce50519799
    0xeeecc3b7f35fefee5c7549612f88412d9243ed54
    0xef7faf839eb0c3e18b57ee3caf98815f531cf928
    0xef90a5f6bc832328abb6e80dd1c6216a9b1bfeaf
    0xefd3d5b81fe62c4b9293c94620633d57792cda40
    0xf063ad4394de415529c9a4ce06ab691d51b9e7cc
    0xf0eb58e2bcb28931e9c48d07dbf22f3e647f4ae0
    0xf15d382b2d11ae53671ec8818db43d10de6fd2d3
    0xf1acde01b554e4f67e9f86a9d479b5b0145816f3
    0xf38e820ee4269ec0949438efa8778fd2884fdfd4
    0xf558aa0fe78803141c9af82b4f5334b7d42c7813
    0xf8c31b825ea33b01203692c04400e75780d2cd2c
    0xf92502bc56070dff5959f9ff2e0333b9c01d7dae
    0xf99cc0ef307919e2514db6b3eb6568dc23b86d80
    0xfa4da0feb436e193fd82f1e698611aaa275b2d17
    0xfaa224762ba5e7fde704ca2edf64ce82e672c858
    0xfcf706509bb8f3f6baacda766c4f28cea83b7ec5
    0xfd39e6e200a40406f120845892c348cd3c2bc988
    0xfdcb8d21ea005958d236684a0d5364ff68350215
    0xfdea8113c039085cdce0c08466e9223c98104144
    0xff10b95e0164a5ee5948b6bbe27ecc70d73d1961
    0xff2348b6fee93d54fe703d94ecc37d8904f89c62
    0xffa07cab423749fb8b45dfc36c5ddff2e6a709b8