Best JavaScript code snippet using ghostjs
test_main.py
Source: test_main.py
1from unittest import TestCase2from main import join_rectangles, Rect3class Test(TestCase):4 def test_again(self):5 rects = [Rect(x=1806, y=454, w=1122, h=1282), Rect(x=2298, y=484, w=101, h=86), Rect(x=388, y=488, w=1114, h=1236), Rect(x=2117, y=492, w=38, h=39), Rect(x=2654, y=492, w=7, h=8), Rect(x=2697, y=492, w=46, h=28), Rect(x=2491, y=495, w=14, h=16), Rect(x=2772, y=495, w=13, h=14), Rect(x=1945, y=499, w=59, h=12), Rect(x=2450, y=498, w=11, h=12), Rect(x=2615, y=499, w=11, h=10), Rect(x=2031, y=501, w=16, h=16), Rect(x=2071, y=501, w=10, h=10), Rect(x=2201, y=501, w=7, h=6), Rect(x=2532, y=502, w=57, h=11), Rect(x=2788, y=503, w=9, h=10), Rect(x=2787, y=509, w=70, h=67), Rect(x=2437, y=510, w=14, h=15), Rect(x=2757, y=510, w=14, h=15), Rect(x=2083, y=512, w=10, h=11), Rect(x=2186, y=513, w=13, h=12), Rect(x=2670, y=512, w=14, h=13), Rect(x=1947, y=514, w=59, h=13), Rect(x=2245, y=514, w=13, h=15), Rect(x=2535, y=514, w=52, h=11), Rect(x=2596, y=516, w=16, h=14), Rect(x=1840, y=518, w=70, h=73), Rect(x=2012, y=519, w=16, h=16), Rect(x=2457, y=518, w=35, h=39), Rect(x=2779, y=520, w=13, h=21), Rect(x=2031, y=523, w=51, h=45), Rect(x=1926, y=525, w=7, h=6), Rect(x=2747, y=525, w=10, h=10), Rect(x=2430, y=526, w=7, h=7), Rect(x=2517, y=527, w=13, h=12), Rect(x=2199, y=528, w=45, h=32), Rect(x=2687, y=529, w=11, h=13), Rect(x=389, y=531, w=20, h=21), Rect(x=2164, y=531, w=17, h=16), Rect(x=2260, y=531, w=10, h=13), Rect(x=2102, y=533, w=8, h=7), Rect(x=2585, y=533, w=10, h=10), Rect(x=1938, y=538, w=14, h=13), Rect(x=2533, y=543, w=10, h=11), Rect(x=2832, y=542, w=8, h=8), Rect(x=2700, y=545, w=8, h=8), Rect(x=2574, y=546, w=10, h=8), Rect(x=401, y=549, w=12, h=5), Rect(x=2274, y=548, w=11, h=12), Rect(x=2154, y=551, w=8, h=6), Rect(x=2826, y=554, w=6, h=7), Rect(x=1822, y=573, w=12, h=10), Rect(x=847, y=577, w=29, h=13), Rect(x=894, y=577, w=26, h=12), Rect(x=939, y=577, w=27, h=11), Rect(x=984, y=576, w=33, h=11), Rect(x=1033, y=577, w=29, h=10), Rect(x=1080, y=577, w=33, h=11), Rect(x=1131, y=577, w=25, h=10), Rect(x=1174, y=576, w=22, h=10), Rect(x=1218, y=576, w=24, h=10), Rect(x=1258, y=576, w=26, h=10), Rect(x=1290, y=576, w=27, h=10), Rect(x=1323, y=576, w=25, h=10), Rect(x=665, y=579, w=31, h=13), Rect(x=707, y=579, w=35, h=12), Rect(x=759, y=579, w=27, h=10), Rect(x=803, y=578, w=32, h=11), Rect(x=592, y=581, w=24, h=12), Rect(x=630, y=580, w=29, h=13), Rect(x=518, y=583, w=28, h=30), Rect(x=557, y=582, w=21, h=12), Rect(x=1352, y=582, w=12, h=14), Rect(x=1849, y=586, w=14, h=9), Rect(x=2168, y=589, w=8, h=8), Rect(x=2474, y=589, w=7, h=7), Rect(x=1865, y=593, w=10, h=7), Rect(x=1937, y=593, w=7, h=12), Rect(x=2422, y=592, w=10, h=10), Rect(x=1362, y=599, w=13, h=15), Rect(x=1960, y=598, w=11, h=17), Rect(x=2125, y=599, w=8, h=8), Rect(x=2245, y=598, w=9, h=15), Rect(x=2282, y=598, w=11, h=13), Rect(x=2148, y=600, w=7, h=7), Rect(x=2166, y=600, w=7, h=7), Rect(x=2189, y=600, w=14, h=15), Rect(x=2208, y=600, w=6, h=8), Rect(x=2399, y=601, w=8, h=12), Rect(x=2018, y=606, w=6, h=8), Rect(x=2388, y=610, w=10, h=16), Rect(x=2153, y=613, w=8, h=7), Rect(x=2318, y=615, w=6, h=7), Rect(x=2370, y=615, w=8, h=11), Rect(x=481, y=616, w=38, h=28), Rect(x=1382, y=617, w=22, h=27), Rect(x=1953, y=617, w=7, h=6), Rect(x=2304, y=616, w=9, h=11), Rect(x=2362, y=617, w=6, h=7), Rect(x=2438, y=620, w=7, h=7), Rect(x=1986, y=622, w=6, h=7), Rect(x=2809, y=622, w=69, h=9), Rect(x=1943, y=630, w=8, h=6), Rect(x=1954, y=632, w=12, h=8), Rect(x=1824, y=634, w=64, h=9), Rect(x=1985, y=640, w=13, h=17), Rect(x=2811, y=640, w=65, h=9), Rect(x=1944, y=645, w=7, h=11), Rect(x=2019, y=647, w=11, h=9), Rect(x=2438, y=647, w=8, h=6), Rect(x=2448, y=646, w=8, h=6), Rect(x=476, y=648, w=15, h=29), Rect(x=1395, y=650, w=9, h=20), Rect(x=1823, y=657, w=65, h=9), Rect(x=1909, y=659, w=6, h=7), Rect(x=2687, y=658, w=6, h=8), Rect(x=2812, y=659, w=64, h=10), Rect(x=1959, y=660, w=7, h=7), Rect(x=1944, y=662, w=8, h=11), Rect(x=2004, y=664, w=7, h=7), Rect(x=2028, y=664, w=7, h=22), Rect(x=2439, y=665, w=7, h=6), Rect(x=1987, y=666, w=13, h=10), Rect(x=2450, y=666, w=12, h=9), Rect(x=1823, y=677, w=64, h=8), Rect(x=1940, y=678, w=24, h=27), Rect(x=2462, y=679, w=7, h=6), Rect(x=1983, y=681, w=18, h=15), Rect(x=2666, y=681, w=10, h=10), Rect(x=2019, y=682, w=8, h=7), Rect(x=2687, y=682, w=6, h=7), Rect(x=476, y=684, w=15, h=32), Rect(x=2448, y=685, w=13, h=14), Rect(x=2437, y=688, w=8, h=8), Rect(x=1395, y=691, w=11, h=17), Rect(x=2032, y=695, w=20, h=55), Rect(x=2461, y=694, w=9, h=11), Rect(x=2003, y=698, w=8, h=9), Rect(x=2449, y=704, w=12, h=9), Rect(x=1950, y=708, w=15, h=10), Rect(x=1987, y=708, w=15, h=9), Rect(x=2461, y=714, w=12, h=10), Rect(x=2697, y=714, w=5, h=7), Rect(x=1982, y=718, w=8, h=7), Rect(x=1942, y=720, w=9, h=8), Rect(x=2019, y=720, w=9, h=9), Rect(x=1395, y=724, w=11, h=26), Rect(x=1825, y=724, w=65, h=9), Rect(x=2448, y=725, w=13, h=11), Rect(x=1950, y=726, w=8, h=11), Rect(x=2695, y=727, w=18, h=9), Rect(x=2006, y=732, w=7, h=7), Rect(x=2462, y=733, w=11, h=8), Rect(x=477, y=734, w=15, h=22), Rect(x=1989, y=734, w=7, h=6), Rect(x=1940, y=738, w=10, h=12), Rect(x=1996, y=739, w=6, h=7), Rect(x=1949, y=743, w=10, h=10), Rect(x=2693, y=742, w=28, h=11), Rect(x=1911, y=746, w=7, h=6), Rect(x=1822, y=752, w=69, h=8), Rect(x=1990, y=755, w=7, h=7), Rect(x=1942, y=756, w=6, h=6), Rect(x=1960, y=756, w=6, h=7), Rect(x=2466, y=758, w=7, h=7), Rect(x=2695, y=760, w=15, h=10), Rect(x=1395, y=763, w=12, h=27), Rect(x=2023, y=763, w=5, h=7), Rect(x=1941, y=764, w=19, h=16), Rect(x=2711, y=764, w=9, h=8), Rect(x=2460, y=769, w=7, h=6), Rect(x=478, y=773, w=13, h=27), Rect(x=1996, y=772, w=7, h=9), Rect(x=2008, y=772, w=7, h=7), Rect(x=2701, y=773, w=8, h=8), Rect(x=2710, y=776, w=9, h=10), Rect(x=1981, y=778, w=15, h=8), Rect(x=2459, y=782, w=15, h=13), Rect(x=1947, y=787, w=12, h=9), Rect(x=1941, y=788, w=5, h=7), Rect(x=2486, y=791, w=7, h=6), Rect(x=1959, y=794, w=7, h=6), Rect(x=1989, y=799, w=16, h=9), Rect(x=1395, y=801, w=12, h=26), Rect(x=1945, y=800, w=8, h=7), Rect(x=1838, y=804, w=11, h=6), Rect(x=1850, y=805, w=40, h=11), Rect(x=2460, y=804, w=8, h=8), Rect(x=1823, y=806, w=10, h=6), Rect(x=2006, y=809, w=10, h=11), Rect(x=2486, y=808, w=10, h=8), Rect(x=478, y=811, w=14, h=30), Rect(x=1982, y=811, w=6, h=7), Rect(x=1950, y=812, w=9, h=7), Rect(x=2468, y=815, w=8, h=8), Rect(x=1990, y=823, w=12, h=9), Rect(x=2461, y=826, w=8, h=9), Rect(x=1842, y=832, w=48, h=11), Rect(x=1827, y=834, w=9, h=5), Rect(x=1983, y=837, w=6, h=8), Rect(x=1948, y=838, w=8, h=9), Rect(x=2810, y=839, w=73, h=72), Rect(x=1396, y=843, w=11, h=25), Rect(x=1988, y=842, w=8, h=9), Rect(x=2006, y=845, w=9, h=11), Rect(x=1853, y=853, w=37, h=19), Rect(x=1966, y=852, w=10, h=17), Rect(x=479, y=855, w=15, h=30), Rect(x=1995, y=854, w=7, h=6), Rect(x=1948, y=860, w=7, h=6), Rect(x=1983, y=864, w=12, h=13), Rect(x=1835, y=871, w=13, h=8), Rect(x=1825, y=879, w=15, h=17), Rect(x=1949, y=881, w=8, h=7), Rect(x=2006, y=881, w=9, h=10), Rect(x=2812, y=885, w=72, h=44), Rect(x=1397, y=886, w=10, h=27), Rect(x=1982, y=887, w=7, h=7), Rect(x=1990, y=888, w=12, h=13), Rect(x=479, y=896, w=14, h=24), Rect(x=1846, y=896, w=11, h=8), Rect(x=1860, y=903, w=34, h=20), Rect(x=1943, y=906, w=13, h=7), Rect(x=1823, y=910, w=11, h=8), Rect(x=2003, y=910, w=9, h=12), Rect(x=1840, y=918, w=10, h=8), Rect(x=1989, y=919, w=14, h=14), Rect(x=1855, y=925, w=40, h=23), Rect(x=1396, y=927, w=11, h=30), Rect(x=1945, y=928, w=12, h=10), Rect(x=480, y=936, w=12, h=29), Rect(x=1989, y=937, w=8, h=8), Rect(x=1823, y=938, w=8, h=7), Rect(x=1966, y=943, w=5, h=10), Rect(x=1838, y=947, w=11, h=10), Rect(x=1912, y=952, w=7, h=7), Rect(x=1852, y=956, w=40, h=46), Rect(x=1963, y=957, w=5, h=10), Rect(x=1982, y=958, w=12, h=20), Rect(x=1396, y=973, w=12, h=26), Rect(x=481, y=981, w=12, h=28), Rect(x=2161, y=1000, w=94, h=160), Rect(x=1844, y=1004, w=9, h=9), Rect(x=2312, y=1004, w=97, h=153), Rect(x=2463, y=1006, w=94, h=151), Rect(x=2816, y=1006, w=43, h=48), Rect(x=1050, y=1008, w=93, h=157), Rect(x=895, y=1012, w=90, h=157), Rect(x=755, y=1014, w=72, h=157), Rect(x=1831, y=1014, w=9, h=8), Rect(x=1397, y=1019, w=11, h=30), Rect(x=483, y=1027, w=11, h=28), Rect(x=1848, y=1029, w=13, h=9), Rect(x=1836, y=1039, w=10, h=9), Rect(x=1861, y=1043, w=14, h=11), Rect(x=2814, y=1044, w=72, h=88), Rect(x=1821, y=1050, w=11, h=8), Rect(x=484, y=1063, w=9, h=31), Rect(x=1860, y=1063, w=8, h=6), Rect(x=1832, y=1069, w=10, h=7), Rect(x=1397, y=1070, w=11, h=26), Rect(x=1831, y=1093, w=10, h=10), Rect(x=1843, y=1102, w=12, h=9), Rect(x=1858, y=1111, w=32, h=32), Rect(x=484, y=1113, w=11, h=27), Rect(x=1398, y=1113, w=11, h=25), Rect(x=1915, y=1112, w=8, h=6), Rect(x=2814, y=1113, w=73, h=36), Rect(x=2815, y=1133, w=71, h=78), Rect(x=1845, y=1143, w=13, h=9), Rect(x=1854, y=1144, w=39, h=24), Rect(x=1973, y=1145, w=11, h=13), Rect(x=1827, y=1154, w=15, h=8), Rect(x=484, y=1157, w=11, h=27), Rect(x=1397, y=1163, w=4, h=8), Rect(x=1399, y=1163, w=11, h=20), Rect(x=1965, y=1162, w=6, h=17), Rect(x=1841, y=1168, w=10, h=8), Rect(x=1915, y=1168, w=7, h=5), Rect(x=1824, y=1177, w=12, h=8), Rect(x=1832, y=1189, w=8, h=6), Rect(x=1972, y=1190, w=9, h=9), Rect(x=1847, y=1196, w=11, h=8), Rect(x=1397, y=1198, w=13, h=30), Rect(x=484, y=1201, w=12, h=23), Rect(x=1862, y=1203, w=35, h=22), Rect(x=1828, y=1206, w=7, h=6), Rect(x=1840, y=1211, w=11, h=9), Rect(x=1856, y=1219, w=12, h=11), Rect(x=1971, y=1226, w=12, h=9), Rect(x=1988, y=1227, w=14, h=19), Rect(x=1841, y=1229, w=22, h=14), Rect(x=1400, y=1236, w=12, h=28), Rect(x=485, y=1244, w=11, h=32), Rect(x=1987, y=1265, w=17, h=10), Rect(x=1856, y=1276, w=12, h=8), Rect(x=1400, y=1279, w=12, h=24), Rect(x=1966, y=1280, w=8, h=9), Rect(x=2823, y=1291, w=61, h=59), Rect(x=1988, y=1294, w=16, h=19), Rect(x=485, y=1297, w=13, h=31), Rect(x=1857, y=1299, w=10, h=24), Rect(x=1974, y=1308, w=7, h=8), Rect(x=1987, y=1317, w=8, h=6), Rect(x=1402, y=1318, w=11, h=27), Rect(x=2689, y=1328, w=11, h=8), Rect(x=1858, y=1332, w=7, h=7), Rect(x=1967, y=1338, w=16, h=7), Rect(x=1987, y=1341, w=17, h=9), Rect(x=485, y=1346, w=13, h=33), Rect(x=1955, y=1353, w=8, h=16), Rect(x=1867, y=1357, w=28, h=9), Rect(x=2712, y=1357, w=6, h=8), Rect(x=1852, y=1359, w=10, h=7), Rect(x=1402, y=1363, w=12, h=25), Rect(x=2682, y=1362, w=8, h=6), Rect(x=2824, y=1368, w=55, h=62), Rect(x=1988, y=1373, w=10, h=8), Rect(x=1966, y=1375, w=10, h=9), Rect(x=2655, y=1377, w=15, h=20), Rect(x=1837, y=1378, w=49, h=54), Rect(x=2705, y=1379, w=7, h=7), Rect(x=2000, y=1382, w=8, h=8), Rect(x=2693, y=1383, w=8, h=6), Rect(x=2737, y=1388, w=25, h=25), Rect(x=1958, y=1390, w=5, h=11), Rect(x=486, y=1397, w=12, h=27), Rect(x=2680, y=1398, w=8, h=8), Rect(x=1959, y=1403, w=4, h=8), Rect(x=1989, y=1402, w=10, h=9), Rect(x=2707, y=1405, w=13, h=9), Rect(x=2003, y=1406, w=11, h=9), Rect(x=2735, y=1407, w=13, h=9), Rect(x=1978, y=1413, w=7, h=7), Rect(x=2693, y=1412, w=7, h=7), Rect(x=1402, y=1415, w=12, h=18), Rect(x=1966, y=1420, w=9, h=10), Rect(x=2725, y=1425, w=15, h=9), Rect(x=2706, y=1430, w=12, h=10), Rect(x=1988, y=1432, w=12, h=13), Rect(x=2680, y=1435, w=9, h=9), Rect(x=1978, y=1437, w=7, h=7), Rect(x=486, y=1439, w=13, h=24), Rect(x=2820, y=1439, w=67, h=18), Rect(x=2692, y=1442, w=8, h=7), Rect(x=1402, y=1448, w=12, h=27), Rect(x=2733, y=1448, w=7, h=7), Rect(x=1852, y=1457, w=11, h=7), Rect(x=2704, y=1456, w=15, h=8), Rect(x=2723, y=1456, w=7, h=8), Rect(x=1835, y=1458, w=12, h=8), Rect(x=1865, y=1459, w=33, h=12), Rect(x=1970, y=1459, w=14, h=10), Rect(x=1991, y=1459, w=9, h=9), Rect(x=2666, y=1458, w=7, h=16), Rect(x=2692, y=1469, w=9, h=7), Rect(x=2762, y=1468, w=7, h=5), Rect(x=487, y=1474, w=11, h=26), Rect(x=2677, y=1474, w=7, h=7), Rect(x=2732, y=1475, w=7, h=6), Rect(x=2705, y=1479, w=14, h=13), Rect(x=2723, y=1480, w=7, h=8), Rect(x=1994, y=1482, w=9, h=8), Rect(x=2668, y=1483, w=7, h=6), Rect(x=2740, y=1482, w=7, h=6), Rect(x=2823, y=1483, w=64, h=10), Rect(x=2762, y=1484, w=7, h=7), Rect(x=1402, y=1488, w=12, h=25), Rect(x=1833, y=1489, w=62, h=7), Rect(x=2769, y=1492, w=8, h=7), Rect(x=2670, y=1494, w=14, h=22), Rect(x=2692, y=1496, w=7, h=7), Rect(x=2763, y=1501, w=15, h=10), Rect(x=2721, y=1505, w=7, h=6), Rect(x=2752, y=1506, w=7, h=6), Rect(x=2711, y=1511, w=6, h=7), Rect(x=487, y=1514, w=11, h=23), Rect(x=2702, y=1515, w=8, h=6), Rect(x=2770, y=1517, w=7, h=15), Rect(x=1833, y=1518, w=60, h=66), Rect(x=2692, y=1519, w=8, h=7), Rect(x=1403, y=1521, w=10, h=57), Rect(x=2761, y=1523, w=9, h=6), Rect(x=2733, y=1525, w=12, h=10), Rect(x=1848, y=1537, w=7, h=10), Rect(x=2679, y=1546, w=7, h=7), Rect(x=2732, y=1549, w=12, h=6), Rect(x=1839, y=1555, w=9, h=10), Rect(x=488, y=1557, w=11, h=24), Rect(x=2709, y=1575, w=5, h=7), Rect(x=489, y=1583, w=23, h=26), Rect(x=1394, y=1588, w=13, h=11), Rect(x=2296, y=1599, w=53, h=22), Rect(x=2374, y=1598, w=30, h=12), Rect(x=1379, y=1600, w=13, h=12), Rect(x=1850, y=1607, w=62, h=67), Rect(x=1862, y=1610, w=10, h=7), Rect(x=1354, y=1615, w=25, h=16), Rect(x=1836, y=1615, w=18, h=9), Rect(x=522, y=1619, w=33, h=19), Rect(x=1212, y=1623, w=20, h=10), Rect(x=1249, y=1623, w=23, h=10), Rect(x=1285, y=1623, w=19, h=9), Rect(x=1318, y=1622, w=19, h=11), Rect(x=960, y=1625, w=27, h=11), Rect(x=997, y=1625, w=27, h=9), Rect(x=1034, y=1625, w=28, h=9), Rect(x=1069, y=1625, w=25, h=9), Rect(x=1105, y=1624, w=26, h=11), Rect(x=1140, y=1624, w=21, h=10), Rect(x=1174, y=1624, w=23, h=10), Rect(x=2328, y=1625, w=77, h=65), Rect(x=821, y=1626, w=24, h=11), Rect(x=850, y=1627, w=22, h=10), Rect(x=883, y=1626, w=25, h=11), Rect(x=926, y=1627, w=22, h=9), Rect(x=564, y=1629, w=22, h=9), Rect(x=593, y=1629, w=24, h=9), Rect(x=626, y=1628, w=22, h=11), Rect(x=656, y=1628, w=20, h=11), Rect(x=687, y=1629, w=22, h=9), Rect(x=726, y=1629, w=20, h=10), Rect(x=756, y=1629, w=26, h=9), Rect(x=788, y=1628, w=21, h=9), Rect(x=2202, y=1628, w=53, h=41), Rect(x=2290, y=1630, w=18, h=13), Rect(x=2626, y=1635, w=62, h=10), Rect(x=2796, y=1636, w=15, h=34), Rect(x=2039, y=1638, w=62, h=20), Rect(x=2592, y=1640, w=7, h=9), Rect(x=2277, y=1643, w=9, h=7), Rect(x=2547, y=1642, w=10, h=9), Rect(x=2121, y=1644, w=12, h=13), Rect(x=1956, y=1646, w=7, h=6), Rect(x=2177, y=1647, w=9, h=9), Rect(x=2627, y=1646, w=57, h=12), Rect(x=1891, y=1648, w=9, h=7), Rect(x=2307, y=1648, w=14, h=31), Rect(x=2602, y=1651, w=7, h=7), Rect(x=2446, y=1652, w=11, h=10), Rect(x=1878, y=1655, w=10, h=7), Rect(x=2017, y=1655, w=12, h=11), Rect(x=2529, y=1654, w=14, h=13), Rect(x=2106, y=1657, w=15, h=15), Rect(x=2188, y=1657, w=7, h=8), Rect(x=2262, y=1657, w=9, h=9), Rect(x=2131, y=1660, w=46, h=27), Rect(x=2769, y=1661, w=15, h=15), Rect(x=1865, y=1662, w=9, h=7), Rect(x=2551, y=1663, w=46, h=32), Rect(x=2029, y=1665, w=8, h=10), Rect(x=2457, y=1664, w=9, h=9), Rect(x=2708, y=1665, w=46, h=12), Rect(x=2255, y=1667, w=8, h=7), Rect(x=1930, y=1668, w=12, h=11), Rect(x=2199, y=1669, w=6, h=6), Rect(x=1955, y=1670, w=61, h=12), Rect(x=2667, y=1671, w=16, h=16), Rect(x=2275, y=1675, w=37, h=9), Rect(x=2784, y=1674, w=11, h=13), Rect(x=2469, y=1677, w=15, h=14), Rect(x=2711, y=1677, w=46, h=12), Rect(x=2077, y=1678, w=22, h=22), Rect(x=1955, y=1683, w=61, h=12), Rect(x=1524, y=1987, w=49, h=61), Rect(x=1939, y=1987, w=59, h=62), Rect(x=653, y=1988, w=59, h=62), Rect(x=1617, y=2007, w=43, h=54), Rect(x=897, y=2009, w=42, h=41), Rect(x=1220, y=2009, w=33, h=42), Rect(x=1257, y=2009, w=42, h=42), Rect(x=1347, y=2008, w=30, h=43), Rect(x=1386, y=2009, w=34, h=41), Rect(x=1425, y=2009, w=43, h=42), Rect(x=1579, y=2009, w=36, h=41), Rect(x=1664, y=2009, w=41, h=40), Rect(x=1711, y=2008, w=41, h=42), Rect(x=1758, y=2008, w=33, h=42), Rect(x=2113, y=2009, w=32, h=41), Rect(x=2151, y=2009, w=42, h=40), Rect(x=2201, y=2008, w=32, h=42), Rect(x=2239, y=2008, w=39, h=59), Rect(x=2390, y=2009, w=46, h=41), Rect(x=2482, y=2009, w=39, h=40), Rect(x=2527, y=2008, w=34, h=43), Rect(x=2568, y=2008, w=60, h=43), Rect(x=2747, y=2009, w=41, h=43), Rect(x=2835, y=2009, w=38, h=60), Rect(x=721, y=2010, w=39, h=59), Rect(x=766, y=2010, w=34, h=41), Rect(x=808, y=2011, w=35, h=38), Rect(x=850, y=2011, w=41, h=40), Rect(x=943, y=2011, w=36, h=39), Rect(x=985, y=2010, w=43, h=40), Rect(x=1035, y=2010, w=34, h=41), Rect(x=1305, y=2010, w=35, h=41), Rect(x=2071, y=2010, w=34, h=41), Rect(x=2441, y=2010, w=34, h=41), Rect(x=2794, y=2010, w=33, h=42), Rect(x=2284, y=2012, w=36, h=39), Rect(x=2635, y=2012, w=42, h=39), Rect(x=1119, y=2025, w=74, h=7), Rect(x=1839, y=2024, w=72, h=7), Rect(x=525, y=2026, w=72, h=7), Rect(x=2879, y=2027, w=25, h=8), Rect(x=1798, y=2039, w=12, h=11), Rect(x=1078, y=2040, w=14, h=24), Rect(x=1558, y=2075, w=37, h=63), Rect(x=1431, y=2076, w=29, h=62), Rect(x=1688, y=2076, w=38, h=64), Rect(x=1985, y=2096, w=33, h=42), Rect(x=2078, y=2097, w=34, h=41), Rect(x=2159, y=2097, w=40, h=59), Rect(x=2409, y=2097, w=31, h=42), Rect(x=2449, y=2097, w=30, h=42), Rect(x=2486, y=2097, w=40, h=59), Rect(x=2530, y=2097, w=40, h=41), Rect(x=2665, y=2097, w=34, h=41), Rect(x=392, y=2099, w=35, h=40), Rect(x=432, y=2098, w=37, h=42), Rect(x=671, y=2099, w=39, h=59), Rect(x=807, y=2099, w=34, h=43), Rect(x=958, y=2099, w=37, h=41), Rect(x=1056, y=2099, w=44, h=41), Rect(x=1107, y=2099, w=34, h=41), Rect(x=1147, y=2098, w=41, h=59), Rect(x=1238, y=2098, w=41, h=53), Rect(x=1282, y=2099, w=21, h=40), Rect(x=1300, y=2099, w=24, h=41), Rect(x=1332, y=2099, w=32, h=42), Rect(x=1787, y=2099, w=46, h=42), Rect(x=1893, y=2098, w=42, h=40), Rect(x=1943, y=2098, w=34, h=41), Rect(x=2023, y=2098, w=49, h=40), Rect(x=2119, y=2098, w=34, h=41), Rect(x=2309, y=2099, w=37, h=41), Rect(x=2577, y=2099, w=36, h=41), Rect(x=2618, y=2098, w=39, h=40), Rect(x=2781, y=2098, w=39, h=41), Rect(x=2866, y=2099, w=35, h=42), Rect(x=474, y=2100, w=17, h=25), Rect(x=494, y=2101, w=20, h=39), Rect(x=519, y=2100, w=42, h=40), Rect(x=567, y=2101, w=41, h=40), Rect(x=715, y=2100, w=44, h=41), Rect(x=761, y=2100, w=40, h=52), Rect(x=848, y=2100, w=51, h=41), Rect(x=1192, y=2100, w=44, h=41), Rect(x=2204, y=2100, w=43, h=40), Rect(x=2825, y=2100, w=35, h=40), Rect(x=1475, y=2115, w=71, h=6), Rect(x=1605, y=2114, w=72, h=6), Rect(x=2707, y=2129, w=12, h=24), Rect(x=547, y=2167, w=37, h=62), Rect(x=392, y=2187, w=42, h=56), Rect(x=509, y=2187, w=32, h=42), Rect(x=752, y=2187, w=43, h=42), Rect(x=466, y=2189, w=35, h=40), Rect(x=589, y=2188, w=42, h=41), Rect(x=663, y=2188, w=42, h=40), Rect(x=713, y=2188, w=34, h=41), Rect(x=799, y=2188, w=44, h=56), Rect(x=845, y=2188, w=39, h=41), Rect(x=890, y=2189, w=43, h=40), Rect(x=939, y=2189, w=34, h=41), Rect(x=979, y=2188, w=33, h=42), Rect(x=1016, y=2189, w=44, h=41), Rect(x=1066, y=2219, w=12, h=11), Rect(x=523, y=2253, w=60, h=62), Rect(x=2699, y=2256, w=35, h=61), Rect(x=1969, y=2273, w=32, h=42), Rect(x=2198, y=2273, w=34, h=43), Rect(x=633, y=2275, w=57, h=42), Rect(x=696, y=2275, w=65, h=40), Rect(x=938, y=2275, w=33, h=42), Rect(x=1113, y=2275, w=39, h=59), Rect(x=1159, y=2274, w=32, h=42), Rect(x=1196, y=2275, w=43, h=42), Rect(x=1280, y=2275, w=37, h=41), Rect(x=1360, y=2274, w=32, h=43), Rect(x=1400, y=2275, w=32, h=42), Rect(x=1439, y=2275, w=39, h=59), Rect(x=1483, y=2274, w=41, h=42), Rect(x=1532, y=2275, w=34, h=41), Rect(x=1572, y=2275, w=39, h=40), Rect(x=1620, y=2275, w=34, h=41), Rect(x=1833, y=2274, w=37, h=41), Rect(x=1923, y=2275, w=40, h=52), Rect(x=2006, y=2274, w=41, h=41), Rect(x=2110, y=2275, w=40, h=40), Rect(x=2156, y=2275, w=34, h=41), Rect(x=2325, y=2274, w=32, h=43), Rect(x=2402, y=2275, w=32, h=42), Rect(x=2440, y=2274, w=32, h=41), Rect(x=2477, y=2274, w=34, h=43), Rect(x=2556, y=2275, w=42, h=41), Rect(x=2645, y=2275, w=48, h=41), Rect(x=587, y=2276, w=41, h=40), Rect(x=767, y=2276, w=38, h=42), Rect(x=846, y=2276, w=44, h=41), Rect(x=895, y=2276, w=36, h=41), Rect(x=975, y=2276, w=49, h=40), Rect(x=1031, y=2276, w=35, h=40), Rect(x=1072, y=2276, w=34, h=41), Rect(x=1698, y=2276, w=43, h=40), Rect(x=1785, y=2276, w=44, h=56), Rect(x=1876, y=2276, w=41, h=40), Rect(x=2276, y=2277, w=21, h=39), Rect(x=2295, y=2276, w=25, h=40), Rect(x=2604, y=2276, w=34, h=41), Rect(x=2739, y=2276, w=41, h=40), Rect(x=2787, y=2276, w=40, h=39), Rect(x=2835, y=2276, w=34, h=41), Rect(x=2875, y=2292, w=24, h=8), Rect(x=2056, y=2306, w=12, h=25), Rect(x=695, y=2341, w=37, h=63), Rect(x=1892, y=2341, w=37, h=63), Rect(x=2027, y=2341, w=29, h=63), Rect(x=568, y=2342, w=29, h=62), Rect(x=825, y=2343, w=38, h=64), Rect(x=1761, y=2342, w=38, h=64), Rect(x=389, y=2363, w=42, h=53), Rect(x=438, y=2364, w=41, h=40), Rect(x=897, y=2364, w=37, h=41), Rect(x=969, y=2365, w=31, h=42), Rect(x=1009, y=2365, w=31, h=42), Rect(x=1092, y=2364, w=40, h=41), Rect(x=1139, y=2365, w=38, h=42), Rect(x=1179, y=2365, w=41, h=41), Rect(x=1228, y=2365, w=32, h=42), Rect(x=1345, y=2365, w=35, h=42), Rect(x=1385, y=2365, w=41, h=41), Rect(x=1568, y=2365, w=32, h=42), Rect(x=1647, y=2365, w=33, h=42), Rect(x=1686, y=2365, w=41, h=41), Rect(x=484, y=2366, w=44, h=41), Rect(x=1047, y=2366, w=39, h=59), Rect(x=1295, y=2366, w=44, h=41), Rect(x=1432, y=2366, w=44, h=56), Rect(x=1478, y=2366, w=40, h=39), Rect(x=1525, y=2366, w=36, h=41), Rect(x=1606, y=2367, w=35, h=40), Rect(x=611, y=2380, w=73, h=7), Rect(x=742, y=2380, w=73, h=7), Rect(x=1809, y=2380, w=72, h=7), Rect(x=1941, y=2380, w=71, h=7), Rect(x=2069, y=2395, w=11, h=12), Rect(x=649, y=2429, w=59, h=64), Rect(x=2133, y=2429, w=59, h=63), Rect(x=2351, y=2430, w=60, h=64), Rect(x=1428, y=2432, w=11, h=48), Rect(x=1209, y=2434, w=37, h=62), Rect(x=713, y=2453, w=36, h=42), Rect(x=1127, y=2453, w=34, h=41), Rect(x=1251, y=2452, w=36, h=44), Rect(x=1571, y=2453, w=33, h=42), Rect(x=1609, y=2453, w=41, h=42), Rect(x=1699, y=2453, w=31, h=42), Rect(x=1897, y=2452, w=37, h=42), Rect(x=1939, y=2452, w=44, h=40), Rect(x=2314, y=2452, w=18, h=42), Rect(x=2429, y=2452, w=18, h=43), Rect(x=2532, y=2453, w=42, h=40), Rect(x=2581, y=2453, w=34, h=41), Rect(x=2620, y=2453, w=41, h=41), Rect(x=2666, y=2453, w=44, h=56), Rect(x=2717, y=2453, w=33, h=40), Rect(x=2757, y=2452, w=34, h=41), Rect(x=2800, y=2452, w=29, h=41), Rect(x=716, y=2454, w=10, h=14), Rect(x=754, y=2454, w=43, h=42), Rect(x=878, y=2454, w=39, h=59), Rect(x=924, y=2455, w=36, h=41), Rect(x=965, y=2454, w=32, h=43), Rect(x=1075, y=2454, w=44, h=40), Rect(x=1168, y=2454, w=34, h=41), Rect(x=1294, y=2454, w=39, h=59), Rect(x=1339, y=2454, w=34, h=41), Rect(x=1380, y=2454, w=34, h=41), Rect(x=1657, y=2454, w=36, h=41), Rect(x=1738, y=2454, w=34, h=41), Rect(x=1777, y=2455, w=41, h=40), Rect(x=2198, y=2454, w=31, h=42), Rect(x=2419, y=2455, w=14, h=37), Rect(x=2837, y=2454, w=33, h=39), Rect(x=2328, y=2456, w=14, h=34), Rect(x=520, y=2465, w=75, h=10), Rect(x=2032, y=2467, w=72, h=6), Rect(x=1471, y=2469, w=73, h=8), Rect(x=2876, y=2468, w=24, h=8), Rect(x=1427, y=2482, w=12, h=13), Rect(x=1991, y=2482, w=11, h=12), Rect(x=548, y=2521, w=53, h=62), Rect(x=509, y=2541, w=18, h=42), Rect(x=388, y=2542, w=34, h=41), Rect(x=426, y=2542, w=23, h=42), Rect(x=449, y=2542, w=20, h=41), Rect(x=622, y=2542, w=18, h=42), Rect(x=613, y=2545, w=13, h=36), Rect(x=522, y=2546, w=15, h=34), Rect(x=654, y=2574, w=12, h=11), Rect(x=653, y=2610, w=58, h=62), Rect(x=2316, y=2610, w=25, h=62), Rect(x=2340, y=2610, w=36, h=62), Rect(x=1586, y=2615, w=25, h=13), Rect(x=882, y=2631, w=32, h=42), Rect(x=970, y=2631, w=32, h=42), Rect(x=1009, y=2631, w=39, h=59), Rect(x=1444, y=2631, w=36, h=39), Rect(x=1485, y=2631, w=41, h=41), Rect(x=1829, y=2630, w=37, h=41), Rect(x=1872, y=2631, w=20, h=40), Rect(x=1891, y=2631, w=22, h=40), Rect(x=1919, y=2631, w=40, h=58), Rect(x=1964, y=2631, w=42, h=56), Rect(x=2010, y=2631, w=31, h=40), Rect(x=2048, y=2630, w=34, h=41), Rect(x=2089, y=2631, w=35, h=38), Rect(x=2131, y=2631, w=42, h=56), Rect(x=2177, y=2631, w=20, h=39), Rect(x=2196, y=2630, w=37, h=42), Rect(x=2437, y=2631, w=33, h=42), Rect(x=2529, y=2631, w=34, h=41), Rect(x=2571, y=2631, w=33, h=40), Rect(x=2611, y=2630, w=39, h=59), Rect(x=2655, y=2631, w=21, h=40), Rect(x=2676, y=2631, w=19, h=40), Rect(x=2864, y=2631, w=33, h=40), Rect(x=718, y=2633, w=43, h=57), Rect(x=920, y=2632, w=42, h=40), Rect(x=1148, y=2633, w=46, h=41), Rect(x=1200, y=2632, w=32, h=42), Rect(x=1238, y=2632, w=40, h=59), Rect(x=1286, y=2632, w=31, h=41), Rect(x=1324, y=2632, w=33, h=42), Rect(x=1361, y=2632, w=34, h=41), Rect(x=1403, y=2632, w=36, h=41), Rect(x=1532, y=2632, w=42, h=41), Rect(x=1578, y=2632, w=44, h=41), Rect(x=1680, y=2633, w=44, h=41), Rect(x=1730, y=2632, w=42, h=41), Rect(x=2475, y=2632, w=31, h=40), Rect(x=2505, y=2632, w=18, h=40), Rect(x=2777, y=2632, w=36, h=40), Rect(x=2822, y=2633, w=11, h=13), Rect(x=2830, y=2633, w=17, h=39), Rect(x=2844, y=2633, w=11, h=12), Rect(x=840, y=2635, w=35, h=40), Rect(x=1054, y=2634, w=36, h=39), Rect(x=523, y=2646, w=75, h=8), Rect(x=767, y=2662, w=13, h=25), Rect(x=2243, y=2662, w=11, h=11), Rect(x=2703, y=2663, w=14, h=24), Rect(x=389, y=2718, w=35, h=40), Rect(x=490, y=2719, w=42, h=41), Rect(x=430, y=2720, w=55, h=39), Rect(x=537, y=2720, w=35, h=42), Rect(x=578, y=2721, w=40, h=52), Rect(x=740, y=2720, w=37, h=41), Rect(x=814, y=2721, w=31, h=42), Rect(x=853, y=2721, w=32, h=41), Rect(x=892, y=2721, w=40, h=59), Rect(x=936, y=2721, w=42, h=41), Rect(x=1073, y=2721, w=32, h=42), Rect(x=623, y=2722, w=41, h=40), Rect(x=672, y=2722, w=33, h=40), Rect(x=986, y=2722, w=34, h=41), Rect(x=1025, y=2722, w=41, h=40), Rect(x=1115, y=2751, w=11, h=13), Rect(x=519, y=2786, w=60, h=62), Rect(x=667, y=2786, w=37, h=63), Rect(x=1878, y=2787, w=38, h=64), Rect(x=2009, y=2786, w=37, h=63), Rect(x=2255, y=2786, w=38, h=64), Rect(x=2516, y=2787, w=37, h=63), Rect(x=797, y=2788, w=38, h=64), Rect(x=933, y=2789, w=30, h=63), Rect(x=1751, y=2789, w=29, h=62), Rect(x=2390, y=2788, w=29, h=62), Rect(x=1485, y=2809, w=36, h=41), Rect(x=1521, y=2809, w=20, h=41), Rect(x=1613, y=2809, w=41, h=41), Rect(x=2058, y=2809, w=12, h=13), Rect(x=2603, y=2809, w=42, h=40), Rect(x=2651, y=2809, w=35, h=42), Rect(x=2690, y=2809, w=41, h=41), Rect(x=584, y=2810, w=31, h=42), Rect(x=1015, y=2811, w=37, h=41), Rect(x=1100, y=2810, w=31, h=42), Rect(x=1140, y=2810, w=32, h=42), Rect(x=1179, y=2810, w=39, h=59), Rect(x=1223, y=2810, w=41, h=42), Rect(x=1271, y=2811, w=36, h=41), Rect(x=1311, y=2810, w=43, h=42), Rect(x=1360, y=2811, w=32, h=42), Rect(x=1442, y=2810, w=37, h=41), Rect(x=1545, y=2810, w=65, h=40), Rect(x=2175, y=2810, w=9, h=16), Rect(x=2173, y=2810, w=32, h=42), Rect(x=2736, y=2810, w=42, h=56), Rect(x=2782, y=2810, w=36, h=40), Rect(x=2825, y=2810, w=19, h=40), Rect(x=2845, y=2811, w=22, h=39), Rect(x=1662, y=2812, w=34, h=41), Rect(x=2125, y=2812, w=21, h=40), Rect(x=2143, y=2812, w=24, h=39), Rect(x=714, y=2825, w=72, h=7), Rect(x=2304, y=2825, w=70, h=6), Rect(x=2433, y=2825, w=72, h=7), Rect(x=2872, y=2825, w=26, h=8), Rect(x=845, y=2826, w=73, h=7), Rect(x=1795, y=2826, w=72, h=6), Rect(x=1927, y=2826, w=70, h=6), Rect(x=2058, y=2839, w=13, h=25), Rect(x=584, y=2876, w=38, h=61), Rect(x=720, y=2877, w=29, h=62), Rect(x=846, y=2878, w=38, h=62), Rect(x=384, y=2897, w=44, h=40), Rect(x=435, y=2896, w=34, h=41), Rect(x=475, y=2896, w=34, h=43), Rect(x=513, y=2899, w=36, h=39), Rect(x=633, y=2915, w=71, h=5), Rect(x=762, y=2915, w=74, h=6), Rect(x=892, y=2929, w=12, h=12), Rect(x=648, y=2963, w=58, h=62), Rect(x=2086, y=2965, w=52, h=61), Rect(x=2619, y=2983, w=40, h=41), Rect(x=1703, y=2985, w=33, h=42), Rect(x=1741, y=2985, w=42, h=40), Rect(x=1790, y=2984, w=39, h=59), Rect(x=1835, y=2985, w=34, h=41), Rect(x=1877, y=2985, w=33, h=42), Rect(x=2275, y=2984, w=40, h=41), Rect(x=2322, y=2984, w=33, h=42), Rect(x=2502, y=2985, w=26, h=40), Rect(x=2529, y=2985, w=22, h=40), Rect(x=2558, y=2984, w=34, h=41), Rect(x=2599, y=2984, w=15, h=17), Rect(x=2664, y=2985, w=41, h=40), Rect(x=2808, y=2984, w=42, h=41), Rect(x=2855, y=2984, w=43, h=42), Rect(x=712, y=2986, w=44, h=56), Rect(x=837, y=2986, w=42, h=41), Rect(x=926, y=2987, w=43, h=42), Rect(x=1219, y=2987, w=40, h=52), Rect(x=1411, y=2986, w=32, h=42), Rect(x=1448, y=2987, w=66, h=39), Rect(x=1519, y=2987, w=36, h=39), Rect(x=1914, y=2986, w=41, h=40), Rect(x=1961, y=2987, w=41, h=41), Rect(x=2142, y=2986, w=34, h=41), Rect(x=2182, y=2986, w=40, h=52), Rect(x=2228, y=2986, w=41, h=40), Rect(x=885, y=2988, w=36, h=41), Rect(x=1047, y=2989, w=33, h=40), Rect(x=1085, y=2988, w=36, h=41), Rect(x=1121, y=2988, w=21, h=40), Rect(x=1264, y=2988, w=44, h=56), Rect(x=1312, y=2988, w=49, h=40), Rect(x=1368, y=2988, w=36, h=41), Rect(x=2713, y=2988, w=34, h=41), Rect(x=519, y=3000, w=74, h=9), Rect(x=1603, y=3001, w=73, h=7), Rect(x=2403, y=3000, w=71, h=7), Rect(x=2598, y=3003, w=20, h=22), Rect(x=1562, y=3014, w=14, h=24), Rect(x=2361, y=3014, w=12, h=24), Rect(x=761, y=3018, w=14, h=24), Rect(x=1500, y=3057, w=35, h=61), Rect(x=432, y=3072, w=42, h=41), Rect(x=521, y=3073, w=62, h=42), Rect(x=387, y=3074, w=44, h=56), Rect(x=480, y=3074, w=34, h=41), Rect(x=766, y=3075, w=42, h=41), Rect(x=856, y=3075, w=43, h=60), Rect(x=942, y=3075, w=34, h=41), Rect(x=1027, y=3075, w=42, h=41), Rect(x=1746, y=3075, w=44, h=41), Rect(x=1797, y=3075, w=32, h=42), Rect(x=1835, y=3074, w=40, h=59), Rect(x=2014, y=3075, w=31, h=42), Rect(x=2053, y=3075, w=32, h=42), Rect(x=2092, y=3074, w=40, h=61), Rect(x=2136, y=3074, w=41, h=42), Rect(x=2184, y=3074, w=34, h=41), Rect(x=2224, y=3074, w=41, h=41), Rect(x=2271, y=3075, w=34, h=41), Rect(x=2606, y=3075, w=32, h=43), Rect(x=2645, y=3075, w=32, h=42), Rect(x=2728, y=3074, w=41, h=43), Rect(x=2775, y=3074, w=35, h=43), Rect(x=2814, y=3075, w=42, h=42), Rect(x=2862, y=3075, w=33, h=43), Rect(x=587, y=3076, w=43, h=40), Rect(x=637, y=3076, w=34, h=41), Rect(x=676, y=3077, w=36, h=39), Rect(x=814, y=3076, w=34, h=41), Rect(x=902, y=3077, w=33, h=40), Rect(x=981, y=3077, w=40, h=39), Rect(x=1171, y=3076, w=34, h=41), Rect(x=1214, y=3076, w=34, h=41), Rect(x=1255, y=3076, w=41, h=42), Rect(x=1371, y=3077, w=40, h=40), Rect(x=1460, y=3076, w=34, h=41), Rect(x=1542, y=3076, w=35, h=40), Rect(x=1576, y=3076, w=21, h=40), Rect(x=1649, y=3076, w=44, h=42), Rect(x=1882, y=3076, w=32, h=42), Rect(x=1919, y=3077, w=40, h=52), Rect(x=2312, y=3076, w=51, h=41), Rect(x=2416, y=3077, w=43, h=40), Rect(x=2514, y=3076, w=37, h=41), Rect(x=2684, y=3076, w=40, h=59), Rect(x=1074, y=3078, w=43, h=40), Rect(x=1419, y=3078, w=33, h=40), Rect(x=1303, y=3107, w=13, h=26), Rect(x=1932, y=3144, w=28, h=49), Rect(x=386, y=3163, w=42, h=40), Rect(x=435, y=3164, w=34, h=41), Rect(x=476, y=3164, w=39, h=40), Rect(x=521, y=3165, w=44, h=56), Rect(x=567, y=3165, w=40, h=40), Rect(x=659, y=3164, w=43, h=42), Rect(x=708, y=3165, w=34, h=41), Rect(x=749, y=3165, w=33, h=42), Rect(x=787, y=3165, w=36, h=41), Rect(x=1178, y=3165, w=34, h=43), Rect(x=1246, y=3164, w=64, h=44), Rect(x=1383, y=3164, w=40, h=61), Rect(x=1471, y=3165, w=33, h=42), Rect(x=1603, y=3164, w=36, h=42), Rect(x=1687, y=3164, w=62, h=42), Rect(x=1755, y=3165, w=32, h=42), Rect(x=1793, y=3165, w=43, h=41), Rect(x=1892, y=3165, w=32, h=42), Rect(x=613, y=3166, w=43, h=40), Rect(x=857, y=3166, w=34, h=41), Rect(x=896, y=3166, w=41, h=53), Rect(x=941, y=3166, w=44, h=40), Rect(x=991, y=3166, w=34, h=41), Rect(x=1059, y=3166, w=44, h=41), Rect(x=1137, y=3166, w=34, h=41), Rect(x=1316, y=3166, w=32, h=42), Rect(x=1430, y=3166, w=36, h=41), Rect(x=1509, y=3166, w=42, h=40), Rect(x=1558, y=3166, w=34, h=41), Rect(x=1646, y=3166, w=34, h=41), Rect(x=1841, y=3166, w=43, h=40), Rect(x=1597, y=3192, w=16, h=14), Rect(x=1937, y=3195, w=12, h=12), Rect(x=1400, y=3220, w=5, h=4), Rect(x=1884, y=3231, w=60, h=62), Rect(x=2321, y=3231, w=60, h=63), Rect(x=647, y=3232, w=61, h=62), Rect(x=792, y=3253, w=32, h=42), Rect(x=1052, y=3253, w=41, h=42), Rect(x=1435, y=3253, w=32, h=42), Rect(x=1472, y=3253, w=42, h=54), Rect(x=1663, y=3253, w=32, h=42), Rect(x=1700, y=3253, w=44, h=41), Rect(x=1797, y=3253, w=43, h=40), Rect(x=1948, y=3252, w=41, h=41), Rect(x=2057, y=3253, w=65, h=40), Rect(x=2129, y=3253, w=34, h=41), Rect(x=2641, y=3253, w=62, h=42), Rect(x=2783, y=3252, w=32, h=44), Rect(x=2860, y=3253, w=36, h=42), Rect(x=741, y=3254, w=44, h=40), Rect(x=1014, y=3254, w=33, h=42), Rect(x=1100, y=3254, w=34, h=41), Rect(x=1143, y=3254, w=30, h=41), Rect(x=1181, y=3254, w=34, h=41), Rect(x=1305, y=3255, w=36, h=40), Rect(x=1383, y=3255, w=44, h=40), Rect(x=1518, y=3254, w=34, h=41), Rect(x=1558, y=3255, w=44, h=56), Rect(x=1606, y=3254, w=51, h=41), Rect(x=1749, y=3254, w=43, h=39), Rect(x=1995, y=3254, w=57, h=41), Rect(x=2386, y=3255, w=44, h=56), Rect(x=2469, y=3254, w=42, h=41), Rect(x=2517, y=3255, w=34, h=41), Rect(x=2556, y=3254, w=43, h=42), Rect(x=2709, y=3254, w=32, h=42), Rect(x=2820, y=3254, w=35, h=41), Rect(x=831, y=3256, w=33, h=39), Rect(x=1220, y=3257, w=43, h=42), Rect(x=520, y=3268, w=72, h=6), Rect(x=914, y=3269, w=73, h=7), Rect(x=2218, y=3269, w=73, h=7), Rect(x=712, y=3270, w=26, h=6), Rect(x=2172, y=3283, w=12, h=12), Rect(x=872, y=3284, w=14, h=24), Rect(x=765, y=3321, w=28, h=48), Rect(x=832, y=3320, w=60, h=63), Rect(x=1296, y=3322, w=11, h=47), Rect(x=429, y=3341, w=34, h=41), Rect(x=470, y=3341, w=31, h=42), Rect(x=605, y=3340, w=62, h=42), Rect(x=386, y=3343, w=35, h=38), Rect(x=508, y=3342, w=49, h=40), Rect(x=564, y=3342, w=34, h=41), Rect(x=671, y=3342, w=44, h=40), Rect(x=722, y=3342, w=34, h=41), Rect(x=899, y=3342, w=32, h=42), Rect(x=1079, y=3342, w=31, h=42), Rect(x=1116, y=3343, w=41, h=41), Rect(x=1205, y=3343, w=31, h=42), Rect(x=1243, y=3343, w=42, h=41), Rect(x=938, y=3344, w=34, h=41), Rect(x=1028, y=3344, w=44, h=40), Rect(x=1163, y=3345, w=36, h=39), Rect(x=769, y=3372, w=12, h=12), Rect(x=980, y=3372, w=13, h=25), Rect(x=1295, y=3372, w=12, h=12), Rect(x=646, y=3409, w=52, h=62), Rect(x=1975, y=3409, w=44, h=63), Rect(x=746, y=3430, w=41, h=42), Rect(x=937, y=3431, w=34, h=41), Rect(x=1017, y=3431, w=37, h=40), Rect(x=1062, y=3430, w=32, h=42), Rect(x=1526, y=3431, w=33, h=42), Rect(x=1785, y=3431, w=41, h=42), Rect(x=2025, y=3431, w=41, h=40), Rect(x=2075, y=3430, w=36, h=43), Rect(x=2115, y=3430, w=39, h=41), Rect(x=2161, y=3431, w=41, h=40), Rect(x=2209, y=3431, w=34, h=41), Rect(x=2529, y=3431, w=41, h=55), Rect(x=2755, y=3430, w=40, h=61), Rect(x=705, y=3432, w=36, h=41), Rect(x=979, y=3433, w=33, h=40), Rect(x=1099, y=3433, w=40, h=39), Rect(x=1147, y=3432, w=36, h=41), Rect(x=1187, y=3432, w=41, h=41), Rect(x=1276, y=3432, w=32, h=42), Rect(x=1315, y=3432, w=31, h=40), Rect(x=1351, y=3433, w=36, h=41), Rect(x=1434, y=3433, w=44, h=40), Rect(x=1484, y=3433, w=36, h=41), Rect(x=1606, y=3432, w=34, h=41), Rect(x=1646, y=3432, w=37, h=40), Rect(x=1689, y=3433, w=41, h=40), Rect(x=1737, y=3433, w=43, h=40), Rect(x=2352, y=3433, w=34, h=41), Rect(x=2394, y=3432, w=51, h=41), Rect(x=2489, y=3433, w=35, h=42), Rect(x=2574, y=3432, w=42, h=42), Rect(x=2621, y=3432, w=43, h=41), Rect(x=2709, y=3433, w=42, h=41), Rect(x=2799, y=3433, w=42, h=56), Rect(x=2846, y=3432, w=30, h=41), Rect(x=1564, y=3434, w=33, h=40), Rect(x=2312, y=3434, w=33, h=40), Rect(x=520, y=3445, w=73, h=7), Rect(x=836, y=3447, w=73, h=6), Rect(x=1875, y=3448, w=73, h=6), Rect(x=795, y=3461, w=14, h=24), Rect(x=2881, y=3460, w=15, h=26), Rect(x=1838, y=3462, w=8, h=10), Rect(x=2252, y=3463, w=12, h=25), Rect(x=1043, y=3499, w=61, h=64), Rect(x=1675, y=3500, w=52, h=62), Rect(x=2192, y=3500, w=56, h=80), Rect(x=939, y=3502, w=25, h=14), Rect(x=1572, y=3506, w=10, h=11), Rect(x=1588, y=3507, w=10, h=10), Rect(x=387, y=3519, w=35, h=42), Rect(x=471, y=3518, w=32, h=43), Rect(x=508, y=3521, w=40, h=52), Rect(x=555, y=3520, w=32, h=42), Rect(x=593, y=3520, w=33, h=42), Rect(x=715, y=3521, w=42, h=54), Rect(x=762, y=3521, w=39, h=59), Rect(x=1530, y=3521, w=32, h=43), Rect(x=1773, y=3521, w=33, h=42), Rect(x=1937, y=3521, w=31, h=42), Rect(x=1974, y=3521, w=42, h=41), Rect(x=2022, y=3521, w=39, h=59), Rect(x=2069, y=3520, w=31, h=42), Rect(x=2256, y=3521, w=39, h=59), Rect(x=2550, y=3521, w=9, h=12), Rect(x=631, y=3522, w=36, h=39), Rect(x=805, y=3522, w=44, h=56), Rect(x=853, y=3522, w=31, h=40), Rect(x=890, y=3522, w=34, h=41), Rect(x=930, y=3522, w=43, h=40), Rect(x=1110, y=3523, w=44, h=56), Rect(x=1223, y=3522, w=37, h=41), Rect(x=1268, y=3523, w=34, h=41), Rect(x=1393, y=3523, w=43, h=40), Rect(x=1486, y=3522, w=37, h=41), Rect(x=1569, y=3522, w=32, h=42), Rect(x=1735, y=3522, w=32, h=42), Rect(x=1812, y=3523, w=35, h=40), Rect(x=1897, y=3522, w=33, h=42), Rect(x=2107, y=3523, w=34, h=41), Rect(x=2302, y=3523, w=34, h=41), Rect(x=2344, y=3522, w=30, h=41), Rect(x=2380, y=3523, w=41, h=40), Rect(x=2428, y=3523, w=41, h=40), Rect(x=2475, y=3522, w=40, h=40), Rect(x=2520, y=3523, w=20, h=40), Rect(x=2567, y=3523, w=43, h=40), Rect(x=2658, y=3522, w=37, h=41), Rect(x=2784, y=3523, w=35, h=42), Rect(x=2825, y=3523, w=49, h=40), Rect(x=1310, y=3524, w=33, h=40), Rect(x=2744, y=3524, w=34, h=41), Rect(x=2538, y=3527, w=18, h=36), Rect(x=2881, y=3550, w=14, h=25), Rect(x=983, y=3553, w=12, h=12), Rect(x=1159, y=3553, w=14, h=24), Rect(x=1610, y=3553, w=12, h=11), Rect(x=1500, y=3593, w=25, h=13), Rect(x=383, y=3609, w=20, h=25), Rect(x=797, y=3609, w=39, h=59), Rect(x=1821, y=3609, w=65, h=40), Rect(x=1891, y=3608, w=41, h=42), Rect(x=2151, y=3608, w=32, h=42), Rect(x=2235, y=3609, w=66, h=54), Rect(x=2353, y=3609, w=34, h=41), Rect(x=2394, y=3609, w=32, h=42), Rect(x=2472, y=3609, w=26, h=40), Rect(x=2633, y=3609, w=34, h=41), Rect(x=2805, y=3609, w=25, h=42), Rect(x=2826, y=3609, w=40, h=41), Rect(x=402, y=3610, w=20, h=38), Rect(x=429, y=3610, w=33, h=40), Rect(x=470, y=3610, w=34, h=41), Rect(x=561, y=3610, w=34, h=41), Rect(x=602, y=3610, w=34, h=41), Rect(x=643, y=3610, w=51, h=41), Rect(x=747, y=3610, w=44, h=41), Rect(x=842, y=3611, w=43, h=40), Rect(x=938, y=3611, w=44, h=40), Rect(x=1029, y=3610, w=41, h=41), Rect(x=1124, y=3611, w=40, h=39), Rect(x=1169, y=3611, w=43, h=39), Rect(x=1217, y=3611, w=44, h=41), Rect(x=1316, y=3611, w=36, h=41), Rect(x=1357, y=3610, w=41, h=53), Rect(x=1402, y=3610, w=43, h=40), Rect(x=1452, y=3610, w=34, h=41), Rect(x=1491, y=3611, w=21, h=40), Rect(x=1511, y=3611, w=24, h=40), Rect(x=1587, y=3611, w=44, h=41), Rect(x=1636, y=3611, w=42, h=56), Rect(x=1683, y=3610, w=33, h=42), Rect(x=1722, y=3611, w=33, h=40), Rect(x=1760, y=3611, w=36, h=39), Rect(x=1796, y=3610, w=20, h=40), Rect(x=1938, y=3610, w=41, h=40), Rect(x=2057, y=3610, w=37, h=41), Rect(x=2189, y=3610, w=42, h=56), Rect(x=2305, y=3610, w=41, h=40), Rect(x=2432, y=3610, w=34, h=41), Rect(x=2495, y=3610, w=19, h=39), Rect(x=2590, y=3610, w=36, h=40), Rect(x=2674, y=3610, w=30, h=41), Rect(x=2711, y=3610, w=48, h=40), Rect(x=2765, y=3610, w=34, h=41), Rect(x=989, y=3612, w=36, h=41), Rect(x=1076, y=3612, w=43, h=40), Rect(x=2872, y=3625, w=25, h=8), Rect(x=2710, y=3633, w=16, h=18), Rect(x=1988, y=3641, w=12, h=24), Rect(x=2521, y=3641, w=12, h=24), Rect(x=1828, y=3675, w=59, h=63), Rect(x=2145, y=3675, w=57, h=80), Rect(x=386, y=3696, w=27, h=39), Rect(x=409, y=3697, w=19, h=39), Rect(x=435, y=3696, w=20, h=40), Rect(x=470, y=3696, w=20, h=41), Rect(x=579, y=3697, w=34, h=41), Rect(x=617, y=3697, w=42, h=41), Rect(x=705, y=3697, w=42, h=41), Rect(x=752, y=3697, w=37, h=42), Rect(x=835, y=3697, w=42, h=41), Rect(x=1289, y=3697, w=32, h=42), Rect(x=1554, y=3696, w=23, h=43), Rect(x=2059, y=3697, w=37, h=41), Rect(x=2209, y=3697, w=39, h=59), Rect(x=2473, y=3697, w=41, h=42), Rect(x=537, y=3698, w=34, h=41), Rect(x=665, y=3699, w=36, h=39), Rect(x=884, y=3698, w=39, h=59), Rect(x=927, y=3699, w=44, h=56), Rect(x=975, y=3698, w=32, h=41), Rect(x=1012, y=3699, w=34, h=41), Rect(x=1053, y=3698, w=37, h=41), Rect(x=1095, y=3698, w=36, h=41), Rect(x=1131, y=3698, w=20, h=41), Rect(x=1159, y=3698, w=32, h=42), Rect(x=1237, y=3699, w=44, h=41), Rect(x=1328, y=3698, w=39, h=59), Rect(x=1375, y=3699, w=32, h=42), Rect(x=1415, y=3698, w=32, h=42), Rect(x=1493, y=3699, w=36, h=41), Rect(x=1584, y=3699, w=34, h=41), Rect(x=1625, y=3698, w=37, h=41), Rect(x=1667, y=3699, w=41, h=42), Rect(x=1893, y=3699, w=31, h=40), Rect(x=1930, y=3698, w=39, h=59), Rect(x=1976, y=3699, w=36, h=41), Rect(x=2255, y=3699, w=34, h=41), Rect(x=2297, y=3699, w=30, h=41), Rect(x=2333, y=3698, w=19, h=40), Rect(x=2354, y=3699, w=22, h=39), Rect(x=2381, y=3699, w=43, h=40), Rect(x=2428, y=3698, w=41, h=41), Rect(x=2520, y=3699, w=41, h=56), Rect(x=2629, y=3699, w=41, h=40), Rect(x=2657, y=3698, w=11, h=11), Rect(x=2677, y=3699, w=34, h=41), Rect(x=2717, y=3699, w=41, h=41), Rect(x=2743, y=3698, w=14, h=12), Rect(x=2843, y=3699, w=34, h=40), Rect(x=2878, y=3699, w=24, h=41), Rect(x=1453, y=3700, w=33, h=40), Rect(x=1535, y=3700, w=20, h=39), Rect(x=1714, y=3700, w=42, h=39), Rect(x=2805, y=3700, w=33, h=40), Rect(x=1552, y=3710, w=7, h=9), Rect(x=452, y=3714, w=17, h=21), Rect(x=1764, y=3729, w=11, h=12), Rect(x=2568, y=3729, w=12, h=24), Rect(x=1945, y=3766, w=37, h=62), Rect(x=2147, y=3785, w=19, h=41), Rect(x=386, y=3786, w=21, h=39), Rect(x=404, y=3786, w=25, h=40), Rect(x=471, y=3787, w=31, h=40), Rect(x=509, y=3786, w=34, h=41), Rect(x=552, y=3786, w=49, h=40), Rect(x=641, y=3786, w=42, h=40), Rect(x=691, y=3787, w=34, h=41), Rect(x=731, y=3787, w=42, h=40), Rect(x=829, y=3787, w=49, h=40), Rect(x=884, y=3787, w=35, h=41), Rect(x=928, y=3786, w=32, h=42), Rect(x=966, y=3786, w=65, h=40), Rect(x=1136, y=3787, w=31, h=41), Rect(x=1214, y=3787, w=35, h=42), Rect(x=1291, y=3787, w=44, h=41), Rect(x=1378, y=3787, w=39, h=59), Rect(x=1469, y=3787, w=65, h=40), Rect(x=1539, y=3787, w=42, h=41), Rect(x=1686, y=3787, w=42, h=40), Rect(x=1736, y=3787, w=34, h=41), Rect(x=1989, y=3786, w=32, h=42), Rect(x=2029, y=3787, w=9, h=14), Rect(x=2028, y=3787, w=30, h=41), Rect(x=2063, y=3787, w=40, h=52), Rect(x=2110, y=3786, w=32, h=42), Rect(x=2167, y=3787, w=20, h=39), Rect(x=2193, y=3786, w=41, h=42), Rect(x=2240, y=3787, w=36, h=41), Rect(x=2388, y=3787, w=34, h=41), Rect(x=2508, y=3787, w=34, h=41), Rect(x=2549, y=3787, w=34, h=41), Rect(x=2729, y=3786, w=31, h=42), Rect(x=2861, y=3787, w=37, h=42), Rect(x=780, y=3788, w=41, h=40), Rect(x=1036, y=3788, w=36, h=39), Rect(x=1174, y=3788, w=33, h=40), Rect(x=1341, y=3788, w=31, h=40), Rect(x=1422, y=3788, w=44, h=56), Rect(x=1587, y=3788, w=34, h=41), Rect(x=1774, y=3789, w=40, h=39), Rect(x=1821, y=3788, w=33, h=40), Rect(x=1860, y=3788, w=23, h=40), Rect(x=1883, y=3788, w=20, h=40), Rect(x=2338, y=3788, w=44, h=40), Rect(x=2464, y=3788, w=36, h=40), Rect(x=2625, y=3788, w=41, h=40), Rect(x=2674, y=3788, w=49, h=40), Rect(x=2766, y=3788, w=41, h=40), Rect(x=2814, y=3788, w=41, h=40), Rect(x=1630, y=3817, w=13, h=25), Rect(x=2284, y=3817, w=12, h=24), Rect(x=1080, y=3818, w=14, h=24), Rect(x=1190, y=3857, w=25, h=13), Rect(x=436, y=3873, w=30, h=42), Rect(x=502, y=3873, w=31, h=42), Rect(x=387, y=3874, w=21, h=40), Rect(x=412, y=3875, w=17, h=20), Rect(x=542, y=3875, w=34, h=41), Rect(x=655, y=3875, w=34, h=41), Rect(x=696, y=3875, w=31, h=40), Rect(x=986, y=3875, w=37, h=41), Rect(x=1061, y=3875, w=32, h=42), Rect(x=1601, y=3875, w=32, h=42), Rect(x=1678, y=3875, w=37, h=40), Rect(x=1903, y=3875, w=30, h=41), Rect(x=2060, y=3875, w=42, h=42), Rect(x=2109, y=3874, w=39, h=59), Rect(x=2236, y=3875, w=34, h=41), Rect(x=2278, y=3875, w=35, h=41), Rect(x=2541, y=3875, w=39, h=58), Rect(x=2587, y=3875, w=31, h=41), Rect(x=2625, y=3875, w=32, h=42), Rect(x=615, y=3876, w=33, h=40), Rect(x=734, y=3876, w=34, h=41), Rect(x=827, y=3876, w=40, h=40), Rect(x=874, y=3877, w=33, h=40), Rect(x=914, y=3876, w=35, h=42), Rect(x=1100, y=3877, w=33, h=40), Rect(x=1141, y=3876, w=34, h=41), Rect(x=1181, y=3876, w=43, h=40), Rect(x=1312, y=3876, w=31, h=40), Rect(x=1349, y=3876, w=39, h=59), Rect(x=1397, y=3876, w=31, h=42), Rect(x=1466, y=3876, w=42, h=56), Rect(x=1511, y=3877, w=40, h=39), Rect(x=1559, y=3876, w=34, h=41), Rect(x=1720, y=3876, w=42, h=56), Rect(x=1767, y=3876, w=21, h=40), Rect(x=1786, y=3876, w=37, h=42), Rect(x=1831, y=3877, w=33, h=40), Rect(x=1940, y=3877, w=33, h=40), Rect(x=1980, y=3877, w=20, h=39), Rect(x=2003, y=3877, w=20, h=40), Rect(x=2153, y=3876, w=42, h=55), Rect(x=2199, y=3876, w=31, h=40), Rect(x=2319, y=3876, w=35, h=40), Rect(x=2355, y=3876, w=20, h=40), Rect(x=2381, y=3876, w=33, h=41), Rect(x=2451, y=3876, w=42, h=40), Rect(x=2503, y=3876, w=31, h=40), Rect(x=2663, y=3877, w=33, h=40), Rect(x=2703, y=3876, w=34, h=41), Rect(x=2744, y=3876, w=23, h=40), Rect(x=2765, y=3877, w=19, h=40), Rect(x=2791, y=3876, w=34, h=41), Rect(x=2831, y=3876, w=37, h=41), Rect(x=1262, y=3878, w=43, h=40), Rect(x=1639, y=3878, w=33, h=40), Rect(x=473, y=3891, w=24, h=5), Rect(x=2873, y=3891, w=25, h=9), Rect(x=1996, y=3892, w=8, h=13), Rect(x=412, y=3902, w=17, h=12), Rect(x=777, y=3906, w=12, h=24), Rect(x=403, y=3963, w=21, h=40), Rect(x=432, y=3963, w=41, h=40), Rect(x=539, y=3963, w=34, h=41), Rect(x=615, y=3963, w=42, h=41), Rect(x=787, y=3963, w=39, h=59), Rect(x=1570, y=3963, w=39, h=58), Rect(x=1720, y=3963, w=32, h=42), Rect(x=1973, y=3963, w=32, h=42), Rect(x=2010, y=3963, w=41, h=41), Rect(x=2142, y=3962, w=32, h=42), Rect(x=2502, y=3963, w=38, h=57), Rect(x=2591, y=3963, w=65, h=40), Rect(x=2661, y=3963, w=39, h=41), Rect(x=2784, y=3963, w=32, h=42), Rect(x=384, y=3964, w=19, h=39), Rect(x=663, y=3964, w=34, h=41), Rect(x=705, y=3965, w=33, h=40), Rect(x=746, y=3964, w=34, h=41), Rect(x=831, y=3964, w=35, h=40), Rect(x=866, y=3965, w=21, h=39), Rect(x=892, y=3964, w=42, h=41), Rect(x=976, y=3965, w=49, h=40), Rect(x=1030, y=3965, w=36, h=41), Rect(x=1130, y=3964, w=32, h=42), Rect(x=1168, y=3964, w=67, h=53), Rect(x=1241, y=3964, w=32, h=42), Rect(x=1316, y=3965, w=42, h=40), Rect(x=1366, y=3965, w=34, h=41), Rect(x=1407, y=3965, w=31, h=40), Rect(x=1445, y=3964, w=34, h=41), Rect(x=1529, y=3965, w=34, h=41), Rect(x=1616, y=3965, w=41, h=40), Rect(x=1664, y=3965, w=49, h=40), Rect(x=1756, y=3964, w=42, h=41), Rect(x=1840, y=3965, w=35, h=38), Rect(x=1882, y=3964, w=42, h=40), Rect(x=1932, y=3964, w=34, h=41), Rect(x=2059, y=3964, w=31, h=40), Rect(x=2101, y=3964, w=16, h=15), Rect(x=2096, y=3964, w=41, h=52), Rect(x=2179, y=3964, w=33, h=39), Rect(x=2219, y=3964, w=36, h=40), Rect(x=2261, y=3964, w=43, h=40), Rect(x=2310, y=3964, w=41, h=40), Rect(x=2417, y=3964, w=43, h=40), Rect(x=2465, y=3964, w=31, h=40), Rect(x=2546, y=3964, w=29, h=56), Rect(x=2571, y=3964, w=16, h=19), Rect(x=2707, y=3965, w=34, h=41), Rect(x=2821, y=3965, w=33, h=39), Rect(x=2862, y=3964, w=34, h=41), Rect(x=1065, y=3966, w=22, h=40), Rect(x=1486, y=3966, w=35, h=38), Rect(x=482, y=3992, w=14, h=24), Rect(x=2361, y=3994, w=12, h=25), Rect(x=2023, y=4029, w=59, h=63), Rect(x=2609, y=4029, w=27, h=62), Rect(x=2732, y=4028, w=37, h=63), Rect(x=2860, y=4029, w=40, h=63), Rect(x=1593, y=4035, w=24, h=12), Rect(x=2340, y=4049, w=37, h=41), Rect(x=2423, y=4049, w=32, h=42), Rect(x=384, y=4050, w=41, h=40), Rect(x=434, y=4050, w=34, h=41), Rect(x=473, y=4050, w=40, h=40), Rect(x=519, y=4051, w=44, h=56), Rect(x=613, y=4051, w=36, h=41), Rect(x=806, y=4051, w=42, h=54), Rect(x=938, y=4051, w=34, h=41), Rect(x=977, y=4051, w=41, h=41), Rect(x=1232, y=4051, w=32, h=42), Rect(x=1399, y=4051, w=32, h=42), Rect(x=1437, y=4051, w=31, h=42), Rect(x=1844, y=4051, w=32, h=42), Rect(x=1880, y=4051, w=41, h=41), Rect(x=2167, y=4051, w=42, h=40), Rect(x=2217, y=4051, w=32, h=42), Rect(x=2256, y=4051, w=39, h=59), Rect(x=2384, y=4050, w=31, h=41), Rect(x=566, y=4052, w=21, h=25), Rect(x=585, y=4052, w=20, h=39), Rect(x=657, y=4052, w=31, h=40), Rect(x=695, y=4053, w=33, h=40), Rect(x=853, y=4052, w=34, h=41), Rect(x=894, y=4052, w=36, h=40), Rect(x=1024, y=4053, w=36, h=39), Rect(x=1065, y=4052, w=20, h=39), Rect(x=1087, y=4052, w=22, h=39), Rect(x=1116, y=4053, w=34, h=41), Rect(x=1271, y=4052, w=32, h=42), Rect(x=1311, y=4052, w=39, h=59), Rect(x=1356, y=4052, w=36, h=41), Rect(x=1475, y=4052, w=44, h=40), Rect(x=1523, y=4053, w=36, h=39), Rect(x=1559, y=4052, w=20, h=40), Rect(x=1584, y=4052, w=44, h=41), Rect(x=1689, y=4052, w=33, h=42), Rect(x=1727, y=4052, w=51, h=41), Rect(x=1782, y=4052, w=35, h=40), Rect(x=1817, y=4053, w=21, h=39), Rect(x=2303, y=4052, w=31, h=40), Rect(x=2461, y=4052, w=33, h=40), Rect(x=2499, y=4053, w=43, h=39), Rect(x=2652, y=4067, w=69, h=6), Rect(x=2779, y=4066, w=70, h=7), Rect(x=1930, y=4083, w=12, h=13), Rect(x=468, y=4116, w=38, h=64), Rect(x=600, y=4116, w=37, h=63), Rect(x=735, y=4117, w=29, h=63), Rect(x=1275, y=4123, w=25, h=13), Rect(x=1888, y=4123, w=24, h=12), Rect(x=2786, y=4137, w=40, h=54), Rect(x=380, y=4138, w=34, h=40), Rect(x=817, y=4139, w=45, h=55), Rect(x=914, y=4139, w=41, h=42), Rect(x=959, y=4139, w=43, h=42), Rect(x=1102, y=4139, w=32, h=42), Rect(x=1142, y=4139, w=32, h=42), Rect(x=1178, y=4139, w=41, h=42), Rect(x=2151, y=4139, w=31, h=42), Rect(x=2392, y=4139, w=41, h=42), Rect(x=2534, y=4139, w=31, h=41), Rect(x=2658, y=4139, w=29, h=42), Rect(x=2830, y=4138, w=34, h=41), Rect(x=867, y=4141, w=41, h=40), Rect(x=1007, y=4140, w=43, h=40), Rect(x=1055, y=4141, w=40, h=40), Rect(x=1227, y=4140, w=34, h=41), Rect(x=1267, y=4140, w=44, h=41), Rect(x=1361, y=4141, w=46, h=41), Rect(x=1413, y=4140, w=32, h=42), Rect(x=1453, y=4141, w=39, h=59), Rect(x=1499, y=4140, w=32, h=42), Rect(x=1538, y=4141, w=32, h=42), Rect(x=1658, y=4141, w=44, h=41), Rect(x=1748, y=4140, w=37, h=41), Rect(x=1791, y=4140, w=42, h=41), Rect(x=1839, y=4140, w=34, h=41), Rect(x=1879, y=4140, w=44, h=41), Rect(x=2026, y=4140, w=32, h=42), Rect(x=2062, y=4141, w=41, h=41), Rect(x=2109, y=4141, w=36, h=39), Rect(x=2188, y=4140, w=42, h=41), Rect(x=2302, y=4141, w=21, h=41), Rect(x=2325, y=4140, w=19, h=42), Rect(x=2351, y=4141, w=36, h=41), Rect(x=2484, y=4140, w=43, h=40), Rect(x=2570, y=4141, w=41, h=40), Rect(x=2616, y=4141, w=36, h=39), Rect(x=2695, y=4140, w=39, h=41), Rect(x=1575, y=4142, w=34, h=41), Rect(x=1617, y=4142, w=36, h=41), Rect(x=1708, y=4142, w=34, h=41), Rect(x=1974, y=4142, w=44, h=40), Rect(x=2870, y=4153, w=26, h=9), Rect(x=517, y=4155, w=72, h=6), Rect(x=648, y=4155, w=71, h=7), Rect(x=2237, y=4171, w=13, h=26), Rect(x=381, y=4207, w=37, h=61), Rect(x=2732, y=4207, w=44, h=63), Rect(x=823, y=4208, w=37, h=63), Rect(x=1382, y=4209, w=37, h=64), Rect(x=425, y=4229, w=41, h=40), Rect(x=473, y=4229, w=33, h=40), Rect(x=512, y=4229, w=36, h=39), Rect(x=554, y=4229, w=33, h=42), Rect(x=592, y=4229, w=42, h=41), Rect(x=782, y=4229, w=34, h=41), Rect(x=963, y=4229, w=37, h=41), Rect(x=1043, y=4228, w=32, h=43), Rect(x=1167, y=4229, w=41, h=42), Rect(x=1255, y=4228, w=43, h=42), Rect(x=1731, y=4228, w=64, h=44), Rect(x=1801, y=4228, w=32, h=42), Rect(x=2063, y=4229, w=43, h=42), Rect(x=2115, y=4228, w=32, h=42), Rect(x=2154, y=4229, w=38, h=58), Rect(x=2200, y=4228, w=32, h=42), Rect(x=2321, y=4229, w=31, h=42), Rect(x=2360, y=4228, w=32, h=42), Rect(x=2398, y=4229, w=39, h=59), Rect(x=2442, y=4228, w=40, h=41), Rect(x=2490, y=4229, w=34, h=41), Rect(x=2537, y=4228, w=32, h=40), Rect(x=2576, y=4229, w=35, h=42), Rect(x=2617, y=4229, w=49, h=41), Rect(x=2781, y=4228, w=23, h=40), Rect(x=2804, y=4229, w=18, h=39), Rect(x=2831, y=4228, w=34, h=41), Rect(x=405, y=4230, w=6, h=5), Rect(x=694, y=4231, w=40, h=39), Rect(x=741, y=4230, w=34, h=41), Rect(x=863, y=4231, w=36, h=39), Rect(x=899, y=4230, w=22, h=41), Rect(x=1084, y=4230, w=31, h=40), Rect(x=1122, y=4230, w=39, h=59), Rect(x=1215, y=4230, w=34, h=41), Rect(x=1304, y=4230, w=32, h=42), Rect(x=1423, y=4230, w=36, h=41), Rect(x=1459, y=4231, w=20, h=40), Rect(x=1483, y=4231, w=41, h=41), Rect(x=1652, y=4231, w=34, h=43), Rect(x=1897, y=4231, w=40, h=40), Rect(x=1984, y=4230, w=34, h=41), Rect(x=2237, y=4230, w=40, h=52), Rect(x=1531, y=4232, w=34, h=41), Rect(x=1609, y=4232, w=36, h=41), Rect(x=1944, y=4232, w=33, h=40), Rect(x=2529, y=4241, w=16, h=28), Rect(x=2871, y=4243, w=25, h=9), Rect(x=641, y=4258, w=14, h=24), Rect(x=1841, y=4261, w=14, h=24), Rect(x=2673, y=4260, w=11, h=11), Rect(x=2782, y=4295, w=37, h=64), Rect(x=975, y=4299, w=37, h=62), Rect(x=2422, y=4299, w=35, h=61), Rect(x=379, y=4317, w=23, h=25), Rect(x=623, y=4317, w=32, h=43), Rect(x=659, y=4317, w=41, h=41), Rect(x=800, y=4317, w=44, h=59), Rect(x=2507, y=4317, w=42, h=54), Rect(x=2729, y=4317, w=49, h=42), Rect(x=2823, y=4317, w=45, h=41), Rect(x=399, y=4318, w=21, h=39), Rect(x=425, y=4318, w=41, h=40), Rect(x=474, y=4318, w=34, h=41), Rect(x=585, y=4319, w=32, h=42), Rect(x=708, y=4319, w=40, h=40), Rect(x=936, y=4319, w=32, h=42), Rect(x=1017, y=4319, w=42, h=41), Rect(x=1112, y=4319, w=32, h=42), Rect(x=1367, y=4319, w=34, h=43), Rect(x=1934, y=4319, w=41, h=41), Rect(x=2072, y=4319, w=42, h=41), Rect(x=2162, y=4319, w=41, h=42), Rect(x=2324, y=4318, w=43, h=41), Rect(x=2373, y=4318, w=25, h=41), Rect(x=2396, y=4319, w=20, h=40), Rect(x=2463, y=4319, w=40, h=57), Rect(x=2641, y=4318, w=41, h=42), Rect(x=2688, y=4318, w=34, h=42), Rect(x=894, y=4321, w=34, h=41), Rect(x=1150, y=4320, w=34, h=41), Rect(x=1190, y=4320, w=35, h=42), Rect(x=1231, y=4320, w=43, h=40), Rect(x=1279, y=4320, w=36, h=42), Rect(x=1453, y=4320, w=32, h=42), Rect(x=1492, y=4321, w=36, h=41), Rect(x=1534, y=4320, w=49, h=40), Rect(x=1590, y=4320, w=34, h=41), Rect(x=1631, y=4320, w=31, h=40), Rect(x=1667, y=4320, w=36, h=42), Rect(x=1756, y=4320, w=44, h=41), Rect(x=1808, y=4320, w=36, h=41), Rect(x=1848, y=4320, w=22, h=25), Rect(x=1867, y=4321, w=19, h=40), Rect(x=1895, y=4320, w=34, h=41), Rect(x=1983, y=4321, w=36, h=41), Rect(x=2121, y=4320, w=36, h=41), Rect(x=2210, y=4320, w=36, h=41), Rect(x=2250, y=4320, w=42, h=40), Rect(x=2553, y=4320, w=36, h=39), Rect(x=2871, y=4332, w=25, h=9), Rect(x=2297, y=4335, w=24, h=6), Rect(x=516, y=4348, w=13, h=23), Rect(x=1591, y=4453, w=25, h=54), Rect(x=1622, y=4453, w=33, h=55), Rect(x=1657, y=4454, w=30, h=53)]6 g, joined_rects = join_rectangles(rects)7 print(joined_rects)8 def test_complicated(self):9 rects = [Rect(x=104, y=211, w=42, h=40),10 Rect(x=104, y=391, w=35, h=38),11 Rect(x=105, y=122, w=44, h=56),12 Rect(x=147, y=389, w=34, h=41),13 Rect(x=150, y=120, w=42, h=41),14 Rect(x=153, y=212, w=34, h=41),15 Rect(x=188, y=389, w=31, h=42),16 Rect(x=194, y=212, w=39, h=40),17 Rect(x=198, y=122, w=34, h=41),18 Rect(x=226, y=390, w=49, h=40),19 Rect(x=237, y=48, w=74, h=9),20 Rect(x=238, y=316, w=72, h=6),21 Rect(x=239, y=121, w=62, h=42),22 Rect(x=239, y=213, w=44, h=56),23 Rect(x=282, y=390, w=34, h=41),24 Rect(x=285, y=213, w=40, h=40),25 Rect(x=305, y=124, w=43, h=40),26 Rect(x=323, y=388, w=62, h=42),27 Rect(x=331, y=214, w=43, h=40),28 Rect(x=355, y=124, w=34, h=41),29 Rect(x=365, y=280, w=61, h=62),30 Rect(x=366, y=11, w=58, h=62),31 Rect(x=377, y=212, w=43, h=42),32 Rect(x=389, y=390, w=44, h=40),33 Rect(x=394, y=125, w=36, h=39),34 Rect(x=426, y=213, w=34, h=41),35 Rect(x=430, y=34, w=44, h=56),36 Rect(x=430, y=318, w=26, h=6),37 Rect(x=440, y=390, w=34, h=41),38 Rect(x=459, y=302, w=44, h=40),39 Rect(x=467, y=213, w=33, h=42),40 Rect(x=479, y=66, w=14, h=24),41 Rect(x=483, y=369, w=28, h=48),42 Rect(x=484, y=123, w=42, h=41),43 Rect(x=487, y=420, w=12, h=12),44 Rect(x=505, y=213, w=36, h=41),45 Rect(x=510, y=301, w=32, h=42),46 Rect(x=532, y=124, w=34, h=41),47 Rect(x=549, y=304, w=33, h=39),48 Rect(x=550, y=368, w=60, h=63),49 Rect(x=555, y=34, w=42, h=41),50 Rect(x=574, y=123, w=43, h=60),51 Rect(x=575, y=214, w=34, h=41),52 Rect(x=590, y=332, w=14, h=24),53 Rect(x=603, y=36, w=36, h=41),54 Rect(x=614, y=214, w=41, h=53),55 Rect(x=617, y=390, w=32, h=42),56 Rect(x=620, y=125, w=33, h=40),57 Rect(x=632, y=317, w=73, h=7),58 Rect(x=644, y=35, w=43, h=42),59 Rect(x=656, y=392, w=34, h=41),60 Rect(x=659, y=214, w=44, h=40),61 Rect(x=660, y=123, w=34, h=41),62 Rect(x=698, y=420, w=13, h=25),63 Rect(x=699, y=125, w=40, h=39),64 Rect(x=709, y=214, w=34, h=41),65 Rect(x=732, y=302, w=33, h=42),66 Rect(x=745, y=123, w=42, h=41),67 Rect(x=746, y=392, w=44, h=40),68 Rect(x=765, y=37, w=33, h=40),69 Rect(x=770, y=301, w=41, h=42),70 Rect(x=777, y=214, w=44, h=41),71 Rect(x=792, y=126, w=43, h=40),72 Rect(x=797, y=390, w=31, h=42),73 Rect(x=803, y=36, w=36, h=41),74 Rect(x=818, y=302, w=34, h=41),75 Rect(x=834, y=391, w=41, h=41),76 Rect(x=839, y=36, w=21, h=40),77 Rect(x=855, y=214, w=34, h=41),78 Rect(x=861, y=302, w=30, h=41),79 Rect(x=881, y=393, w=36, h=39),80 Rect(x=889, y=124, w=34, h=41),81 Rect(x=896, y=213, w=34, h=43),82 Rect(x=899, y=302, w=34, h=41),83 Rect(x=923, y=391, w=31, h=42),84 Rect(x=932, y=124, w=34, h=41),85 Rect(x=937, y=35, w=40, h=52),86 Rect(x=938, y=305, w=43, h=42),87 Rect(x=961, y=391, w=42, h=41),88 Rect(x=964, y=212, w=64, h=44),89 Rect(x=973, y=124, w=41, h=42),90 Rect(x=982, y=36, w=44, h=56),91 Rect(x=1013, y=420, w=12, h=12),92 Rect(x=1014, y=370, w=11, h=47),93 Rect(x=1021, y=155, w=13, h=26),94 Rect(x=1023, y=303, w=36, h=40),95 Rect(x=1030, y=36, w=49, h=40),96 Rect(x=1034, y=214, w=32, h=42),97 Rect(x=1086, y=36, w=36, h=41),98 Rect(x=1089, y=125, w=40, h=40),99 Rect(x=1101, y=212, w=40, h=61),100 Rect(x=1101, y=303, w=44, h=40),101 Rect(x=1118, y=268, w=5, h=4),102 Rect(x=1129, y=34, w=32, h=42),103 Rect(x=1137, y=126, w=33, h=40),104 Rect(x=1148, y=214, w=36, h=41),105 Rect(x=1153, y=301, w=32, h=42),106 Rect(x=1166, y=35, w=66, h=39),107 Rect(x=1178, y=124, w=34, h=41),108 Rect(x=1189, y=213, w=33, h=42),109 Rect(x=1190, y=301, w=42, h=54),110 Rect(x=1218, y=105, w=35, h=61),111 Rect(x=1227, y=214, w=42, h=40),112 Rect(x=1236, y=302, w=34, h=41),113 Rect(x=1237, y=35, w=36, h=39),114 Rect(x=1260, y=124, w=35, h=40),115 Rect(x=1276, y=214, w=34, h=41),116 Rect(x=1276, y=303, w=44, h=56),117 Rect(x=1280, y=62, w=14, h=24),118 Rect(x=1294, y=124, w=21, h=40),119 Rect(x=1315, y=240, w=16, h=14),120 Rect(x=1321, y=49, w=73, h=7),121 Rect(x=1321, y=212, w=36, h=42),122 Rect(x=1324, y=302, w=51, h=41),123 Rect(x=1364, y=214, w=34, h=41),124 Rect(x=1367, y=124, w=44, h=42),125 Rect(x=1381, y=301, w=32, h=42),126 Rect(x=1405, y=212, w=62, h=42),127 Rect(x=1418, y=301, w=44, h=41),128 Rect(x=1421, y=33, w=33, h=42),129 Rect(x=1459, y=33, w=42, h=40),130 Rect(x=1464, y=123, w=44, h=41),131 Rect(x=1467, y=302, w=43, h=39),132 Rect(x=1473, y=213, w=32, h=42),133 Rect(x=1508, y=32, w=39, h=59),134 Rect(x=1511, y=213, w=43, h=41),135 Rect(x=1515, y=123, w=32, h=42),136 Rect(x=1515, y=301, w=43, h=40),137 Rect(x=1553, y=33, w=34, h=41),138 Rect(x=1553, y=122, w=40, h=59),139 Rect(x=1559, y=214, w=43, h=40),140 Rect(x=1595, y=33, w=33, h=42),141 Rect(x=1600, y=124, w=32, h=42),142 Rect(x=1602, y=279, w=60, h=62),143 Rect(x=1610, y=213, w=32, h=42),144 Rect(x=1632, y=34, w=41, h=40),145 Rect(x=1637, y=125, w=40, h=52),146 Rect(x=1650, y=192, w=28, h=49),147 Rect(x=1655, y=243, w=12, h=12),148 Rect(x=1666, y=300, w=41, h=41),149 Rect(x=1679, y=35, w=41, h=41),150 Rect(x=1713, y=302, w=57, h=41),151 Rect(x=1732, y=123, w=31, h=42),152 Rect(x=1771, y=123, w=32, h=42),153 Rect(x=1775, y=301, w=65, h=40),154 Rect(x=1804, y=13, w=52, h=61),155 Rect(x=1810, y=122, w=40, h=61),156 Rect(x=1847, y=301, w=34, h=41),157 Rect(x=1854, y=122, w=41, h=42),158 Rect(x=1860, y=34, w=34, h=41),159 Rect(x=1890, y=331, w=12, h=12),160 Rect(x=1900, y=34, w=40, h=52),161 Rect(x=1902, y=122, w=34, h=41),162 Rect(x=1936, y=317, w=73, h=7),163 Rect(x=1942, y=122, w=41, h=41),164 Rect(x=1946, y=34, w=41, h=40),165 Rect(x=1989, y=123, w=34, h=41),166 Rect(x=1993, y=32, w=40, h=41),167 Rect(x=2030, y=124, w=51, h=41),168 Rect(x=2039, y=279, w=60, h=63),169 Rect(x=2040, y=32, w=33, h=42),170 Rect(x=2079, y=62, w=12, h=24),171 Rect(x=2104, y=303, w=44, h=56),172 Rect(x=2121, y=48, w=71, h=7),173 Rect(x=2134, y=125, w=43, h=40),174 Rect(x=2187, y=302, w=42, h=41),175 Rect(x=2220, y=33, w=26, h=40),176 Rect(x=2232, y=124, w=37, h=41),177 Rect(x=2235, y=303, w=34, h=41),178 Rect(x=2247, y=33, w=22, h=40),179 Rect(x=2274, y=302, w=43, h=42),180 Rect(x=2276, y=32, w=34, h=41),181 Rect(x=2316, y=51, w=20, h=22),182 Rect(x=2317, y=32, w=15, h=17),183 Rect(x=2324, y=123, w=32, h=43),184 Rect(x=2337, y=31, w=40, h=41),185 Rect(x=2359, y=301, w=62, h=42),186 Rect(x=2363, y=123, w=32, h=42),187 Rect(x=2382, y=33, w=41, h=40),188 Rect(x=2402, y=124, w=40, h=59),189 Rect(x=2427, y=302, w=32, h=42),190 Rect(x=2431, y=36, w=34, h=41),191 Rect(x=2446, y=122, w=41, h=43),192 Rect(x=2493, y=122, w=35, h=43),193 Rect(x=2501, y=300, w=32, h=44),194 Rect(x=2526, y=32, w=42, h=41),195 Rect(x=2532, y=123, w=42, h=42),196 Rect(x=2538, y=302, w=35, h=41),197 Rect(x=2573, y=32, w=43, h=42),198 Rect(x=2578, y=301, w=36, h=42),199 Rect(x=2580, y=123, w=33, h=43)]200 g, joined_rects = join_rectangles(rects)201 print(len(joined_rects))202 assert(len(joined_rects) == 3)203 print(joined_rects)204 def test_join_rectangles(self):205 rects = [Rect(1,1,1,1), Rect(1,3,1,1), Rect(1,5,1,1), Rect(3,1,1,1), Rect(3,3,1,1),206 Rect(3,5,1,1), Rect(7,1,1,1), Rect(7,3,1,1), Rect(7,5,1,1)]207 g, joined_rects = join_rectangles(rects)208 assert(len(joined_rects) == 0)209 rects = [Rect(1, 1, 3, 3), Rect(3, 3, 3, 3)]210 g, joined_rects = join_rectangles(rects)211 assert(len(joined_rects) == 1)212 rects = [Rect(1, 1, 2, 3), Rect(2, 3, 4, 2), Rect(7, 4, 2, 3), Rect(8, 2, 2, 3), Rect(6, 6, 2, 2)]213 g, joined_rects = join_rectangles(rects)214 assert(len(joined_rects)==2)215 assert(len(g.edges)==3)216 rects = [Rect(1, 1, 1, 1), Rect(3, 1, 1, 1), Rect(5, 1, 1, 1), Rect(2, 3, 1, 1), Rect(4, 3, 1, 1), Rect(1,5,1,1), Rect(3,5,1,1), Rect(5,5,1,1)]217 g, joined_rects = join_rectangles(rects)...
rect_test.py
Source: rect_test.py
...393 r1.unionall_ip([r2, r3])394 self.assertEqual(Rect(-2, -2, 5, 5), r1)395 # Bug for an empty list. Would return a Rect instead of None.396 self.assertTrue(r1.unionall_ip([]) is None)397 def test_colliderect(self):398 r1 = Rect(1, 2, 3, 4)399 self.assertTrue(r1.colliderect(Rect(0, 0, 2, 3)),400 "r1 does not collide with Rect(0, 0, 2, 3)")401 self.assertFalse(r1.colliderect(Rect(0, 0, 1, 2)),402 "r1 collides with Rect(0, 0, 1, 2)")403 self.assertFalse(r1.colliderect(Rect(r1.right, r1.bottom, 2, 2)),404 "r1 collides with Rect(r1.right, r1.bottom, 2, 2)")405 self.assertTrue(r1.colliderect(Rect(r1.left + 1, r1.top + 1,406 r1.width - 2, r1.height - 2)),407 "r1 does not collide with Rect(r1.left + 1, r1.top + 1, "+408 "r1.width - 2, r1.height - 2)")409 self.assertTrue(r1.colliderect(Rect(r1.left - 1, r1.top - 1,410 r1.width + 2, r1.height + 2)),411 "r1 does not collide with Rect(r1.left - 1, r1.top - 1, "+412 "r1.width + 2, r1.height + 2)")413 self.assertTrue(r1.colliderect(Rect(r1)),414 "r1 does not collide with an identical rect")415 self.assertFalse(r1.colliderect(Rect(r1.right, r1.bottom, 0, 0)),416 "r1 collides with Rect(r1.right, r1.bottom, 0, 0)")417 self.assertFalse(r1.colliderect(Rect(r1.right, r1.bottom, 1, 1)),418 "r1 collides with Rect(r1.right, r1.bottom, 1, 1)")419 def testEquals(self):420 """ check to see how the rect uses __eq__421 """422 r1 = Rect(1, 2, 3, 4)423 r2 = Rect(10, 20, 30, 40)424 r3 = (10, 20, 30, 40)425 r4 = Rect(10, 20, 30, 40)426 class foo (Rect):427 def __eq__(self, other):428 return id(self) == id(other)429 def __ne__(self, other):430 return id(self) != id(other)431 class foo2 (Rect):...
classes.py
Source: classes.py
...4class BackgroundImage(pygame.sprite.Sprite):5 def __init__(self, imagename, x, y, *group, color_key=0):6 super().__init__(*group)7 self.image = load_image("Sprites/" + imagename + ".png", color_key)8 self.rect = self.image.get_rect()9 self.rect.x = x10 self.rect.y = y11class Button(pygame.sprite.Sprite):12 def __init__(self, name, imagename, x, y, *group, text='x', answer_id=0):13 super().__init__(*group)14 self.answer_id = answer_id15 self.not_charge_image = load_image("Buttons/" + imagename + ".png")16 self.image = self.not_charge_image17 self.charge_image = load_image("Buttons/" + imagename + "_charge.png")18 self.now_image = False19 self.now = False20 self.charge_lock = False21 if answer_id:22 self.now_image = load_image("Buttons/" + imagename + "_now.png")23 self.rect = self.image.get_rect()24 self.w, self.h = self.image.get_rect()[2], self.image.get_rect()[3]25 self.rect.x = x26 self.rect.y = y27 self.name = name28 self.charge_log = False29 # РабоÑа Ñ ÑекÑÑом30 self.font = pygame.font.Font(os.path.join('data', "Fonts/VollkornSC-Regular.ttf"), 30)31 self.text = text32 self.text_cords = (10, 15)33 if self.text != 'x':34 self.image.blit(self.font.render(self.text, True, (0, 0, 0)), (self.text_cords[0] + 1, self.text_cords[1] + 1))35 self.image.blit(self.font.render(self.text, True, (253, 253, 253)), self.text_cords)36 def click(self, pos): # ÐозвÑаÑÐ°ÐµÑ True еÑли pos наÑ
одиÑÑÑ Ð² облаÑÑи кнопки, инаÑе возвÑаÑÐ°ÐµÑ False37 if self.rect.x <= pos[0] <= self.rect.x + self.w and \38 self.rect.y <= pos[1] <= self.rect.y + self.h:39 return self.name40 return False41 def charge_switch(self, pos):42 if self.charge_lock:43 self.image = self.charge_image44 else:45 if not self.now:46 if self.rect.x <= pos[0] <= self.rect.x + self.w and \47 self.rect.y <= pos[1] <= self.rect.y + self.h:48 self.image = self.charge_image49 self.charge_log = True50 else:51 self.image = self.not_charge_image52 self.charge_log = False53 else:54 self.image = self.now_image55 self.charge_log = True56 if self.text != 'x':57 if self.charge_log:58 for i in range(-2, 6):59 self.image.blit(self.font.render(self.text, True,60 (128, 128, 128)), (self.text_cords[0] + i, self.text_cords[1] + i))61 self.image.blit(self.font.render(self.text, True, (0, 0, 0)), (self.text_cords[0] + 1, self.text_cords[1] + 1))62 self.image.blit(self.font.render(self.text, True, (253, 253, 253)), self.text_cords)63class QuestionButton(pygame.sprite.Sprite):64 def __init__(self, id, x, y, w, text, *group):65 super().__init__(*group)66 self.now = False67 self.complete = False68 self.flag = False69 self.font = pygame.font.Font(os.path.join('data', "Fonts/VollkornSC-Regular.ttf"), 17)70 width = (w - 10) / (self.font.size("Wa")[0] / 2)71 self.strings = []72 leng = 073 string = ""74 for i in text.split():75 if leng + len(i) > width:76 self.strings.append(string)77 string = ""78 leng = 079 string += i + " "80 leng += len(i) + 181 if string:82 self.strings.append(string)83 self.image = pygame.Surface((w, len(self.strings) * self.font.size("v")[1] + 10))84 self.image.fill(pygame.Color(180, 180, 180))85 self.render_qt()86 self.rect = self.image.get_rect()87 self.w, self.h = self.image.get_rect()[2], self.image.get_rect()[3]88 self.rect.x = x89 self.rect.y = y90 pygame.draw.rect(self.image, (70, 54, 37), (0, 0, self.rect.w, self.rect.h), 3)91 self.id = id92 def height(self):93 return self.h94 def click(self, pos): # ÐозвÑаÑÐ°ÐµÑ Ñвой id еÑли pos наÑ
одиÑÑÑ Ð² облаÑÑи кнопки, инаÑе возвÑаÑÐ°ÐµÑ False95 if self.rect.x <= pos[0] <= self.rect.x + self.w and \96 self.rect.y <= pos[1] <= self.rect.y + self.h:97 return self.id98 return False99 def charge_switch(self, pos):100 if self.now:101 self.image.fill(pygame.Color(140, 130, 40))102 else:103 if self.rect.x <= pos[0] <= self.rect.x + self.w and \104 self.rect.y <= pos[1] <= self.rect.y + self.h:105 self.image.fill(pygame.Color(240, 230, 140))106 else:107 self.image.fill(pygame.Color(180, 180, 180))108 if self.complete:109 pygame.draw.rect(self.image, (0, 0, 255), (0, 0, 10, self.rect.h))110 if self.flag:111 pygame.draw.polygon(self.image, (200, 0, 0),112 ((self.rect.w - 40, 0), (self.rect.w, 0), (self.rect.w, 40)))113 pygame.draw.line(self.image, (100, 0, 0), (self.rect.w - 41, -1), (self.rect.w + 1, 41), 8)114 pygame.draw.rect(self.image, (70, 54, 37), (0, 0, self.rect.w, self.rect.h), 3)115 self.render_qt()116 def render_qt(self):117 for i in range(len(self.strings)):118 self.image.blit(self.font.render(self.strings[i], True, (30, 30, 30)),119 (18, i * (self.font.size(self.strings[i])[1]) + 5))120class Slider(pygame.sprite.Sprite):121 def __init__(self, x, y, field, *group):122 super().__init__(*group)123 self.field = field124 self.image = pygame.Surface((10, 80))125 self.image.fill(pygame.Color(165, 42, 42))126 self.rect = self.image.get_rect()127 self.w, self.h = self.image.get_rect()[2], self.image.get_rect()[3]128 self.rect.x = x129 self.rect.y = y130 self.id = id131 pygame.draw.rect(self.image, (70, 54, 37), (0, 0, self.rect.w, self.rect.h), 3)132 def charge_switch(self, pos):133 if self.rect.x <= pos[0] <= self.rect.x + self.w and \134 self.rect.y <= pos[1] <= self.rect.y + self.h:135 # self.image.fill(pygame.Color(184, 134, 11))136 self.image.fill(pygame.Color(163, 73, 164))137 else:138 self.image.fill(pygame.Color(165, 42, 42))139 pygame.draw.rect(self.image, (70, 54, 37), (0, 0, self.rect.w, self.rect.h), 3)140 def slide(self, pos, y, mouse_logic):141 if (self.field[0] <= pos[0] <= self.field[0] + self.field[2] and142 self.field[1] <= pos[1] <= self.field[1] + self.field[3]) or mouse_logic:143 if (self.field[1] + 10 == self.rect.y and y > 0) or\144 (self.field[1] + self.field[3] - 85 == self.rect.y and y < 0):145 return 0146 k = self.rect.y147 if self.field[1] + 10 >= self.rect.y + y * -8:148 self.rect.y = self.field[1] + 10149 elif self.rect.y + y * -8 + self.rect.h >= self.field[1] + self.field[3] - 5:150 self.rect.y = self.field[1] + self.field[3] - 85151 else:152 self.rect.y += y * -8153 k = abs(k - self.rect.y)154 if y > 0:155 k *= -1156 return k157 def click(self, pos):158 if self.rect.x <= pos[0] <= self.rect.x + self.w and \159 self.rect.y <= pos[1] <= self.rect.y + self.h:160 return "slide"161class BigSlider(pygame.sprite.Sprite):162 def __init__(self, x, y, field, *group):163 super().__init__(*group)164 self.field = field165 self.image = pygame.Surface((30, 80))166 self.image.fill(pygame.Color(165, 42, 42))167 self.rect = self.image.get_rect()168 self.w, self.h = self.image.get_rect()[2], self.image.get_rect()[3]169 self.rect.x = x170 self.rect.y = y171 pygame.draw.rect(self.image, (70, 54, 37), (0, 0, self.rect.w, self.rect.h), 3)172 def charge_switch(self, pos):173 if self.rect.x <= pos[0] <= self.rect.x + self.w and \174 self.rect.y <= pos[1] <= self.rect.y + self.h:175 # self.image.fill(pygame.Color(184, 134, 11))176 self.image.fill(pygame.Color(163, 73, 164))177 else:178 self.image.fill(pygame.Color(165, 42, 42))179 pygame.draw.rect(self.image, (70, 54, 37), (0, 0, self.rect.w, self.rect.h), 3)180 def slide(self, pos, y, mouse_logic):181 if (self.field[0] <= pos[0] <= self.field[0] + self.field[2] and182 self.field[1] <= pos[1] <= self.field[1] + self.field[3]) or mouse_logic:183 if (self.field[1] + 10 == self.rect.y and y > 0) or\184 (self.field[1] + self.field[3] - 85 == self.rect.y and y < 0):185 return 0186 k = self.rect.y187 if self.field[1] + 10 >= self.rect.y + y * -8:188 self.rect.y = self.field[1] + 10189 elif self.rect.y + y * -8 + self.rect.h >= self.field[1] + self.field[3] - 5:190 self.rect.y = self.field[1] + self.field[3] - 85191 else:192 self.rect.y += y * -8193 k = abs(k - self.rect.y)194 if y > 0:195 k *= -1196 return k197 def click(self, pos):198 if self.rect.x <= pos[0] <= self.rect.x + self.w and \199 self.rect.y <= pos[1] <= self.rect.y + self.h:200 return "slide"201class QuestionImage(pygame.sprite.Sprite):202 def __init__(self, x, y, w, text, *group, right=-1):203 super().__init__(*group)204 self.font = pygame.font.Font(os.path.join('data', "Fonts/VollkornSC-Regular.ttf"), 17)205 width = (w - 10) / (self.font.size("Wa")[0] / 2)206 self.strings = []207 leng = 0208 string = ""209 for i in text.split():210 if leng + len(i) > width or i == '*':211 self.strings.append(string)212 string = ""213 leng = 0214 if i == '*':215 continue216 string += i + " "217 leng += len(i) + 1218 if string:219 self.strings.append(string)220 self.image = pygame.Surface((w, len(self.strings) * self.font.size("v")[1] + 10))221 if right == -1:222 self.image.fill(pygame.Color(180, 180, 180))223 elif right:224 self.image.fill(pygame.Color(0, 180, 0))225 else:226 self.image.fill(pygame.Color(180, 0, 0))227 indexplus = 0228 for i in range(len(self.strings)):229 if self.strings[i][:3] == 'Ð. ':230 indexplus = 10231 if self.strings[i][:3] == 'Ð. ':232 indexplus = 20233 self.image.blit(self.font.render(self.strings[i], True, (30, 30, 30)),234 (18, i * (self.font.size(self.strings[i])[1] - 3) + indexplus + 5))235 self.rect = self.image.get_rect()236 self.w, self.h = self.image.get_rect()[2], self.image.get_rect()[3]237 self.rect.x = x238 self.rect.y = y239 pygame.draw.rect(self.image, (70, 54, 37), (0, 0, self.rect.w, self.rect.h), 3)240 def height(self):...
sketch.js
Source: sketch.js
...30 31 //warna putih32 noStroke();33 fill('white');34 rect(this.location.x-2, this.location.y-2, 4, 4);35 rect(this.location.x+2, this.location.y+2, 8, 2);36 rect(this.location.x-10, this.location.y+2, 8, 2);37 rect(this.location.x-8, this.location.y+4, 16, 4);38 rect(this.location.x-4, this.location.y+8, 8, 2);39 40 //warna random41 noStroke();42 fill('Red');43 rect(this.location.x-10, this.location.y-2, 6, 2);44 rect(this.location.x+4, this.location.y-2, 6, 2)45 rect(this.location.x-10, this.location.y-4, 8, 2);46 rect(this.location.x+2, this.location.y-4, 8, 2);47 rect(this.location.x-8, this.location.y-8, 16, 4);48 rect(this.location.x-4, this.location.y-10, 8, 2)49 50 //warna hitam51 noStroke();52 fill('Black');53 rect(this.location.x+2, this.location.y, 10, 2);54 rect(this.location.x-12, this.location.y, 10, 2);55 rect(this.location.x-12, this.location.y-4, 2, 8);56 rect(this.location.x+10, this.location.y-4, 2, 8);57 rect(this.location.x-10, this.location.y-8, 2, 4);58 rect(this.location.x+8, this.location.y-8, 2, 4);59 rect(this.location.x-8, this.location.y-10, 4, 2);60 rect(this.location.x+4, this.location.y-10, 4, 2);61 rect(this.location.x-4, this.location.y-12, 8, 2);62 rect(this.location.x-10, this.location.y+4, 2, 4);63 rect(this.location.x+8, this.location.y+4, 2, 4);64 rect(this.location.x-8, this.location.y+8, 4, 2);65 rect(this.location.x+4, this.location.y+8, 4, 2);66 rect(this.location.x-4, this.location.y+10, 8, 2);67 68 }69 70 gerakCuy(){71 var mouse = createVector(mouseX, mouseY);72 var w = p5.Vector.sub(mouse,CENTER);73 noStroke()74 75 //orange76 fill(255,140,0);77 rect(mouse.x+(r*-4), mouse.y+(r*-13), (r*1),(r*3));78 rect(mouse.x+(r*3), mouse.y+(r*-13), (r*1),(r*3));79 rect(mouse.x+(r*-4), mouse.y+(r*-10), (r*8),(r*5));80 rect(mouse.x+(r*-5), mouse.y+(r*-5), (r*10),(r*3));81 rect(mouse.x+(r*-5), mouse.y+(r*-5), (r*10),(r*3));82 rect(mouse.x+(r*-4), mouse.y+(r*-2), (r*8),(r*2));83 rect(mouse.x+(r*-5), mouse.y+(r*0), (r*10),(r*2));84 rect(mouse.x+(r*-6), mouse.y+(r*2), (r*12),(r*2));85 rect(mouse.x+(r*-7), mouse.y+(r*4), (r*14),(r*3));86 rect(mouse.x+(r*7), mouse.y+(r*-7), (r*1),(r*2));87 rect(mouse.x+(r*-8), mouse.y+(r*-7), (r*1),(r*2));88 rect(mouse.x+(r*9), mouse.y+(r*-6), (r*1),(r*1));89 rect(mouse.x+(r*-10), mouse.y+(r*-6), (r*1),(r*1));90 rect(mouse.x+(r*10), mouse.y+(r*-5), (r*1),(r*1));91 rect(mouse.x+(r*-11), mouse.y+(r*-5), (r*1),(r*1));92 rect(mouse.x+(r*11), mouse.y+(r*-4), (r*1),(r*2));93 rect(mouse.x+(r*-12), mouse.y+(r*-4), (r*1),(r*2));94 rect(mouse.x+(r*12), mouse.y+(r*-2), (r*1),(r*2));95 rect(mouse.x+(r*-13), mouse.y+(r*-2), (r*1),(r*2));96 97 //warna kuning98 fill(255,222,173)99 rect(mouse.x+(r*2), mouse.y+(r*3), (r*1),(r*1));100 rect(mouse.x-(r*3), mouse.y+(r*3), (r*1),(r*1));101 rect(mouse.x-(r*4), mouse.y+(r*4), (r*8),(r*2));102 rect(mouse.x-(r*3), mouse.y+(r*6), (r*6),(r*1));103 rect(mouse.x-(r*3), mouse.y+(r*7), (r*6),(r*1));104 rect(mouse.x-(r*2), mouse.y+(r*7), (r*4),(r*1));105 106 //warna hitam107 fill('black');108 rect(mouse.x-(r*5), mouse.y-(r*2), (r*1),(r*2));109 rect(mouse.x-(r*6), mouse.y-(r*6), (r*1),(r*5));110 rect(mouse.x-(r*5), mouse.y-(r*13), (r*1),(r*8));111 rect(mouse.x-(r*4), mouse.y-(r*14), (r*1),(r*1));112 rect(mouse.x-(r*3), mouse.y-(r*13), (r*1),(r*3));113 rect(mouse.x-(r*2), mouse.y-(r*11), (r*1),(r*3));114 rect(mouse.x-(r*1), mouse.y-(r*11), (r*2),(r*1));115 rect(mouse.x+(r*1), mouse.y-(r*11), (r*1),(r*3));116 rect(mouse.x+(r*2), mouse.y-(r*13), (r*1),(r*3));117 rect(mouse.x+(r*3), mouse.y-(r*14), (r*1),(r*1));118 rect(mouse.x+(r*4), mouse.y-(r*13), (r*1),(r*8));119 rect(mouse.x+(r*5), mouse.y-(r*6), (r*1),(r*5));120 rect(mouse.x+(r*4), mouse.y-(r*2), (r*1),(r*2));121 rect(mouse.x+(r*5), mouse.y+(r*0), (r*1),(r*2));122 rect(mouse.x+(r*6), mouse.y+(r*2), (r*1),(r*2));123 rect(mouse.x+(r*7), mouse.y+(r*4), (r*1),(r*3));124 rect(mouse.x+(r*6), mouse.y+(r*7), (r*1),(r*2));125 rect(mouse.x+(r*3), mouse.y+(r*9), (r*3),(r*1));126 rect(mouse.x+(r*-3), mouse.y+(r*8), (r*6),(r*1));127 rect(mouse.x+(r*-6), mouse.y+(r*9), (r*3),(r*1));128 rect(mouse.x+(r*-7), mouse.y+(r*7), (r*1),(r*2));129 rect(mouse.x+(r*-8), mouse.y+(r*4), (r*1),(r*3));130 rect(mouse.x+(r*-7), mouse.y+(r*2), (r*1),(r*2));131 rect(mouse.x+(r*-6), mouse.y+(r*0), (r*1),(r*2));132 rect(mouse.x+(r*-4), mouse.y+(r*6), (r*1),(r*1));133 rect(mouse.x+(r*-3), mouse.y+(r*7), (r*1),(r*1));134 rect(mouse.x+(r*2), mouse.y+(r*7), (r*1),(r*1));135 rect(mouse.x+(r*3), mouse.y+(r*6), (r*1),(r*1));136 rect(mouse.x+(r*-1), mouse.y+(r*3), (r*2),(r*1));137 rect(mouse.x+(r*-4), mouse.y+(r*-7), (r*1),(r*1));138 rect(mouse.x+(r*3), mouse.y+(r*-7), (r*1),(r*1));139 140 //putih141 fill('white');142 rect(mouse.x+(r*-4), mouse.y+(r*-5), (r*1),(r*2));143 rect(mouse.x+(r*3), mouse.y+(r*-5), (r*1),(r*2));144 145 //cokelat146 fill(140,82,45);147 rect(mouse.x+(r*3), mouse.y+(r*1), (r*1),(r*1));148 rect(mouse.x+(r*-4), mouse.y+(r*1), (r*1),(r*1));149 rect(mouse.x+(r*2), mouse.y+(r*2), (r*1),(r*1));150 rect(mouse.x+(r*-3), mouse.y+(r*2), (r*1),(r*1));151 rect(mouse.x+(r*-2), mouse.y+(r*3), (r*1),(r*1));152 rect(mouse.x+(r*-4), mouse.y+(r*3), (r*1),(r*1));153 rect(mouse.x+(r*1), mouse.y+(r*3), (r*1),(r*1));154 rect(mouse.x+(r*3), mouse.y+(r*3), (r*1),(r*1));155 rect(mouse.x+(r*4), mouse.y+(r*4), (r*1),(r*2));156 rect(mouse.x+(r*-5), mouse.y+(r*4), (r*1),(r*2));157 rect(mouse.x+(r*-6), mouse.y+(r*5), (r*1),(r*1));158 rect(mouse.x+(r*5), mouse.y+(r*5), (r*1),(r*1));159 rect(mouse.x+(r*-6), mouse.y+(r*7), (r*3),(r*1));160 rect(mouse.x+(r*3), mouse.y+(r*7), (r*3),(r*1));161 rect(mouse.x+(r*-7), mouse.y+(r*6), (r*1),(r*1));162 rect(mouse.x+(r*6), mouse.y+(r*6), (r*1),(r*1));163 rect(mouse.x+(r*-5), mouse.y+(r*8), (r*1),(r*1));164 rect(mouse.x+(r*4), mouse.y+(r*8), (r*1),(r*1));165 rect(mouse.x+(r*6), mouse.y+(r*-8), (r*1),(r*6));166 rect(mouse.x+(r*7), mouse.y+(r*-8), (r*1),(r*1));167 rect(mouse.x+(r*8), mouse.y+(r*-7), (r*2),(r*1));168 rect(mouse.x+(r*8), mouse.y+(r*-6), (r*1),(r*1));169 rect(mouse.x+(r*7), mouse.y+(r*-5), (r*1),(r*1));170 rect(mouse.x+(r*10), mouse.y+(r*-6), (r*1),(r*1));171 rect(mouse.x+(r*11), mouse.y+(r*-5), (r*1),(r*1));172 rect(mouse.x+(r*12), mouse.y+(r*-4), (r*1),(r*2));173 rect(mouse.x+(r*11), mouse.y+(r*-2), (r*1),(r*1));174 rect(mouse.x+(r*13), mouse.y+(r*-2), (r*1),(r*3));175 rect(mouse.x+(r*12), mouse.y+(r*0), (r*1),(r*1));176 rect(mouse.x+(r*-7), mouse.y+(r*-8), (r*1),(r*6));177 rect(mouse.x+(r*-8), mouse.y+(r*-8), (r*1),(r*1));178 rect(mouse.x+(r*-8), mouse.y+(r*-5), (r*1),(r*1));179 rect(mouse.x+(r*-9), mouse.y+(r*-7), (r*1),(r*2));180 rect(mouse.x+(r*-10), mouse.y+(r*-7), (r*1),(r*1));181 rect(mouse.x+(r*-11), mouse.y+(r*-6), (r*1),(r*1));182 rect(mouse.x+(r*-12), mouse.y+(r*-5), (r*1),(r*1));183 rect(mouse.x+(r*-13), mouse.y+(r*-4), (r*1),(r*2));184 rect(mouse.x+(r*-12), mouse.y+(r*-2), (r*1),(r*1));185 rect(mouse.x+(r*-14), mouse.y+(r*-2), (r*1),(r*3));186 rect(mouse.x+(r*-13), mouse.y+(r*0), (r*1),(r*1));187 188 //biru tua189 fill(25,25,112);190 rect(mouse.x+(r*2), mouse.y+(r*-3), (r*1),(r*1));191 rect(mouse.x+(r*-3), mouse.y+(r*-3), (r*1),(r*1));192 rect(mouse.x+(r*1), mouse.y+(r*2), (r*1),(r*1));193 rect(mouse.x+(r*-2), mouse.y+(r*2), (r*1),(r*1));194 rect(mouse.x+(r*3), mouse.y+(r*8), (r*1),(r*1));195 rect(mouse.x+(r*5), mouse.y+(r*8), (r*1),(r*1));196 rect(mouse.x+(r*-4), mouse.y+(r*8), (r*1),(r*1));197 rect(mouse.x+(r*-6), mouse.y+(r*8), (r*1),(r*1));198 rect(mouse.x+(r*7), mouse.y+(r*-4), (r*1),(r*1));199 rect(mouse.x+(r*-8), mouse.y+(r*-4), (r*1),(r*1));200 rect(mouse.x+(r*7), mouse.y+(r*-3), (r*2),(r*1));201 rect(mouse.x+(r*-9), mouse.y+(r*-3), (r*2),(r*1));202 rect(mouse.x+(r*6), mouse.y+(r*-2), (r*4),(r*1));203 rect(mouse.x+(r*-10), mouse.y+(r*-2), (r*4),(r*1));204 rect(mouse.x+(r*5), mouse.y+(r*-1), (r*7),(r*1));205 rect(mouse.x+(r*-12), mouse.y+(r*-1), (r*7),(r*1));206 rect(mouse.x+(r*6), mouse.y+(r*0), (r*3),(r*1));207 rect(mouse.x+(r*-9), mouse.y+(r*0), (r*3),(r*1));208 209 //biru muda210 fill(65,105,225);211 rect(mouse.x+(r*8), mouse.y+(r*-5), (r*1),(r*2));212 rect(mouse.x+(r*9), mouse.y+(r*-5), (r*1),(r*3));213 rect(mouse.x+(r*10), mouse.y+(r*-4), (r*1),(r*3));214 rect(mouse.x+(r*-9), mouse.y+(r*-5), (r*1),(r*2));215 rect(mouse.x+(r*-10), mouse.y+(r*-5), (r*1),(r*3));216 rect(mouse.x+(r*-11), mouse.y+(r*-4), (r*1),(r*3));217 rect(mouse.x+(r*-3), mouse.y+(r*-4), (r*1),(r*1));218 rect(mouse.x+(r*2), mouse.y+(r*-4), (r*1),(r*1));219 220 221 var arahMouse = p5.Vector.sub(mouse, this.location);222 var topSpeed = (2, 10);223 224 arahMouse.normalize();225 arahMouse.mult(0.5); 226 227 228 this.velocity.add(this.acceleration);229 this.velocity.add(arahMouse);230 this.velocity.limit(topSpeed);231 this.location.add(this.velocity);232 }...
CropRect.js
Source: CropRect.js
1/**2 * CropRect.js3 *4 * Released under LGPL License.5 * Copyright (c) 1999-2015 Ephox Corp. All rights reserved6 *7 * License: http://www.tinymce.com/license8 * Contributing: http://www.tinymce.com/contributing9 */10/**11 * ...12 */13define("tinymce/imagetoolsplugin/CropRect", [14 "tinymce/dom/DomQuery",15 "tinymce/ui/DragHelper",16 "tinymce/ui/Rect",17 "tinymce/util/Tools",18 "tinymce/util/Observable"19], function($, DragHelper, Rect, Tools, Observable) {20 var count = 0;21 return function(currentRect, viewPortRect, clampRect, containerElm) {22 var instance, handles, dragHelpers, blockers, prefix = 'mce-', id = prefix + 'crid-' + (count++);23 handles = [24 {name: 'move', xMul: 0, yMul: 0, deltaX: 1, deltaY: 1, deltaW: 0, deltaH: 0},25 {name: 'nw', xMul: 0, yMul: 0, deltaX: 1, deltaY: 1, deltaW: -1, deltaH: -1},26 {name: 'ne', xMul: 1, yMul: 0, deltaX: 0, deltaY: 1, deltaW: 1, deltaH: -1},27 {name: 'sw', xMul: 0, yMul: 1, deltaX: 1, deltaY: 0, deltaW: -1, deltaH: 1},28 {name: 'se', xMul: 1, yMul: 1, deltaX: 0, deltaY: 0, deltaW: 1, deltaH: 1}29 ];30 blockers = ["top", "right", "bottom", "left"];31 function getAbsoluteRect(outerRect, relativeRect) {32 return {33 x: relativeRect.x + outerRect.x,34 y: relativeRect.y + outerRect.y,35 w: relativeRect.w,36 h: relativeRect.h37 };38 }39 function getRelativeRect(outerRect, innerRect) {40 return {41 x: innerRect.x - outerRect.x,42 y: innerRect.y - outerRect.y,43 w: innerRect.w,44 h: innerRect.h45 };46 }47 function getInnerRect() {48 return getRelativeRect(clampRect, currentRect);49 }50 function render() {51 function createDragHelper(handle) {52 var startRect;53 return new DragHelper(id, {54 document: containerElm.ownerDocument,55 handle: id + '-' + handle.name,56 start: function() {57 startRect = currentRect;58 },59 drag: function(e) {60 var x, y, w, h, rect;61 x = startRect.x;62 y = startRect.y;63 w = startRect.w;64 h = startRect.h;65 x += e.deltaX * handle.deltaX;66 y += e.deltaY * handle.deltaY;67 w += e.deltaX * handle.deltaW;68 h += e.deltaY * handle.deltaH;69 if (w < 20) {70 w = 20;71 }72 if (h < 20) {73 h = 20;74 }75 rect = currentRect = Rect.clamp({x: x, y: y, w: w, h: h}, clampRect, handle.name == 'move');76 rect = getRelativeRect(clampRect, rect);77 instance.fire('updateRect', {rect: rect});78 setInnerRect(rect);79 }80 });81 }82 $('<div id="' + id + '" class="' + prefix + 'croprect-container" data-mce-bogus="all">').appendTo(containerElm);83 Tools.each(blockers, function(blocker) {84 $('#' + id, containerElm).append(85 '<div id="' + id + '-' + blocker + '"class="' + prefix + 'croprect-block" style="display: none" data-mce-bogus="all">'86 );87 });88 Tools.each(handles, function(handle) {89 $('#' + id, containerElm).append(90 '<div id="' + id + '-' + handle.name + '" class="' + prefix +91 'croprect-handle ' + prefix + 'croprect-handle-' + handle.name + '" style="display: none" data-mce-bogus="all">'92 );93 });94 dragHelpers = Tools.map(handles, createDragHelper);95 repaint(currentRect);96 }97 function toggleVisibility(state) {98 var selectors;99 selectors = Tools.map(handles, function(handle) {100 return '#' + id + '-' + handle.name;101 }).concat(Tools.map(blockers, function(blocker) {102 return '#' + id + '-' + blocker;103 })).join(',');104 if (state) {105 $(selectors, containerElm).show();106 } else {107 $(selectors, containerElm).hide();108 }109 }110 function repaint(rect) {111 function updateElementRect(name, rect) {112 if (rect.h < 0) {113 rect.h = 0;114 }115 if (rect.w < 0) {116 rect.w = 0;117 }118 $('#' + id + '-' + name, containerElm).css({119 left: rect.x,120 top: rect.y,121 width: rect.w,122 height: rect.h123 });124 }125 Tools.each(handles, function(handle) {126 $('#' + id + '-' + handle.name, containerElm).css({127 left: rect.w * handle.xMul + rect.x,128 top: rect.h * handle.yMul + rect.y129 });130 });131 updateElementRect('top', {x: viewPortRect.x, y: viewPortRect.y, w: viewPortRect.w, h: rect.y - viewPortRect.y});132 updateElementRect('right', {x: rect.x + rect.w, y: rect.y, w: viewPortRect.w - rect.x - rect.w + viewPortRect.x, h: rect.h});133 updateElementRect('bottom', {134 x: viewPortRect.x,135 y: rect.y + rect.h,136 w: viewPortRect.w,137 h: viewPortRect.h - rect.y - rect.h + viewPortRect.y138 });139 updateElementRect('left', {x: viewPortRect.x, y: rect.y, w: rect.x - viewPortRect.x, h: rect.h});140 updateElementRect('move', rect);141 }142 function setRect(rect) {143 currentRect = rect;144 repaint(currentRect);145 }146 function setViewPortRect(rect) {147 viewPortRect = rect;148 repaint(currentRect);149 }150 function setInnerRect(rect) {151 setRect(getAbsoluteRect(clampRect, rect));152 }153 function setClampRect(rect) {154 clampRect = rect;155 repaint(currentRect);156 }157 function destroy() {158 Tools.each(dragHelpers, function(helper) {159 helper.destroy();160 });161 dragHelpers = [];162 }163 render(containerElm);164 instance = Tools.extend({165 toggleVisibility: toggleVisibility,166 setClampRect: setClampRect,167 setRect: setRect,168 getInnerRect: getInnerRect,169 setInnerRect: setInnerRect,170 setViewPortRect: setViewPortRect,171 destroy: destroy172 }, Observable);173 return instance;174 };...
rect.pyi
Source: rect.pyi
...54 @overload55 def collidepoint(self, x: float, y: float) -> bool: ...56 @overload57 def collidepoint(self, x_y: Iterable[float]) -> bool: ...58 def colliderect(self, rect: "Rect") -> bool: ...59 def collidelist(self, rect_list: List["Rect"]) -> int: ...60 def collidelistall(self, rect_list: List["Rect"]) -> List[int]: ...61 # Also undocumented: the dict collision methods take a 'values' argument62 # that defaults to False. If it is False, the keys in rect_dict must be63 # Rect-like; otherwise, the values must be Rects.64 @overload65 def collidedict(self, rect_dict: Dict[_RectStyle, _V], values: bool = ...) -> Tuple[_RectStyle, _V]: ...66 @overload67 def collidedict(self, rect_dict: Dict[_K, "Rect"], values: bool) -> Tuple[_K, "Rect"]: ...68 @overload69 def collidedictall(self, rect_dict: Dict[_RectStyle, _V], values: bool = ...) -> List[Tuple[_RectStyle, _V]]: ...70 @overload...
Layout.js
Source: Layout.js
1/**2 * Layout.js3 *4 * Released under LGPL License.5 * Copyright (c) 1999-2016 Ephox Corp. All rights reserved6 *7 * License: http://www.tinymce.com/license8 * Contributing: http://www.tinymce.com/contributing9 */10define('tinymce/inlite/core/Layout', [11 'global!tinymce.geom.Rect',12 'tinymce/inlite/core/Convert'13], function (Rect, Convert) {14 var result = function (rect, position) {15 return {16 rect: rect,17 position: position18 };19 };20 var moveTo = function (rect, toRect) {21 return {x: toRect.x, y: toRect.y, w: rect.w, h: rect.h};22 };23 var calcByPositions = function (testPositions1, testPositions2, targetRect, contentAreaRect, panelRect) {24 var relPos, relRect, outputPanelRect;25 relPos = Rect.findBestRelativePosition(panelRect, targetRect, contentAreaRect, testPositions1);26 targetRect = Rect.clamp(targetRect, contentAreaRect);27 if (relPos) {28 relRect = Rect.relativePosition(panelRect, targetRect, relPos);29 outputPanelRect = moveTo(panelRect, relRect);30 return result(outputPanelRect, relPos);31 }32 targetRect = Rect.intersect(contentAreaRect, targetRect);33 if (targetRect) {34 relPos = Rect.findBestRelativePosition(panelRect, targetRect, contentAreaRect, testPositions2);35 if (relPos) {36 relRect = Rect.relativePosition(panelRect, targetRect, relPos);37 outputPanelRect = moveTo(panelRect, relRect);38 return result(outputPanelRect, relPos);39 }40 outputPanelRect = moveTo(panelRect, targetRect);41 return result(outputPanelRect, relPos);42 }43 return null;44 };45 var calcInsert = function (targetRect, contentAreaRect, panelRect) {46 return calcByPositions(47 ['cr-cl', 'cl-cr'],48 ['bc-tc', 'bl-tl', 'br-tr'],49 targetRect,50 contentAreaRect,51 panelRect52 );53 };54 var calc = function (targetRect, contentAreaRect, panelRect) {55 return calcByPositions(56 ['tc-bc', 'bc-tc', 'tl-bl', 'bl-tl', 'tr-br', 'br-tr'],57 ['bc-tc', 'bl-tl', 'br-tr'],58 targetRect,59 contentAreaRect,60 panelRect61 );62 };63 var userConstrain = function (handler, targetRect, contentAreaRect, panelRect) {64 var userConstrainedPanelRect;65 if (typeof handler === 'function') {66 userConstrainedPanelRect = handler({67 elementRect: Convert.toClientRect(targetRect),68 contentAreaRect: Convert.toClientRect(contentAreaRect),69 panelRect: Convert.toClientRect(panelRect)70 });71 return Convert.fromClientRect(userConstrainedPanelRect);72 }73 return panelRect;74 };75 return {76 calcInsert: calcInsert,77 calc: calc,78 userConstrain: userConstrain79 };...
Direction.py
Source: Direction.py
1from enum import Enum2from pygame.rect import Rect3def center(rect: Rect, x: int, y: int) -> Rect:4 rect.center = (x, y)5 return rect6def left(rect: Rect, x: int, y: int) -> Rect:7 rect.center = (x + rect.width / 2, y)8 return rect9def right(rect: Rect, x: int, y: int) -> Rect:10 rect.center = (x - rect.width / 2, y)11 return rect12def up(rect: Rect, x: int, y: int) -> Rect:13 rect.center = (x, y - rect.height / 2)14 return rect15def down(rect: Rect, x: int, y: int) -> Rect:16 rect.center = (x, y + rect.height / 2)17 return rect18class DIRECTION(Enum):19 CENTER = center20 LEFT = left21 RIGHT = right22 UP = up...
Using AI Code Generation
1var ghostjs = require('ghostjs');2ghostjs.create().then(function (ghost) {3 return ghost.rect('#hplogo');4 }).then(function (rect) {5 console.log(rect);6 });7});8### ghostjs.create([options])9Default: `{width: 1024, height: 768}`10### ghost.open(url)11### ghost.close()12### ghost.reload()13### ghost.back()14### ghost.forward()15### ghost.title()16### ghost.url()17### ghost.html()18### ghost.source()19### ghost.css(selector, property)20### ghost.text(selector)21### ghost.attr(selector, attribute)22### ghost.rect(selector)23### ghost.value(selector)24### ghost.count(selector)25### ghost.exists(selector)26### ghost.visible(selector)27### ghost.click(selector)28### ghost.type(selector, text)29### ghost.clear(selector)30### ghost.select(selector, value)31### ghost.check(selector)32### ghost.uncheck(selector)33### ghost.scrollTo(selector, position)
Using AI Code Generation
1var ghost = require('ghostjs');2 ghost.rect('#hplogo', function(err, rect) {3 console.log(rect);4 ghost.exit();5 });6});7var ghost = require('ghostjs');8 ghost.rect('#hplogo', function(err, rect) {9 console.log(rect);10 ghost.exit();11 });12});13var ghost = require('ghostjs');14 ghost.rect('#hplogo', function(err, rect) {15 console.log(rect);16 ghost.exit();17 });18});19var ghost = require('ghostjs');20 ghost.rect('#hplogo', function(err, rect) {21 console.log(rect);22 ghost.exit();23 });24});25var ghost = require('ghostjs');26 ghost.rect('#hplogo', function(err, rect) {27 console.log(rect);28 ghost.exit();29 });30});31var ghost = require('ghostjs');32 ghost.rect('#hplogo', function(err, rect) {33 console.log(rect);34 ghost.exit();35 });36});37var ghost = require('ghostjs');38 ghost.rect('#hplogo', function(err, rect) {39 console.log(rect);40 ghost.exit();41 });42});43var ghost = require('ghostjs');44 ghost.rect('#hplogo', function(err, rect) {45 console.log(rect);46 ghost.exit();47 });48});49var ghost = require('ghostjs');
Using AI Code Generation
1var ghost = require('ghostjs');2var assert = require('assert');3 .then(function() {4 return ghost.wait(2000);5 })6 .then(function() {7 return ghost.rect('#rectangle');8 })9 .then(function(rect) {10 assert.equal(rect.x, 50);11 assert.equal(rect.y, 50);12 assert.equal(rect.width, 100);13 assert.equal(rect.height, 100);14 })15 .then(function() {16 return ghost.exit();17 })18 .catch(function(e) {19 console.log(e);20 });
Using AI Code Generation
1var ghost = require('ghostjs');2 g.wait(1000, function() {3 g.rect({x: 0, y: 0, width: 100, height: 100}, function(err, rect) {4 console.log(rect);5 });6 });7});8### ghostjs.open(url, [options], callback)9- **options** - (optional) an object with the following properties:10### ghostjs.wait(milliseconds, callback)11### ghostjs.rect(options, callback)12### ghostjs.click(options, callback)13### ghostjs.mouseDown(options, callback)
Using AI Code Generation
1var ghost = require('ghostjs');2 ghost.rect('#hplogo', function(err, rect) {3 console.log(rect);4 });5});6var ghost = require('ghostjs');7 ghost.rect('#hplogo', function(err, rect) {8 console.log(rect);9 });10});11var ghost = require('ghostjs');12 ghost.rect('#hplogo', function(err, rect) {13 console.log(rect);14 });15});16var ghost = require('ghostjs');17 ghost.rect('#hplogo', function(err, rect) {18 console.log(rect);19 });20});21var ghost = require('ghostjs');22 ghost.rect('#hplogo', function(err, rect) {23 console.log(rect);24 });25});26var ghost = require('ghostjs');27 ghost.rect('#hplogo', function(err, rect) {28 console.log(rect);29 });30});31var ghost = require('ghostjs');32 ghost.rect('#hplogo', function(err, rect) {33 console.log(rect);34 });35});36var ghost = require('ghostjs');37 ghost.rect('#hplogo', function(err, rect) {38 console.log(rect);39 });40});41var ghost = require('ghostjs');42 ghost.rect('#hplogo', function(err, rect) {43 console.log(rect);44 });45});
Using AI Code Generation
1var ghost = require('ghostjs');2var rect = require('ghostjs').rect;3 .then(function() {4 return rect(100, 100, 300, 300);5 })6 .then(function() {7 return ghost.screenshot('google.png');8 })9 .then(function() {10 return ghost.exit();11 })12 .catch(function(error) {13 console.log(error);14 });15#### ghostjs.open(url)16#### ghostjs.exit()17#### ghostjs.screenshot(filename)18#### ghostjs.rect(x, y, width, height)19#### ghostjs.click(selector)20#### ghostjs.sendKeys(selector, text)21#### ghostjs.mouseEvent(selector, type)22#### ghostjs.mouseMove(selector)23#### ghostjs.mouseDown(selector)24#### ghostjs.mouseUp(selector)25#### ghostjs.mouseClick(selector)26#### ghostjs.mouseDoubleClick(selector)27#### ghostjs.mouseOver(selector)28#### ghostjs.mouseOut(selector)29#### ghostjs.mouseEnter(selector)30#### ghostjs.mouseLeave(selector)31#### ghostjs.mouseWheel(selector)32#### ghostjs.mouseScroll(selector)33#### ghostjs.mouseDrag(selector)34#### ghostjs.mouseDragAndDrop(selector, target)35#### ghostjs.scroll(x, y)36#### ghostjs.scrollLeft(x
Using AI Code Generation
1var ghost = require('ghostjs');2 .then(function() {3 return ghost.rect('#hplogo', function(rect) {4 console.log(rect);5 });6 })7 .then(function() {8 return ghost.close();9 })10 .catch(function(e) {11 console.log(e);12 ghost.close();13 });14var ghost = require('ghostjs');15 .then(function() {16 return ghost.rect('#hplogo', function(rect) {17 console.log(rect);18 });19 })20 .then(function() {21 return ghost.close();22 })23 .catch(function(e) {24 console.log(e);25 ghost.close();26 });27The MIT License (MIT)28[Michael Zaporozhets](
Using AI Code Generation
1var ghost = require('ghostjs');2 ghost.rect(function(err, rect) {3 console.log(rect);4 });5});6ghost.exit();7{ x: 0, y: 0, width: 1024, height: 768 }
Using AI Code Generation
1var ghost = require('ghostjs');2 ghost.rect(0, 0, 100, 100, function() {3 ghost.exit();4 });5});6var ghost = require('ghostjs');7ghost.open('test.png', function() {8 ghost.rect(0, 0, 100, 100, function() {9 ghost.exit();10 });11});12ghost.rect(x, y, width, height, callback)13{14}
Using AI Code Generation
1#### `new Ghost(options)`2#### `ghost.open(url, options)`3#### `ghost.close()`4#### `ghost.run(code, options)`5#### `ghost.screenshot(options)`6- `format` - format of the screenshot (png, jpeg)7- `quality` - quality of the screenshot (0-100)8#### `ghost.pdf(options)`9- `format` - format of the pdf (A3, A4, A5, Legal, Letter, Tabloid)10- `orientation` - orientation of the pdf (portrait, landscape)11- `margin` - margin of the pdf (in mm)12#### `ghost.injectJs(path)`13#### `ghost.evaluate(code, options)`14#### `ghost.includeJs(url, options)`15#### `ghost.setHeaders(headers)`16#### `ghost.setCookies(cookies)`17#### `ghost.addCookie(cookie)`
Check out the latest blogs from LambdaTest on this topic:
In my last blog, I investigated both the stateless and the stateful class of model-based testing. Both have some advantages and disadvantages. You can use them for different types of systems, depending on whether a stateful solution is required or a stateless one is enough. However, a better solution is to use an aggregate technique that is appropriate for each system. Currently, the only aggregate solution is action-state testing, introduced in the book Paradigm Shift in Software Testing. This method is implemented in Harmony.
With the rise of Agile, teams have been trying to minimize the gap between the stakeholders and the development team.
Many theoretical descriptions explain the role of the Scrum Master as a vital member of the Scrum team. However, these descriptions do not provide an honest answer to the fundamental question: “What are the day-to-day activities of a Scrum Master?”
Automating testing is a crucial step in the development pipeline of a software product. In an agile development environment, where there is continuous development, deployment, and maintenance of software products, automation testing ensures that the end software products delivered are error-free.
In today’s tech world, where speed is the key to modern software development, we should aim to get quick feedback on the impact of any change, and that is where CI/CD comes in place.
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!