Skip to contentSkip to conversation

udevd on very large systems: again

PATCH George Beshers 2 participants 9 messages May 1, 2007 – May 3, 2007

lore
Share & tools
lore
#0 lore raw

After some testing the following patch seems safe for dealing with computers with more than 500 processors. It occurred to me that it might be easier and just as useful to note when udev is running on a large computer (e.g., >= 8p and >= 16Gb of memory) and simply not worry about throttling at that point.

The patch should apply cleanly against udev-110.

Comments welcome.

George

udevd.c +42 -36
diff -Naur udev-110.Orig/udevd.c udev-110.new/udevd.c
@@ -347,31 +347,21 @@
 
 static int cpu_count(void)
 {
-	int f;
-	char buf[65536];
+	FILE* f;
+	char buf[1024];
 	int len;
 	const char *pos;
 	int count = 0;
 
-	f = open("/proc/stat", O_RDONLY);
-	if (f == -1)
+	f = fopen("/proc/stat", "r");
+	if (f == NULL)
 		return -1;
 
-	len = read(f, buf, sizeof(buf)-1);
-	close(f);
-	if (len <= 0)
-		return -1;
-	buf[len] = '\0';
-
-	pos = strstr(buf, "cpu");
-	if (pos == NULL)
-		return -1;
-
-	while (pos != NULL) {
-		if (strncmp(pos, "cpu", 3) == 0 &&isdigit(pos[3]))
+	while (fgets(buf, 1024, f) != NULL) {
+		if (strncmp(buf, "cpu", 3) == 0 && isdigit(buf[3]))
 			count++;
-		pos = strstr(&pos[3], "cpu");
 	}
+	fclose(f);
 
 	if (count == 0)
 		return -1;
@@ -380,30 +370,46 @@
 
 static int running_processes(void)
 {
-	int f;
-	char buf[32768];
+	FILE* f;
+	char buf[1024];
 	int len;
-	int running;
+	int running = -1;
 	const char *pos;
+	int retries = 3;
 
-	f = open("/proc/stat", O_RDONLY);
-	if (f == -1)
-		return -1;
-
-	len = read(f, buf, sizeof(buf)-1);
-	close(f);
-	if (len <= 0)
-		return -1;
-	buf[len] = '\0';
-
-	pos = strstr(buf, "procs_running ");
-	if (pos == NULL)
-		return -1;
+	/*
+	 * The retries is probably overkill but the text display is
+	 * changing rapidly.on large systems (>= 512p) and so, while
+	 * I have not actually recorded an instance where the retry
+         * was used I would rather not have it fail.
+	 * 
+	 * An alternative approach would be to note when we are on
+	 * a fairly large system (8cpus and 16Gbytes say) at which
+	 * point throttling is probably not really necessary.
+	 */
+	do {
+		f = fopen("/proc/stat", "r");
+		if (f == NULL)
+			return -1;
+
+		while (fgets(buf, 1024, f) != NULL) {
+			pos = strstr(buf, "procs_running ");
+			if (pos != NULL) {
+				int res;
+				res = sscanf(pos, "procs_running %u",
+					     &running);
+				if (res == 1) {
+					fclose(f);
+					return running;
+				}
+				break;
+			}
+		}
 
-	if (sscanf(pos, "procs_running %u", &running) != 1)
-		return -1;
+		fclose(f);
+	} while (retries-- > 0);
 
-	return running;
+	return -1;
 }
 
 /* return the number of process es in our session, count only until limit */

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/

_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

#1 lore raw
Quoted 10 lines · George Beshers

After some testing the following patch seems safe for dealing with computers with more than 500 processors. It occurred to me that it might be easier and
just as useful to note when udev is running on a large computer (e.g., >= 8p and >= 16Gb of memory) and simply not worry about throttling at that point.

The patch should apply cleanly against udev-110.

Comments welcome.

Looks fine so far, but I still don't see how reading a seq-proc-file could miss entries. Are you expecting this to happen? Did you ever see this for any of these files?

Thanks,
Kay

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

#2 lore raw
In reply to George Beshers
Quoted 8 lines · Kay Sievers
Quoted 7 lines · George Beshers

After some testing the following patch seems safe for dealing with computers with more than 500 processors. It occurred to me that it might be easier and
just as useful to note when udev is running on a large computer (e.g., >= 8p and >= 16Gb of memory) and simply not worry about throttling at that point.

Quoted 7 lines
Quoted 3 lines

The patch should apply cleanly against udev-110.

Comments welcome.

Looks fine so far, but I still don't see how reading a seq-proc-file could miss entries. Are you expecting this to happen? Did you ever see this for any of these files?

If I read linux/fs/proc/proc_misc.c correctly, /proc/stat fills a buffer of 128kB in one call and passes the data to the file.

I wonder how long it will take, that you guys hit the 128k limit. :)

Thanks,
Kay

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

#3 lore raw
In reply to George Beshers
Quoted 4 lines · Kay Sievers

Looks fine so far, but I still don't see how reading a seq-proc-file could miss entries. Are you expecting this to happen? Did you ever see this for any of these files?

Hi Kay,

The answer is slightly complex. No I never saw it happen, but I am concerned about it. To illustrate that, consider the following test program and the output log attached. Basically, the /proc/stat file does seem to be changing dynamically and an open file does not present a stable snapshot. So the danger is that the procs_running might get split at a 4k boundary and the split changes by the time the next read occurs so procs_running is corrupted.

All of this said, I am not really happy with the retries strategy. From my perspective it would be better simply not to throttle if the procs_running isn't found and let the process scheduler cope --- at least if the system has a fair bit of memory. But I have not been in on the throttling discussions and so apply a large grain of salt :-).

George

#include <sys/types.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h>
#include <stdio.h>
#include <string.h> #include <time.h>

int
run_test(int count)
{
int fd;
FILE* f;
char buf[1024];
char record[1024 * 128]; size_t len;
int running = -1;
int running1 = -1;
char* pos;
char* spos;
int result = -1;

  fd = open("/proc/stat", O_RDONLY);
  if (fd < 0) {
    perror("Can't open /proc/stat????\n");
    exit(1);
  }

  len = read(fd, record, 1024 * 128);
  pos = strstr(record, "procs_running ");
  if (pos == NULL) {
    printf("procs_running not found in block read\n");
    close(fd);
    return -1;
  }

  if (sscanf(pos, "procs_running %u", &running) != 1) {
    printf("sscanf failed on block read '%s'\n", pos);
    return -1;
  }

lseek(fd, 0, SEEK_SET);
f = fdopen(fd, "r");

  while (fgets(buf, 1024, f) != NULL) {
    if ((spos = strstr(buf, "procs_running")) != NULL) {
      if (sscanf(spos, "procs_running %u", &running1) != 1) {
	printf("Found procs_running but sscanf failed\n\t'%s'\n", buf);
	result = -1;
	break;
      }
      result = 1;
      if (running != running1) {
	printf("%d: results unequal %d != %d\n", count, running, running1);
	result = 0;
      }
      break;
    }

}
fclose(f);
close(fd);

return result;
}

main(int argc, char* argv[]) {
int count = 0;
int failures = 0;
int goods = 0;
int uneqs = 0;
struct timespec delay; printf("udef_test start...\n");

  delay.tv_sec = 0;
  delay.tv_nsec = 10000000l;
  while (count < 10000) {
    int i = run_test(count);
    if (i == 0)
      uneqs++;
    else if (i < 0)
      failures++;
    else
      goods++;
    nanosleep(&delay, 0);
    count ++;
  }

printf("failures=%d goods=%d uneqs=%d\n", failures, goods, uneqs); printf("... udev_test end\n");
}

udef_test start...
9: results unequal 2 != 1 132: results unequal 1 != 2 162: results unequal 3 != 1 213: results unequal 2 != 1 240: results unequal 4 != 1 288: results unequal 2 != 1 296: results unequal 2 != 1 316: results unequal 1 != 2 391: results unequal 1 != 2 393: results unequal 2 != 3 394: results unequal 2 != 4 396: results unequal 4 != 3 423: results unequal 1 != 2 495: results unequal 1 != 2 566: results unequal 2 != 1 589: results unequal 1 != 3 593: results unequal 1 != 2 603: results unequal 2 != 1 613: results unequal 1 != 2 625: results unequal 2 != 1 633: results unequal 3 != 1 638: results unequal 2 != 1 650: results unequal 1 != 2 655: results unequal 2 != 1 690: results unequal 3 != 2 694: results unequal 2 != 1 700: results unequal 2 != 7 726: results unequal 2 != 3 737: results unequal 3 != 2 747: results unequal 3 != 2 748: results unequal 2 != 3 754: results unequal 3 != 2 760: results unequal 2 != 3 765: results unequal 3 != 2 770: results unequal 2 != 3 775: results unequal 2 != 3 777: results unequal 4 != 5 780: results unequal 3 != 2 781: results unequal 2 != 3 813: results unequal 1 != 2 818: results unequal 3 != 2 820: results unequal 3 != 2 840: results unequal 3 != 2 844: results unequal 3 != 2 853: results unequal 3 != 2 854: results unequal 5 != 3 872: results unequal 2 != 1 876: results unequal 3 != 2 877: results unequal 2 != 3 880: results unequal 2 != 3 897: results unequal 3 != 2 901: results unequal 3 != 2 904: results unequal 2 != 3 909: results unequal 3 != 2 926: results unequal 2 != 3 930: results unequal 3 != 2 967: results unequal 3 != 2 970: results unequal 2 != 5 979: results unequal 2 != 3 988: results unequal 3 != 2 991: results unequal 2 != 3 997: results unequal 2 != 1 1043: results unequal 2 != 3 1062: results unequal 3 != 2 1063: results unequal 2 != 3 1069: results unequal 2 != 3 1072: results unequal 2 != 3 1081: results unequal 2 != 3 1082: results unequal 2 != 3 1106: results unequal 3 != 2 1111: results unequal 3 != 2 1119: results unequal 2 != 3 1121: results unequal 3 != 2 1124: results unequal 3 != 2 1133: results unequal 3 != 2 1138: results unequal 2 != 3 1155: results unequal 2 != 3 1160: results unequal 3 != 2 1185: results unequal 1 != 2 1188: results unequal 2 != 1 1191: results unequal 3 != 2 1193: results unequal 3 != 2 1197: results unequal 2 != 3 1198: results unequal 2 != 3 1202: results unequal 3 != 2 1204: results unequal 3 != 2 1211: results unequal 2 != 3 1214: results unequal 3 != 2 1228: results unequal 2 != 3 1232: results unequal 3 != 2 1236: results unequal 3 != 2 1241: results unequal 2 != 3 1258: results unequal 2 != 1 1263: results unequal 3 != 2 1268: results unequal 4 != 3 1290: results unequal 2 != 3 1295: results unequal 3 != 2 1299: results unequal 2 != 3 1309: results unequal 2 != 3 1322: results unequal 2 != 3 1339: results unequal 1 != 2 1342: results unequal 5 != 3 1352: results unequal 3 != 2 1356: results unequal 2 != 3 1374: results unequal 3 != 2 1392: results unequal 2 != 3 1428: results unequal 3 != 2 1432: results unequal 3 != 2 1441: results unequal 2 != 3 1445: results unequal 2 != 3 1446: results unequal 2 != 3 1450: results unequal 3 != 2 1467: results unequal 3 != 2 1468: results unequal 2 != 3 1470: results unequal 6 != 3 1488: results unequal 3 != 2 1489: results unequal 2 != 3 1493: results unequal 2 != 3 1498: results unequal 3 != 2 1508: results unequal 3 != 2 1512: results unequal 2 != 3 1516: results unequal 2 != 3 1525: results unequal 3 != 2 1547: results unequal 2 != 5 1549: results unequal 3 != 2 1585: results unequal 3 != 2 1594: results unequal 3 != 2 1597: results unequal 2 != 3 1598: results unequal 3 != 2 1606: results unequal 2 != 3 1613: results unequal 3 != 2 1614: results unequal 3 != 2 1618: results unequal 3 != 2 1647: results unequal 2 != 5 1648: results unequal 4 != 2 1655: results unequal 3 != 2 1660: results unequal 3 != 2 1668: results unequal 2 != 3 1677: results unequal 2 != 3 1686: results unequal 2 != 3 1695: results unequal 3 != 2 1703: results unequal 2 != 1 1730: results unequal 2 != 3 1742: results unequal 3 != 2 1754: results unequal 3 != 2 1758: results unequal 3 != 2 1780: results unequal 2 != 3 1781: results unequal 3 != 2 1807: results unequal 2 != 3 1813: results unequal 2 != 3 1814: results unequal 2 != 3 1819: results unequal 3 != 2 1820: results unequal 3 != 2 1846: results unequal 2 != 3 1870: results unequal 1 != 2 1903: results unequal 2 != 3 1922: results unequal 2 != 3 1923: results unequal 2 != 3 1928: results unequal 3 != 2 1936: results unequal 2 != 3 1958: results unequal 2 != 3 1986: results unequal 2 != 3 1995: results unequal 3 != 2 2001: results unequal 2 != 3 2004: results unequal 3 != 2 2005: results unequal 3 != 2 2026: results unequal 1 != 2 2030: results unequal 3 != 2 2031: results unequal 2 != 3 2032: results unequal 2 != 3 2036: results unequal 3 != 2 2044: results unequal 2 != 3 2045: results unequal 2 != 3 2067: results unequal 2 != 3 2075: results unequal 2 != 3 2079: results unequal 2 != 3 2084: results unequal 2 != 3 2092: results unequal 3 != 2 2116: results unequal 2 != 4 2128: results unequal 2 != 3 2144: results unequal 3 != 2 2148: results unequal 3 != 2 2165: results unequal 2 != 3 2177: results unequal 3 != 2 2191: results unequal 2 != 3 2214: results unequal 3 != 2 2230: results unequal 3 != 2 2274: results unequal 2 != 1 2275: results unequal 2 != 1 2280: results unequal 3 != 2 2281: results unequal 2 != 1 2287: results unequal 2 != 3 2289: results unequal 3 != 2 2311: results unequal 1 != 2 2345: results unequal 2 != 1 2350: results unequal 2 != 1 2359: results unequal 2 != 3 2389: results unequal 2 != 3 2413: results unequal 1 != 2 2416: results unequal 2 != 1 2419: results unequal 2 != 3 2421: results unequal 2 != 3 2431: results unequal 3 != 2 2435: results unequal 2 != 3 2462: results unequal 2 != 1 2539: results unequal 2 != 1 2545: results unequal 2 != 3 2550: results unequal 2 != 3 2577: results unequal 5 != 3 2584: results unequal 2 != 3 2601: results unequal 1 != 2 2615: results unequal 1 != 2 2626: results unequal 2 != 3 2646: results unequal 5 != 4 2664: results unequal 2 != 3 2675: results unequal 2 != 3 2687: results unequal 3 != 2 2690: results unequal 3 != 2 2698: results unequal 3 != 2 2700: results unequal 3 != 2 2701: results unequal 1 != 2 2703: results unequal 2 != 5 2728: results unequal 2 != 1 2736: results unequal 1 != 2 2739: results unequal 2 != 3 2747: results unequal 2 != 1 2751: results unequal 3 != 2 2758: results unequal 3 != 2 2781: results unequal 2 != 3 2799: results unequal 2 != 1 2811: results unequal 2 != 1 2812: results unequal 1 != 2 2817: results unequal 2 != 1 2825: results unequal 3 != 2 2831: results unequal 1 != 2 2833: results unequal 2 != 1 2943: results unequal 2 != 1 2972: results unequal 1 != 2 3012: results unequal 2 != 1 3038: results unequal 2 != 1 3154: results unequal 4 != 1 3158: results unequal 2 != 1 3166: results unequal 6 != 4 3247: results unequal 3 != 2 3273: results unequal 3 != 2 3310: results unequal 3 != 2 3324: results unequal 2 != 4 3336: results unequal 2 != 3 3349: results unequal 3 != 2 3350: results unequal 2 != 3 3367: results unequal 2 != 3 3459: results unequal 2 != 1 3464: results unequal 4 != 3 3466: results unequal 4 != 3 3467: results unequal 4 != 3 3468: results unequal 7 != 4 3471: results unequal 2 != 1 3504: results unequal 3 != 2 3506: results unequal 3 != 2 3541: results unequal 2 != 3 3546: results unequal 3 != 2 3567: results unequal 1 != 2 3579: results unequal 3 != 2 3595: results unequal 3 != 2 3617: results unequal 3 != 2 3629: results unequal 5 != 3 3638: results unequal 2 != 4 3659: results unequal 2 != 3 3684: results unequal 3 != 2 3691: results unequal 3 != 2 3715: results unequal 2 != 1 3742: results unequal 2 != 1 3798: results unequal 2 != 1 3814: results unequal 1 != 2 3818: results unequal 2 != 1 3843: results unequal 2 != 1 4003: results unequal 1 != 2 4016: results unequal 4 != 3 4057: results unequal 1 != 2 4095: results unequal 3 != 1 4117: results unequal 1 != 2 4123: results unequal 1 != 2 4138: results unequal 1 != 2 4170: results unequal 1 != 4 4359: results unequal 2 != 1 4433: results unequal 2 != 1 4570: results unequal 1 != 2 4579: results unequal 1 != 2 4582: results unequal 2 != 1 4584: results unequal 1 != 2 4632: results unequal 2 != 1 4881: results unequal 2 != 1 4882: results unequal 1 != 2 4896: results unequal 2 != 1 4899: results unequal 1 != 2 4923: results unequal 2 != 1 5007: results unequal 1 != 2 5165: results unequal 1 != 2 5227: results unequal 1 != 2 5236: results unequal 2 != 1 5392: results unequal 2 != 3 5393: results unequal 3 != 2 5439: results unequal 4 != 5 5443: results unequal 2 != 3 5450: results unequal 2 != 3 5458: results unequal 1 != 2 5461: results unequal 2 != 3 5463: results unequal 2 != 3 5468: results unequal 2 != 3 5472: results unequal 12 != 11 5489: results unequal 12 != 11 5540: results unequal 7 != 4 5551: results unequal 3 != 2 5552: results unequal 2 != 3 5556: results unequal 2 != 3 5561: results unequal 3 != 4 5562: results unequal 7 != 8 5563: results unequal 15 != 17 5566: results unequal 43 != 42 5567: results unequal 50 != 51 5569: results unequal 62 != 63 5570: results unequal 74 != 75 5572: results unequal 96 != 97 5575: results unequal 122 != 117 5576: results unequal 120 != 122 5577: results unequal 123 != 125 5578: results unequal 120 != 122 5579: results unequal 123 != 124 5580: results unequal 126 != 130 5583: results unequal 134 != 131 5585: results unequal 133 != 132 5588: results unequal 136 != 135 5590: results unequal 135 != 134 5592: results unequal 128 != 127 5593: results unequal 124 != 125 5594: results unequal 129 != 130 5595: results unequal 126 != 125 5597: results unequal 125 != 131 5599: results unequal 126 != 125 5600: results unequal 127 != 126 5601: results unequal 127 != 128 5605: results unequal 123 != 126 5608: results unequal 120 != 121 5611: results unequal 111 != 112 5612: results unequal 112 != 111 5616: results unequal 117 != 118 5618: results unequal 120 != 121 5620: results unequal 111 != 114 5621: results unequal 116 != 115 5622: results unequal 123 != 126 5624: results unequal 145 != 144 5625: results unequal 143 != 145 5626: results unequal 147 != 148 5628: results unequal 154 != 155 5629: results unequal 158 != 159 5630: results unequal 159 != 161 5631: results unequal 162 != 159 5632: results unequal 158 != 160 5633: results unequal 152 != 150 5634: results unequal 150 != 149 5636: results unequal 151 != 150 5637: results unequal 143 != 144 5638: results unequal 153 != 154 5639: results unequal 147 != 143 5640: results unequal 151 != 150 5641: results unequal 149 != 150 5643: results unequal 150 != 148 5644: results unequal 139 != 137 5645: results unequal 144 != 145 5646: results unequal 137 != 139 5647: results unequal 135 != 131 5648: results unequal 140 != 137 5649: results unequal 135 != 133 5650: results unequal 130 != 129 5652: results unequal 141 != 138 5654: results unequal 125 != 129 5655: results unequal 135 != 132 5656: results unequal 132 != 131 5657: results unequal 139 != 136 5658: results unequal 131 != 134 5659: results unequal 126 != 125 5661: results unequal 131 != 130 5662: results unequal 129 != 124 5663: results unequal 117 != 119 5664: results unequal 120 != 119 5666: results unequal 138 != 130 5667: results unequal 127 != 129 5668: results unequal 120 != 127 5669: results unequal 137 != 136 5670: results unequal 133 != 137 5671: results unequal 135 != 144 5672: results unequal 129 != 125 5673: results unequal 126 != 124 5674: results unequal 134 != 133 5676: results unequal 133 != 139 5677: results unequal 131 != 129 5679: results unequal 140 != 143 5680: results unequal 148 != 150 5681: results unequal 143 != 144 5682: results unequal 157 != 159 5683: results unequal 143 != 142 5684: results unequal 161 != 158 5685: results unequal 128 != 144 5686: results unequal 143 != 146 5688: results unequal 141 != 143 5690: results unequal 139 != 137 5691: results unequal 134 != 138 5692: results unequal 146 != 143 5693: results unequal 134 != 135 5694: results unequal 133 != 134 5695: results unequal 134 != 136 5697: results unequal 138 != 139 5698: results unequal 138 != 136 5699: results unequal 141 != 139 5701: results unequal 131 != 129 5702: results unequal 126 != 128 5703: results unequal 129 != 130 5704: results unequal 131 != 130 5705: results unequal 127 != 126 5708: results unequal 126 != 127 5712: results unequal 123 != 122 5713: results unequal 127 != 129 5714: results unequal 132 != 131 5715: results unequal 132 != 131 5717: results unequal 130 != 131 5718: results unequal 133 != 134 5719: results unequal 144 != 143 5720: results unequal 138 != 141 5721: results unequal 128 != 129 5723: results unequal 130 != 131 5724: results unequal 140 != 139 5725: results unequal 135 != 134 5726: results unequal 138 != 140 5727: results unequal 148 != 154 5728: results unequal 147 != 146 5730: results unequal 150 != 151 5731: results unequal 145 != 146 5734: results unequal 134 != 132 5735: results unequal 134 != 133 5736: results unequal 135 != 132 5737: results unequal 137 != 136 5738: results unequal 142 != 143 5740: results unequal 144 != 142 5741: results unequal 143 != 142 5742: results unequal 146 != 149 5743: results unequal 145 != 142 5744: results unequal 150 != 147 5746: results unequal 142 != 140 5748: results unequal 149 != 144 5749: results unequal 140 != 139 5750: results unequal 150 != 145 5751: results unequal 141 != 139 5752: results unequal 149 != 144 5754: results unequal 138 != 137 5755: results unequal 131 != 130 5756: results unequal 130 != 131 5758: results unequal 145 != 144 5761: results unequal 136 != 135 5764: results unequal 139 != 137 5766: results unequal 139 != 138 5767: results unequal 137 != 139 5768: results unequal 140 != 139 5769: results unequal 145 != 147 5770: results unequal 143 != 146 5771: results unequal 153 != 155 5772: results unequal 148 != 146 5773: results unequal 128 != 126 5774: results unequal 160 != 162 5775: results unequal 143 != 142 5776: results unequal 146 != 165 5777: results unequal 140 != 144 5778: results unequal 133 != 140 5780: results unequal 146 != 145 5782: results unequal 145 != 144 5783: results unequal 140 != 141 5784: results unequal 155 != 158 5785: results unequal 156 != 154 5786: results unequal 134 != 136 5787: results unequal 161 != 158 5788: results unequal 149 != 150 5789: results unequal 145 != 142 5790: results unequal 140 != 141 5792: results unequal 142 != 140 5794: results unequal 136 != 135 5795: results unequal 136 != 137 5796: results unequal 139 != 140 5798: results unequal 141 != 145 5801: results unequal 55 != 46 5802: results unequal 136 != 137 5803: results unequal 85 != 82 5804: results unequal 137 != 136 5805: results unequal 155 != 156 5806: results unequal 147 != 144 5807: results unequal 146 != 144 5809: results unequal 143 != 144 5810: results unequal 143 != 142 5811: results unequal 137 != 138 5812: results unequal 149 != 147 5813: results unequal 139 != 140 5814: results unequal 138 != 136 5815: results unequal 138 != 140 5816: results unequal 136 != 137 5817: results unequal 138 != 139 5818: results unequal 135 != 136 5819: results unequal 143 != 141 5822: results unequal 139 != 140 5823: results unequal 151 != 148 5824: results unequal 139 != 138 5825: results unequal 162 != 154 5826: results unequal 149 != 148 5827: results unequal 143 != 144 5828: results unequal 148 != 147 5829: results unequal 141 != 142 5832: results unequal 144 != 142 5833: results unequal 140 != 141 5835: results unequal 146 != 144 5837: results unequal 146 != 145 5838: results unequal 140 != 138 5840: results unequal 140 != 139 5841: results unequal 121 != 120 5842: results unequal 129 != 132 5843: results unequal 135 != 136 5844: results unequal 140 != 142 5845: results unequal 144 != 146 5846: results unequal 142 != 141 5847: results unequal 138 != 135 5848: results unequal 144 != 143 5850: results unequal 147 != 148 5852: results unequal 145 != 159 5853: results unequal 154 != 156 5854: results unequal 148 != 145 5855: results unequal 136 != 135 5856: results unequal 154 != 150 5859: results unequal 146 != 145 5860: results unequal 155 != 141 5861: results unequal 138 != 136 5862: results unequal 141 != 140 5864: results unequal 144 != 143 5867: results unequal 137 != 138 5868: results unequal 139 != 137 5869: results unequal 134 != 136 5870: results unequal 135 != 136 5871: results unequal 131 != 132 5872: results unequal 137 != 136 5873: results unequal 140 != 138 5875: results unequal 133 != 135 5876: results unequal 146 != 147 5878: results unequal 142 != 145 5879: results unequal 153 != 150 5880: results unequal 143 != 142 5881: results unequal 143 != 144 5882: results unequal 136 != 134 5883: results unequal 133 != 131 5884: results unequal 148 != 146 5886: results unequal 135 != 134 5887: results unequal 147 != 175 5888: results unequal 166 != 168 5889: results unequal 147 != 146 5890: results unequal 141 != 143 5891: results unequal 147 != 146 5892: results unequal 146 != 143 5893: results unequal 141 != 142 5894: results unequal 137 != 138 5895: results unequal 137 != 136 5896: results unequal 148 != 147 5897: results unequal 152 != 151 5899: results unequal 142 != 141 5900: results unequal 137 != 139 5902: results unequal 134 != 133 5903: results unequal 138 != 137 5904: results unequal 150 != 149 5905: results unequal 164 != 161 5907: results unequal 138 != 136 5908: results unequal 148 != 149 5909: results unequal 146 != 148 5910: results unequal 156 != 154 5911: results unequal 143 != 142 5913: results unequal 141 != 138 5914: results unequal 152 != 149 5915: results unequal 148 != 145 5916: results unequal 146 != 148 5917: results unequal 152 != 151 5918: results unequal 149 != 148 5919: results unequal 151 != 150 5920: results unequal 145 != 143 5921: results unequal 149 != 147 5922: results unequal 150 != 149 5924: results unequal 145 != 144 5926: results unequal 144 != 145 5927: results unequal 139 != 137 5933: results unequal 146 != 145 5934: results unequal 150 != 148 5935: results unequal 142 != 143 5936: results unequal 146 != 147 5937: results unequal 145 != 147 5938: results unequal 138 != 139 5939: results unequal 141 != 140 5940: results unequal 147 != 148 5941: results unequal 176 != 167 5942: results unequal 143 != 144 5944: results unequal 152 != 150 5945: results unequal 136 != 135 5946: results unequal 147 != 144 5947: results unequal 141 != 140 5948: results unequal 145 != 143 5949: results unequal 143 != 144 5950: results unequal 141 != 138 5951: results unequal 143 != 139 5952: results unequal 144 != 143 5953: results unequal 129 != 128 5955: results unequal 147 != 146 5956: results unequal 151 != 150 5958: results unequal 148 != 146 5959: results unequal 145 != 144 5961: results unequal 158 != 159 5962: results unequal 163 != 162 5965: results unequal 146 != 145 5966: results unequal 140 != 143 5969: results unequal 156 != 154 5970: results unequal 146 != 143 5971: results unequal 145 != 143 5974: results unequal 140 != 139 5975: results unequal 144 != 143 5976: results unequal 148 != 142 5977: results unequal 139 != 138 5978: results unequal 146 != 148 5979: results unequal 159 != 150 5980: results unequal 144 != 143 5982: results unequal 161 != 156 5983: results unequal 140 != 141 5984: results unequal 141 != 142 5989: results unequal 164 != 159 5990: results unequal 146 != 154 5992: results unequal 141 != 144 5994: results unequal 150 != 149 5996: results unequal 132 != 135 5997: results unequal 137 != 139 5999: results unequal 139 != 138 6000: results unequal 155 != 153 6003: results unequal 153 != 154 6005: results unequal 134 != 135 6006: results unequal 143 != 145 6007: results unequal 133 != 135 6008: results unequal 142 != 141 6009: results unequal 129 != 128 6011: results unequal 131 != 130 6012: results unequal 134 != 132 6013: results unequal 132 != 133 6014: results unequal 138 != 139 6015: results unequal 145 != 143 6016: results unequal 144 != 142 6019: results unequal 155 != 149 6020: results unequal 141 != 142 6022: results unequal 144 != 143 6023: results unequal 146 != 148 6024: results unequal 133 != 134 6025: results unequal 146 != 148 6026: results unequal 144 != 142 6027: results unequal 137 != 136 6028: results unequal 136 != 134 6029: results unequal 130 != 129 6030: results unequal 153 != 141 6031: results unequal 141 != 140 6032: results unequal 132 != 133 6033: results unequal 130 != 134 6034: results unequal 135 != 136 6035: results unequal 137 != 136 6037: results unequal 136 != 138 6038: results unequal 133 != 134 6039: results unequal 167 != 165 6041: results unequal 151 != 144 6042: results unequal 141 != 142 6044: results unequal 143 != 170 6045: results unequal 133 != 135 6047: results unequal 141 != 140 6048: results unequal 149 != 147 6049: results unequal 139 != 165 6051: results unequal 137 != 136 6052: results unequal 145 != 143 6053: results unequal 152 != 149 6054: results unequal 142 != 141 6055: results unequal 143 != 142 6057: results unequal 163 != 153 6058: results unequal 143 != 141 6059: results unequal 138 != 167 6060: results unequal 151 != 149 6061: results unequal 137 != 138 6063: results unequal 156 != 152 6064: results unequal 147 != 148 6065: results unequal 137 != 138 6069: results unequal 144 != 147 6072: results unequal 137 != 138 6073: results unequal 134 != 133 6074: results unequal 132 != 133 6075: results unequal 135 != 133 6077: results unequal 138 != 137 6078: results unequal 141 != 139 6079: results unequal 142 != 141 6081: results unequal 143 != 140 6082: results unequal 146 != 143 6084: results unequal 155 != 152 6085: results unequal 141 != 140 6086: results unequal 132 != 133 6087: results unequal 137 != 139 6088: results unequal 139 != 137 6089: results unequal 141 != 142 6091: results unequal 142 != 145 6092: results unequal 147 != 145 6093: results unequal 134 != 135 6094: results unequal 138 != 140 6097: results unequal 136 != 138 6098: results unequal 143 != 142 6099: results unequal 136 != 137 6101: results unequal 151 != 145 6102: results unequal 158 != 157 6104: results unequal 125 != 128 6105: results unequal 133 != 134 6106: results unequal 146 != 166 6107: results unequal 145 != 146 6108: results unequal 163 != 157 6109: results unequal 160 != 158 6110: results unequal 142 != 141 6111: results unequal 144 != 141 6112: results unequal 131 != 132 6113: results unequal 151 != 147 6114: results unequal 162 != 157 6115: results unequal 144 != 143 6117: results unequal 168 != 158 6119: results unequal 147 != 144 6120: results unequal 146 != 147 6121: results unequal 122 != 123 6122: results unequal 125 != 126 6123: results unequal 134 != 132 6124: results unequal 131 != 130 6125: results unequal 148 != 143 6126: results unequal 158 != 159 6127: results unequal 145 != 144 6128: results unequal 145 != 146 6129: results unequal 155 != 151 6130: results unequal 150 != 149 6131: results unequal 144 != 142 6133: results unequal 146 != 147 6134: results unequal 158 != 168 6135: results unequal 147 != 146 6136: results unequal 154 != 156 6137: results unequal 141 != 142 6139: results unequal 142 != 143 6140: results unequal 149 != 146 6142: results unequal 139 != 141 6144: results unequal 165 != 159 6148: results unequal 156 != 153 6151: results unequal 141 != 142 6152: results unequal 150 != 152 6153: results unequal 161 != 159 6154: results unequal 149 != 151 6155: results unequal 170 != 167 6158: results unequal 130 != 129 6159: results unequal 136 != 138 6160: results unequal 136 != 135 6161: results unequal 146 != 145 6162: results unequal 156 != 161 6163: results unequal 137 != 138 6165: results unequal 144 != 146 6166: results unequal 146 != 145 6167: results unequal 145 != 147 6168: results unequal 142 != 143 6171: results unequal 147 != 149 6172: results unequal 146 != 144 6173: results unequal 148 != 147 6174: results unequal 141 != 142 6175: results unequal 137 != 138 6176: results unequal 142 != 144 6177: results unequal 152 != 149 6178: results unequal 143 != 144 6180: results unequal 145 != 142 6181: results unequal 142 != 143 6182: results unequal 169 != 166 6186: results unequal 139 != 138 6187: results unequal 135 != 136 6188: results unequal 135 != 134 6189: results unequal 138 != 139 6190: results unequal 135 != 137 6191: results unequal 137 != 136 6192: results unequal 136 != 137 6194: results unequal 136 != 137 6196: results unequal 158 != 156 6197: results unequal 151 != 149 6198: results unequal 155 != 151 6199: results unequal 149 != 148 6200: results unequal 136 != 140 6201: results unequal 164 != 160 6204: results unequal 134 != 132 6205: results unequal 158 != 152 6206: results unequal 147 != 149 6207: results unequal 141 != 140 6208: results unequal 138 != 134 6209: results unequal 130 != 129 6210: results unequal 170 != 165 6212: results unequal 151 != 153 6213: results unequal 150 != 145 6214: results unequal 144 != 139 6215: results unequal 171 != 167 6217: results unequal 142 != 141 6218: results unequal 138 != 140 6219: results unequal 141 != 142 6222: results unequal 138 != 159 6223: results unequal 139 != 140 6225: results unequal 139 != 140 6226: results unequal 142 != 139 6227: results unequal 145 != 146 6228: results unequal 143 != 141 6229: results unequal 157 != 155 6230: results unequal 146 != 144 6232: results unequal 143 != 142 6234: results unequal 142 != 141 6235: results unequal 138 != 139 6236: results unequal 139 != 138 6237: results unequal 136 != 135 6238: results unequal 139 != 138 6239: results unequal 143 != 142 6241: results unequal 139 != 140 6242: results unequal 158 != 154 6243: results unequal 150 != 145 6247: results unequal 140 != 142 6248: results unequal 138 != 137 6249: results unequal 138 != 137 6250: results unequal 139 != 140 6251: results unequal 139 != 140 6253: results unequal 160 != 159 6254: results unequal 166 != 163 6255: results unequal 150 != 153 6256: results unequal 151 != 150 6257: results unequal 143 != 144 6258: results unequal 143 != 141 6259: results unequal 149 != 151 6260: results unequal 141 != 139 6261: results unequal 142 != 139 6263: results unequal 140 != 139 6265: results unequal 138 != 140 6266: results unequal 129 != 130 6269: results unequal 143 != 144 6270: results unequal 149 != 146 6271: results unequal 157 != 154 6272: results unequal 140 != 141 6273: results unequal 139 != 140 6274: results unequal 143 != 146 6275: results unequal 151 != 150 6276: results unequal 161 != 165 6277: results unequal 149 != 145 6278: results unequal 145 != 146 6279: results unequal 148 != 147 6280: results unequal 151 != 152 6281: results unequal 152 != 150 6282: results unequal 154 != 155 6283: results unequal 148 != 150 6288: results unequal 164 != 166 6289: results unequal 145 != 142 6290: results unequal 146 != 143 6291: results unequal 141 != 140 6293: results unequal 159 != 163 6294: results unequal 146 != 147 6295: results unequal 140 != 142 6299: results unequal 139 != 136 6300: results unequal 154 != 155 6301: results unequal 139 != 138 6303: results unequal 134 != 136 6304: results unequal 147 != 145 6306: results unequal 150 != 148 6307: results unequal 144 != 145 6308: results unequal 139 != 143 6311: results unequal 136 != 138 6312: results unequal 149 != 146 6313: results unequal 150 != 149 6314: results unequal 146 != 145 6315: results unequal 171 != 161 6316: results unequal 139 != 141 6317: results unequal 146 != 145 6318: results unequal 149 != 147 6319: results unequal 141 != 140 6320: results unequal 140 != 138 6321: results unequal 139 != 140 6322: results unequal 157 != 151 6323: results unequal 147 != 145 6324: results unequal 143 != 141 6325: results unequal 143 != 142 6326: results unequal 171 != 173 6327: results unequal 156 != 157 6330: results unequal 138 != 139 6334: results unequal 164 != 160 6338: results unequal 136 != 134 6339: results unequal 146 != 148 6340: results unequal 135 != 136 6342: results unequal 141 != 140 6343: results unequal 148 != 145 6345: results unequal 154 != 144 6346: results unequal 132 != 131 6348: results unequal 153 != 150 6349: results unequal 146 != 145 6351: results unequal 160 != 153 6352: results unequal 153 != 149 6353: results unequal 144 != 145 6354: results unequal 145 != 144 6357: results unequal 133 != 135 6361: results unequal 137 != 138 6362: results unequal 139 != 141 6363: results unequal 140 != 141 6364: results unequal 139 != 137 6365: results unequal 163 != 152 6366: results unequal 138 != 137 6369: results unequal 153 != 152 6370: results unequal 137 != 138 6371: results unequal 152 != 149 6372: results unequal 157 != 156 6373: results unequal 145 != 143 6375: results unequal 143 != 142 6376: results unequal 148 != 150 6377: results unequal 144 != 141 6378: results unequal 146 != 148 6379: results unequal 141 != 139 6380: results unequal 142 != 139 6381: results unequal 141 != 139 6383: results unequal 140 != 136 6384: results unequal 133 != 134 6385: results unequal 138 != 139 6386: results unequal 145 != 144 6388: results unequal 153 != 148 6389: results unequal 141 != 142 6390: results unequal 139 != 138 6391: results unequal 147 != 146 6392: results unequal 153 != 150 6393: results unequal 136 != 150 6394: results unequal 150 != 148 6396: results unequal 142 != 161 6397: results unequal 140 != 139 6399: results unequal 148 != 150 6400: results unequal 143 != 145 6402: results unequal 143 != 142 6404: results unequal 151 != 150 6405: results unequal 140 != 141 6406: results unequal 141 != 140 6407: results unequal 137 != 139 6408: results unequal 160 != 161 6409: results unequal 143 != 141 6410: results unequal 138 != 162 6412: results unequal 142 != 141 6414: results unequal 140 != 142 6415: results unequal 159 != 156 6416: results unequal 153 != 150 6417: results unequal 139 != 141 6418: results unequal 140 != 141 6419: results unequal 151 != 149 6420: results unequal 142 != 143 6421: results unequal 134 != 136 6422: results unequal 137 != 140 6423: results unequal 160 != 150 6424: results unequal 153 != 154 6425: results unequal 156 != 142 6426: results unequal 142 != 140 6427: results unequal 137 != 138 6428: results unequal 134 != 131 6429: results unequal 135 != 149 6430: results unequal 134 != 132 6431: results unequal 137 != 139 6432: results unequal 134 != 135 6434: results unequal 146 != 148 6435: results unequal 154 != 157 6436: results unequal 141 != 142 6437: results unequal 136 != 135 6438: results unequal 136 != 139 6440: results unequal 145 != 144 6442: results unequal 132 != 133 6443: results unequal 134 != 133 6444: results unequal 134 != 136 6446: results unequal 139 != 136 6447: results unequal 138 != 140 6448: results unequal 134 != 132 6449: results unequal 138 != 137 6450: results unequal 168 != 166 6451: results unequal 138 != 140 6452: results unequal 143 != 172 6453: results unequal 159 != 156 6455: results unequal 137 != 139 6456: results unequal 162 != 160 6457: results unequal 141 != 142 6458: results unequal 143 != 144 6461: results unequal 143 != 144 6462: results unequal 148 != 159 6463: results unequal 152 != 151 6464: results unequal 145 != 144 6465: results unequal 142 != 143 6468: results unequal 140 != 139 6470: results unequal 142 != 141 6472: results unequal 146 != 143 6473: results unequal 137 != 134 6474: results unequal 136 != 138 6477: results unequal 141 != 140 6478: results unequal 147 != 150 6479: results unequal 146 != 142 6480: results unequal 145 != 146 6481: results unequal 146 != 145 6482: results unequal 168 != 171 6483: results unequal 150 != 153 6484: results unequal 148 != 146 6485: results unequal 147 != 148 6486: results unequal 139 != 140 6487: results unequal 141 != 143 6488: results unequal 143 != 142 6489: results unequal 140 != 142 6490: results unequal 142 != 143 6491: results unequal 148 != 147 6493: results unequal 148 != 143 6495: results unequal 143 != 145 6496: results unequal 147 != 143 6497: results unequal 153 != 152 6498: results unequal 149 != 148 6500: results unequal 147 != 143 6502: results unequal 160 != 161 6503: results unequal 154 != 155 6504: results unequal 155 != 154 6505: results unequal 147 != 142 6509: results unequal 149 != 146 6512: results unequal 141 != 139 6513: results unequal 141 != 142 6514: results unequal 140 != 143 6516: results unequal 129 != 131 6518: results unequal 132 != 134 6519: results unequal 126 != 124 6522: results unequal 118 != 119 6523: results unequal 131 != 133 6524: results unequal 126 != 124 6527: results unequal 127 != 126 6528: results unequal 125 != 124 6530: results unequal 124 != 122 6531: results unequal 136 != 129 6533: results unequal 136 != 135 6534: results unequal 138 != 137 6535: results unequal 138 != 139 6536: results unequal 127 != 130 6537: results unequal 148 != 143 6539: results unequal 140 != 139 6543: results unequal 142 != 143 6544: results unequal 135 != 134 6546: results unequal 139 != 140 6547: results unequal 152 != 150 6549: results unequal 148 != 146 6550: results unequal 148 != 145 6552: results unequal 141 != 142 6553: results unequal 141 != 142 6554: results unequal 156 != 154 6555: results unequal 142 != 141 6556: results unequal 156 != 155 6557: results unequal 147 != 143 6559: results unequal 146 != 145 6560: results unequal 136 != 138 6562: results unequal 140 != 139 6564: results unequal 139 != 140 6566: results unequal 134 != 135 6568: results unequal 152 != 150 6569: results unequal 134 != 139 6570: results unequal 136 != 137 6575: results unequal 131 != 133 6576: results unequal 131 != 129 6578: results unequal 130 != 127 6579: results unequal 136 != 133 6580: results unequal 129 != 127 6581: results unequal 125 != 126 6586: results unequal 120 != 122 6588: results unequal 129 != 130 6590: results unequal 130 != 133 6592: results unequal 127 != 126 6593: results unequal 127 != 128 6594: results unequal 125 != 136 6595: results unequal 148 != 145 6596: results unequal 132 != 136 6597: results unequal 129 != 127 6598: results unequal 138 != 139 6599: results unequal 144 != 140 6600: results unequal 136 != 135 6603: results unequal 137 != 140 6604: results unequal 144 != 145 6605: results unequal 153 != 146 6606: results unequal 117 != 119 6607: results unequal 129 != 131 6608: results unequal 134 != 135 6609: results unequal 150 != 149 6611: results unequal 154 != 149 6612: results unequal 150 != 149 6613: results unequal 153 != 152 6614: results unequal 144 != 143 6615: results unequal 152 != 150 6616: results unequal 149 != 151 6617: results unequal 149 != 147 6618: results unequal 143 != 165 6619: results unequal 148 != 143 6620: results unequal 151 != 152 6622: results unequal 148 != 147 6623: results unequal 146 != 148 6624: results unequal 138 != 134 6625: results unequal 134 != 135 6626: results unequal 139 != 140 6628: results unequal 142 != 143 6630: results unequal 143 != 142 6631: results unequal 144 != 145 6632: results unequal 143 != 142 6633: results unequal 140 != 141 6634: results unequal 142 != 140 6635: results unequal 140 != 138 6636: results unequal 134 != 132 6638: results unequal 143 != 142 6639: results unequal 133 != 135 6640: results unequal 141 != 142 6641: results unequal 137 != 139 6643: results unequal 140 != 139 6644: results unequal 142 != 141 6645: results unequal 141 != 140 6646: results unequal 153 != 155 6647: results unequal 169 != 159 6650: results unequal 141 != 140 6651: results unequal 138 != 137 6653: results unequal 175 != 165 6654: results unequal 158 != 156 6655: results unequal 147 != 150 6656: results unequal 159 != 158 6657: results unequal 151 != 150 6658: results unequal 147 != 143 6659: results unequal 141 != 144 6660: results unequal 146 != 147 6661: results unequal 146 != 147 6662: results unequal 142 != 141 6663: results unequal 139 != 140 6665: results unequal 155 != 154 6666: results unequal 147 != 145 6667: results unequal 137 != 135 6668: results unequal 135 != 137 6669: results unequal 141 != 142 6670: results unequal 176 != 167 6671: results unequal 139 != 138 6673: results unequal 142 != 144 6674: results unequal 140 != 139 6676: results unequal 148 != 146 6678: results unequal 144 != 146 6679: results unequal 151 != 148 6680: results unequal 136 != 144 6681: results unequal 146 != 147 6682: results unequal 144 != 145 6683: results unequal 142 != 141 6685: results unequal 138 != 136 6686: results unequal 134 != 136 6688: results unequal 142 != 144 6689: results unequal 151 != 149 6690: results unequal 147 != 143 6691: results unequal 143 != 146 6694: results unequal 136 != 135 6695: results unequal 136 != 138 6696: results unequal 132 != 133 6699: results unequal 119 != 118 6700: results unequal 124 != 126 6701: results unequal 142 != 139 6702: results unequal 127 != 126 6703: results unequal 161 != 157 6705: results unequal 127 != 128 6708: results unequal 131 != 132 6711: results unequal 134 != 135 6712: results unequal 140 != 138 6713: results unequal 133 != 135 6714: results unequal 152 != 150 6716: results unequal 141 != 140 6717: results unequal 137 != 135 6718: results unequal 154 != 153 6719: results unequal 136 != 138 6721: results unequal 141 != 143 6722: results unequal 136 != 135 6724: results unequal 135 != 136 6725: results unequal 135 != 136 6727: results unequal 141 != 142 6728: results unequal 138 != 133 6729: results unequal 149 != 148 6731: results unequal 140 != 141 6732: results unequal 154 != 153 6734: results unequal 143 != 141 6735: results unequal 136 != 133 6736: results unequal 138 != 139 6737: results unequal 140 != 138 6739: results unequal 136 != 137 6740: results unequal 141 != 138 6742: results unequal 133 != 132 6743: results unequal 134 != 133 6744: results unequal 142 != 141 6745: results unequal 137 != 135 6746: results unequal 142 != 138 6747: results unequal 140 != 139 6750: results unequal 154 != 151 6751: results unequal 136 != 135 6753: results unequal 128 != 129 6754: results unequal 133 != 132 6756: results unequal 133 != 132 6757: results unequal 143 != 145 6758: results unequal 151 != 152 6759: results unequal 148 != 145 6761: results unequal 147 != 148 6762: results unequal 139 != 141 6763: results unequal 155 != 153 6764: results unequal 155 != 156 6765: results unequal 171 != 170 6766: results unequal 142 != 166 6767: results unequal 143 != 142 6768: results unequal 135 != 134 6770: results unequal 136 != 137 6772: results unequal 136 != 138 6773: results unequal 139 != 140 6775: results unequal 144 != 145 6776: results unequal 133 != 130 6778: results unequal 134 != 133 6779: results unequal 151 != 149 6780: results unequal 138 != 137 6781: results unequal 142 != 143 6782: results unequal 158 != 157 6784: results unequal 141 != 143 6787: results unequal 140 != 139 6789: results unequal 143 != 144 6790: results unequal 140 != 141 6791: results unequal 138 != 139 6794: results unequal 133 != 132 6796: results unequal 149 != 147 6797: results unequal 166 != 161 6798: results unequal 136 != 135 6799: results unequal 155 != 151 6800: results unequal 149 != 159 6802: results unequal 136 != 131 6803: results unequal 151 != 150 6805: results unequal 140 != 138 6806: results unequal 140 != 139 6807: results unequal 135 != 136 6808: results unequal 140 != 139 6809: results unequal 140 != 137 6810: results unequal 137 != 138 6811: results unequal 136 != 137 6812: results unequal 137 != 138 6813: results unequal 136 != 135 6814: results unequal 141 != 143 6815: results unequal 137 != 136 6816: results unequal 152 != 149 6817: results unequal 146 != 145 6819: results unequal 135 != 134 6822: results unequal 132 != 131 6827: results unequal 141 != 139 6828: results unequal 132 != 133 6829: results unequal 146 != 145 6830: results unequal 137 != 152 6831: results unequal 137 != 153 6832: results unequal 138 != 137 6834: results unequal 135 != 134 6836: results unequal 137 != 135 6837: results unequal 135 != 133 6838: results unequal 134 != 135 6839: results unequal 154 != 144 6841: results unequal 140 != 136 6842: results unequal 142 != 143 6843: results unequal 154 != 150 6844: results unequal 140 != 139 6845: results unequal 135 != 136 6847: results unequal 142 != 141 6851: results unequal 135 != 134 6852: results unequal 136 != 137 6853: results unequal 149 != 161 6854: results unequal 137 != 136 6856: results unequal 137 != 138 6857: results unequal 139 != 140 6858: results unequal 142 != 143 6859: results unequal 175 != 163 6860: results unequal 142 != 141 6861: results unequal 138 != 137 6863: results unequal 140 != 139 6864: results unequal 132 != 131 6866: results unequal 135 != 137 6867: results unequal 136 != 167 6868: results unequal 141 != 139 6869: results unequal 136 != 137 6870: results unequal 137 != 138 6872: results unequal 138 != 139 6873: results unequal 130 != 127 6875: results unequal 136 != 135 6876: results unequal 154 != 153 6877: results unequal 145 != 142 6878: results unequal 141 != 139 6879: results unequal 134 != 133 6880: results unequal 136 != 135 6881: results unequal 145 != 142 6882: results unequal 138 != 137 6884: results unequal 137 != 136 6885: results unequal 152 != 149 6886: results unequal 144 != 143 6888: results unequal 148 != 151 6889: results unequal 148 != 147 6890: results unequal 139 != 142 6891: results unequal 143 != 142 6892: results unequal 154 != 155 6893: results unequal 144 != 143 6894: results unequal 153 != 145 6895: results unequal 147 != 150 6897: results unequal 158 != 153 6898: results unequal 148 != 145 6899: results unequal 144 != 145 6900: results unequal 145 != 143 6902: results unequal 135 != 138 6903: results unequal 145 != 143 6904: results unequal 138 != 137 6905: results unequal 151 != 152 6906: results unequal 153 != 152 6907: results unequal 139 != 138 6911: results unequal 137 != 138 6912: results unequal 136 != 135 6913: results unequal 136 != 137 6916: results unequal 155 != 152 6917: results unequal 135 != 132 6918: results unequal 137 != 135 6920: results unequal 154 != 152 6921: results unequal 150 != 144 6922: results unequal 144 != 142 6923: results unequal 147 != 144 6924: results unequal 143 != 144 6925: results unequal 139 != 138 6926: results unequal 130 != 138 6927: results unequal 143 != 141 6928: results unequal 140 != 142 6930: results unequal 138 != 137 6931: results unequal 162 != 157 6936: results unequal 144 != 143 6938: results unequal 147 != 145 6939: results unequal 140 != 139 6940: results unequal 141 != 140 6942: results unequal 138 != 136 6943: results unequal 138 != 140 6945: results unequal 139 != 140 6946: results unequal 141 != 139 6947: results unequal 140 != 141 6948: results unequal 138 != 140 6949: results unequal 138 != 137 6950: results unequal 137 != 136 6951: results unequal 138 != 137 6952: results unequal 140 != 144 6953: results unequal 142 != 143 6954: results unequal 138 != 139 6955: results unequal 147 != 144 6956: results unequal 144 != 143 6957: results unequal 140 != 139 6958: results unequal 148 != 147 6959: results unequal 131 != 130 6960: results unequal 146 != 145 6961: results unequal 135 != 138 6962: results unequal 143 != 142 6963: results unequal 133 != 132 6964: results unequal 129 != 130 6965: results unequal 136 != 137 6966: results unequal 153 != 145 6969: results unequal 149 != 148 6970: results unequal 133 != 134 6972: results unequal 141 != 140 6973: results unequal 134 != 133 6974: results unequal 131 != 129 6975: results unequal 149 != 154 6976: results unequal 134 != 152 6977: results unequal 137 != 136 6978: results unequal 148 != 146 6980: results unequal 134 != 133 6981: results unequal 149 != 146 6982: results unequal 149 != 153 6984: results unequal 151 != 148 6985: results unequal 149 != 147 6986: results unequal 140 != 138 6987: results unequal 142 != 140 6988: results unequal 139 != 140 6989: results unequal 148 != 143 6991: results unequal 144 != 143 6992: results unequal 138 != 139 6993: results unequal 142 != 143 6994: results unequal 144 != 142 6995: results unequal 147 != 167 6996: results unequal 139 != 140 6997: results unequal 136 != 137 6998: results unequal 150 != 146 7000: results unequal 142 != 141 7002: results unequal 152 != 149 7003: results unequal 142 != 143 7004: results unequal 151 != 148 7005: results unequal 151 != 149 7006: results unequal 143 != 141 7008: results unequal 151 != 150 7009: results unequal 148 != 149 7010: results unequal 135 != 137 7012: results unequal 147 != 146 7013: results unequal 143 != 144 7014: results unequal 146 != 147 7015: results unequal 152 != 150 7017: results unequal 147 != 144 7018: results unequal 143 != 144 7020: results unequal 140 != 143 7021: results unequal 144 != 142 7022: results unequal 164 != 160 7023: results unequal 145 != 148 7024: results unequal 145 != 142 7025: results unequal 138 != 135 7027: results unequal 130 != 128 7028: results unequal 127 != 129 7029: results unequal 130 != 127 7030: results unequal 132 != 135 7032: results unequal 129 != 128 7033: results unequal 140 != 142 7034: results unequal 133 != 134 7036: results unequal 138 != 136 7038: results unequal 136 != 137 7039: results unequal 142 != 141 7040: results unequal 143 != 140 7041: results unequal 135 != 137 7042: results unequal 139 != 141 7043: results unequal 146 != 147 7044: results unequal 144 != 145 7045: results unequal 160 != 157 7047: results unequal 155 != 154 7048: results unequal 170 != 157 7049: results unequal 134 != 132 7050: results unequal 131 != 133 7051: results unequal 136 != 137 7052: results unequal 151 != 150 7053: results unequal 136 != 131 7054: results unequal 138 != 140 7055: results unequal 131 != 127 7056: results unequal 128 != 131 7057: results unequal 140 != 133 7061: results unequal 130 != 128 7062: results unequal 124 != 123 7064: results unequal 125 != 123 7065: results unequal 119 != 116 7069: results unequal 112 != 108 7070: results unequal 116 != 111 7072: results unequal 107 != 106 7073: results unequal 107 != 108 7075: results unequal 109 != 111 7076: results unequal 108 != 106 7077: results unequal 109 != 108 7078: results unequal 109 != 111 7079: results unequal 112 != 110 7080: results unequal 111 != 115 7081: results unequal 119 != 121 7083: results unequal 123 != 120 7084: results unequal 127 != 125 7086: results unequal 133 != 132 7087: results unequal 140 != 139 7088: results unequal 136 != 139 7089: results unequal 149 != 148 7093: results unequal 149 != 146 7094: results unequal 142 != 143 7095: results unequal 154 != 157 7096: results unequal 145 != 144 7097: results unequal 151 != 152 7098: results unequal 149 != 148 7100: results unequal 149 != 146 7102: results unequal 144 != 148 7103: results unequal 154 != 153 7104: results unequal 141 != 142 7105: results unequal 152 != 150 7109: results unequal 145 != 144 7110: results unequal 155 != 152 7111: results unequal 143 != 142 7113: results unequal 144 != 139 7114: results unequal 136 != 137 7115: results unequal 139 != 137 7116: results unequal 144 != 146 7117: results unequal 150 != 147 7118: results unequal 149 != 148 7120: results unequal 141 != 147 7121: results unequal 150 != 146 7122: results unequal 142 != 139 7123: results unequal 146 != 144 7124: results unequal 148 != 147 7125: results unequal 143 != 142 7126: results unequal 145 != 143 7127: results unequal 143 != 144 7128: results unequal 142 != 140 7129: results unequal 144 != 145 7130: results unequal 147 != 149 7131: results unequal 145 != 144 7132: results unequal 147 != 148 7133: results unequal 151 != 150 7134: results unequal 143 != 144 7135: results unequal 148 != 149 7136: results unequal 142 != 144 7137: results unequal 158 != 157 7138: results unequal 151 != 150 7140: results unequal 143 != 142 7141: results unequal 141 != 143 7142: results unequal 144 != 145 7143: results unequal 151 != 154 7145: results unequal 156 != 164 7147: results unequal 159 != 158 7149: results unequal 153 != 168 7150: results unequal 151 != 152 7151: results unequal 154 != 151 7152: results unequal 149 != 150 7153: results unequal 158 != 157 7154: results unequal 144 != 149 7155: results unequal 146 != 148 7156: results unequal 146 != 147 7158: results unequal 145 != 157 7159: results unequal 151 != 148 7161: results unequal 150 != 148 7162: results unequal 141 != 144 7163: results unequal 140 != 139 7165: results unequal 127 != 126 7166: results unequal 129 != 130 7167: results unequal 118 != 119 7168: results unequal 125 != 122 7169: results unequal 121 != 125 7170: results unequal 125 != 128 7171: results unequal 128 != 126 7172: results unequal 127 != 126 7173: results unequal 121 != 120 7174: results unequal 122 != 123 7176: results unequal 114 != 117 7177: results unequal 114 != 115 7178: results unequal 116 != 118 7179: results unequal 116 != 117 7181: results unequal 113 != 117 7183: results unequal 126 != 124 7186: results unequal 120 != 121 7187: results unequal 134 != 131 7188: results unequal 124 != 121 7189: results unequal 125 != 120 7190: results unequal 118 != 119 7192: results unequal 112 != 116 7193: results unequal 112 != 113 7194: results unequal 121 != 120 7197: results unequal 122 != 121 7198: results unequal 124 != 123 7199: results unequal 128 != 130 7200: results unequal 119 != 118 7202: results unequal 124 != 122 7203: results unequal 120 != 121 7204: results unequal 119 != 118 7205: results unequal 120 != 121 7206: results unequal 121 != 122 7208: results unequal 128 != 122 7209: results unequal 118 != 124 7210: results unequal 122 != 121 7211: results unequal 121 != 120 7212: results unequal 118 != 117 7213: results unequal 118 != 119 7214: results unequal 119 != 117 7217: results unequal 133 != 135 7219: results unequal 132 != 129 7220: results unequal 129 != 135 7223: results unequal 131 != 132 7224: results unequal 143 != 144 7225: results unequal 132 != 133 7226: results unequal 130 != 129 7228: results unequal 133 != 134 7229: results unequal 132 != 134 7231: results unequal 138 != 136 7232: results unequal 142 != 143 7233: results unequal 134 != 137 7234: results unequal 152 != 147 7235: results unequal 151 != 154 7238: results unequal 139 != 138 7239: results unequal 149 != 143 7240: results unequal 145 != 142 7241: results unequal 148 != 147 7242: results unequal 144 != 143 7243: results unequal 143 != 142 7244: results unequal 137 != 140 7246: results unequal 141 != 140 7248: results unequal 146 != 139 7249: results unequal 138 != 135 7251: results unequal 143 != 139 7252: results unequal 143 != 141 7253: results unequal 148 != 149 7254: results unequal 137 != 136 7255: results unequal 132 != 136 7256: results unequal 137 != 135 7257: results unequal 137 != 138 7258: results unequal 133 != 135 7259: results unequal 133 != 135 7261: results unequal 143 != 137 7263: results unequal 138 != 134 7264: results unequal 140 != 137 7265: results unequal 146 != 148 7266: results unequal 143 != 142 7268: results unequal 143 != 145 7269: results unequal 143 != 149 7270: results unequal 138 != 139 7271: results unequal 148 != 138 7272: results unequal 142 != 143 7274: results unequal 149 != 150 7275: results unequal 143 != 144 7276: results unequal 145 != 144 7278: results unequal 144 != 145 7279: results unequal 138 != 140 7280: results unequal 140 != 141 7282: results unequal 147 != 143 7283: results unequal 144 != 146 7284: results unequal 148 != 147 7285: results unequal 149 != 146 7286: results unequal 153 != 154 7287: results unequal 147 != 146 7288: results unequal 143 != 145 7289: results unequal 149 != 146 7290: results unequal 143 != 147 7291: results unequal 146 != 147 7292: results unequal 146 != 150 7294: results unequal 149 != 147 7296: results unequal 151 != 154 7297: results unequal 147 != 144 7298: results unequal 138 != 141 7299: results unequal 149 != 146 7301: results unequal 146 != 151 7303: results unequal 140 != 138 7304: results unequal 147 != 142 7305: results unequal 147 != 145 7308: results unequal 149 != 152 7309: results unequal 145 != 144 7310: results unequal 146 != 150 7311: results unequal 152 != 150 7312: results unequal 146 != 147 7313: results unequal 141 != 147 7314: results unequal 142 != 143 7316: results unequal 143 != 142 7318: results unequal 151 != 142 7319: results unequal 140 != 142 7320: results unequal 139 != 143 7321: results unequal 154 != 152 7322: results unequal 146 != 147 7323: results unequal 140 != 142 7324: results unequal 137 != 135 7325: results unequal 138 != 135 7326: results unequal 132 != 133 7327: results unequal 134 != 138 7328: results unequal 144 != 143 7329: results unequal 144 != 143 7330: results unequal 142 != 139 7331: results unequal 135 != 134 7332: results unequal 142 != 139 7333: results unequal 146 != 144 7335: results unequal 143 != 146 7336: results unequal 144 != 146 7338: results unequal 144 != 143 7339: results unequal 139 != 141 7340: results unequal 143 != 145 7342: results unequal 146 != 149 7343: results unequal 145 != 151 7344: results unequal 151 != 152 7345: results unequal 151 != 152 7346: results unequal 141 != 142 7347: results unequal 146 != 148 7348: results unequal 141 != 144 7349: results unequal 143 != 146 7350: results unequal 138 != 137 7352: results unequal 146 != 147 7353: results unequal 148 != 149 7355: results unequal 149 != 148 7356: results unequal 149 != 150 7358: results unequal 147 != 145 7359: results unequal 139 != 137 7361: results unequal 139 != 149 7362: results unequal 148 != 146 7363: results unequal 145 != 144 7364: results unequal 138 != 140 7365: results unequal 137 != 138 7366: results unequal 139 != 140 7367: results unequal 138 != 137 7368: results unequal 156 != 157 7369: results unequal 147 != 145 7370: results unequal 150 != 149 7373: results unequal 144 != 147 7374: results unequal 133 != 135 7375: results unequal 144 != 141 7377: results unequal 144 != 143 7378: results unequal 143 != 142 7379: results unequal 133 != 135 7380: results unequal 143 != 142 7381: results unequal 142 != 143 7382: results unequal 153 != 150 7383: results unequal 146 != 145 7384: results unequal 145 != 148 7385: results unequal 149 != 144 7386: results unequal 141 != 142 7387: results unequal 147 != 145 7388: results unequal 143 != 139 7391: results unequal 141 != 142 7392: results unequal 142 != 145 7393: results unequal 148 != 147 7394: results unequal 149 != 148 7395: results unequal 156 != 151 7397: results unequal 151 != 152 7399: results unequal 156 != 154 7400: results unequal 140 != 141 7402: results unequal 142 != 144 7404: results unequal 140 != 141 7406: results unequal 145 != 148 7407: results unequal 142 != 140 7408: results unequal 137 != 134 7409: results unequal 142 != 141 7410: results unequal 143 != 139 7411: results unequal 147 != 145 7412: results unequal 144 != 147 7413: results unequal 143 != 155 7414: results unequal 150 != 149 7415: results unequal 152 != 151 7416: results unequal 147 != 146 7417: results unequal 159 != 153 7418: results unequal 151 != 152 7419: results unequal 149 != 145 7420: results unequal 151 != 150 7421: results unequal 142 != 143 7422: results unequal 142 != 143 7425: results unequal 156 != 158 7426: results unequal 144 != 142 7428: results unequal 143 != 151 7429: results unequal 146 != 147 7432: results unequal 148 != 147 7433: results unequal 146 != 148 7434: results unequal 154 != 151 7435: results unequal 139 != 138 7436: results unequal 144 != 142 7437: results unequal 145 != 146 7438: results unequal 141 != 146 7440: results unequal 148 != 144 7441: results unequal 147 != 143 7443: results unequal 145 != 147 7444: results unequal 151 != 149 7446: results unequal 152 != 153 7448: results unequal 143 != 144 7449: results unequal 148 != 149 7450: results unequal 151 != 148 7451: results unequal 147 != 145 7452: results unequal 143 != 140 7453: results unequal 141 != 142 7454: results unequal 142 != 140 7457: results unequal 145 != 143 7458: results unequal 140 != 143 7459: results unequal 145 != 146 7461: results unequal 146 != 150 7462: results unequal 144 != 140 7463: results unequal 150 != 149 7465: results unequal 156 != 149 7466: results unequal 143 != 142 7467: results unequal 149 != 159 7468: results unequal 143 != 147 7469: results unequal 154 != 153 7470: results unequal 147 != 149 7471: results unequal 145 != 149 7473: results unequal 144 != 148 7475: results unequal 143 != 147 7476: results unequal 146 != 145 7478: results unequal 154 != 150 7479: results unequal 148 != 151 7480: results unequal 150 != 148 7481: results unequal 148 != 145 7483: results unequal 141 != 143 7484: results unequal 146 != 144 7486: results unequal 150 != 151 7487: results unequal 149 != 151 7488: results unequal 144 != 145 7489: results unequal 142 != 143 7490: results unequal 148 != 150 7491: results unequal 155 != 157 7493: results unequal 159 != 160 7494: results unequal 160 != 157 7495: results unequal 158 != 155 7496: results unequal 149 != 148 7497: results unequal 150 != 153 7498: results unequal 150 != 148 7499: results unequal 149 != 150 7500: results unequal 142 != 144 7501: results unequal 149 != 148 7502: results unequal 148 != 145 7503: results unequal 148 != 146 7504: results unequal 143 != 152 7505: results unequal 139 != 140 7506: results unequal 145 != 149 7507: results unequal 146 != 149 7508: results unequal 151 != 152 7509: results unequal 145 != 142 7510: results unequal 142 != 141 7511: results unequal 145 != 143 7512: results unequal 135 != 136 7513: results unequal 138 != 137 7514: results unequal 139 != 138 7515: results unequal 140 != 138 7516: results unequal 141 != 137 7517: results unequal 142 != 141 7519: results unequal 142 != 141 7520: results unequal 141 != 139 7521: results unequal 138 != 139 7522: results unequal 143 != 145 7523: results unequal 145 != 146 7527: results unequal 138 != 141 7528: results unequal 137 != 139 7530: results unequal 140 != 141 7531: results unequal 141 != 140 7534: results unequal 146 != 145 7535: results unequal 142 != 143 7536: results unequal 151 != 153 7537: results unequal 144 != 143 7538: results unequal 144 != 142 7540: results unequal 146 != 148 7542: results unequal 140 != 141 7544: results unequal 150 != 149 7545: results unequal 140 != 142 7547: results unequal 140 != 141 7548: results unequal 147 != 145 7549: results unequal 142 != 151 7551: results unequal 152 != 150 7552: results unequal 145 != 147 7553: results unequal 151 != 147 7554: results unequal 151 != 149 7556: results unequal 150 != 144 7557: results unequal 146 != 147 7560: results unequal 146 != 147 7561: results unequal 149 != 151 7562: results unequal 143 != 141 7563: results unequal 155 != 149 7564: results unequal 143 != 142 7567: results unequal 145 != 146 7568: results unequal 146 != 147 7570: results unequal 147 != 144 7571: results unequal 149 != 144 7572: results unequal 142 != 141 7575: results unequal 149 != 151 7576: results unequal 154 != 151 7578: results unequal 141 != 140 7579: results unequal 144 != 146 7580: results unequal 144 != 145 7582: results unequal 158 != 157 7583: results unequal 153 != 154 7584: results unequal 147 != 148 7585: results unequal 142 != 141 7586: results unequal 141 != 139 7587: results unequal 150 != 148 7588: results unequal 143 != 149 7589: results unequal 148 != 147 7591: results unequal 147 != 146 7592: results unequal 148 != 150 7593: results unequal 152 != 155 7594: results unequal 150 != 149 7595: results unequal 143 != 144 7596: results unequal 143 != 141 7597: results unequal 151 != 147 7600: results unequal 147 != 151 7602: results unequal 138 != 139 7603: results unequal 149 != 142 7604: results unequal 146 != 148 7605: results unequal 147 != 149 7606: results unequal 150 != 149 7609: results unequal 140 != 141 7610: results unequal 137 != 138 7611: results unequal 139 != 135 7612: results unequal 140 != 137 7614: results unequal 150 != 142 7615: results unequal 144 != 145 7617: results unequal 149 != 146 7618: results unequal 150 != 143 7619: results unequal 159 != 156 7622: results unequal 143 != 144 7623: results unequal 148 != 146 7624: results unequal 151 != 152 7625: results unequal 148 != 144 7628: results unequal 143 != 141 7630: results unequal 151 != 146 7631: results unequal 153 != 152 7632: results unequal 153 != 154 7633: results unequal 156 != 154 7634: results unequal 149 != 151 7635: results unequal 152 != 148 7636: results unequal 153 != 152 7637: results unequal 149 != 151 7638: results unequal 151 != 149 7639: results unequal 140 != 141 7640: results unequal 146 != 143 7641: results unequal 150 != 153 7642: results unequal 159 != 157 7643: results unequal 162 != 161 7644: results unequal 148 != 151 7645: results unequal 141 != 144 7646: results unequal 142 != 141 7647: results unequal 145 != 150 7648: results unequal 137 != 144 7649: results unequal 143 != 142 7650: results unequal 145 != 153 7651: results unequal 148 != 149 7652: results unequal 140 != 141 7653: results unequal 141 != 143 7654: results unequal 141 != 139 7656: results unequal 151 != 141 7657: results unequal 144 != 143 7658: results unequal 138 != 136 7660: results unequal 145 != 143 7662: results unequal 150 != 149 7663: results unequal 145 != 144 7664: results unequal 148 != 147 7666: results unequal 145 != 143 7667: results unequal 150 != 145 7669: results unequal 144 != 145 7670: results unequal 151 != 152 7671: results unequal 142 != 144 7672: results unequal 161 != 155 7673: results unequal 151 != 147 7674: results unequal 145 != 146 7675: results unequal 144 != 143 7676: results unequal 142 != 144 7677: results unequal 141 != 140 7679: results unequal 139 != 143 7680: results unequal 137 != 138 7681: results unequal 143 != 141 7682: results unequal 138 != 139 7683: results unequal 143 != 146 7684: results unequal 144 != 141 7685: results unequal 151 != 149 7686: results unequal 150 != 149 7687: results unequal 149 != 147 7688: results unequal 146 != 148 7689: results unequal 148 != 145 7690: results unequal 152 != 149 7691: results unequal 146 != 142 7692: results unequal 149 != 144 7694: results unequal 147 != 148 7695: results unequal 153 != 151 7696: results unequal 155 != 154 7697: results unequal 155 != 149 7699: results unequal 155 != 152 7700: results unequal 149 != 151 7701: results unequal 144 != 143 7704: results unequal 147 != 145 7705: results unequal 148 != 150 7706: results unequal 150 != 146 7707: results unequal 146 != 147 7708: results unequal 147 != 150 7709: results unequal 138 != 137 7710: results unequal 145 != 144 7712: results unequal 140 != 143 7713: results unequal 139 != 140 7714: results unequal 153 != 152 7715: results unequal 151 != 148 7716: results unequal 148 != 149 7717: results unequal 151 != 162 7718: results unequal 152 != 151 7719: results unequal 152 != 159 7720: results unequal 146 != 153 7721: results unequal 156 != 155 7722: results unequal 155 != 154 7723: results unequal 150 != 147 7725: results unequal 152 != 154 7726: results unequal 167 != 164 7727: results unequal 156 != 159 7729: results unequal 148 != 147 7730: results unequal 142 != 144 7732: results unequal 151 != 148 7733: results unequal 147 != 155 7734: results unequal 151 != 153 7735: results unequal 143 != 150 7736: results unequal 143 != 142 7737: results unequal 140 != 139 7738: results unequal 149 != 148 7739: results unequal 147 != 148 7740: results unequal 149 != 152 7741: results unequal 147 != 146 7742: results unequal 143 != 142 7744: results unequal 137 != 144 7745: results unequal 151 != 150 7747: results unequal 141 != 140 7748: results unequal 142 != 144 7749: results unequal 141 != 140 7750: results unequal 142 != 140 7751: results unequal 143 != 144 7752: results unequal 140 != 142 7753: results unequal 141 != 142 7754: results unequal 143 != 144 7755: results unequal 143 != 141 7758: results unequal 150 != 147 7759: results unequal 142 != 143 7761: results unequal 155 != 152 7763: results unequal 144 != 145 7764: results unequal 157 != 156 7765: results unequal 149 != 148 7766: results unequal 131 != 129 7767: results unequal 138 != 140 7768: results unequal 146 != 147 7771: results unequal 147 != 146 7772: results unequal 142 != 141 7773: results unequal 149 != 148 7774: results unequal 138 != 139 7776: results unequal 140 != 141 7778: results unequal 144 != 145 7779: results unequal 139 != 138 7780: results unequal 137 != 136 7781: results unequal 140 != 137 7782: results unequal 148 != 159 7783: results unequal 155 != 156 7784: results unequal 133 != 135 7785: results unequal 148 != 147 7786: results unequal 147 != 148 7788: results unequal 143 != 142 7790: results unequal 146 != 148 7791: results unequal 149 != 148 7794: results unequal 145 != 144 7797: results unequal 156 != 160 7798: results unequal 146 != 147 7799: results unequal 138 != 139 7801: results unequal 141 != 142 7802: results unequal 148 != 147 7803: results unequal 153 != 155 7804: results unequal 160 != 159 7805: results unequal 152 != 154 7806: results unequal 148 != 147 7807: results unequal 145 != 143 7809: results unequal 144 != 146 7813: results unequal 144 != 143 7814: results unequal 139 != 138 7815: results unequal 137 != 153 7816: results unequal 142 != 139 7817: results unequal 156 != 149 7819: results unequal 155 != 144 7821: results unequal 142 != 141 7822: results unequal 143 != 141 7823: results unequal 128 != 130 7824: results unequal 125 != 126 7825: results unequal 135 != 136 7826: results unequal 138 != 137 7827: results unequal 146 != 145 7828: results unequal 162 != 157 7829: results unequal 154 != 152 7830: results unequal 148 != 162 7831: results unequal 151 != 150 7832: results unequal 152 != 149 7833: results unequal 148 != 145 7834: results unequal 146 != 147 7835: results unequal 152 != 151 7837: results unequal 148 != 149 7838: results unequal 152 != 148 7839: results unequal 145 != 143 7840: results unequal 145 != 143 7841: results unequal 163 != 156 7842: results unequal 144 != 145 7843: results unequal 146 != 147 7844: results unequal 143 != 140 7845: results unequal 140 != 139 7846: results unequal 146 != 145 7849: results unequal 138 != 154 7850: results unequal 130 != 129 7851: results unequal 133 != 134 7852: results unequal 136 != 137 7853: results unequal 157 != 152 7855: results unequal 137 != 138 7856: results unequal 148 != 147 7857: results unequal 150 != 151 7858: results unequal 147 != 167 7859: results unequal 152 != 150 7860: results unequal 144 != 142 7862: results unequal 145 != 146 7863: results unequal 140 != 142 7864: results unequal 142 != 141 7865: results unequal 144 != 140 7866: results unequal 143 != 145 7868: results unequal 146 != 143 7869: results unequal 137 != 136 7870: results unequal 137 != 135 7872: results unequal 143 != 142 7874: results unequal 151 != 149 7875: results unequal 138 != 137 7877: results unequal 149 != 147 7878: results unequal 142 != 140 7880: results unequal 143 != 140 7881: results unequal 124 != 123 7882: results unequal 125 != 127 7884: results unequal 133 != 134 7886: results unequal 140 != 144 7887: results unequal 136 != 134 7889: results unequal 147 != 146 7891: results unequal 144 != 142 7893: results unequal 136 != 137 7894: results unequal 137 != 139 7895: results unequal 143 != 144 7897: results unequal 134 != 132 7899: results unequal 142 != 139 7900: results unequal 145 != 146 7901: results unequal 145 != 146 7903: results unequal 137 != 138 7904: results unequal 146 != 157 7905: results unequal 143 != 144 7906: results unequal 148 != 145 7907: results unequal 141 != 140 7909: results unequal 145 != 147 7912: results unequal 153 != 151 7913: results unequal 168 != 166 7914: results unequal 134 != 135 7915: results unequal 134 != 133 7917: results unequal 141 != 142 7918: results unequal 145 != 142 7919: results unequal 144 != 143 7920: results unequal 148 != 146 7921: results unequal 142 != 141 7922: results unequal 133 != 136 7923: results unequal 136 != 135 7924: results unequal 142 != 141 7925: results unequal 142 != 140 7927: results unequal 143 != 144 7928: results unequal 144 != 142 7929: results unequal 141 != 142 7930: results unequal 139 != 140 7931: results unequal 136 != 137 7933: results unequal 133 != 144 7935: results unequal 139 != 141 7937: results unequal 139 != 142 7939: results unequal 145 != 146 7941: results unequal 140 != 139 7942: results unequal 143 != 145 7944: results unequal 137 != 157 7948: results unequal 138 != 141 7949: results unequal 141 != 138 7950: results unequal 138 != 140 7951: results unequal 140 != 141 7954: results unequal 151 != 152 7955: results unequal 144 != 143 7956: results unequal 162 != 154 7957: results unequal 147 != 146 7958: results unequal 148 != 149 7959: results unequal 150 != 151 7960: results unequal 151 != 147 7962: results unequal 138 != 139 7963: results unequal 151 != 148 7964: results unequal 147 != 146 7965: results unequal 149 != 144 7970: results unequal 144 != 145 7971: results unequal 147 != 146 7972: results unequal 147 != 145 7973: results unequal 141 != 140 7974: results unequal 141 != 158 7976: results unequal 147 != 148 7977: results unequal 142 != 156 7978: results unequal 140 != 142 7979: results unequal 163 != 157 7980: results unequal 151 != 154 7982: results unequal 143 != 144 7986: results unequal 139 != 137 7987: results unequal 138 != 139 7988: results unequal 139 != 140 7989: results unequal 140 != 142 7990: results unequal 145 != 146 7993: results unequal 139 != 138 7998: results unequal 144 != 141 7999: results unequal 138 != 140 8000: results unequal 136 != 137 8002: results unequal 141 != 140 8003: results unequal 149 != 143 8004: results unequal 145 != 148 8005: results unequal 136 != 138 8006: results unequal 146 != 143 8007: results unequal 157 != 154 8009: results unequal 141 != 140 8011: results unequal 147 != 146 8012: results unequal 145 != 144 8014: results unequal 141 != 143 8016: results unequal 139 != 140 8017: results unequal 136 != 139 8018: results unequal 156 != 152 8019: results unequal 145 != 144 8021: results unequal 143 != 144 8022: results unequal 167 != 155 8023: results unequal 149 != 147 8024: results unequal 145 != 144 8027: results unequal 145 != 144 8028: results unequal 147 != 146 8029: results unequal 145 != 143 8031: results unequal 145 != 151 8034: results unequal 144 != 143 8035: results unequal 143 != 140 8036: results unequal 153 != 150 8037: results unequal 136 != 151 8038: results unequal 150 != 154 8039: results unequal 133 != 132 8042: results unequal 141 != 140 8043: results unequal 144 != 143 8045: results unequal 140 != 138 8046: results unequal 139 != 140 8048: results unequal 147 != 143 8049: results unequal 136 != 135 8050: results unequal 146 != 144 8052: results unequal 140 != 142 8053: results unequal 146 != 144 8054: results unequal 144 != 141 8055: results unequal 138 != 137 8056: results unequal 146 != 145 8057: results unequal 142 != 143 8058: results unequal 142 != 144 8059: results unequal 144 != 143 8060: results unequal 144 != 143 8061: results unequal 142 != 139 8065: results unequal 142 != 141 8066: results unequal 146 != 145 8067: results unequal 155 != 156 8068: results unequal 141 != 142 8069: results unequal 152 != 150 8072: results unequal 143 != 144 8073: results unequal 149 != 151 8074: results unequal 153 != 152 8075: results unequal 142 != 143 8080: results unequal 144 != 145 8081: results unequal 144 != 146 8083: results unequal 149 != 148 8084: results unequal 153 != 150 8086: results unequal 144 != 146 8087: results unequal 152 != 155 8088: results unequal 147 != 148 8089: results unequal 141 != 142 8092: results unequal 144 != 146 8094: results unequal 156 != 155 8095: results unequal 144 != 143 8096: results unequal 151 != 149 8098: results unequal 144 != 143 8099: results unequal 144 != 145 8100: results unequal 142 != 153 8102: results unequal 140 != 141 8104: results unequal 140 != 141 8105: results unequal 137 != 138 8107: results unequal 120 != 123 8108: results unequal 131 != 134 8109: results unequal 138 != 139 8110: results unequal 147 != 143 8111: results unequal 140 != 138 8112: results unequal 141 != 142 8119: results unequal 150 != 147 8120: results unequal 140 != 141 8121: results unequal 145 != 144 8122: results unequal 147 != 151 8123: results unequal 146 != 148 8124: results unequal 148 != 149 8125: results unequal 154 != 157 8126: results unequal 153 != 152 8127: results unequal 149 != 146 8128: results unequal 144 != 145 8129: results unequal 147 != 148 8130: results unequal 144 != 145 8131: results unequal 141 != 142 8132: results unequal 139 != 138 8133: results unequal 145 != 144 8134: results unequal 145 != 142 8137: results unequal 135 != 134 8138: results unequal 138 != 136 8139: results unequal 139 != 140 8140: results unequal 147 != 146 8141: results unequal 146 != 149 8142: results unequal 143 != 144 8143: results unequal 158 != 157 8144: results unequal 141 != 140 8145: results unequal 144 != 143 8146: results unequal 145 != 143 8147: results unequal 135 != 134 8149: results unequal 150 != 146 8150: results unequal 146 != 143 8151: results unequal 142 != 141 8152: results unequal 144 != 145 8154: results unequal 144 != 140 8155: results unequal 140 != 154 8156: results unequal 141 != 142 8159: results unequal 139 != 136 8160: results unequal 135 != 136 8161: results unequal 129 != 130 8163: results unequal 135 != 133 8164: results unequal 138 != 140 8165: results unequal 138 != 137 8166: results unequal 132 != 131 8167: results unequal 137 != 135 8168: results unequal 137 != 136 8169: results unequal 137 != 138 8170: results unequal 139 != 138 8173: results unequal 144 != 143 8174: results unequal 142 != 144 8175: results unequal 143 != 144 8178: results unequal 139 != 137 8179: results unequal 142 != 141 8180: results unequal 145 != 147 8181: results unequal 148 != 149 8182: results unequal 139 != 138 8183: results unequal 138 != 137 8184: results unequal 142 != 145 8185: results unequal 140 != 154 8187: results unequal 142 != 144 8188: results unequal 145 != 147 8192: results unequal 141 != 143 8193: results unequal 140 != 143 8194: results unequal 143 != 150 8195: results unequal 132 != 133 8196: results unequal 134 != 136 8198: results unequal 151 != 146 8199: results unequal 138 != 139 8200: results unequal 139 != 138 8201: results unequal 137 != 149 8202: results unequal 137 != 139 8203: results unequal 137 != 138 8204: results unequal 139 != 138 8205: results unequal 142 != 144 8206: results unequal 131 != 130 8208: results unequal 141 != 140 8209: results unequal 133 != 134 8211: results unequal 138 != 137 8212: results unequal 135 != 136 8216: results unequal 136 != 139 8217: results unequal 142 != 143 8218: results unequal 143 != 141 8220: results unequal 143 != 142 8221: results unequal 139 != 140 8222: results unequal 142 != 140 8223: results unequal 144 != 142 8224: results unequal 137 != 148 8226: results unequal 140 != 136 8228: results unequal 140 != 143 8229: results unequal 143 != 139 8230: results unequal 137 != 138 8231: results unequal 139 != 141 8233: results unequal 147 != 145 8234: results unequal 142 != 141 8235: results unequal 143 != 142 8239: results unequal 142 != 143 8240: results unequal 144 != 145 8241: results unequal 144 != 142 8242: results unequal 142 != 139 8243: results unequal 140 != 141 8245: results unequal 154 != 152 8246: results unequal 142 != 140 8247: results unequal 143 != 142 8248: results unequal 136 != 137 8249: results unequal 143 != 141 8251: results unequal 140 != 144 8252: results unequal 146 != 143 8253: results unequal 139 != 140 8254: results unequal 138 != 137 8255: results unequal 141 != 142 8256: results unequal 144 != 143 8257: results unequal 136 != 138 8259: results unequal 151 != 149 8260: results unequal 147 != 146 8261: results unequal 144 != 142 8264: results unequal 139 != 140 8265: results unequal 144 != 142 8266: results unequal 142 != 153 8267: results unequal 143 != 141 8268: results unequal 139 != 137 8269: results unequal 140 != 143 8270: results unequal 142 != 149 8272: results unequal 149 != 150 8273: results unequal 152 != 151 8275: results unequal 143 != 142 8277: results unequal 148 != 146 8278: results unequal 143 != 145 8280: results unequal 150 != 149 8281: results unequal 142 != 143 8282: results unequal 142 != 138 8284: results unequal 148 != 145 8285: results unequal 145 != 146 8286: results unequal 151 != 147 8287: results unequal 143 != 142 8288: results unequal 143 != 146 8289: results unequal 146 != 144 8290: results unequal 138 != 139 8291: results unequal 144 != 145 8292: results unequal 139 != 137 8293: results unequal 147 != 148 8294: results unequal 143 != 142 8297: results unequal 146 != 144 8298: results unequal 148 != 145 8299: results unequal 142 != 143 8300: results unequal 145 != 146 8301: results unequal 138 != 143 8303: results unequal 150 != 149 8304: results unequal 154 != 155 8308: results unequal 159 != 157 8309: results unequal 161 != 162 8310: results unequal 167 != 166 8311: results unequal 156 != 155 8314: results unequal 153 != 159 8315: results unequal 153 != 151 8316: results unequal 155 != 153 8318: results unequal 151 != 150 8319: results unequal 141 != 142 8320: results unequal 148 != 157 8322: results unequal 153 != 151 8323: results unequal 155 != 152 8324: results unequal 151 != 152 8325: results unequal 144 != 143 8326: results unequal 140 != 142 8329: results unequal 145 != 144 8334: results unequal 142 != 146 8336: results unequal 144 != 145 8337: results unequal 144 != 142 8339: results unequal 140 != 141 8341: results unequal 143 != 146 8344: results unequal 150 != 151 8345: results unequal 150 != 149 8347: results unequal 145 != 144 8348: results unequal 140 != 138 8350: results unequal 141 != 140 8351: results unequal 141 != 143 8352: results unequal 144 != 143 8353: results unequal 144 != 146 8354: results unequal 144 != 143 8355: results unequal 137 != 138 8356: results unequal 136 != 138 8357: results unequal 142 != 147 8358: results unequal 160 != 162 8359: results unequal 154 != 151 8360: results unequal 156 != 157 8361: results unequal 150 != 148 8362: results unequal 147 != 146 8365: results unequal 129 != 138 8366: results unequal 143 != 142 8367: results unequal 147 != 146 8368: results unequal 146 != 147 8369: results unequal 143 != 144 8370: results unequal 148 != 146 8371: results unequal 149 != 146 8374: results unequal 146 != 154 8376: results unequal 141 != 140 8377: results unequal 141 != 140 8379: results unequal 139 != 143 8380: results unequal 137 != 138 8381: results unequal 141 != 143 8383: results unequal 139 != 138 8384: results unequal 139 != 138 8385: results unequal 139 != 142 8386: results unequal 144 != 145 8388: results unequal 143 != 142 8389: results unequal 144 != 145 8391: results unequal 145 != 146 8392: results unequal 142 != 145 8393: results unequal 144 != 142 8394: results unequal 138 != 139 8395: results unequal 142 != 141 8396: results unequal 142 != 143 8397: results unequal 144 != 143 8398: results unequal 145 != 143 8399: results unequal 147 != 146 8400: results unequal 147 != 146 8401: results unequal 147 != 144 8402: results unequal 147 != 146 8403: results unequal 145 != 146 8407: results unequal 135 != 136 8412: results unequal 149 != 145 8413: results unequal 142 != 141 8415: results unequal 139 != 137 8416: results unequal 141 != 143 8418: results unequal 140 != 141 8419: results unequal 138 != 139 8420: results unequal 141 != 140 8421: results unequal 138 != 139 8422: results unequal 138 != 140 8423: results unequal 141 != 142 8424: results unequal 145 != 143 8425: results unequal 141 != 145 8427: results unequal 135 != 136 8428: results unequal 143 != 148 8429: results unequal 152 != 151 8430: results unequal 148 != 144 8431: results unequal 146 != 156 8433: results unequal 146 != 147 8435: results unequal 143 != 142 8436: results unequal 142 != 140 8437: results unequal 150 != 151 8438: results unequal 147 != 146 8440: results unequal 142 != 140 8441: results unequal 135 != 136 8442: results unequal 145 != 148 8443: results unequal 139 != 141 8444: results unequal 137 != 139 8446: results unequal 138 != 139 8447: results unequal 143 != 142 8448: results unequal 149 != 148 8449: results unequal 137 != 139 8450: results unequal 140 != 139 8451: results unequal 146 != 145 8452: results unequal 140 != 141 8453: results unequal 140 != 139 8454: results unequal 138 != 136 8456: results unequal 138 != 140 8457: results unequal 136 != 138 8460: results unequal 137 != 138 8461: results unequal 138 != 139 8462: results unequal 140 != 139 8467: results unequal 134 != 135 8468: results unequal 133 != 131 8469: results unequal 142 != 141 8471: results unequal 143 != 141 8473: results unequal 140 != 139 8475: results unequal 146 != 144 8476: results unequal 137 != 140 8477: results unequal 138 != 136 8478: results unequal 139 != 138 8479: results unequal 141 != 137 8480: results unequal 140 != 139 8481: results unequal 135 != 138 8482: results unequal 139 != 137 8483: results unequal 139 != 141 8484: results unequal 141 != 142 8485: results unequal 140 != 141 8486: results unequal 144 != 146 8487: results unequal 142 != 139 8488: results unequal 137 != 136 8489: results unequal 136 != 135 8490: results unequal 131 != 132 8491: results unequal 134 != 133 8494: results unequal 129 != 128 8495: results unequal 119 != 120 8496: results unequal 122 != 121 8498: results unequal 122 != 119 8499: results unequal 115 != 118 8500: results unequal 114 != 113 8501: results unequal 112 != 113 8503: results unequal 108 != 107 8504: results unequal 111 != 109 8509: results unequal 102 != 103 8511: results unequal 104 != 102 8514: results unequal 93 != 89 8517: results unequal 92 != 93 8518: results unequal 83 != 84 8519: results unequal 86 != 87 8520: results unequal 84 != 85 8521: results unequal 83 != 82 8522: results unequal 80 != 79 8523: results unequal 83 != 82 8524: results unequal 77 != 79 8525: results unequal 75 != 74 8526: results unequal 69 != 74 8527: results unequal 64 != 63 8529: results unequal 48 != 49 8530: results unequal 47 != 45 8531: results unequal 45 != 46 8532: results unequal 44 != 46 8533: results unequal 44 != 42 8534: results unequal 43 != 41 8537: results unequal 39 != 40 8538: results unequal 38 != 39 8543: results unequal 35 != 34 8545: results unequal 32 != 33 8547: results unequal 37 != 36 8550: results unequal 32 != 33 8551: results unequal 36 != 34 8553: results unequal 32 != 31 8554: results unequal 32 != 31 8555: results unequal 31 != 32 8557: results unequal 26 != 27 8558: results unequal 27 != 25 8559: results unequal 26 != 24 8568: results unequal 22 != 23 8569: results unequal 25 != 23 8570: results unequal 22 != 23 8571: results unequal 22 != 23 8575: results unequal 25 != 24 8579: results unequal 20 != 19 8580: results unequal 21 != 22 8586: results unequal 22 != 23 8587: results unequal 19 != 20 8589: results unequal 22 != 20 8590: results unequal 21 != 20 8593: results unequal 17 != 18 8594: results unequal 16 != 17 8595: results unequal 18 != 16 8597: results unequal 14 != 15 8601: results unequal 16 != 15 8610: results unequal 13 != 14 8615: results unequal 12 != 13 8621: results unequal 10 != 11 8625: results unequal 11 != 12 8627: results unequal 11 != 12 8628: results unequal 13 != 12 8629: results unequal 10 != 11 8633: results unequal 10 != 9 8644: results unequal 10 != 9 8648: results unequal 8 != 9 8649: results unequal 9 != 8 8652: results unequal 6 != 7 8654: results unequal 6 != 7 8655: results unequal 7 != 6 8658: results unequal 5 != 6 8665: results unequal 4 != 5 8668: results unequal 4 != 5 8670: results unequal 4 != 5 8673: results unequal 3 != 4 8683: results unequal 4 != 3 8698: results unequal 4 != 5 8729: results unequal 3 != 4 8730: results unequal 4 != 5 8736: results unequal 4 != 3 8737: results unequal 3 != 4 8738: results unequal 4 != 3 8739: results unequal 3 != 4 8744: results unequal 3 != 4 8754: results unequal 2 != 3 8756: results unequal 2 != 3 8767: results unequal 2 != 3 8794: results unequal 2 != 3 8845: results unequal 3 != 2 8865: results unequal 2 != 3 8871: results unequal 2 != 3 8930: results unequal 3 != 2 8933: results unequal 2 != 3 8936: results unequal 2 != 3 8950: results unequal 2 != 3 8969: results unequal 2 != 1 8977: results unequal 3 != 2 8997: results unequal 3 != 2 9018: results unequal 2 != 3 9034: results unequal 2 != 3 9054: results unequal 4 != 3 9090: results unequal 3 != 2 9109: results unequal 2 != 3 9113: results unequal 3 != 2 9120: results unequal 2 != 3 9130: results unequal 2 != 3 9131: results unequal 2 != 3 9134: results unequal 3 != 2 9135: results unequal 2 != 3 9138: results unequal 2 != 3 9140: results unequal 2 != 3 9150: results unequal 2 != 3 9152: results unequal 3 != 2 9207: results unequal 2 != 3 9215: results unequal 3 != 2 9251: results unequal 2 != 3 9292: results unequal 2 != 1 9294: results unequal 1 != 2 9295: results unequal 1 != 2 9298: results unequal 1 != 2 9302: results unequal 2 != 1 9316: results unequal 2 != 1 9383: results unequal 2 != 3 9387: results unequal 2 != 3 9440: results unequal 2 != 3 9441: results unequal 2 != 3 9463: results unequal 2 != 3 9464: results unequal 2 != 3 9491: results unequal 2 != 3 9554: results unequal 3 != 2 9607: results unequal 3 != 4 9618: results unequal 3 != 2 9625: results unequal 2 != 3 9672: results unequal 1 != 2 9699: results unequal 4 != 5 9705: results unequal 3 != 2 9717: results unequal 3 != 2 9725: results unequal 3 != 5 9726: results unequal 2 != 3 9727: results unequal 2 != 5 9734: results unequal 3 != 2 9738: results unequal 2 != 4 9739: results unequal 2 != 4 9744: results unequal 2 != 4 9757: results unequal 3 != 2 9764: results unequal 3 != 2 9771: results unequal 3 != 2 9806: results unequal 3 != 2 9807: results unequal 5 != 4 9889: results unequal 2 != 1 9895: results unequal 1 != 2 9915: results unequal 4 != 3 9921: results unequal 4 != 3 9935: results unequal 3 != 2 9941: results unequal 2 != 3 9944: results unequal 4 != 2 9951: results unequal 3 != 2 9997: results unequal 3 != 2 failures=0 goods=7333 uneqs=2667 ... udev_test end

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/

_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

#4 lore raw
In reply to George Beshers
Quoted 20 lines · Kay Sievers
Quoted 11 lines · Kay Sievers
Quoted 2 lines · George Beshers

After some testing the following patch seems safe for dealing with

computers

Quoted 3 lines

with more than 500 processors. It occurred to me that it might be easier and
just as useful to note when udev is running on a large computer

(e.g., >= 8p

Quoted 1 line

and >= 16Gb of memory) and simply not worry about throttling at

that point.

Quoted 1 line
Quoted 7 lines
Quoted 3 lines

The patch should apply cleanly against udev-110.

Comments welcome.

Looks fine so far, but I still don't see how reading a seq-proc-file could miss entries. Are you expecting this to happen? Did you ever see this for any of these files?

Quoted 7 lines

If I read linux/fs/proc/proc_misc.c correctly, /proc/stat fills a buffer of 128kB in one call and passes the data to the file.

I wonder how long it will take, that you guys hit the 128k limit. :)

Thanks,
Kay

Hmmm... well on the 128p system where I did my testing the size of /proc/stat ranged from 5317 to 5451 (that was with 151 active procs). At that scale 2048 should be OK.

BTW. I should have said that the log was generated with a kernel build (make -j 128 or something like that) going.

George

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

#5 lore raw
In reply to George Beshers
Quoted 10 lines · George Beshers
Quoted 3 lines · Kay Sievers

Looks fine so far, but I still don't see how reading a seq-proc-file could miss entries. Are you expecting this to happen? Did you ever see this for any of these files?

The answer is slightly complex. No I never saw it happen, but I am concerned about it. To illustrate that, consider the following test program and the output log attached. Basically, the /proc/stat file does seem to be changing dynamically and an open file does not present a stable snapshot.

Looking at the seq_file code, calling lseek() causes the buffer to be repopulated:
seq_lseek() -> traverse() -> m->op->show()
while show() is the method of the "stat" file that fills the buffer.

A simple read() should not do that, and just copy the content (up to 128kB) of the kernel seq_file file buffer to the user-process:
seq_read() -> copy_to_user(buf, m->buf + m->from, n)

Quoted 3 lines

So the danger is that the procs_running
might get split at a 4k boundary and the split changes by the time the next read occurs so procs_running is corrupted.

I'm pretty sure, that this doesn't happen, if you don't seek(). Here is a test, that opens /proc/stat, reads a single byte (which fills the buffer), forks a ton of processes and reads the rest of the buffer. You see that the "processes" value did not increase:

  $ ./seq 
  processes 57425
  processes 57425
  processes 58203

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>

int main(int argc, char *argv[])

{
        FILE* f;
        char buf[1024];
        int i;

        system("grep processes /proc/stat");

        f = fopen("/proc/stat", "r");
        fread(buf, 1, 1, f);

        for (i = 0; i < 777; i++)
                system("/bin/true");

        while (fgets(buf, sizeof(buf), f))
                if (strncmp(buf, "processes", 9) = 0)
                        printf("%s", buf);
        fclose(f);

        system("grep processes /proc/stat");

        return 0;
}

Thanks,
Kay

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

#6 lore raw
In reply to George Beshers
Quoted 25 lines · Kay Sievers
Quoted 10 lines · George Beshers
Quoted 3 lines · Kay Sievers

Looks fine so far, but I still don't see how reading a seq-proc-file could miss entries. Are you expecting this to happen? Did you ever see this for any of these files?

The answer is slightly complex. No I never saw it happen, but I am concerned about it. To illustrate that, consider the following test program and the output log attached. Basically, the /proc/stat file does seem to be changing dynamically and an open file does not present a stable snapshot.

Looking at the seq_file code, calling lseek() causes the buffer to be repopulated:
seq_lseek() -> traverse() -> m->op->show()
while show() is the method of the "stat" file that fills the buffer.

A simple read() should not do that, and just copy the content (up to 128kB) of the kernel seq_file file buffer to the user-process:
seq_read() -> copy_to_user(buf, m->buf + m->from, n)

Quoted 3 lines

So the danger is that the procs_running
might get split at a 4k boundary and the split changes by the time the next read occurs so procs_running is corrupted.

Quoted 8 lines

I'm pretty sure, that this doesn't happen, if you don't seek(). Here is a test, that opens /proc/stat, reads a single byte (which fills the buffer), forks a ton of processes and reads the rest of the buffer. You see that the "processes" value did not increase:

  $ ./seq 
  processes 57425
  processes 57425
  processes 58203

The patch should be as simple as this now, I hope. :)

Thanks,
Kay

udevd.c +33 -57
index 645b068..4086b96 100644
@@ -318,61 +318,42 @@ static void msg_queue_insert(struct udev
 
 static int mem_size_mb(void)
 {
-	int f;
-	char buf[8192];
-	long int len;
-	const char *pos;
-	long int memsize;
-
-	f = open("/proc/meminfo", O_RDONLY);
-	if (f == -1)
-		return -1;
-
-	len = read(f, buf, sizeof(buf)-1);
-	close(f);
+	FILE* f;
+	char buf[1024];
+	long int memsize = -1;
 
-	if (len <= 0)
+	f = fopen("/proc/meminfo", "r");
+	if (f == NULL)
 		return -1;
-	buf[len] = '\0';
 
-	pos = strstr(buf, "MemTotal: ");
-	if (pos == NULL)
-		return -1;
+	while (fgets(buf, sizeof(buf), f) != NULL) {
+		long int value;
 
-	if (sscanf(pos, "MemTotal: %ld kB", &memsize) != 1)
-		return -1;
+		if (sscanf(buf, "MemTotal: %ld kB", &value) == 1) {
+			memsize = value / 1024;
+			break;
+		}
+	}
 
-	return memsize / 1024;
+	return memsize;
 }
 
 static int cpu_count(void)
 {
-	int f;
-	char buf[65536];
-	int len;
-	const char *pos;
+	FILE* f;
+	char buf[1024];
 	int count = 0;
 
-	f = open("/proc/stat", O_RDONLY);
-	if (f == -1)
+	f = fopen("/proc/stat", "r");
+	if (f == NULL)
 		return -1;
 
-	len = read(f, buf, sizeof(buf)-1);
-	close(f);
-	if (len <= 0)
-		return -1;
-	buf[len] = '\0';
-
-	pos = strstr(buf, "cpu");
-	if (pos == NULL)
-		return -1;
-
-	while (pos != NULL) {
-		if (strncmp(pos, "cpu", 3) == 0 &&isdigit(pos[3]))
+	while (fgets(buf, sizeof(buf), f) != NULL) {
+		if (strncmp(buf, "cpu", 3) == 0 && isdigit(buf[3]))
 			count++;
-		pos = strstr(&pos[3], "cpu");
 	}
 
+	fclose(f);
 	if (count == 0)
 		return -1;
 	return count;
@@ -380,29 +361,24 @@ static int cpu_count(void)
 
 static int running_processes(void)
 {
-	int f;
-	char buf[32768];
-	int len;
-	int running;
-	const char *pos;
+	FILE* f;
+	char buf[1024];
+	int running = -1;
 
-	f = open("/proc/stat", O_RDONLY);
-	if (f == -1)
+	f = fopen("/proc/stat", "r");
+	if (f == NULL)
 		return -1;
 
-	len = read(f, buf, sizeof(buf)-1);
-	close(f);
-	if (len <= 0)
-		return -1;
-	buf[len] = '\0';
-
-	pos = strstr(buf, "procs_running ");
-	if (pos == NULL)
-		return -1;
+	while (fgets(buf, sizeof(buf), f) != NULL) {
+		int value;
 
-	if (sscanf(pos, "procs_running %u", &running) != 1)
-		return -1;
+		if (sscanf(buf, "procs_running %u", &value) == 1) {
+			running = value;
+			break;
+		}
+	}
 
+	fclose(f);
 	return running;
 }
 

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/

_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

#7 lore raw
In reply to George Beshers

Yes your right --- I am guilty of not reading the source in sufficient detail.

The patch you proposed works fine, may it appear soon :-).

George

Quoted 4 lines · Kay Sievers

On Wed, 2007-05-02 at 17:26 -0400, George Beshers wrote:

Quoted 10 lines

Looking at the seq_file code, calling lseek() causes the buffer to be repopulated:
seq_lseek() -> traverse() -> m->op->show()
while show() is the method of the "stat" file that fills the buffer.

A simple read() should not do that, and just copy the content (up to 128kB) of the kernel seq_file file buffer to the user-process:
seq_read() -> copy_to_user(buf, m->buf + m->from, n)

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

#8 lore raw
In reply to George Beshers
Quoted 4 lines · George Beshers

Yes your right --- I am guilty of not reading the source in sufficient detail.

The patch you proposed works fine, may it appear soon :-).

Oh, great. Thanks for testing, I'll apply it now.

Kay

Quoted 5 lines
Quoted 4 lines · Kay Sievers

On Wed, 2007-05-02 at 17:26 -0400, George Beshers wrote:

Quoted 8 lines
Quoted 8 lines

Looking at the seq_file code, calling lseek() causes the buffer to be repopulated:
seq_lseek() -> traverse() -> m->op->show()
while show() is the method of the "stat" file that fills the buffer.

A simple read() should not do that, and just copy the content (up to 128kB) of the kernel seq_file file buffer to the user-process:
seq_read() -> copy_to_user(buf, m->buf + m->from, n)

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel