Description: All revisions to merge
This file as text.
(active) Revisions in this set:
70ae0a2dc99eb1fa4a11452e8aa1b5e133389e21,c337575f69550827da75588311ecf2714859be15,800ce234991a53d652a31090a6bad7b2f40a7856
64ad48e89ef7d164e9517d02ec9eb5a124bfd826,a21397e356b523a0c3e5faf45014f104fd64b96e,49e7e5f5129a71a6ef81d712e0a04c650ce6533c
7855b3cf1b46021b2463fcf6987f9229c91d77e3,a34d4e715ce6bfda8a0c07be4fbfb53f1690808a,51644f497b5a301f39600bb4b799fb3bc606ec73
10f72ba2c897fd03477267faeb2d1985780d6e40,578e60e6ef29dc5a082fe253ef871908154449a0,5cb8bc546e093d2f14206c1aacf9a1112d2255c6
b4a7d6a82eea9ad71bec75571d7c051cdd68b141,d5f0d8e30624ea69c18c50a4e200e39552bd1092,352fb866ef19c845756840859c91088f9ed32740
e147f6fb48348a0be410cdfc7e94efc6ca3c46a2,c7a0022146dcba901802ed22e1b1e76652e20883,8c59eb1ce5f3632fc6f63c974755c5f6abc51a8f
46b89f0ef97ada43531294be3214102723bfd325,ddb4e37104a4923d4fb2841e89190769dba2f86c,ff3d7862d6ae93341c08514f02da0a0019bb8e09
5604e98b1cb8f6d6b4c33daa096315c0f510818b,172384feddf1efb5a2ec4525972f8765dd7ed0c6,8943c0584edc3089df819481e646371ebeae03f7
40598944f80a7e50128c10e037c9d21407a42131,2f6b15b1e2d9f02b1222345e9f6bd41df35771d2,4860f3934a5b7ee9242a4b90717807f55730f8fa
9ef7a17390094756adfcd480bea058de3fb2b2a2,68bcffc3e0c358a7dc84ff3a9dfe3f12ddd9f132,aa89182bf5f55404265650497f976f741d7506df
4c0a213f0d07ebf3ed1d8309fb4848bc445bd28d,84b5129f1dc443351e7b914686bf70e9b81b99f6,c306f57ecbcd6098f8442cdb38c3a1e8ea2e13eb
e60a5ebfe76d8935112337011c7919c134388f49,a29290202f7fc8f440d965f74ba2c0740130324f,692c287c3e3d006e54eb72fab484b00a2ad3a6f2
7eb9b23fa5224f9ae4f9db985f8f163a7753bd63,c0c602f76dee156f753f3b4c6f5393efde3d7898,aa6f6423b23d1e72640b09fceac64e544a8c2030
bcf03a52d897c926adda3521c489eb5328d72f10,a9972b430977a23c3e1ea893e19a1b7bed3cf697,116f36fe56bb53c4ead4752335f07411e678aeb8
9febce6ffbe18b5cc3a630bcdb5da3d690fb3dad,af7dfbc970145b96fb3b1da40d80eee77dc6211f,6521918269eb70102aba2c4c5dcf03645b53a766
02e03cbd860dbbc9b32385d2a1132d3f6ee6c4d7,88589fb99d4b12450a982445d52c9590a5893a31,33463c86983c8db5cb3a903921f8acbd600099a2
f27fee55662aef795e91eb821cf76e7ee6c4c6cc,379c2fe821cbbba289662d2db0acdafde41d29b8,0a5e6d29cb32b42dd488fd5b0c9f377e138f5d63
a47f153daed4b95925d299168baf916a65573f73,112fb4613b0e0f014f12bc29da7ed2dcbe99a1d1,2b459b30d20db31236b4fe1695865faa9f2976fe
bf4eda478d267055cabd7621ffb48ad59be4553b,18a45d94a36cd61afd82e4313142190af31a74cb,6a612f90032fe3b129865fcfa59ed5191638faab
cee3065f9321d84ce0d76cf6c016a51814077c54,685d090bf2b5db6671b77e33a39c7594ec42fac3,b6f0fa055f03a70056f4b9447fde0c880b0233bf
aa7bddc62129bf70e79272e11a492f2b66a15d17,82b2e8a0804fefda6ab19dca1e434d6671ee35eb,59aeb8260345ed2899a780a4352bcaf6e875b339
cd209cea53e17ec7056a7b414a976ce61b236636,eb30bfa9f0291b247fcb7d3f84ade24fe8776c47,c5e35e8d117c75fa2c0fb181fe31ddc135871b62
c10c9607f1bdd0810304842349acb812718dee47,e7ea79d71dd0821336edb3f2e337ca2fd30e91dd,a7e13587a06f91b42ac671c7a01ae15d524612af
011968e74b105e7fba13f10d1bf0c35931feff0b,cdce68451adb2285d3333a059f6003e1b32d55d7,64e8557180e68379b17d2d1a32b584c57893ffbf
a092da723abb7caca19994e66e60288060bf0c79,2a016889de1ba62b9791ff68ac039843a4ab899b,47c9bca7f23ab952ff0fe35ddf5aed3935de2613
59d5d6ec9536d2e2181d1407448835c5b64614fe,2a9ce2ed6cc1cbdb8623cccfbf19e4981fa793d5,fa2d82f8795c06a3964e462d5ba55ad16df5e06e
2dc64e5fae911dbf7cd67233c39eb6b919aeedad,4357caaad882705021c49bab78882f65fe52a612,a0262525085fe0ea885f8571d336a366c4c750cc
30d64cec68371f819a3460aba3d9776770d08977,a077e0dd90cba0fa1e388ea2101abf66f6d394b3,78a26e53f800e319dda7ccf6d95f76b7586544a0
a19528efa1145e2403104931dcd153515c215810,9b0ff05ee812e389651a5f0be280ca7837af3dc7,0e546d47ca72794e9d3edfd3f15435fc09d9cfa4
0a3c94bc72b244d10cc16c59d2656d31dd58e34e,c9a7503bbb0728fcde9decb9201bd6a519ce2587,8fba43609d2e6a3a8fc65690f06ffda024d36752
f964dacd24b0e79df796036f788e8dd50fc79b71,95d18cd0525963be91fd1e6fc43864c7cde6cab9,c2c942374d35ac90b5af802a805082f596a19275
a7642b70c14ce826822d39f691b70adfce0a03ac,f5ce7c572b7488e7b53763d88cef4a8e9451b891,5f1933eecf874f23c756a3544621c0d26ad7737e
12e66de0a60ddf16adc466bce267675c72568e53,91766375c73f7c7e77b5c9eb0865549efe3b7097,aefe3d8c552287fc0a79d1b3a626531108b98fa6
d38e97c6616ada8556c94de84668ae26f69fa4f1,28235033d742b7fb75e08fd661724b754e2d9d45,58d899bf75308e6b69159dd531e1daef7b4b06e8
ba4d10ade0776de1c8bb10a6a41d3afe33c9ee5d,3101c29dba54326550bdbc87f30921ff961b5ad6,b11588693015a51d2cb70f4be4cca08cd3e4ffc5
72919d64ef2caacaea28851fa8288bfb444fe092,bbe65d06b9a9aca06cd646a978c82da3597d7f20,d6d4c68c86e0f93648e8ed0f41a87537ac2d3e62
71c55b4e533c0db4236261e9d2a31516547af02e,c632b232342b544d62c4849b2932b6ae6269729a,98e77922bf2d5667315633180e563e6b9406463b
33c7d4c67d179e92088aed30184ce635ab8a1979,d65d96d49fd7331e0139be0ff87f9e7ced0c2965,dd6039716512f6679aacf46e24a5313673a3eaef
5c5dc2ed500be380ad85a1eac08c08536f9d1b4a,e1e52e334d4f71438c10b1d12ed08e4cc5686d5f,4212b6a92f513812e59fe0072a1f66b79326da90
1d2414a2b880b7c4320a6a6105472b298dc72177,db8f3eb0a7d55df62b6345be3e140c9cd19ba76c,9a2e1b99cb890ef06a238b37b7873fd6efd6b31a
2593a69eaf0a96b39821dab37f402efc0fbbf4ab,9f16c34329410b03b01ae0f66c67e2f90c07b864,e949276d9d91fa49e88f014bbb97b8cbf0ea39cd
c37c485eb78f7e827cf5b66578935fe32080de5e,9c041afc7c11e9d47a1f866e09881237f0817a71,0d50a63c7de23aea457bbbf9a979dd64870e5a4e
063415fa72d9b7e83e5f7fe814845eff10f94374,95acf20544191f4c0d1432b4e4a1fe7db323c05e,4d2d26c3183165ae27d2ced87d124f9d7bcc5f2c
e157939b4102eb0b52d0b93e05ba2f1f2021edfd,a40335de34e27666392983943ce18b4c672c4003,72416edcc465a6f9a9fea43c4219566750fb8db8
c45806c84f088e194a9900fa2f1fd8dacfcf02ee,e8ebc00b3b863f7072014f469f0f1096225f34ad,18a752d20ab3e0b1fd835d01a62d0843f6141af7
0a511ddb30bb1af327136091a99123f8876b105b,7d638a1e390970658014f762bcd8c8d743bc2e9c,f05c6666fe97f365f376fb3b7d8d8c0f6b91fb3b
d681d51e38659918dcef5a7322d286ee94dcd698,658730ee85e39e97635a2822653e452c7f8d32ca,04debba9dea61e81e1b75f3d2254439cd374bebf
3e135c02e79abff3fc26da2319c811b007074d7b,4f482516ddfff69c94bdcc0872ca6e6e8d04ed4e,6a6ea6729f4d4fd60791e504fd15e72b1342dfb5
aac266e82de41fb899e2e2be34b8ca3ebcc02389,7c92412c74ca66345a3f5284e07596c3a138f078,a8da1b51309069b1c274793ddf47472af131df2f
095bd6da7d845178545634c74cb3ee4b7b31bc17,11851d274c8c040067b6e61577f2b1d7cd7052b6,23570bed33014b272064e963180c76184ed51d1c
baa6525a9e73f885381e94a7a8acf03c2d4f406f,5648bd9bdc283697604608f4c9b43f18f85ad047,7b880b2eee41a61f1ddf5e9c21f428a67e2a5012
55c9af86f44712251fccf54d518205b5c39bad5d,ac81dc399611d348fe81df7a4a96288b2f6d1e13,6dbde11f5a46550784eb4d288b765c4339cf3c4c
08d6ca72604e14563234849c61ecb13f071fb5f6,ae8304f65776c3bbccbe89f6eb2981462ca96e52,cefb38b6054db7f9978ed12b95c4c6a13cfebe16
d1361ca6edf25dd49e7184b4312b3ed050a575fd,3b9f5a5e96f6871b119fa5dd6b68d64ac6bed3cd,9d56387e7fadbea2e45f49738abc2e376379004f
ea69a5b372db2e43190cc502392b965f76290de1,ccb8e8656020dd8b550dffddf6d2807bc7b8a2d4,b96a8aee616b2437cb5c5b8c8e2d5851a11f56f1
ac37a54d794ec134ac49fe81710ba0b45b774831,477d7be6515dc3e5e3ab5e01f63828d62caecfab,c43cae9231a40132bb9c3f446463152edcc472cc
20fea3607cce1b6c0284c7b4c3c75594589cea99,413a3599c1c35857c5be27e9c61721aa072524c9,97b40dc16daccea9a2ae62cff12366c3aa197c39
026d06cffbaf1658379a61f657415acd3f43e2c8,50ab607676f8a7eb9abd6e499dde5362d32bbdaf,758a8dd34a5dd016c6cc4447d609ddb1d6541556
b60cbf33296d21e8d207e6949dbb39717d0b2f25,67fe756642367b1a224c6dbaa05026fe61096bc1,31ae109a317d480dec469a000603d82f58d813b7
6629e72d795b94e237dea897f8526617d6c5160d,eeadf618b8320fc653e66ff4b24b58017c10c607,2109612fa3bbc7feffcae2c52a7661e65eed250a
b7da7cd654a752872057bd48ac17628665750aa1,122d0d36d61c25a5a879591b2923e1f904896de1,8846041b2358ad39ae0872417ba5b6ca3b24e8a7
32121de8aea0dfd64109f73696ed7530285fdbe1,09d6b1129d3ec5541fd69c36d2380561a28192bd,14f3676b2acdc1192c1183ef0765e36c01936107
3b7efb5123d3f0de813c8963ddbd0c8e027af90e,51502874aff7417cdd9050b3d0e24af48aebe176,32a51d7b6247b9d0a65a031f49beb5f42c69cadd
99528f97740d688aaf92963d6de291ad4f9635d4,97bc58d2488f10ba7ae2590a029d41d60bbc7245,6e453a1477d6525becb22e90764547e63601385d
6b58185bda1b6d467f423d50a326857c5712f2a0,ff002e266434a261eb65df57b1b9e2241cd1ee0f,93e39fb0cd4f769d46de1db0c6ae9b7898b7bcd3
820d2f7135d7160dc85370c27758e2f1f6f3eee6,95171a1e2281d494c706108394bc0e695dfc1461,e69b4d2d9a9e1aba83c40a2b92ecda28c4625b44
ac8411f3cf29f0361ee963ef0d08d84ff85a723d,8845f4d1ce390679902873a611f9cf0e04e5b185,2330164ee2e700dd8e651d7018d2836bd722afed
7cc7268635512a76eb3f3473e6ddfc454ecc2294,c6bb85eae998ed42c242a3d5d7e24c2bf3231460,3b4011760a1dde45618b9b48529c5827d4eb8849
c55ffa8cc7574d94b38c7b5f7e7d41cb467e4578,1cc995b471f0e708abb9113064877d9a01a1d477,4f72edcdd59d7976e26aace0e6c0a393b6c4186c
f87304f5caf5f9e3afb96d339d12f90fe5dd9772,b1b559f2838fdbedfd399789c2a34405d0e74f91,dd290884306f9746c1a60a6b85f137d58bcfc759
eb769e3859d33f1c93f4870d97be243718de50f5,f3d831b480dabc787b9126e3929c7fcb387a309b,c9a7afe053a4feca5188dfaa57d2e42075eb48b9
70cadc76948864526b147e46052605cc7a69377b,f7549785407c1ac00df6addbf3c7346ef877debf,b840db72284ec707b22636aff5d36d84ad95a228
acfa2088efb90c4eb3b58e18f9261ab113287938,7f5c2fa3aae4273980635a703db4fc4c8fa828c4,a7c347fe567eead26455fa6be3c579a227673362
ce81e509075e2a186a2d9d854d1bddb891cea6f9,9c03c298567dabc027818e995fef06682e91a226,9a797b9f494d723f8b8b2286fc5db0338f63d98e
dee105654693cf7a8da064d3a2530d9436b07fdf,df598f186829a7074edfe4c4024c89e07abb2668,f6e32ae90e7aa852390174ebb5b8aca0392bcf25
bd4b7a6bc420196d0e846b5f058033101219c2cd,1641585655db9a22030745cf709105cdc3ac3dce,a2cee252e85a2e04b1e13a04d48060a3d8135889
22365a1f5700b924faf970f2c9a36e99c0f3d709,4d03f3a65e9da5a7d9bd71c0b9d0a1090cd4bea0,a72a12eef6133dacfa6d0a93ca8de63a71e92da7
e7c4fccf41056a5695f6aaf39c4b12df95af44a2,2ba239ea6d1474f2a6699f725480bbebfecfa005,10ab893de389cd0dc689ee4b038fd07487f5b0c5
3a8f25348b57a50f4e26ddca28c721046d8612a1,1d7486748a27010e304589d415c961435d3e0812,59aef99f5222f572b06408bb7a95c39e0b00a495
5182dc37af6f5df1e6fb2e0f08e6bd0c702fd033,cae98304f830a4f9e9f7cc5f33de1d3edb250af7,078d8e9d2abc188f4844b28b9f168fa6ec1bd6cc
51e68eb302c8f7fbaf95a04162bf79e3c6de3161,3a52fdf997f14b935f95b057925f1234a51dc629,193df0204ae176fff24978cb00539cf7481a1245
1b16ff3629c51a305b9808e751456f7eff1a5df8,b223d1c3048a22c1d2bdb3e8d933414e2843a737,644c47e1213118690d78d593a1c217335215fb1b
a527a40d12188f698526bd4827654b95e7da5d48,4d1ff152c4019ba3dccc64a1480d4d98b7be6e56,56f0a71466be36f158e239238517287a47e59335
b3ad384547fc2f8fb35b5ce7b1e73274f13c389d,fd1a09a254edd18eaa752fc34d7aa13424992974,6c82b2d1daacf29cabe1d6c22be050f12cfa3303
925531b99c1ffcb99a838a3991005eee827bfa9b,94d7a02fae1d06a40fc9313f7e42323f97d577c7,75a89d21159b3c4106596993f938b77e43ee048d
fc7ecf32065f1671421518f111f51c9eabe008c9,8c66e9a2eb763a9dfa37e35c7e31dac32e7fd7c2,4f0da5fcc3d4c0dc053cd88b1b00775b22eac668
4fb7b5d3ffe403756478930a33574f41d05af580,8d3d5276d74979c670c7571d10d698ba09e5c9e4,cfd0790f89641b4c7b98a24314448ea5ce6543df
24f6cc0da52e0c9f0c5285c7961e5b66b6c88891,6cb6517411066233d517a2d97d1e0dbdaa1255f3,c7bb028d35b0db4355ebbb7d97cfa3962db938a7
597a23d278f2c870dbf0a5d7fadb83908b365ce0,c85f7cfc261b20cf50c1e88418ce5f5722727c68,7bc03f2590d15a2e4882056c8b4d41521a950aa4
d1a097f6c376b8a9b9ef9dcedc91a35d046ebd2a,db055c8f0ce18c07a7263291942ee76a724234ab,22c87afdd1dfd31c8fc5261d26b83563c60bedcb
40630653b7b9ef8b793bc01a72c2d38f2d0ed37f,6d279fdbb9c0fca0dc02dfd8d17301fd782f6b41,c3607e0059f95a96bcb5f291a1d94f14737367fc
9906211f3b1d9dd39b16506483a33d3aa541750a,d1878fe5b21ed2cf39dfb22c5197d02aee2a49ec,6c888949992e530b72e641603d5200b2d3f57b9b
a186f484427dd09971c4b5c335b3a7e807eee796,4db5478acc409c6070e38152b0d24b7693c4df9d,acbf7d15c494c68b0f8209ccb0d041c8dba351f6
afd4599d26c0462c59d0e9ce9fae76a47c6d333f,2f40f818907756d1dc844bf3a5c9899986a3aeaf,04d295f1865d6c011d131ea4ccfb7dd1928ca758
4869d0ace9883ec2e0a4aa9bcf0cb63070df81e9,9c3e9e80a3e9aea5136c0adfc5bc8b41b3fa689e,2d01fe76f6debe1369ae3a345fed259282e0cc10
e52cf555ab862662622817397df755cce1466621,2b6076a719f4671b7bb838bb3ba8bba19f1018d2,6c87b89e45184fc5deda0c5af0e4ad9bd476776b
248fd313f8b5e37a8bb8a38bf92d8d1ec2fa1a5e,c24d525b9f1f1cd221c2f5e73b5fb6f147b2224c,e8dc54c768639c9c99b599850e8b2eee67a4ad37
25f6da706626b6c6a09a8c9286f1e949e44ca501,848890e54be05d7f5ae18b98757ea21d656f4366,a2a0ed53b235492d0141759705b6043ed9077774
8cf5779297f990693e1511eda3280655501d634b,7f44f2535ec808acb333415e9c395eee742f52b8,4082b8c7fcd6705ad1ba4ee02f4dad2c179fb8cb
4ea42ab6d23c4e56f47f91cd0a0caac0891dc842,63f9afa6bd0fb9741e951166239717f2727a2875,59a75ea42955ea59c6765c4d856062df8dbc83c1
ad677070f41593a6f8bda86e5840c2006cc17c5e,178217821c41221aefafb166224859f8f789c08f,2a0eb54fd5579a1cdc721ae604ba8d1b16b392f2
c7d8bd966646f98d9a5dca9a6a6e3583aed13cc8,cb5a1ed72784f8ded30149be51920d312f8ff80b,ea340b94816f65b6a170293073b31de9b566a6ea
d86da195707736005cbd7815d803bdf3440f8aee,5c4af27a7ae30d89923b197105b9268913252951,1d7ff66602c6ae042c39b6ac4ec5864056ba1386
503ea604f33b5a7dd72d7a6417f9a38774f19263,f9668f8c037b6202cd558fc173ca1c4256a1c6e0,ab51e8637c2a8879c3745dba029b57590c279630
8c362eac67df688f6c1fc7361f0d5c06a78c02ab,da0deae9aee929f3ccda08afdff56bc931a19e52,7a65e1f393fb3ef10fb4ac15865703a39123a8a7
353be907c76801e05832396087c5b653b301d7d7,7af95cbf063d4634f3e566419cca85ae6823b16c,1abea6451c7faeb0754df984102edb34066df709
13ce27cc1d4a7b148e4236d1a9c2d7d0d2f04071,ec45f0069a9f29c767cc632291c89b1a5a2aa774,26486bbaeac7aae4316d7b5f11c6a9bbeb424933
de80621e1e97e67b79a3cd3e58ff24a3eec93ed4,f5f25f7ae6312448bf71a500685761d660efbcad,bea9961d2d1a3962d5d3553422fb2eed94289234
eca60a0a89cb5b5afb264471aa561ab0afef57ff,f32748a8e7ae82084a5c0837a97f7da67af078b2,c728a1204a62846be24a5cfda23c61ce3eecb91a
f4718831ca31f2c332ba0d22301220f417b08114,52b4fc039c6e064b9720e16b34546bc7e18f4d71,e467d2387d64c175b6e09d38f15812ff41255673
00a67caa40dd518bf5476e6847257be9cc36a400,1c64f4c7512b4d84f1f628472e837f4fb935ce90,4d8dcfc42e965e3f5688b26f066c80512dfd7ee2
8b17af1f8995e8bd2c8ec3c522fca851e8622d1e,ff90e7622aaf4ac14695f30fa799b1faafeab558,b0ca862f32e037665167254d944838daf518ffdb
d4e059bd41b62841560790c0051c9c437243cad5,4f573b50adbd33a2b3d9daacc86cefe5edb68b48,5db8d6bd5eca39bd1205cf3b355a953d219fb9bc
fe47db32be35d0de7ee99d09e0fc6f51c0bac52e,43db73cb54e82f5d40448969c090cda730e5ecd1,e3546cf5af9cb17fd98cba5fa50f54ad16e14c9e
4ea55963ef78a168686761578fc8a3e840279ee6,0f61895194672675bfcce07389a8099c71ce2fca,ab67fe179567312d0c8124086e22ea60b23f1aa1
9a3ddf650c1c150039b2f63fd84300eaa4f1ac81,fa4596a08f2027787c19db2978208781828760de,97807af58d437998181982b77bb62cdee0e24a30
2b1297c3970f9815a35c3694920c634e0a30c3e3,0f8db5f590342c65f72e2d26faa4691a1929a1a9,9dd394a5f74d358db135dc4ad948879096080080
9c63675368559a4b41e15624190c09a0c0cf9164,3e8c7f66b71cf633a74971b60150d67690b43959,3a43ffd57bc989d3e5facb1edfefc49cbc0f18d8
382d5060a04504cacc56a365f02100a65108ad19,af36913469cc49f412cb38dabfe52400bce229f9,1a564de6e6b90d9d8acc1cafa7ce6fbd1a873abc
1a559f5c608c31d1b5e11e99076f5b8b9da19dc2,8b9e90dc7a9c45eb6d0458daec566d8064e1ef52,4e5f48a25ed461106a250314f5210f160aee1199
38a7f7c9756100e5777b9337aa0823709a46ed96,a51c06f90760b864d865b1956eb754062cf77857,bc77aad3d935e43807cbf349ad3b355508a961ee
e829596750b6e556b5104bf2308be97cb4b1db98,a87a7270d5fa1ea935e2a5e0fd411061e3215263,607126346997c1c34a825017a7c00d68c4cf72ed
bead1f81802eaf2f58a58bc4181e29575080d492,08791712d710acf57282b09f0846b1c8d27b9c5b,7c4e7d6bd3d7df2117ee4a76929746ab68079fc9
57ee0dd00afa7c2fc0eda107222e45ef257b1f0a,a277a5f8db6a078f981748c1f73b8cb43ff36f83,9f88cae771bc3bc99e02047cb1719aefc64480d2
e5c2d13671435042f61ac84d9634dea94f00af57,4da16992df594235915d715c8bc83f53e87a1f56,039aee956804015b1a6c3b07c203a4bf3bbcc49e
a04e4971fc3ef9b3bf5adf3dbc2a3b97de28b287,c7834af3545959d7c104078eefb568243cc71876,ac4f00af1eaf877d9d6288b9df0b3e5be5e2eb6e
258ed213e43932ba3a44dd47264269517887c669,ba1450f7e9488e1ae05c6bf46f3c13065180f642,c23df60ae5c3f16bda2ce2e7530368a65324caa5
529c76504137cb99b98d11f153999410a38f6bf4,d3310cc731fea0ed1e3cb2bb473d93f53f6fc24e,23957bddaaaadc8f174367f135c82ad2f4809677
5f9f97e75d35f70a93bf8f95f8f3416093ea48fb,1961c8f27c62a67561d9844f433ef6db5175a548,d68e48d1ead5f2ad7d5fab090f094679ff632db9
97995773a0fd567f3528d0729285420715460a87,3c89ec6f83f2581ca0a8d42705424464a48d27c8,0f1a20b8a48722ff00214869c30a7e99883bdb4c
2d68b7c7a9e175fed0ea5607fa78e8a766041859,af12abc939bf12fbb48bd2ff4759f5021c057311,9a82b32cde500d92b029746ad3c0847612f64187
7e16f651ea41f4657d327d97f266ec196dcb40db,d8d6c857e59bdedba1657b56aef66c3818b84726,889e50ed58004611c225ceb82e6559f573072679
774317788f1b2c3442ef78a759d9a60a8c7aff89,075e3da334bfc9788c2de0fde5eea479afe9616f,da978acfd97eaf08a66038b151f7f83cca83d769
982a4f4c63a4fcf424b9ff998f8aab846bced537,1e94304bf04a36497098ff282bdb0d64de6bb3db,f78e2072a193a49660ff8cd07273cb6c45b03779
41b93832c0ffe6c05cd2b14796642a9979414a6e,5c6d6b030d0ef310f3b83470474c25c2f9332d3c,0b850d9883e8d956a749585a212f6c0473126159
fe60708baca8ae1d15e81ae8f6c1aee2d2b09e85,bf3865a15a9429658c230b017d641e05cc38348b,0e7f562d19387dfd8e60a6f67dd1754496927888
62cef8eb2b66c464df6ae66827e090476bffb657,a7d45c0ca012f8d0ea1632bc509f5e31112aab1e,dba71de45bd7b7750383aec27608e092783b50f1
bac79df17e156e6b2cdc457ee586b4cc1957d01d,504bd61c7f56caebec1cf8fd75bbe11d8fe7d1eb,36899f65cf83f3f6f23428c313c561b02bca139e
1c86c0de48b20fdb2dd80fe4c867f4243eb1aa9e,eaa60e45465f1ab252030ee8fb79d201a6872a3c,4034dcc2c68797c8159978fe6d5a68b550a589c6
ead1eab3d7342ac6476ee87e871f6214872e5b1f,b5575c0829373904a10e532dac7ef26764705ad6,e583341877ff53bff386d038c2e387a224751121
837659f4201aab4fee9c8678fe51ac8a3218ca16,973741c9197c2b3217ba10f5058b7a2c3377d1d6,b0535d8d0fda36ec637e31343fabe552e8cce954
d65737393352eabc8aff52f9c7b6545d09c578c8,ed2ae508d090338a706418fdf740bc219b614776,fd42c3fb01e0339a63de0f26f69fca8bf4e1b819
d78dbd5d5920bb7279937138fb529bfd05f44b6b,74fed2a4cd6aca8fc399ac0c39953d07fb766ef0,bde560dac290929dbdf0c8df20a9c7e1f4dec727
1bb8bd471ae32a1db840b975616fe17e9653ac2c,5358851f84b9fb9af41df6290decea1c5ec7610e,2c1639003c50bb82167036f7372eff8100863a42
17aa8da99f5fe4049cb9050522830c9798630f36,cddc52a69fa7c3b75b7d3d3d94974670f69efe7d,1c8a1407f5388f8d18c31162e71017c873db0d89
6c7da3cca4233131377b81368f07a7c2cef85cc4,6bfaec84eb4bb98b0244eef228210f5aae6eb471,478b918386951fa9115d1b7206c83af732dff257
0b61b5d4cfd624402797619075436c57e0da3be9,1b0b81f714555cc0726f3679ddfbcd55c7279db4,61cd2e219d7e185a293ace5a5592d7019d3f1a05
47b8bf5924b835920fbf3d2f27137437c3c056de,b9e3a0692cea695c2fc7a65dd5826aa36d0e0d56,927fbc4387efbde9bf4865e9e304385026e4ba39
349bb2ff38a56baf6960a0196326aafbb1aff9a5,2b78a8fd3dec629d91b9fb74a01d06d904384117,53542b7c5ec57aac80fa55eb4efc9c85fdf33129
9b7cbb0e0b99bb2697e93057853c1cfdd1c99599,f6e13c50a91459873d9da21f14ad9e1eebf9a7ca,924b4c6f10917bdb65e4ff14f20c17211e72cc62
44beea91b5b4b6a43d55a215cc7281e042f91cdf,7b3e027dc8fdf8f4b188c8df7af23ac9b2c1d4e4,8ff0aaa36918970b7eaa0bdfbfa320afa564ad20
e008785152df10d7ac99ff2a162190d2f39a72f0,b9ddddf9b153fa5178118319c4d245d20d24bdb3,d9c109a4dd3e17405a567f2ebd657723dd86d259
6f411d6355156913f10c37aa700e1559a1a498c2,33d57ac646240541aaaed7307758d44eb93ebc7c,8d19bb12a2326177304ca963f406dc9a90961cd4
55aeac44f0c462bb66b0025884316dd13ce033dd,a83bc6263903a51c789545d381bfd86e3ae9f1d9,639adc314f4660859264f647b2b5172847265dcf
587397253df55fbf19c82129e8413a13d8bf7bca,b365fdd4786d21482b7e3a5483cd399f50b35e89,819752c334f6784a55b1ce151a8a0e11ccf87c7e
213b87fe91453fbca07dacff506b7687e42494e1,8988a5e028080ac37c20c06bf8d0cfc134cdeb7e,5c7adf9af382ee5919ebfb7c806cab3d520977dd
5f4a0c7af7b8f605338728aa0274ad1f877e2a75,0100c4abf8df357f5c58e9d70d8b35233e994c51,97a144ea6abfc4deecba0e10786e17519e1c6ce6
079d616978f27a05004218d3fd6724ef05b5e4e0,e7e96f98b2d4664f0561037ed7d465cf4c9d9cf3,b4baf9b49c9cb02cedb212fa9b444489ec9ba097
1d9220d2702a27e90cd6cddf2eb65561c3fb0161,1e4442f1fa25431480c9b1f4194589b04b5fd28c,cb4b085a99c726875ec848162770185a00f388c6
12647c348e57e0a0fe5826705d6e1c2b049e2fe1,fae45b20752f63b270c3d270b0f7588067344802,0a3a35152d74441c8b221e9f19a906a1a091396f
a7a67f3d3c8443304eb268ee78d46d502c1049d0,5a5b47fa24520aa9275ceca1d20a36ff3b39485c,60efc9e81c1624e3d206082cdd0a658e45f22ba4
f76cde1c4c5a6bee8562d5b754dec8e9e99d84d4,5c20481c7b0e0521e0747df6355b969dfee293ba,281b3ad276d8b66085fde25139123a574ef06afd
ba1b4b1c920a86bf7f8c6fe8777026e0092a9651,58f1a8513b9c748e7c9bb752bfd70eff22c0a36c,fdccb0d62fc1145356a31c16d8e340d6f4130ae5
0227c55b5394997da79ac041b183ebc2afc7605f,883d1f2a792ddc42403ca08d7a5202ba1f1333e1,dc592a888fd69ab284ed8996f18733bdbefe68fc
e4385d1b194ba1704a6e361f7f07cf5cc29eafdb,b291d17fc5e3b53ce4e8cc5f37d6f9717a9f2288,cf9596421bab9d2feb295e2bdbf013195a8061fb
ad6897ffd87d759c5140bd4c4f7de76c2d8898b9,c8129c52284769ca11e459b405caca11c4f93acc,902ef73c7c5112bf522e69501e74121be8d2f5e8
c0f064a35ceb3a847e6f976ba8879bd288bd2cd8,2ff391c25c763d3aa585160c5643293571a37e29,7e51c5e8561c905ef0041a993ce933093da43798
332679e28aabacc973453b31ba062f4141e919d9,c330f5080cbd36d4ff747dcb4f382063f5e57dfd,8ec3cd6390b6da0f42cb4cf79fe910c04dc9dd5d
47812c8a3d5e4689d16d577507214929af857ff4,eb0f02348d240a2f68c662d83ab0cba140954b4d,4c34b7b67d9869f889d9b62a30cf2bfe1231d6ae
15532e5277d103c78bdaddfa11bf1fd40deecde8,a418dc6c912099c870db748c09be7bd87bfe199a,aad87820e687fd71d0c8f87b559b8f4b367df657
23428dbf4c62c3e6d23546f6322a79f68bf606af,669e705b544c32ad0cbe00973b7bf669fde04cf4,dd418f24b594340b84eac3805f906c7dc97e2b7e
41f36233ea4d3366f988ec1b6eee3ec8a9024991,77658b925bef93b5ae127e686acf63cae731b234,353da84b74e1622d006906c6c93be5fe3ca57b3b
9313ddea78051cc7ec69710462dc2e880080a1ed,cba4aeaca5dcbed78c85b804ed7a5bded119446f,322a717c446f4cc3e53966e908790a87cb309d2c
dc681a75ecdd001fe5f3ce6d245f3c83651e35e5,eab079c7bd9d93bc3f02309e9ada641a7c43c60d,750567f8e36edb9af45221299f76d2e33b1ac8bc
8e5e8774171802b15e395877621b2c5d13174890,4dbccce43c24eea0f0e9d97e66ba84ce45a40e6b,ded3dec22af8e83e1338569ca7cbe6daad23d3f6
465e8a99e00aef67489c91014f6bf2dcd67b4545,1dee4c41dd487adbc3eef94ac974f069deefcb6e,17c48694a50b69e1f8ae9f10b878a5057ab4b02a
fe99252a9b71bac16570c95e54f4165312d12fce,4239742b35471d8c36d1dca9c2bec527d66c12de,7c02f2b5314b4527db41eba28860ac5e121779bd
2487fa76056397bdca5711c3360bfb27f0620b4c,1e07606cbfb0166728c305cd73d35d28a3d9ccfe,4f2ab3fb1130a34460f5a2c5c0fa8db24d8f036c
ce8ec3ab5d5d8458b16c2e19e2650ec16822e542,d2b3da1f145484472d9ab905805715dd55a8575a,697f2fcf755fa92f67644acd88b1c1827c2ad8cd
dec03b5ac7d43c9462d930f53a61a6e1514b5b08,73c88619293407e62f358e0442389fb3cc10a87f,a9b015911dda052989f7c64a5604314a4cdc07b1
1474db42e45589fd8ee3f4a060e7efccacb4e7c7,7871ccd0546ee221079bb9f5c173d6d3eee4b23e,d3c3f2742c87a5dbd6360e5e8f4cbfc0d72dadce
db1903f45d6757f3d18799002df426b66fa4a0d6,9eaa46f7919d676acae31c785f8eb35b00138a1e,1f3d5e88653a37b06dd3de08d68b2083a323fc31
fe49522e6fbccf6fda941da340818b23e29dc1c1,cdd2ba1a4deadb65f70f19db565c8136f6722885,0db19546efc81de7638ea76bb323d00b1b8ea20e
4f3a5cfd1ee6cdf21242bb730c2aef6c1744610a,9fe80d741686ccd0e1ad78be9af35c82de80a4f1,85684eb66d671df344c3395aa97ccd3ef591a137
eea3eb1a8ec754748b565690cb590f5c0292da74,cbf95aebf44616969cd12b1f3f3a984b1d9f7295,fbbf1f4f1cf29d23bdc337dcc7064e5e69aa3218
749c4d4e4724910f52059874df8d6fb12111a6d3,d80dc03ccbaae1a432356148b88f20a36a9ed72b,5d4af28c0ff54f1b7d6d97f35a55074865612445
25878f9eb2e6859a2b9a64639a8f3fff25a6ff7c,d6174499b1fdc948c28db191080da7f144c93d15,ee1be45df9e25993bc8c8289e7b8bd814064197a
fb387da807808444d289240bc5f55b66dc379e23,243c967967070429195b93b0cb51d2b406badb4d,7ef3d39d93b8a07c88d5359e7d40bf46cecb6614
a57899323426c8e1d5cd5ae6bc1100464c1f1ae7,982a870b15184d033e72efb19b743947c43a8db8,c425c51963854f592da4b9dbccef198959619cd6
98f55b1d8605ab1e5828d3a710df8c6e1afdad18,6b97c712f69b190f2a9139d829fe5741d4430c3d,0a91fcb44fb7cb51476ccc0ad2bd833d1f5af8c0
789f13eb247ab4a811112b430d294a4bf70b9c44,cc9f8b7f5685e205695165386f3d262b0c02132f,40f6a4ea3c36aae0b4da2e3185b533826286b089
56acdd3a11576ff9473ac42b59dad47ee2f6ecc6,b9649d17a59522fc9f069b8707b18c111dc73a88,67cf63049d4f37852306f5be9681093c5e760f41
c964eab85d726ede55c745c4a0b9187fada7c858,6aa8b718f46b6926836aff4e40cda9e868701eb8,433f07c407ae63042733d51ea4ca3348fb3e97d3
40082100e1f688f755fd6726e01162fbf2af3c6c,e53cb61b1122262554c744b8a9a5e10f11bdc870,a1a17447ff3d95d0145d4113ad563f7360480a88
0f57327bff922d389dd7534cfcf29027efebc7a8,449a14dddf92a0a45d0e810ba01d482ea5f27b9d,3fee990218b4648ab020d85f783959b1d8fb0dd4
e56b58c2b05124558bc3c0d18ef1d1c48e9b6d01,7f772683cb0c265dd3c8f84d5e2ee38c73e24b74,0a94f8fc085580d97717c8a8f2e19a9a53a44aaf
b2932393df279c6856cb7fbc12a389fac3de060e,f91e38d1bd3ba024ff15a4db488e2bd2d69f9bcf,84848df18d3b351fec0651a9873128553e84e522
39bab2dbcc3961a59542c60abd70ad73930087a1,ed5f19e7e388356d644a695c16c8c520811099fc,869664c6dacec44c2e05e9b3418fd8929e7dab41
24c4b90343c76d18eb4fb3ae3d85000d03c321e6,ba413bcdfcafdd5ad69be04685808df1b836608c,38fad4b5cf28dc828e72c473183d0e1134492a27
d137e06ade00a851a5370367243c11fcc79043ea,5153a288dc63937a3b79d305f72cab94e5ab99e3,788d976f3a2d89bbf59721280c4d6dc193f6624b
ee940c8270c8fbdd585cdcd548930e1a6872ab55,e296b26e9ed25051d1d70504c7270f2f649f5d81,c17dafc2f932c23033c990232e776f374b19cc81
e060a43d70c9ce31b6134a5e374c907fc74706d4,5532ac3355218e18463313bcb2f9460a5f3de957,de15025a4760b8abda8b57606c426d958c00c37a
a1b556d2118d91a235a1ed365bf88ada086237d4,3ad24c9db8725f6b53e3f3250807ac850a7769a7,f1715ff337103b83ce632e92ea9425b308269fa2
62c137a6d801c5cdc3a2b9f20ea8731836523279,ab2fa724ecddafea7950d8998665d02ec5af3354,db37146f128563ea196aa00b118dbc9376e53f48
c2146482247ffa831e0dfe7dbb3285ecc8859228,3a20178d96463df72b4357fad69838b87d0a5825,0e04d9b4def9447c67da46cfc22b8157d44b34bc
b5e6c0b98d2c04b0d6ba105a9c52a65eea00609d,99914b427931330a22b9fe9210ea44acc6ee8101,affa9f9d9ca31c0e28cb61b084617ae4b3d6875c
8cd1f1973bfcf432f87e5df74beb23cd45b03c93,d31dd4ac7b6a7f2543c130bb10d927e8688be5ad,f9cda608fa3b891ceec7d21cad66ef75bd4735dd
55d5bdc98d787c733b84b9381a992d67f27d9cf4,71fa4d1fe2a5eaee061fb71fb2045bb5fff2db1b,5cea37425532e2ca502bdebe2acb19db22a31db9
d9d2515ada949fa0c8993ec3ff6579a08624a865,0b63e89ba290a4df67893b01019c3614f8cb8f1e,ced3885dbb54688ca8e0ad3692949eb4fc108b9e
402728239f070c34402db4a5f8f39c98788f95c9,a64a8f8debb219661633a1121082bb882d8ccadd,3a02393584b6b7e4e4ce5a4ff12353f78fa38b0d
352ff5f82ad07bbd07430a1c433d1c417b9f78b2,dfb9fffcf917260a6479ce75da4b87b733d1b4e2,8ce4f9606dbbae08b8cd9c7060ff6021943489dc
b945e66e2807410180709dd0b967e1ebe6cd912a,a72553eea27cc4a8ca0c96456e439e283d9ef972,9dbd1551310b08d5255d948106ac4d65508b9844
80ebb98431397073b582bab01c14a1555f3eb015,404b465c33823efb0294fdc75cfb8da79928e749,90bec938f6ecafc9ce36bd3fc53a73bacb0bb20a
98b1b04951f82c981675a16c2c462287ec5b699c,6d0c470a40bb3a58f2f0b2473c597d0c39a4ee7c,87458a065c54d01aa6d0013299c55d1b99d67f80
b7a8dd9479f550b99b902cf61a719bd3da44f0c1,6db674cd024f9d81069aa1e019afa101e693af38,4d6b8a6c45c5fcd9a7120754358cf94d1a8a42fd
04a50733ad9ab91ff3710e9ca24881c15439bccd,55dfb59631a5e666c3d6e527aebad5086aeb359a,c0da39a35dae71be2248f6ac817ba76eaaf8ade7
c932dfaf7058a61875276af4a7a9100c2addf1fa,d8903ce6b3af3cb3fc5bcfa48ae2823c1fc2c57c,3206ac35084ab844a20ed8d97a58048cd0b6e7dd
f04afdd5eae60b2ff1d7a1bc46bad34ca54b19d4,48b8110e38b6b08a393e9a947b1b439746802ae7,4d6844e731e2d65760ec0441cec83e6ba097e169
43b5dbf6136f053f082c975c8e8d5cb1610ea750,900fd35f4abd574488c8c85d8a62874814ea2a3b,12e63d8a2cf992f49656895e45b6c79b752546d1
145f4299b49a634827a46f3ab1c8a8762c5be06c,6cde8ab4cb9e41c81b04c310b6f0da5afed26e41,c282f21b1b4f9eb8403654abc51bef8956baaccc
e97a2cb03e21d32bd274d378a49a00acf9295a0c,217ae6e4bbd0c927967c8d5d2effcb9f621ea89e,e7fbebfef57f0cc75dc85cfa4ca85571e9ae6f99
83611b83cc9b24d1db270e1d545536c651f97ffd,aac8559a8d55b1d594ce91258d8cb66a7a3d0877,a60ab40237581e8ea583b159308438cd62554d3f
18dfdb423e18ff7a16f90699fbd840230e438bc4,6eafee72d78b5785512f113ff1330a9ccb572646,a3a39e164040751afc38637a02a5624063048be0
73acb4d1c134f218af71d06adbf3a980202647d0,0c27ea83bea2f8afc7541d7d8206396c13b1f8ef,4c338b1f70c86f29d90f6af2e44f749401e88315
797e336222fd5fd1dc4f5da49131381a3174068c,5313f6e9af42d97848ece601fc8ce3a18de4ef73,67bf76c50e40f7a039429835e97bec38f37515d1
db83612b2c220def234fdf6f78acd565fcc483d1,1da43f67d40dd92ea2fb1cfa327d6088fa838aa7,789f28877190ef79df431a76d5ec95fffc0a9e43
3fb7c19482c482119c37b99a09589b155fc5fee1,b0683edfcb6596528a75ff44a21b81f1367630d8,1a67ffdd22de1d5e5ebe07a328db8806d9831ebb
8fc5c9edb288168bc986a9480cfc1e2e3c45ceb3,0b3418e9787ee6953820f6ae07c5e7b21559ccca,811d39d9954060e2eccf78147f95db4345d44db5
3ef319c0b059d8f085fe4f0df8501a49712d2f08,99af7f2781df0ba8475f99d20acef464fda91c96,2b6ee838f9745f266b22e73abbcf22def8b11864
46bac33a2d1bf06dd8fd27742ce4751cb0c12232,9560d63e428923764dd1c099fa1fe0ccf8f81158,bdd4b6691ed2d4348719fc6c756a2f29136109a6
26acc8fb2a6f634ae80c2a15ecd7f95a8684ba3c,99f92ce5dda2fee4170b359c5163060986b4ea78,d2371f4176f73f22415c21cac3177752b7d27024
fcb6072fae11123300b6418ccdccfbc794319be8,d77a8fb5f46c450921938937ac1cb0f9a7a0a75b,83861799ae140cb032cba70e7ad3b98f92304f09
05c420fad517d77502e023c720e69428a03f5cab,2c4c34ef9b2da6a74ff850053573de7c160a9acf,d6d3e171ceabb0e194e8ecd5de51b6cfdc1922a3
b768673e96abdee86b807a52842d65184e373bf9,d10fb705e4c39ab8c4ddd6140e6f86166dd01725,93a08aaebd6f9dbd709c700d092e2cc8aa06d895
5d01d53a962a8dea8af3a4a0ccf6b2901165cfe4,83afeb2e9374c4db290c5669598663211c86cc10,7809930b08765742aa3bb1ee307850e5a86cb0ff
6952ab5baf2bb78e2edd6fc8439348838c39f617,c32ddf42ebaa64e8cc136c8aa3ec88110efadad3,30e7406be3f112c3cff5bbbd88073ad8db08893b
8e436e6335f79785ccd5b4629882877fd13d49b7,3ebcef32ba62ad3f66c33e983b6c6b62b516bb31,1258439767d790a3cff8e567ea283340123e0063
b739d79f9ba4e096c35dc3da134db47f75867fee,2c176be2fd61a5da4520b9ba74e6d4de0e4e3a4a,868030b3fecc84668396e5536b7211d389ff65e0
34b3af7e9249c80bfd29928b6e85d722426084f9,901dde5fa58392d77b49bd648be0c72b475ac287,dbafff24fe5f38889834288c7b2b0dd6d1bf148d
c70f2c63cd9f0675a11031cd63d7ea707f3defd6,ce598c15ec5ce27ccaab373a292f250fe0cc8d78,46afcbb362df8f808307a213e72ecea43c4c6634
6b9f2114f1910ec9137c1ac06b5db161d04f7a14,d6c5a1799ced537479b012392478218b5aa59ef6,5a3883b1ab9f38bdc9f7ac82b62e8f0d87c93c74
d7c24c05d0ee92c575f4bee58429b8bf31eeb114,7132973847c3bd55518db8fbfcb2e410430f7150,a86623b97a80ed644ae83cc62f285bf0cde3aa43
295daf4a7fca682f9a043bf284f75c0661f9b53a,321e4d5837f7747c6ac08b58e3e760321df6b655,0c4d02ff9cc3ca0c9055a6e594c983b10edc3902
90bab63e513c3db6a75d67bef0e76304935a1b63,6d2a7a1b27c85a67ea35210900d5e5e27d8ba9d4,70b2904c48d6075c895a9d901481474cb2712346
008c1436d808d779dc129b38155ca2c5d7d68f23,3b08c6b0ea1c7d2a960bde6e004ee8f0d59b786a,35a4f96100870dd1de78141caf90c03477ad8758
251a93456ec25acccaca2cbbaee7a09ff608163b,1736950d58bbc94bcdba43bf1e79848c1bce1c24,d5a18f03a857c623cadf41ba2e26bcb32d9f93b1
d24cfcb31c283c66bb67c2d57e6be8d6e1fba971,deefeb1ca0cbd905cc9e677eca59c8e6c9f60022,dd9c76eeecbc3f607c7f9973e66732a6fd61f0b0
1f2354752ccda1d531faef430b0094daf6c66869,8dea445ffe45d8630f7835058cbf8283cd6e7e93,7038d18d5025accdbf95d3b6f8ddea4025542b06
7e78fc1d7faec4d9263b3551e0c3efe55fe5553d,bd168fc5520871b9b53601659a92f68568a31276,262cecf5285899bf64f3be1511692f34aeab7dc2
4b54cbea1e5de056d503cd1c195d1759c0b3c474,99b1283e2ec3b51085bdec70f7d60f02bdd98d27,3da4cf0792d73fae6a0dad36f2f58fe6f02a72e2
8f3aa926781ca9fa06f43c8394d53864a6498b0c,2d77a2c10478d1aa2d65520c5f0b4022e4280fcd,9f0f31a1e91daf920f45121f11e569328377011c
d1d2f6b7017a3ece17383831dabf9835bee88900,7bb6b525b1183a4155ebe3c51c1aefe84a2a5f78,90a164bcdac5e814327c161d2ce7dcd9e4a3c725
b7a4965ac31cdd9584e980ce3082e8a63924e0a4,238c9e576ced17809f6587d9114414adeaeb4329,f40736438cf33894a6a7b408da788d889959f699
2b767c4f8bdf972d3413db62b76de03b5ba59a7d,4cd8193c7975bb1a03ae2f9fe36d043462a5a38a,cc7e623802c1dd79578718708f0a54647263fda9
817ec5e6f284e61546c133fb7000f780c3c7d7bb,141f2403d367ec874aea7f192e8b9e1d003b96a3,d69cf3a440201fe5ff83b55f8c3332236319d0e1
955ebf2f098c47de6e3209fe55469965c79542f6,fc46b6c57c2444fd5a87915e683ba725f1a10c9f,7f8dc75604598da1d48340c5c46f471a5102e9f9
4c9a0403f4c79d12055bd04f67d9f52cebce3a6c,5947143d8fd2a02ed2b0d164eb4ad5434c335f88,8015bfb5a08f3dad271472b11da7cbf3b2f87515
24e3d95fe018bc7f6b9604d008b471855c09023a,ae953214eea3c5b8dff0255eb02167bc7cbef58d,31431d99ab5a655837445adf2fc2339d25a1ab98
6398c42a3831550ff98de4f629f474bab796c086,5edc520468a3b2594d7ddd6795a2d806f01d9ed6,5a379cc256b6e89d1031584bf2d49b1ccbc82c1f
58bbbadc16877e99d24515f7e05920c47854eac7,f23f3a4c5e194d651d180f28beb810848419f716,413beee9ae1bfed7219fdfd1249a123fab87aa71
46b4f911753672e5044af4db7468f3ffa02d25db,fd70fcace6f414013a726b5f45df78e91459befc,5d8078f6662f7dd4d24cc5c20696a5be1cbacab9
85edf1c1ebd0fcd58ec25d8f083ab5345d531bd0,c418d63c16021b2bcc97e6c5e621acb6945445c6,867df5362c21a89e6aef76d32f6f6a717d80c9e3
ba0768b6a6156b8c57274978ec072111b419ed6d,0a0397c9f5c30e67ab1a94e4db4b5cde8288b92b,3a1ecd4f167c06645577d18c1ffde5374b8ff445
0224d632f1fb094078200318febb294e828ceeec,71df2911da2124b7bd69428bda51dd6964e51c5d,81fba52adbb01bd7265cc598200456d2367f5167
f82cc96cb939da4edee6680f28b0331ddc490b20,45847da69310f4b42a005119be640012399c961b,03cd0cce594750e9b0b1e032fe5f65032b654798
10af6fe2fb5cc09e2573c81f3e51eb4ecb01aaf7,663040a666d46d3c47d40c70dd2a36ded405e854,0e79bd2c70f21ad1df82353e163a6014c0dcdfe6
ba203c0564691f1637798193368a292f14b9765a,970ce7f24325e13a153816d8612fec071e1e674b,f0213a2c46a9fd1ea047da6c8f54b78823ef9c71
9230ae5aab60d4e085da647271f2e77779862251,4f38f12815c7cd5b02c1dc987dccc248dc442450,3d5ab366e1d6d2df5ec2c6edf3a870df2a0213f0
5d1d9858d1fc68fddd69f5c7d940f84ff79282b4,14a7429e19059bad9c62c2d2e0fabb544db17e56,693e72ade31fda191fac405b81dd5f28afc6e47a
27a4a3d44688074a431e652ce9cd97410a1156e2,4936358beebea71d5f20ee4673549db61dc60b5d,8fd0a27875abb2636a1388876f590a3a56d83b56
6f2b027e511472be397dde845f1703f8f44afe14,e7d590724ac8b26537fa90051f065a86d86bb443,94e22f1262e2a692cf1a39f1e6c47af351ed436d
c406d0121eef5cc8546cca9eec41f680f5ba3f5a,e8ae49012860a2031a52ce2d8ea071c2939f8dc9,a652f9e3041b2e4de8ce2f6d62974bdeb124a3d0
5ed7bd35df9ff16f85ee06e12f2ebc6694c00fc1,9b0893e6aee0028ad29f5e741d676736aaedf336,e45ad64d41bd3f2e8505042ea588a4e6fdb2bae6
162a62d4ce596c967180bd87877cb3393b83c309,3662afe93b6a35f38d1c7fc50945c14fded32d59,0c464605483132ac901f4004aa69a8d33555b671
707e05d131eae05c11007aa6cd58a64baf73e938,33f6adfab6658afd26b1738bfc9b7b69bb9890a7,deaeac82d0841366ed1ab02ae80e96222c3ee238
e7bf200fcb59edad3661047c902635a476fd6fb6,5e4c51056338e42ff6877b09cbbe990c27a2527e,00a418f589341d6ed9f3ba4ee80f6e6d552aa541
91ba1214d262265c80898e16748a68fad3875694,2dc771b7baba950cc451ff4c1c4cdae9c770cd23,7e1607e095b2c271a636993186e26a5d32fbf06f
d29f44e1c730ca21c4a283925ec1241a096bf9c4,fd20dc1086b02fe2dab270a5fe77afb548d4bbba,c0212353d9766674574534c5a4daf95056d9aa16
03a1fef0cffdecc6913b585e74f367f69318a76d,0b2a53f4b04f5c1ba03bab84dcafd217f0234d88,9c00a8b616c42979f807b6aa818fd50b4e724ae9
a5a87fa84c08342e41d177168c616519ff01430a,69786ffe73a1247e34ceaceadde679a03e0e0d51,8ffb72ddd0ff843e830641aed26fd6c6bdc126c2
ed688aceee660abed27f84b18fa64e5d4af56fd9,a019536cd5630612bb81e87cf98d665456076d7c,36286441b245ba19b1deb984879e173fc7de8c33
0c6f7321bfec374bf9542a1e664911fff8e893d7,de095c4631c4ab452e02f0efe665b4d5ce1adfb8,5eee29e5d1fd7b11f97871235f722b8d3aee391a
2a87b885b1c4d20f94f85a4467daae794188b473,db2875cebaf152bf1dc77e3517039a77743b5b6c,fd1d2271750c608100173ad89aa88cb9517cc211
5d9771d141a145cf168ad7570c99226c3611ad9f,16fc8c8d9a05fc4f94c0e489892f0e82ad530e76,50fe8f70f5095a318683cfd9435c5a8d56ed95b5
fa1203029f8885b25e9324e3c811d6e9b9f1058f,353fc13257104a006558df876a8a2eaf61424ab0,cc49d256ea2bd7324b054a63a5f4051dce2ed135
ce9e1a3419a525d024fc4f9ad5af6c261cd44f7b,c3c3e99c6426da68c901d4a2314133b6e32d7df1,d25820b83050c192461c02da3803cb16a066d2e1
aea0f3e667034d0aa878888bc0ff3d870a25fd2c,dcf4e4cb2c04adbd4bb299b389913c84ed56d0fd,cdafe680c2353d46fd1f00549e158a4c5f2fa8b0
58eef0a5aac53db1d7d5d7bed2515a535522e6f0,fa2e751f9f0787cc827c7cead21f3b36f12d9b3f,e3e23df7e208a0c72832b3528ed99446410e8dce
ef6dde6de305cff538f8cdd0bc4dca13c5574f4f,9b70c7623dd5abe9501d427e31f68c2970fa335c,d14fd51d0b2f47c2059215a388a512a5c7d6b37f
617cc6984ba080be830cad11f3f18bd0e717532d,9e7cf37cd6aa8d01ed7ba2c3765877631505ccd4,bd35c02257c37ef18d28df181583205ce126fa69
13902c1c7abebeec9688d3b554554ea36775535b,ff2d71869966b8f39c8a0772e108b766283ec936,9678542ba611d2c0a511eeaa844d760879903910
0fa70759a20202281c390ba48b8b46d7eee37d14,eb3a470f456c12ed78c52e9584db5bc8b87581de,19a69640883fbc5a0c0d607863a6a85673d6f8c6
435b57bdb120166870537cbe299aaaf8b86820b8,eb71d11b9914dc9b448e7d1a18603da807947c67,ad8de624b8c45761a7fd0b9e3b1be18e503d0e59
e4c275a3499437e6aa2671f468a0c0c0f4515786,02deb7d954b37850bdd92822433cca41d27c102c,bd1d6f335db93b5e5912e4b60966a254e07c212a
ee22dbe5898ef29cfe1c773e6f751ede99cf544f,14b7eaa46f2d80ec8db5efbd5fb71d4469002504,5ed2475c85809555242f34b9b39b05e4be58bebb
f6667a5143147f88a862a703d1baf1cd922dd885,56d91b4ca79540828c8af3950d6187cc210d17a2,c652cd629acfb86e787765e3d1c4e88b5b1f32b1
d8e2db269197b6adbbfb23103d3a7a28b193163d,4064c5f39befe1f71d70992b9e3e02eff8f7fffd,11319353fd0d5275bdb7a36d1ccce97cc0524099
9e8bc7c93574678628b613fff8319b541f1cac21,3949be69898e3a724509357a28617376e8a339f4,78373569547165695255cc67117a8134bcf3f296
9f97e18aa2b77f213edc0336385de1577d2b75bc,b99323bb193977646957bb6ac6529e0288c0f963,49026e126182c2fa2dbdf4941e6d6d14b3b24c9b
79bdee3278415121dd1c7521cc4457c8ad3a8f25,3ae1b04d09a165e164e3697391125710604f5124,03f7ef4c6336182ebd5a053f8d962438abefc644
03dfc615dc450f38fae15cd06188dcd56b877616,cffc69ec1d0fd94be0ec1ab6f54302b1d3158371,988dce14c7499b599e7a707a88941c43a822a931
c3f4ad39a3d93a445a490b963ca1015d416db6cc,abb9401011e6985631b99c28b49a8c1053b6d886,b7dd63094fd75b6cb8e04498806eb0d98f2709b1
16163b74ec9daf00f87075afea385e54f9813e5b,c0372f80e00913d849ff6dbcf3387e664c74a6ec,7ee889d4ecebcdd72887fc65961bd4a362db0dcf
a2d3522812a74b2715191f9d447407582fda6951,df4ec9e8e3b59f70b37bb762f50d37725c22bda6,8ecdb2e9ca9b32f1334f237612411e7e17e5d1e6
35e11cd6d4df412a4a193e63b09fda3c9ba910f3,c6d8bd73f7343b8fa6ae514e6187786542468b4c,245b58c249b4b29ffc54e6c1e50a1474cc84f7b1
e0041a8244b79abd964007b694f78a8e15bda682,29bdbdba95bf5785005d668aadeebf3033d3e29e,c189af0e3d8e1c5293e9b3f0aa11092cd262d976
6c29ecbd1cd0e51977fba16d6ebb09ba32f4e520,67fc9a7853918631155a509ebca0983100e613e6,00c2fd40055ff5ee214326de04c594231b9a095e
533a1138857ba2ff5daff90e569c521483f2eae5,5573bee314cc43d3eab0cb29ebfacd0898f7b453,bdcda8660eaa0f02365a9000a55c7ad8ac3becf9
33c4a5dda713b26acaf35da6ec913ebde848f54b,626ef4ae0ccd379e74fc660f914e5524952e6c7f,e02321029fbe2c7c62e12ec475dcc3f03e135340
88648248ec2a1eb3cf9af867fc586943332d0523,9d765af6932467e439c8c850f43be86bb40f0ed9,84ebe96d41c2fbcbccbcc2573bb7783e18bcaf68
af8783e8d2d8312897ac6406b2ac30af9b6c609a,e5de269664c7029770bb2e4092cd28a9a31545cf,7f8800eeb15ef2db9dbe43b91db194b0e0d0e53f
e251c8e2ab3909dae2b91253044e8be67a00f6fc,e80eee5da54e32313333c2ca1f6dea016bb95c27,e3c6ef21d101b8f95dd6d410eba8990ec9e88845
ee3258c0daaa60b9cf3c12e06317bb17ae886c0c,cb9f569906d356aad9005ae1f22966c3182d4452,6f74dd42079e2df27a5a5a38fe3c7fe2f47ee5cb
9dcd897ce630bf5d3e9b94f9e47b5c9c26726db8,fa9c7a92c78fc257294bfe2c9e7d92dfdb69be18,7e5bf5a9fbc07b8e2459545411ff41499679687b
2d2015144653ffdf597df5a9f24e78a1d11941b0,cc703a9c59d1ff69db1349257be86eb7b0cbeb16,421b06affe2d3f2a3ab174fb60934feb9e7c11d3
31e5b2d9a4e1874058b586667429956b61a46101,b7f58dd8c8eacbbfe8aaf8632b6617228ded7485,cfec7251954e78c5e2353a6f842bd269582f5d96
59d300fc6ed13237ccaa37bd2478fd07b1588a25,2bcf1b7f59ff83ec538c91fde1805dcd5db27348,172a4a999bfa8f9d0429bc2e41fe363a778d8821
cb67577002b81669c34ab1edda2df068058b2334,e19eff13324011b667e4d1b85cc521b8eecb8eff,f481587bee170e0545df260fccc9c653740e1513
fdeaacac21cfa72ea0148158fa8da9aa67035881,828e961f3d0191c6f20c930d667c0eb9718cf3a4,ae04e5d7f0c2527677b7c4ce6be2c235a4635c82
c6a08cdc6e57c5dff6b586c40ad9fefe8c2f2a5b,5ead23513d29a185a71dfa0fc3f5314e4fc7aad5,c3ef42b164cfdee2dc5dfaa5b2bbb7790799fcbc
f9530437c2fd229250b3ffc48c0536df3456c192,3487c34ed9a2c87128c39bab5a5dcd336e5ef66f,6842c5784d5a6b21584bf26428a01457c21c60d0
1fc7667b3bc86cb83ffce20cace69ceb679a269c,20a47afe13d37f5d4f77c65f3437b4849f5eca48,b8f186dab2e09afc589407a2f1a0dd2db2cb2d89
d3c5bd2a3e513df586faa6b0c0e2555399d556b7,7d12e8cc6dfff734632d92f9f6a8ca824a7c6cba,fff3b67b7e3f2f7e820ab782d40d680f50d18539
ac1e0f96bdf26510682788eaa26a813cbb80a7ba,490f057aa11a32e1322e842343deab8d809c47a2,c8f746b88170196adb878a3166e566be1189dc35
d275e7a7e658debe32497a50c5e49d61d154b294,9a9cd15ec4427bd0e78d3e4048663afe71b30fe1,d813edef7239c683355be089ff9b089599bb3c4b
1c3b41eb543d85cd8497c89942062ca54430d489,f20e6ff323dce8717477f7d1cac6e70ce0c07b73,40bbb28fd2b877cb94ce03b5b0ffc5f45760a83e
137f392c66a298d58a03c3ca336470e5a5274efa,99ce957111b021c5739d96df65ebb11fb274e71e,8b89a5cc5109c15a716a1826096258caf8b36997
79dfd9fb51a82eda8f6469a6236a78e7ba6f7f6a,88a8871c622794893012bb90c75253245a945d35,47dcc5b05b7d41ceadf0a7b10a5f6867ff110df2
2d295a381642e32edbbc08e206453d9251753d53,e1e89864620fe33d035b7987c470847d87b808be,7747c5fc27e6e23247c4d200e3d9fd4c060b9770
4b455600b8a6c98158383c01cbe818a3d80df6d1,7464c880034a94a76aa06cefa0b1c4133d8969f0,9d0389aa53e2d49955f37707250b016cf07da1b3
5f3050961f57c1ecc58565e6434ad93ec44e14ef,2f914ee2d89b64e629fa93132bd1ff126322b223,83a11c2a7daa26276316ce7cd2fccc7682532213
1d6e719e381c3a58254f3fa6cdf2021e630d0871,5c0a5b73c7cfade35d402e59bca06c8a6167a3f1,7ee0ad4d639e5a93e73056c343e792b7b03e6d1b
ae6b204c9492b9e7b369239b91af6a77fe998c60,9b3447a6a4cd9babd4b870b4f903bd58e918fd74,6bed497c7c3cba3bde7cf91a4544c67e90b041a3
e1433adc2e40670f50d53cbb7b20616728923478,d82335bf9a833519e0b140c666e7851f6afdf226,0ab0eefae0d359b976d1db4ec81ef5f3709d853e
632f13c47a1208c1f3ea5d05f880aacbad14bc70,87b3b089d6e5cf75078b21dd4a389b4609e2ea04,bf24882c33b971c1bb31effdfc865ec6d67eb692
3238a07a5495f45960548ba0c31c62af1264226a,fbaf67e3f07bf64a25650d55db5c673e1ccdee33,11b1d1e6ddbdd9d04559e1b10798923715407fee
a09e40945caeeb55c4ec2b0e68efe2a4bcbefc03,d4f0658c0273c43dc0e36ad62c9aa6935096808b,798a1b62192d72ad565d4cd642df9c4c0d9d1664
18c5881e602212be0532ac220412e01d4228c497,a969097a8098a6f34d6d0797c9d0de39d9fa2d85,f5d5e84649a1f85334edbd986351dd8d161dda33
13ab35e3efa733623f0af62b3f21757b4de8e481,851accbb4b332cc720d4723075d8ba42bfd0d3ad,52cc02aa3b9b9b4987a724423789e415c1727fdd
60b329659445aebbc9468dd6e28a4e33124afedb,3de38c489457a05fcc8a933446cafe5d9bbf01e2,91f3f022fe4d75b8fd44c115e5863039d09829f7
7eb0be61273e009d716df175d8c321dea5230859,f505822ab5f7702187fcbca8fa5511236fb581e1,40c54e9d37736815438e236c15df0c996b3d16c4
da54d0e8f7efb83515a85c84b49c9311001f777f,6248a127cab04750c174f58514f492b759bc7553,a61a0cce4c96ba0173533319b973a48ebf0e53e8
247f80abfba336b27c28186d9f5fb14abfedfd25,e8b9d8442e43d3e84d2b9b35cb739ac765e48f7e,23111a71ea4316d6b32fe0fc8b0fca1c5960fa97
0e0407ad5793e54afd1046b9933ce1299f17027a,b990c59693cc47cd9a306f528b2fe2b78d8ad41b,9bd19b050b3b5edce7d6d1cb98c6ec87528e3620
ff415ba39c27148c52edca43e145b46d4cd4ebfa,bfb4b885cadeb195c7c404c95cd6720b14e9455a,61bf55e0fe5ca647824e11ad1254691af65c52f6
f5caa9940ba8869791a45ac22bbcaa461282b9b6,04984e9af9c5105b0ebffa308b2b8f97d72872a8,276f5bdef86a1a6edb28d0fdd58685365eb357f4
f13200d68b54786abd242bb1b0de2f1851386add,f4d96906c2363c66ff50f2b9e526d64c37ccd819,85637ad5fad7b0df35d26453779b00726966b164
6f584333e57f4eeda948203e5e2cace032ede931,6151f7af29ffb7a09cca8e6d49d0fce3eb564c46,da1312698b9f05bf26fdc7ab73aed647849b06a8
06fc84037ce1b08f1e26f4e571fe6f8270f1f4f1,a041f899d358832ce9e08d2111c4f26143ae8cb8,2e259ee3cc5d72202d207b5d6775974f791bc4d8
0a915e883ef0479aaca0db5ae9b68c2f17ecff34,4b3ce0c02359b0596f8099beecb18b6804a7bc3c,cd7e3f354b0c0658929aa8ad3648df80a0b9a0f0
f28ac2bfc6424e5eeb9c3acfbf5df4fcd8a6e6b0,1e66b2464a29125b2ff9570e4af8f453574cb409,2a1d26cc905b54f2880fb3f2c51c32a300f32bbe
bb3b1b06a735f552b0861973710a6dfcad99ed98,40c11baaaca151271e95ba91ea6973de369f5bb0,3e9bfedbc44836e69263eee77dc88c9b888f75f6
17c422c3f24137f2db2d1ffeb80664c85aa70602,0f462077769536525b247465937637a22857f1b6,8ea92a8280cb2ce9e847a618edfc2c65cd1ed6b8
c882828fd06dccda4ad6914fa4b71c5f3708f5fb,39f4b97ea54f64ee9b91db074e4242b1b155f2d8,dea1855126c0c5ba379d386253cc03808735bd30
d444f750f9d58cd751f5d567e4e14d40f14aea10,9e307f5c3a408a44d0caefc8feeb86c1b23c003f,94b728005d2dc935ffa03fea63af09f10c5d57bb
acdff47554beb7135ab55f2de0957024970760fc,e775ecdc439186d8d2491925c11835b8fe2f082f,c6116258fdfa92ba483a20da200c968f7611888b
ec227bb75942e940502ac23d58370fdb6a7f640a,0802edb7101071b56a56ea62bf6acd2e0425ffc1,5b71ba2a9bc65a6acd50edbecaff5a1caaa5e24f
97eefb6ac3dfc18b920dd73366ace4334670fa0b,fb4b1cbf35264749d6c4dab1e3050d6cb9237620,af107ca8fee33355e8c35fab6fc5ba5290bd3ebc
cf0716123c0f1feb9e5fc84e9831a8d6ea22fe9d,7e6eeebdf01d8b666c5005383b5e087647953216,7000d82dcdcb5e061628c521d4139a8bf43ec8e8
ba73f7376f07cc32f8ab20187909bde68e348fd0,a9bb9f7310e0db16b56d31c1770b901bac8dd813,7405ae275803c25325ad0581ab3b3275c43a1010
fb33da5f412e0bfc3f36d73cc2ba0d1dc0b24000,3889529e4508035a61e270ba60ebf4b5ade11d02,4525edd9f7949c1a8b72662e9a8c77b46f917171
d8f1aacd785f7d10f6aa9d86e861c3ea5d71c668,92b0ea7d02b6573a4641d1431e08675fbe0b3eeb,4e4f55ac0e34fc39db0c76306aa4a1f8b0029c0e
06c1a17d1312c1ed5d2daa3fa1bfca294c6b959d,f2a8b8ad6a7943aff36bf84bd3cdc8c75f086027,b8a78b135c3dacbaaafc1475c1dc9ac75fe5f155
80a4a01f12de35c02a443d59af55d7ab75da6e88,ea7525392644e484d6fa0c6315f0a28c2c496408,3ced30f8168409baba430b02bd843f31de329c78
f2818bfe7afa76d1a3a7e006e2065c51d1330788,ac6e4f59c65e551801d0a6acf0f5d86fcbfd370b,2a315df80c0dcea764dd602e5152812b1cc56e12
599e2df71f6368e913e29822de9f7547ed5b103c,ef7e4f6f62fdf6ab920f3185dcc3006791a249e0,f62fd437b1c432d46c0db85c1162f623ace1444b
8c2aa326833e7f287a2059547cfd7fa5af59c130,a6354741e6e9d4338ed9b51afce5b14842df51df,bf5d75e5944cba197baf85a76cee434f3cd33b20
46a366d6ae0dc38d606a849e2b34ba3462d28feb,36e32ee607b644e0f2f4d963b0916b75e501e606,22ce9006ab7f5913237f44a5e4b6e088d7211957
a352a12bb42e507cac1645106bce2daa671335ec,c477816100404a063cfd386cb9ba4feb1e33585a,707f7225314f14f046fc0036b8580d7a2e44133d
0f57151d36944e190dae33e2299cd838e048ed9b,5f2410b87106781c786808f3ed3e3b38b574fe13,33fa211b8497b5f8d3b9511e4c29ef8d888873e5
1779011ab4dfc7e883f49a837d311bdb59fc789e,0149d26adb6aa25b60d995fc88b8dccfc0f29880,30927039a6f2cf056aa57b69534cd90a70576581
8465710329a692ef64b2d88295b9d532c0dd577a,b8b5d8410868bae9efc28c1692b0bf18757ea049,2f374a37b7ad878b277916d0fe7c4d410328e207
99680eb88c425cd71edf808d6084fa51a636696c,0dabe496019e970e657cc95f3c34d45ddc3fe4ef,8b24033e93b3cc381cd27a137149ca5cd870ebba
4de6b3e6b9aa3af34516ac8ece2fd8187bd17955,cb44d7d4e2e6a9445e466f1df2ea659da12e727f,abb79553d293bbf36d93cb3f3349860deaae0560
cbec738829ee9bcb2e7bdb879d439121a06c1e41,ef878794025437980c7094b25a71e898bd36dca8,a20209e691bfe1196e52d533feef12c74cb0fdb1
e332c17bbd89f3a6223798afee6c837a370dc9bf,1e3f72403eddd7eebe95ad4ee956c4d3863df9ce,f5833dc0482b39432519552050f9d9af6594b02a
96dfe3d03a8ce36de71970fe02610be8eb384389,b89487e7217f9e9c534ae10e24e80d86705f0a77,6d51c69dbe8e5a256704400b57764aeff2200248
1a9e246c29df8ab0b38ecfe715917c361366d8cd,114c27fb4e921df3808ea748e3c6fab528d9b26f,4ad7d552a1057da1ae1f7ce316b6e55411774f18
f59eae4f81228d9a7f06952dd15349c8f96e5162,fd0012deff5ef06a302cbd81762c3bb4085d36f7,051b9840a54206a5d6748e67b294db13aacdefc8
ccf409c8a08876dd9ba7f10bf966134ab129506a,94d222ba69e59cd4b1ae254b6bd31d6e10660a8d,00859420abe2f23c644087fbc9c319c0389c2e3a
9bd7401ce9ac4d02501c0638c85ae1623392cb64,f7a052f8846f8fb76723de3d13f04d2514efdee3,9bd33f7a45d5f62d7be937a3c3e17e8b7dbe8abc
67dbd0cdb3aa69292536a0343c718b4f90872ace,b355ba3d39870b671be98a13cfe64a571a4daf1c,797077855ee7ac488a555b7ba65c615fdb077359
a6a17efa42d9de2a1206311b536b5de0487e6a67,3885ce98ac05b1372ecd5b8895ba323d925cd34e,6fc79c7ed04c57dcb67a64c126ee960fccc7370d
f6c16323fafbb73c37f0df3a80252ad65fd46e82,d409548842031d600e52fc3871ff71bf0f830512,9b53ed53e3ebaec026ed20aef53cc4856a76d55a
1f5efe2a95174c9a72f3f4e7884dce0d3cad441d,ec0d98156cdfa010b029c88075d56e414db885fb,044d9467820ad2c79dc6200d8e36848303fc4993
e1d9be897a01c86262f7d39cf1a4a136d694bf9d,ebd674d40e107e4e8f093b4e28e067beea068312,1201cc024ed4f14903cdd59e26a458985f8621fd
451afd6e45d61fcbe6236803fb12eda7693355d0,7da6bac960893bfb3d690258f0fc11472c0aa1ec,3c16324f8065a20e737028144cc624f6d1834bf5
73c6cab0961f0bffe52aa6d81985f56d08e2d654,a34ae2261a45f4843fcf8f257b1a162b962ce88f,22cb46fca9876d6e199beffd0a68e2e642b8dcb1
d3f3f81e1627ca65878c1539e0dcad32de5eb382,76e7833a201b8de2b67028606dd45fd0ad972e79,fca4d3315bd3dce1f2013d66e2652bd157c60de7
11784cb76af3bdd83a034ed09d524eac48b39e02,6371d5f26d849975c0a6400fe46c153327603796,ae0ebd1e9326f2c863b23eadc2f0a24b1c007960
6612bb44347f5b978356417125a92a715900236b,9b68c7a5f5f0da2e43119f5845b60923b09ad801,92671c9b85c7320c80d6ded7727718ea94047e41
3dd6a8e24e228aa6a8883508f4eade692e088726,872c22842ec17ffd691eb365dd4d956687f4ed7c,404c6e0c15075a88a0128327e2d9dfa4449a0593
32be078ab8c2c1c7930d48b5b2f8552178f2066c,a75247d9b0f072cd37310da1d3a47822efbc77a7,9462d6b1eace21998fcc832fdfd343479ffe4ab0
31ef82b9c6f18e699ee8a9fae53dc5c257456119,3abdec9c953d6bded0f7200e4392c65a61caea5a,7a3a4244d105e3b32d79b52b692eccc62b362bb2
11287f018fbf940beed20d4e1c0c09f9b872a006,d8298c9f14ffe98e06a766597f8af54c81ead38a,6929da66a87b0185fe1f2d3762a189ed5b44fbf2
3eb14dd72264b06f2ec8f8278e2ac785ae232bc5,3335104da26fd1750f200cbdcbd815a56856b217,b5659df4251fdacdd80697632708689cdb64f8a5
30e186be784e320264a7b422e52d8541f58131fd,f424ae392999b995c51a205eb14a183add9d38ac,6f87a572affeb8d5a21d9085e986d98933abb22d
90d2982977b802d664d3f9f2d5028693d894ceba,3b39ec84e46f32eba0d2d328391f7b67595f8e9a,2f2b378c0346142566dba0f71a25248b651ee9a3
a9a711763f0f41b97f806beaa2509ad77ebd7542,aabd7c721783ea8db3983568e75918d5b8b6db2f,007df5d0face645c15ba7ccb1a851d93c795cd44
236c11ef71f341e9038730cd56a2c732670fbb45,124c64152d256c1e62a1f13103c2bf5cafb33155,2b70c64d09d8d58476034e1cee01b30d96c19e3b
5a1e6c2e914f5fefc3e5dcb848b5c3a5182b63bd,34fecf90f34c9cc9f6fad91ba024ec9cda3a0a36,931d4dcfeea91a734cbbbb4ff28beabf8b9bda34
7cfb87b325aa1b0300734c04f338395e8d0e56c6,02c3f328a21d35ba3d4ba62150761a33d5dc4cac,2678522db552a5d377fedb1aea4983cb97ddf324
70a836c4a21104120f9f993710fb08e9525f97ca,b3c579f49c891b155f6b89539ad22bd12630555f,81848157808ef123a1cb244b71d366abeee39aa7
22ab6dd329e69675fb1a213e2860c743539e7082,48236401e002fef040b402ecc37844edaa13984d,4b4e316af02a968f27147123b189b04a9931ba79
799ea31a5f228ca212c94de2284d7910f3592e4b,069e040e49c79b8ce1f8b73d85e02a05df6126b2,16152cf948f30f16e1e185626dad97e298c843bd
fc44c2d4c965d246fc7915dd0212679d9a27d77a,4fc02d3d09b3ee04f0576ed25b5318c6690295d5,9a42625cfb4b042284bc2b789bd4d3f65ecc5522
df28fdcbf8b4ab20479d264ddf92b0737d5585f0,90a40ab9ca5f0dbd344b28110a5fbe31a86fcdf5,7b4292c94e380e85aca13f6644419227f3f7034a
d87a5cc9fb3dea2cda54a06bfc4fabee195c446a,a807e185912a5ab61e3bbfcb7358e442256562ac,993144b91b468ebfe0cb0b2cfdbe93b8022e748b
6c71fd461daf8161fce6e1d4242a1e8b33f21271,74272975afea5cb9681b5e23c6d5df3e94e59021,22197641b883bf4ad288141feb49caa0a53962a0
56d64b007f7eee75266dca41fc570e9286ee6e61,3c18dee6945d3cc2d8d59fd7909bfb1db1cc3061,3a31391c3975aaedd95a50adebb3f4339e476073
797795e2854990cd5abb987a721e9a13bef0945d,405b01f11684c9b9bf5119884a66e1ab00ca1950,1486ab7c708eaa3f901a49adc7a2cc42a1081d2c
4a756a2d30b395b5d1038e3220da45c012336e96,1b3a3a7983c3553e38b1a2bf1fb3166053435b66,45ffa40b71d623e404c72413e935e1b0ef97389e
871136d4f2beb86ee8056278c6d9b7cae070c8ff,43c83b3ae60ade6916303a524f058febeeb683ad,df6516c29f348078c0f86034544445eedca59103
592df7fa5905081b23eba908345cff67fe584679,08f9ec98e597e7afe9848fff43fe06608900002b,b625afe8001b7508a131d683108a2e1a7550667a
254b85c352c92f8e8f7d4bc1acf10f5faedbbe51,7bcdc2b37fb9f3e81657e2e06e5b56502b629fc2,8f707903df96a5132592aeeb8d84e88f045fc5f6
6b47d9d9ed74d375c3c17b38ec215ac0cfedb90c,d479069f8c045b26678dce30fd8a14cefde3b611,77b54f501f0d1d6a45b8b3f11f4f6fec1260a4c3
5a87855b062c5cc8d0bbae3311d82eae2e099ec5,2ea35e55b199904b69341b46a3f25fcb29557f54,0af71da9cc956f8d70c81ab5dd7c3e8484af90dd
e7f5b89c2c7cf856951f65c7698f6d2a351852c7,1993c5d1efb6811791df0d7d78472e383874eabf,679c4454c476583f1b28d179ceb8d54759aa63f8
b777dc21d70691a94c36cf921b428ddbcd36db2b,bbcbd4eae1c0e63afe7bee64469decb6d789118f,de213ba258297b7c28e2745da2f18bc2e0b5d6aa
f4702ee139ed24007942b9b463974d3958fa1bef,6b9d3ead7a3c196651d09b8b6c12d8fadb556022,38d0a9af48bf9668da9b831a5c7248cc002242ee
3de193467d7d304aa1c0f3072af2a54f690eb821,12d015a9356bfe9511bbb24c05d2a9cad9385e0b,991ce83a2b5a329abdf175905196cf1032993743
40a60591430e4639b7786a1f0a3c34451bf73bbb,e7d2c93ca7c764c4a7f9764a06f9ba390a76dda1,39c48f0d0156f562e8e286003d5504baed62ea5a
79bbc20f29632c65b4aba5f51503738cb6088b70,c6350e2903d5d431fb53e4a5ad5d5f2e9fa9e9f3,533777000a214cc4a04dfb83503cbf1391e31702
21565c22849db95277d35ae21b17298adaf0d285,f632e2e7be71448f812fe80f5dfadc8aed22dc8a,3a5eb0ec59725106d89f21b1086f22851dcbd1fb
251b18b9661df41aa9de94df5f0fec334d3323f0,3279e6335112c042ef8f723eb1476175bbf5e48d,fc42953814ac01124fa964dda48de4d30e2208d9
147559349b257db80d94aba077a3bef23409f581,20698bb36f16566f16a52d7c2c4965d6b1131512,b7afb2431c1fc7bb7e29a965503dffd9e95aec00
013491c69f6068b74240153c95bcb50be5da21fa,3947922fea2604edcb2a4af366332cea338c5907,a0ed685036ab33651b4ec86569e2e8dbac33f527
e350264db18d5ddfe8458caf6a88ec687c3ce4e4,892454ff17bf5a12d3b7543c71ce149b9cab8f8a,2ad3c6dd97d08494ba0406b59868a5fd1198cbb9
ef3155c2eff240ffc64af5b713b545e5a0ea9b74,42324235bd7b9a00acae016699cb4f9c7e46177e,88836b467e591b57523bfdd06590dd6f58977d7d
3188dc18d41b540d6241e9ea20e918e217e55277,9989d408fd2e010dffc655e492d7882d9a52449e,27e89e07a359c9f5388dbff82bcd169823553154
93521ae8e87b79fde427bba35db6dfc8cef108c0,e50c4f6373933812d8fe57ceaf4ceab1c963cb32,3099e10f41016534a49548a5fe82e93ce6e90138
22146776564c2b1032ef00534b3982347cd1ee25,200de64085083dcf64a836a18dfc5a8cbf31386e,346118187b41859b88ba7c4b196493a809fd54f6
95e8992e2f2605f96187d057a5adb23b5109f163,bb6028a27516192fdc8e0629389ca57524f4a030,49f789b92aed40ddeb16aa91b95fcff61b386982
c146aecc0112091e382e8c709026076038783409,4dff373feffed88c558076962dc7a9e9729033e2,2acc6337d817d6e041281c4e0393ef7fde833adb
af1a4c06c53b7486965fa31c8bc6ce7a3dcd16f1,c7b19e2fc96f01219e4664895b13a5d86ae7e120,a3573599718aad825241c4926833270091ba8b52
9bdfbc24731d670ecda14897eca0add4786871a1,684ef3008fcb26dc1318e6807d78e72942d9ae4c,9132b54b3b9ad8817fbc5bf20ede4ad947c193bb
62129db44cb6ccf173a6c2e34c6c1a29760c9479,80c0fc3c9268c59a07747f7ae88a106097c2a2c8,8003f675c5786198a1a7087060c05debf4920b07
507fc9c1ff58a7b97b3739016838cf06f35f956f,ac974c9ab7418908c996b52499240a88ffa210f7,34be9e464331921895f19699348ef7c663dd7e05
f42b0bf6f556d1c8c9ab2bf04a5c170d62b44b8d,9819df6fe16de513a6c253b313cbd00ce4b3b11c,cea772308039d52e7dcac66ab46c1fdec607e67c
bc3131688af996b30fe4acc2e2b55d953ab70f8b,8f0376c888e2b8626f37b8c8ce00a704df869ba0,424c8a0ac0edc9a8cdffdb62687fd1a750727172
f8339a43eaa2808fe22ca13192c92b5c8c200300,6cac8cc77bd6f36cc5f312dc7e932108ba5f467c,135a88c888e24e3c4559af7fae7d2f25a668f7be
c20b27ede9fed9798af41af9fac56b3785ac6cb0,a880367b37004dc22aae426c0da8618c941d1fe3,96a712f7ff35dc5ea1e148bff113c3b347c1785e
b1feaa9458eeb5ddb4b162d273a027503fecf815,aca97274189a9511dcb3ceb878b2984138b71f62,db267dcb6335a1c84f3b28e05b250d0abdf59818
7b4ef925f0502e4627d3a7a4bcfa8846be89852c,fb76f529ee7a4c5a590cfb5b38054579bd46f6b1,47b5d0b92edf48e9dc7580137262bf2b60076412
08c12ca4392fdf66b007ef89f4d391ad35a64b8c,27349661e08faf0d35056945bb9f845bdd4c7030,9e40d536cbf5d42a95ba8c69a15b64b5b2b25e78
34d1b90921c78fe89be27ec77cd3e61087063c06,83a6efd75995f6da1f5993a608550ef4ae12b1b9,cb308bf5015c9640de99c80ce6ec9d3ba6d94952
28c0a47a953a21813de4ef29172d0257641de238,73c68236b6a7943b8f5207a78e58483bf96a2737,729425447f65fd44cd5a47a4379dd807a8cb8130
0d2db1a11c35a88e2c24705550768792acea5f61,d0106d08b9602633c00c758c36aef8a3068cbf5e,ad99285fec1def7dd295c799935a8082f95a4715
77f5abac667cd81758ef39f889cf5107b920904f,bcbdc4ad92c91d8544741bc36dd48f0f7fab9671,30a4f667c171a8a352952bb008f7f7fc7e91284c
3189e4245d158f1a9ccabfc44fbe5fa55be2d2a8,43dc4c7ea08093298ee0facc3c3bf9660a5faef1,678ca16d951ac865d47b2218af3ce8de81e86aa6
cfa9935c15439996735e322741979c4394545a64,5438bd66689a1d50683d9e1740a85c7b81d3624e,5fa7bbfb9be0ba2b9c0b1d434c985daaba887c93
b449829a40d30c6a3de0a3cede92062c561d0dd6,a156a9246badc08990c28fda1b74b6dc4426de23,637ede68793715269928afd0f0b174249b73fb86
cd76003b4dc9a82cba7b8cf82fd771d7a5eb41fe,65330f346d46debdc53afc0d8723eef18422453a,a48d40e08e38b691207c557589767a1e9e84c368
2c689fa57253e3940cce0c90aeb41dea25eda155,e34a7596596e71081050fad9fa6ea77f55606930,46e8cb3e49219d01e61279455fdc6778b64cd954
b1759d9e9181b23b5298849c2bb9ee2b0389656a,fb2e262027c88fcd40a1f79cfc70401bdb9919ef,2a8f2f3662e15b66ea1364d057d011e08de8728c
8c9c1d9798636e75e24410f8d18cd1de9a75e566,014785833f1cdfae202ceaf2f33b45408ee10849,2146ca3616be92349bd106477daa15a6b95a17e6
222cad35a9915a39ed2f83e44106b1c35a05976a,470cc8eb1c05f2769aca541105070c4f5031da28,662f069a219cbe2c73d727086623964634800f93
aa2907cffa51957375f70b19a613b72769ae153b,65be647bbd03d92d01302af29576a070ca82dec0,819e2638bb490c73b4f73473238aa5eb239e5e83
2a957e77bf1b7c61414c3f18f41240510f135c37,705218fef11b511c23a0e5b024555332e4a5988e,639f1c476f25339367367195da4c04e7ebccd05f
f976083e7fce1a1b274667ee4ab6a2142321ff99,5631acc401d8f2149e0a8d50732aa5e0ca49d152,7e4ee79e65eae2721b5b2785a9fd3eda878bd7d6
47f6af4416d8ef3d46b315a80fcfd9c9f8e5c574,c239ae9414d743ba417b15abcd3f4b638abdf5a8,d7126bd42cd8a697998355c31feadc86312414f4
1aad73217cc17f4e41e222ffe127ed55446c1317,523ebb42cfd9705ef1cc6b4614e3ccb610eb7a87,e858343c38650d828b410d1a655116ca54cdc981
28154cebd19d30ae4f3f0219cfc3496bcecb0a22,17298086cafacbb5bd61f75d8860441415fbb984,0290f364cc73f8d43bb80de8b94cf942393c8f60
41e554067a781db64def61fdce3d952d1290f8ec,db71a9428ac5ceb25078f792019137fe560f91d1,f51a893d1dc17579e99157bc5e8c8b91e9b38825
8fd53df3cd8aff0fb6875649a9d00c9dc5c3fa68,d1bbfe4cf75aca2bf00ec1cb1df43c5259fac736,a9a85711d51c890f453df4212ae866a911432458
ef13f52ba8a7ce3f947faa520389cbe3858dba5c,c8307d402283288be0859c18336a8a7446f3c765,391512546e73c8ac7687b1a6f7db65aa491447b1
0a40d927cb5a9e7ddc2889dcedfa6980c6a7c9a6,b787efb7fd4c1dcc169f3ef38e4aee09d426df3f,b51f3d6e534a178ae60fb26454e49686553620f9
0d41d86dd29e5a5c73692e4acc841013809d55fa,1f00875f8c0c8abbc0ee7d7af98b8282a4556f8f,c5fec35652b970712b35bf4fbcd9c6793cc62647
375cc2b44343b143fef34d06aeec506708a59d22,3031a4da319316e6c7ac59a74071920a22f39e05,c7136b59c78e0ae3eb9d4a69dfbe6e9e6bcc9eac
b96109727c01f496061c4a77d65e0f50e8498eb0,923c891b3704b831a5eb60fd8bb8ec1f8ca6e737,79974a96713d98fd78bf838755c31fc44f2d0a48
3135effee3b9b61ccf624547eb4c6f9a22ad99ee,26db93d78cbf7656e49d700b123a33d10b5adea1,8e929b2879b133c1d49f9054d3a9ed5a0c7e1c39
314b8999aa9e96440feefa15167f235a00f61267,7ee874fba158020461e2cff0fcc20df6c8760946,aab0884182ec68f679c454fcea27fcdee30df7d5
5ef1ede0a4f4f63e977d0e71103602c25f8ff579,e147e191ca2aa54fdab540a8076f047a5e36bcac,a96a43d0d8933118e0f8d6224dd21747d9316769
81887a2eb3fcc7f8e23a71a70483a175c1c1526e,625e847e56f1cc40973fb0c5d6f5d014d5fb24c2,48617611500cd54cb7f8fa6b32f3ba665251815b
b41c8342c859189350928b08def09ccee5318ea5,1e0640c9e99f3c498d3ce4cb726589fac9662093,c2cf21d176a9a6db501940d2cd7931f1c651aa0d
ba9e9305566658b3153f311fc09ce20eca55ab47,44d9498effae13337ae677dcf2c59e52e6ec2f4e,b033ccbddb9c6ce1b486cd21493e07b6949b02ce
4ba19f5418bb0dc18ff708c2ad73e7cee160fc5d,afd0ae44eecd5252eae6dab8a34b0d4dc97722f2,d5de84c6c52ce7403f6ea17e9330a1cf7d5e4032
ba3de67f3bbe7c6fb7dd93a4c7dca28358ada964,fa4cbc89a5256a5964460afe6a105e1390599a17,c1c201f93c721dda2fca9058649b51ec53df9757
66cbee5e31091693cef12ba3c533ffea59e0c549,fc98a0db4f917852568e8c777bb229ed7f2e53ff,6c6a16a15445cc5cd9343d31f8634eaba9e013e7
af8202be3d829691ed8fde03d521581c8a61820e,3705f95b925b46ea38a795c81425d06de6e2fc5a,96a368fdf94976f59bac41f4da6c222a2833ea16
f5becf9ac60e6da9d9f3e323b69b89a800b6d5f0,e0fe8bd17510e16653c8a27547335b692978b91d,632353a8086a6aea4f41062028e2076ba678fec4
8d690546f306ce23f32322d8c20ab3e630cc2eb0,8816a0b601383633d690c3cd51b2b9a4d6374441,086c897981c05bee5a0d47737877823cfa590c03
0ff034216a946c540dfd170fb611834ae9f66bb0,2f5d51436e4edfe944a9e5b276b564f63688f3b1,eee2e9f950fd49954fb68db74f47a6d92f4d15b7
e8fabb752a5bb2506421e911497b1cc0aaaf9969,460369405ecbc3200eeaf38350bf8b2e082fd34f,4836ff29bd6df688f05ed8f1047cb43f54ba7231
79f74bf8cbc84baf1776c08713b3659103d86541,9dd0a1f3b59c01b9901688cb77c93a86e33abc24,6a6ef1c8c1a9c468efa24f5bad043c1836509b5f
04f3784af5fd1c73d88a00ece5bc26566313fc2e,2e23e2b0fd526e37e53a5ed07821159fd9a8822f,759803f2689c544947533e29231cd63e42f6bf9e
f99fbafabccaac7dd1cf69debc8c983973c14a1f,b599574a162f804f7bc1f68aafd525928242d020,1dd914ffc8989cafc9415682a178a900249ca091
d3b09aeeb9b7bd224e2009719feb2a6a706f509d,b7374401fd1c7390bf675877e56e3b386492fb14,2a0eeb41dfe764055b37f0680eff6977088fa7c7
9753dd964b78619828120f868b6ad78c9679a45d,1cebf9f183e1a4c457b1e50ac0432ce9b26780e1,093e227edb4839157cad181ea1ca84af6ff73132
b9cc9f2e8ae08632866645ac8e885cdc2008188f,5bab6201d578cf0d5f8901d5c08a8802f3839902,301acdf54b9052314eae5ec755bcf23539db46af
75fe6c23a5242eddfd19537e00200bf425cfdcbc,f2d45a0e9d7d46e4d86ccb2b3bb66c610a8cadbb,b352449eac03cc090900bfa8f06b097b88e80a91
4141df7fe6b1eabd4727d02d7d025c4a62cc0d64,f3560004cf486d89cb97dd144337c825d7ac0346,02ed51ea2541071642818c72552216d88aeda71c
39fa96579079493b11e2c94e2dba6c924bceb13f,71784254ab5cda0144cc92d0909533fff965163b,497ff94cb096fb436b9916b60120b7c235d01d85
38c32bcada3d600fccd74eb60a1961f0dbc200aa,acf58acf4109d35d1207100396b81a61a9acd0d3,dcf08c1d4d934712519c3d5a0b7002e5cd73f09b
d772a42375334be095f5bdfa06b601163695b9d1,280d5057e86a037c6baea33323b3b4bf9a387c3a,3f579c10a4da61a89014c28bcfd99909b97cc382
8b95fb8377a8c05c378186f6876c057a95145e34,4d73a9e637ba7ecb7abd2c849e5683dbe33ada67,458a6000e7c0665adcd9e55e7b09351fcbeb47e9
3d4cc7c2f663e3a4363c4f16fdface50f50ead8f,7c2c8581b7d3543cf28d8fe6c917f09f190d7835,2bae2a451c4dd4571b3ad81be202253050fb447b
3dff78621cbf792076eed72a35848b4f572c5d9a,3022927a6f73b6a74eba24ba6f941b1e78096037,2276caae243820b7dc60a7b7feff79b908d96c08
c4b66c89f7c08409f0c7d82869e473ccd84fd8c6,9bcff94e9e7674ca6b87f6aa45b5748aabd65dd3,73b563b3679e0771fe3d0f546da7695b9f911e1f
36e4db15bcb41e1a5a207868bb9e9f59e461f66e,2f8fe76bed57a0d037c9851210d3c034a51dd01d,c577e290d13b2b1dd2c03ed0db8d607fc28088e7
4f14f0f4e53ccaa8f37830d0bd614b66c604c69e,7172397077ad2126b5d59b985ee1f266d65663c3,19a9d4c4acb2d5dbe4bb14756517d3e3d85d79be
9176efbab4ef437703b08d88958ab3506accaca0,024ab0a8541406375fe10c9f8668c78667fda1b4,db0deab026eaae27b8d70662dfba25be86bc440b
1bd66a605ce4bbec1143c5e50afc2ec9e78a1d59,f5fc806c9d2cc3c880ff98e92f33f764747e6713,4f16473baad47661a858c77d100d8070af688941
09b6bed27cdd337014ae0f8dc85957647236a8eb,001057b52ec0a30b4ab3a7c5888b11de9e8aff87,56ad37133e6225e2a4bf8dd07e9bfb19e0805489
5a07298ea516c581c06c1ce1b784fc3a6201159f,3a76f9f477ae96a04700f8db2a66913830df3dfc,7125cb505c0e428110713679df6ac681bab49a0a
218ca87a3f71509d27b3f77374046adb87db6a10,723430ac34811b2a6177c65c0f9067e4d529fbf4,d098600c67613ad067bb964b70e8be97c5f11efc
4b59bcb0ca289e88f97d84afd1dd37502c48daa5,2b3d7dd42cddd513b70d4f7ddb61e2f7766cdb37,6ccb8b83dae165f9c48b9db693d7cdec6dbf1ab6
9211e6cf936ecc789a8d31691bb288bbaed634d0,3ec0437d5fddb885c204ed9be2abbacee1b3346b,d7623be563119810e3182b78e08d2c6a9a6809f0
099faf2d2babda25febee94149772fa936244b2e,a49a7763079fc5df0be15ec3fa932015ccbbe69b,2edec13a0f2be3066ae9e6796ea7811b60971a56
702e63e59f821d2dbbdc2ca9ac21ef4846959fdf,7b2bd0b91766036ea7a58a8b5600b10523c5e52d,c2df0f23006ec371479ce58e37e5f1c86878db31
db19900eb1c6a4b8580f03fd57506a2592b80314,1643fc52106c05039db71882b3762db3240d8069,8cc76b4b338805f53bfb57c62b1c434612817d7d
7eff3adbcb31ad65fa42aa2ea461e569fa947995,14d46bccba450eb00fda58f7be532e5438eebbcd,0df2c867ca2411939925f9c2639742c4ec7a6b72
f81dac4f6fa55f58becce7099648024b861bec99,26ec913725764af0ac22e21135a965c5ed8b502e,6636f3f0dc44be5d9f4f4cc17dd5a66c2c634274
c96a3cc9d1584825f4b8d56fa8b52a1140a2ee67,be50c77f342dab9fa790edf5597594c665dd97e8,0750fdf4102f004b0363c871b3acbb9e359158dd
8ac8c79a71abc78e50e5fa2206c93ff1a555f144,a76c0db9dd55ecd4e81116fdc1779dc110376cc2,57809eb922c2d9e6dbca04fdc54d3c020905df88
4b5f37c2a7c9b2e808e9e56243988bddf789f337,4888c379c433c51d7dfa68adff8d69d785cff9a0,4d25558519f9662785c16ef3717f11e1716c1617
3f9e6aa6b9655f8e5310ead9fec42b59a78da003,cd6de6a4cae00d2a5f9b09cc62947f94f6724445,068f0d2ec8ee953998eebf578bcb27d821be4dac
b4ff93c9fed1d9a54bf4a58f9f24b42779488589,6630f47ab492f1860723e58ee36496b94a8f9f32,3e29742fd9b4d483b0cb3c7bd1b0417e6fddbad6
5b941e3cea65f1bc58bc2189d6eb371b3c3441d4,3af74d2fd2a9a431d0b0b966b03d2fa07cc0e59a,dfde4def62ef9798084f4ea4a8ccd2963b9e354b
a6f1c04f22723ea2da0c5938240f74fe87552aeb,3b1d5794e9c7b06e2c8ce9f11610b479d3a55132,40633835dcaa2206cf041bb5abca51accb39b1b7
613a6e796a30c0e4ee4e926b92f7d5ad8213e817,79a4409587318b836abf829fc01bcfb2a6364638,c474b95dfcb780807fbc982182cabe6a586e05f1
41b17115895bc992f9c34aa8385be55f4079c75e,12ef0668970c478becd1661e2825d0d0aa2cad3e,0cc592e9eea8cd2d1943adb20db14fc32d5a64e4
61358b1eaad0f8b5e605d58983b43c1864a38da0,b5a4f8837cb7abec3818eaaaa304ae2a4c2a17d0,3f62c5f5ef62b791b22aadf5059041619e88a5a2
3f40e00392b6701dffd95c5aa1cd38a9a4cf9297,329710f5730f6aa9baabab10992a50435b29a390,f150fc6b7cdf797f9cbbd436ab40ba388f4328bf
fed17122f85f08ee9bd0ce89ce3fdd2860e35eac,f3c377f8d1e689d70f39e831701ab243162030c2,25c6f3a667b24d7d9f9f165e0a5eb6b37dadb357
c152796bf3a25f2a9fbc9fdd67f0d1cdb31dbca4,5c898fe795be88b59ae3c650abe9d5981a9dcead,bfa5bf80e20e47101e4253f920895acb098436b4
4e06d66d7fb98e634e4e86a1d43f3856da429fec,2b59000d563d6177edf02ad3d6bdc73afbbeafba,96c52ef16d0848d46da5c47e5981d09cca082d94
ada6d8ce5e1dcc4c5a86f63348fbe1c50be3c8a7,6143b8b54d03b8af9704d64fb25223629f0baa6a,7f0d582a4a46297bf021722e993cd40fdd121997
531c93a04e58755dff30399d08c243602e404080,042aae24554402b152750137c37ddd0ba079418b,b88107fa1d7eca0004f0cdeb149f2cb15b711f13
7f4b94e4087a46b3c89dfb8731ddc6a0ba2c015b,e01de8098137ca8a8fe9f5d0a95d742d6e8e7eb2,55c1ecedac40f079be9fbf04cdbd1dbcecc7660d
2aa0e508731a84586222db50b8937831ff8eca44,184d6d61ed2ec9209af5f696626243074ecbee93,ef790adc28cbb70befd6571c622a353160c6db47
1e32b96bc230cd044d6c37faeb5a63e55408778a,c3954a0cee3ecd2e77124ea3cb0994dcf61d1852,2d3cd25fd8d614ba0d95c490371be52f8fe7fccc
0f4ddf7b3497938dce9f1ae5b20179e13c78d03d,74abe873151caecdd73cb2442631050bee0bb7d3,483837ae5cdf79f77aa935f79598da4c3740caf4
8d95da3feafcffcd7b2bf539bfdf4b90a09c2963,8b71455e3b43235a283b815771ec85060dedfb6e,670e77864372d4e45300e6cadbb3d860064b7e1a
687b31575bb459c424e3666df40d36f806bd864a,951f02d188c6233ff7e08ceb54590e27f07cf1f1,60345366f254fe85417c2de4e9d0ccf8f2c85d1c
f5e89ded35caa36d5dbf0aa664c0d26de59a8983,7757306c7885c915de6620ac62ff83cc7db96f1f,a46733218725a7650c3422aaf18c2fde35551330
258331e91421c438e80c926e79833b1f4845ffe8,287c298f378202ba9e5fa38f30f9d12bf8834366,04554d7505569d1dc67bc66f64ed61251ca1c51c
f72a795cc7f2f77d88e0c41056cb7cd4cc996036,86fa90b400d87c26c3136734d4d5eb408811f83a,8ef29235c37f5c8bb054f134b8eac6babd4b825d
7dfefcb1f6cc31063342cd5e5040f758d2b68b0b,1395b2850e61574e905737e4056d22f705664cf0,db9a284d60127aab3bda2820b952df53d4e65665
e7f7927ca9d6db490e75d66abb30d8b71a358e90,a084c8829f6375f4ce90b68d7502b8b4a1ec6145,29d681168a7997875dd5ba06f0aaa7198abc5631
681067749330af9227ec8771bc0930a15fa9778a,f202249711646b4b836cfac5a0e3e95af0bef917,69c95115f6a9410d7067e624db594f5c5b03e5fe
fa052f76ee041de1d3978cfa6b2a617af18d8ded,a5d36e1bc6578d7d0ee6bab5f5defeb71a21c499,491462fd023245fabbd711538a8fa57de3306bab
db1ef439b5dee9f0fee101db4ea4a7119fbb1e3b,23fc0fe66a9d780615f6cbf78f0fa955070ff426,573d69c8fe2c62d414757b026140f1afd8bea956
a506fe95602b940cb4a5baa3e448d486fb7bddf1,589b2b956fbd6a738073b760f6e7298ba08c9736,6dbe1368ef95661336b3d81157dc67710f7e0795
07a8af33b16ce3e69e7d05630bc6b7071136cee7,86e04ddd5c5dc2024425c268e2132ebfb28798d3,8aacea88504fda6d66e6026e223ef01a87ac37b6
50c221670f87d0ee44a000b2bfe47979787f0dba,04bd105cf5d2446cf6953e424af99437327d2abc,60c73dd14be996d98af574de4ae98f99e56cdca7
c20641545042b195962241c5683e89d0980e992b,59b90c24ed385555cb8e42b1fa98f105ff9c1d8a,594138141af83d43148e8449d1ed8a876dc0d536
5b2426752982777fc1e39b39fe01749990ca8a24,695a260ff80e53ba01376beb6ec8f0d7076851a2,e60ab7148d010bda30aad8d5e6c9591b5c322ae6
cfb28c765471db145c14fd64749770266205c2b2,f8c2d4a6320417c267863bfcb026ca0b3d687702,6654faea084f0c50bba9a059f5593769a2be647f
20e2a0eface9ee9e46ca52b173ad1c522402e55c,365e320119208fc45b355b96d743af7318c16b47,7f769f024b1772c5b7796b88bf21394a39cac89a
9e0337f2483a3b83187e09c55f1de6f66f8a690d,e08c7b3642a18d76bfbb16b94224fb17390fe3af,5e90aa27d5435a07a44f5fbed44b2a5009a5a0ff
d5b8e49da276f3fde5443de72e5c338fe6283bb5,552107f577ddee5ac76eb2e8ee6e17cb94b49bb3,a063a538638d32c10ee10e4f5210df43e3f719bc
4c021c100a496f2ca5e2c1d8bc8a376c7bd94516,a79d12ae415573a66f6e8f3aa83081f0877d2d2c,34112c932c36c7162f866b4460cbc3700bddc92f
2f4390ac9bb56128deeaa9d0c1a590388db9eb94,9b1eebd333fe8737fce6ac9b31b2c186e4c0849e,19c1ecda547a4d1c97887a8479ada467bdd7ae8a
c0ffa18ee246fa8079c83e3461aa02a774c21dac,c6b0195c5f248a3d2154ccb9ce5dcdf62867e1ea,95ced4a7f55ce63bda60c0d3f6e37427650a0df7
cfe2d94b251692eadb8b6e188be60e5c7aa49efa,89d9679b53d03e369e22b7cf92c9d5ec1dd2cf98,2840e5e1fda6a4d222057f583c6a65cb08a0074d
871f60ef61e733b32cbd5b4c4baa9be196f33443,43e6d84f33a40cd994ea08cf3d02ce617da9d892,0794878b41a2bf44dcefb86d202a0b23ca13af64
950c1d1693007106f9c8449640ce5b91da4019b6,aa6209ab513c9c7b00c73a1d84fb3d5cd87cd5df,e3870079b223386c5f71c993b69843a64f5fa44f
a61e18091a2275940cb7020abe3a0faee9ca03dc,4d710518598a90b8debb01d145cb3af298d41377,de805fddcd15b4eaf9d92764d043d5527c30311b
187cc46b327903667c670cf6c50a4b524824d892,b6097a0300fbdb8a1d2a18429f3aea0e384b9782,3d2945726a482fb6c824e4feb8005782b40b7b75
8d1660893be11aa243991c52d4dcea7bf4d63a24,66a72cfb726bdc5370de99c0f6524469f1af218c,244f1dd83c703b6ed07377cfa50b88d1fb23cfab
763e0a14fe4b1077e2dc03cb764bc1bed43e72a6,8e23dc99a110b33a6e24ee75e2cd71c4564d6f1e,92e86e7673c326fa09cc93c9ecc0abc2b05068be
bba56d627fd799e9d2daefdef6c6f3ad64abe7d0,23fa725b0127903999c65e5068ff98e745f8354e,27e9dde81a0738042331616aec0d3dc4f50edc43
5d2be4da1cabec726ea95c0e7e5fb465a7f9a9c1,90ee079cd15ffbffc9309fd542686680e4606f95,256597be580a279590586176daee4e9335b3140d
ab878adfff2f9622574cc7f21fa6c29ad6f953b8,724676db4315a9a3a5f26bb6e4c05f9c49f80ebf,f1f819516ed91324c3b9680dc7c2cd9f10e3a423
569c40611687015c57eae7bb15d1b814c6cb70ca,732f1d9df6b379ad8548d0b7348abf40b672aa7c,03acadaf1ee9e47ae80d8287cdb9d5ea133089a7
0d11b5bf29f896a93e3f3af271b92628f2efb00f,1b5ee0d063119990b66b0952d80ccba4f39c1fe7,df275152c24173a66895698413d767f52602152c
f2b924573a2f26c134f2da49277afb8772fc0b37,5193e8332cd0c3daf4f661a7cde271b13483e2af,3ab5acccb175706526b82a53805d2cdb77366d0c
a4695a7015b1a3b218cd15660e276230e5f9e776,7dc6049de9a13b7d406accf3fb16c649adf2e6a5,4fed57adc13e75bc70c1495273cf9caa295c0d07
58d6d64fbadceaa81b96543fa2aaa02d88b971be,3e14eddaf6137e2604fe3234da7b4721f9c3bd6b,43686720c3225b2390c413452dece43a9b4f9d39
381be050a50fa99a05b168145c1b66e66a0c7d74,6422e9a803ed33cc9208a0a375f5671b69f5a524,be26429159dbcab219f1cab5ff4494ca89aa92bd
0a0935990636b0600c4cd5a606eb145002614414,b164f5aa65ade5e2cb8b2a3861bd73cc8fcd3baf,c81f433795128811d65ee618a1e2b5a17fd8965b
6764056eff5104edaf5eef1cd8dbdec087ad67ec,11a7b8592f043c9d4f5bf98379afb1aa9bc7ec49,0d402a13419f68233a97b28919abb3dea383333f
997184778a01718472c29a67e70ceadb32194e47,0caba1e84df0a72ac4c3fcf71dc688854360d2d0,bface9fd9470d0a8fc68ce8b3d8c98540a7d7038
4aba225c8bf7e64fee347d77557731fce563618f,616cb382922c96086cdf5f9298f690af5d003429,75ce122d36626cfb3423bbc2a1273bdfba1765f8
c1d124d497149d4ffa1998e9c84d9eeffc04b04a,40504a6f9de8930c6e308427631af0ab225dcbdb,56b79257a12806069a13c2b655becbfb2d4c1022
ba8cddb546484c10b7513ecf36e22e8cc1ba5591,69e89262958c00b6f17d73ab5ca0894b31e87eaf,5aaf863d560f9d6dc88fc511a27bbab06ed96a23
52572e10e92018a165096c9a530b4cb7d4cee936,4f4d8191f00d34702cdc0f9b10ec90bc257fb75c,92043c6e209ba987b8326b8abd2ae9b0a5f81b52
f8e7d0bc097fdae022c6e4e2fc22ee61cbf63ecd,fc5c35362bf995ea3d9c4c5ed087da508f7fc90e,4d428d945ec6e13053cd96536bb3baad6149c66b
d5874b00881a7323897b6d80e9cea2dbfddcf0b6,bc9b8af04b6dbecc12d22b592a4e4790e21ee3ff,6753f869878e39ec6d0a4bfce351861c5f69a462
04a42bef84f38626ea7fbfb102ac949d1b819e6a,bd19575f92a952a6189349c9fef5e17194ad0cde,8b31df70672bd6e7f949416ac18bff68326ded1c
bdabf674e1c9cae5387bc3abe884fb1b17545c98,a316229ef67f1c58f6b33996637e888f11cf72cf,254d0c0e2c7384bb225f8376cb1fce78d4047cd7
7cda3d9e57c4cab68647b2de91179c13472fadcf,b48c8d8596400544396715cb4a268adc6dfae619,7a6bd84bc055ad95ecee0f3b150090161b8a85f5
ebcae70d72fc7a381f3cebd8760e3634eadda5cc,e5e386f94ab4f87880c4358e40dbc31a22e50ea2,2a2ec77b10bf6f25093123f55616c5791bfe9eb1
0fbd418cb739d5cb4dfc4c21ce6e67e7d17dc961,b581751ef339554b63e2556db2643e421829a1be,9ce97e6ba58f78ee3132c6a9b4e252506560f055
06a728df246871ebdf1dad443f12df695617f425,5947adcd7bdd21d7acee39eafc39266ef4776e93,4263ff44c1fd7fb1c061a79b6c1d67e24e48120d
531cc0ab0d1b22803a1e5b55a4ba7782f853c375,1f8a9c708efd1f18f40aefe98e2cf3f3393cf07d,b98cc1ebfff7b107ae3429844e19a78e1c68bdd1
4abc498f2f37d6b789eb3229779f6e716119a479,05091cf0dda02c86b90f46a20d1aff82309fa1ca,bb4d7a7a50d593ec2a1676f105c43b0411e90063
fe120269595d5fd1a50660fda2f374f2de341117,c6c834949fd50d42e5b724ba4a5981ea13f9c5c3,4beb4bf8b20a899174a472a7c5a5c52c54f01bc5
7dbab3a78f0cefad954346be023db3f0460e407a,3aa253c11d215bde7ff9312c9e5ac7a5287f0818,5ffc1b81529bf8fa013781e3370ca18069df54b8
406d17a4b6c75e5cc81dedc1f091ee61b7ce9660,ae91ff00b962a9b53ede880aba87de37f70bbae8,c77ef7d6dd0d1920ebf0f4b9ca27dccaaa69bb38
db0f0be3bad4800fa6a9d1ef4bbcbe08f76aab79,a414997a84f1b9099110ce89c77fcab85088c630,7a60e044e3bec9814d891d1761bea3445eca284f
a2174753c1a89a039af948b9b7a72142b3fb6324,1df56495b7bc2d97b6506537f34e45f46e19456c,4559620efaefd84906cb6dff08ae912c662eaf13
37b607143a8ed79e9cc4e497535970d539cb2933,b239365479351d525b6cf372e7defea70d486f7f,f0edd62b88df48c4a4d97f5038bc6e35433f542d
6f165b6c01461a821444619b18fd9576813b0b5f,2c8db3bb9ebf1e76b6a30cf16f3e9ed188018d69,d9eddc50fd7d1d3b9becfc1f4706113bb49bcffd
c38efe6d18f2b49a3e6dd58b8a45019543034462,5502d6cc58baeedaa471cbf75ec57509dd3a3c51,63af4e173dc10c05c6ace5158732eb1f6bb053dd
b54d9cfecbf88fade10380b310742c78d002dcad,f9672b53a2d4e988e99575a70fd55eb7f9cb8960,13028db5a4418508c42143c2574275f9d2b0f158
fcf2cd2bea510174b60d78d534d331aa2477b5f9,97efb03ae67b7035d31b89984f04ba301198b7da,af0ba7be83258ee9f9b21f45fd645abf093953ed
edcc14a5ce33716e0e51d37dd4e281c0465ac369,9b54588d75372d25f022459da9bfe131e7a23795,2808873d1bc4e9cfea75304d1e99f39691298657
afc568cf93fdfaa09f75eb0ab65d3cbaa2f628f0,30e61067a0ee062c25830ca4aa5415972a0dc5c2,9d1c81438706b4f59bc37d7f7905e59617dd48ac
15baa272fecd73081cb57d776969aedfcf7ba1e3,4f707c3d7eb52dc9199a7f369436ba964dbb67d8,2507c1ace69387df7feb0d805cb33ec6611089d7
cc47a49c81781928ec5a59e127d0040dcce8a855,88b6bbe6cc9815f45f954e955a2c0d1d69e82c62,56632b720c4b0dfe65586504aad09855984e8cdf
627fcb4354a9027f4008b793050a60e66e482958,571095773aa21f75755eb19c928568e0edd32ed2,4caa471a241bc1bb67d6374bd831e1f58687dc41
90c1bf2e12e1f69b049d0bfb394df3652bf27722,5be84e807933f3bb545db3502e9787d5e0b271a2,bc1b1e5d1f2bcb777cb06630abb29cc36b6a5713
e76f9e5b36e164ef69a4ba68cb10c21520aba710,60d4363f475b8e429856d51e6a90834cff295895,58af742f3a57c156531c3e46332dd558194c77ef
6cc818cbe3e70ce85c23f3f6bba6bc22f79909a4,9f80b11c5db115fa5dbc78fcca872ff3d8ecdca8,d2879f5bb9955434a43b394995c8778927d8dce8
8f0a3cfce77aee2a6a85f76c1eeb5615d45cd7f9,809fb8333433fb37349425d52b026fa43a99d61c,aa243faab836d9287b124de54ef2fe125d556198
0bce44e342eeda9f92a915132e88de456b867637,3d81c8e51d16f919680b66b71d3fa68a7d66b177,78381bd1ae37be8526eae9e6979c55c687f71d67
82a3877126afb9658096f981be0ebe1ac2d18a59,93eb40b05c4157a929a6cf9c4946c0bda6812833,afb68dbcf35ecfb9a3b5671ae481981423b4e0e5
88c98a57419e0aff7c3ba8b7478cdb119c5e7ccd,84a1f614d96a2104f99e3be8b707846462ad0c62,36323fe424c1b3e543c4706dacd3754a806e7814
e8af7427bb0ead629eea25ac86556605b1dea252,850964f321a46cad5912ceba6a7d682deb144279,362d2b50df8d28dd4f769b6c90a18e23d5edf12d
90d7a7f03add5d973d9a30455281ad09662a185e,c5d04d1a541555b29b176bc2cb7e96bed089d8af,f71b6f341b7ffdc3e6e58cb60f2f8884fd92fd25
195e7e09180e7187ffc1bf5a83625162651ff051,41ccebb7371d261c79dc6f05a0e7daf9e9442935,b4de0b2e9c8ddd9dca7af3f7f24bbdd825dfd7e8
0a62e6040b062e7176b404926328281c3355e42a,c49213c561171e398d76eb7957f8e965cbf2295e,d88da03e7da8bb0ee227a558db7f18a6cfa83942
3f95fa50efa96180d5c9648b354d280090ba4cea,651f5cb8a1e914c77dfbd99336b2b6d38da558e7,1c5d0220fed77c8c84ef6df46535435e264c74fe
2353b1adee799a3821832dff63cfda1f4cd30b2e,0acae47310dc0a6fa2ffaffe21b2544ba869e100,c5d7e6807cce2042f90ce429335ddf0bb0223144
11cc085870fb6f58eac5195496f64d9d2d7f5ec3,3c8ac8d35697b44a8caf069a925da30ed5aea2b0,4a296c9f5dc776d68c1e52443758efc52c5f21f1
8ffd7565466fbda97e7551cea9036314fefcba78,42e4d66c5e4891900162f826f868e0a177a82ab1,b2714052d1a10ab417ae2eb783b671403c43922f
6104cd321c72d825b6e28c708bc513f8375af515,3685b50e752eea9b4b5c234ced112624b15a9b58,7eb782446e41d1c60614af575f74b560320bb325
996eaf16b36c0517a1985b88adceffc75d86efc5,8873a199ec1c07867420b46d0637633801194e93,31b7fd8965f0e707d2411c82dd03a11d96a16493
c8337937b374901d58d7aa4b9bd5af7674084a19,19a66947bc974b4dd1f42314874c26348717f1c1,792cf056eb5a2c82f83b9b81588a46a6e6337c02
0e54ea6babe4b1966ded98127de92435e6cf76f4,3e2cf16d1ffa53d02e375cd9bee14d039100f6fa,d0beacc35fdf89306b82234e03d99021a5986741
6d3bfccbe3f2fd59bd3ae9247b992c43522ba8a7,a91b42bd8d65dc68ff22ce64af52a5b9358eb3d5,ad66f17a876853bed249a1fd0727740b352af9b3
788797d0786e45a34d2715d280fc91ac9a358bbb,6d3b74f96e86e18a02101971f6d04d77eada3911,996ab2feba4407d20b087817aae89dbb13a659b5
b29257fd05f4ef1516360700a89954e2f1b48506,4a5a2f5ba2467ffed2bc718cfacd963271af636d,9c54d753f56bab86b9b451c8f4415cd041357a36
da2bd5f78908e630cce860ca25fe7da8454ce6fa,a5ab1c03ea466e93f6fb92f4c8da5dec7ed24b1a,4b5c8982ff496d89a179061ac28cbd1413776ebd
3023a9f0e2c82664c26c89c15dd2ca71f7d0c2ae,12dce172f95e77e67672ea56f25488e3bb42b288,84cd9e129b2cb9a674dd105856a6fd6441ec585a
d1377777be89c2515e6769e8f551257bd6d98d53,1263880ef02c11403bb728c7a61bb557faf0138c,f5489b567809e6690dd4603154ae0b0b50c0fbec
b776d48367cfbef2debb5c62e383192be8d05ba1,17d6999726b0a5a77ff029e05c20558a8bb7bf2c,b2d6c36e70cf8e5b1f7fd558a70ff67ae41011e5
2b7d9c5a1fe1802c3ecd429e6b9f6821865de9a9,f095bc59b01f7edce0764dab8c3634c19bbfbb50,bf96709e398bba07fec3462e83d60dfdb1dbbef7
1e1c17cb61713093bef48b63540533a7692e6e22,921e73ab0ca3d1af0b69d86d165ebf67884c422a,a04ec36a611c043b00b32e1165df1debdacdecd0
4cc739899847f1591973d417a576cc50c880fbfa,e2d8f7b68fc4ee2c687c2e16497660aeda0f6418,ac8552afc2697be02cc955d42bf0f62ee2ea3a3a
b3ddd4e7863b16b0ce22c239f298f418afa20cac,85149ab9a4c96bfe1b9f1defe7fee3b4b6a2c1da,3d4ad5b69487e66a162ce2844350f0e57c05470b
2c053b4f9c15d0cb14be6bf39c5c5aa1143c2a7e,5f67d830e74a409b9b17d52c7005cb15472342ef,5678baf887022814ae9a72578adc06654131d9a1
c793f4227167b5f2bdb8e27396ae58ff2bad2f70,ac5093274d32b75bce4cd955862a1a5ea52d3056,95f94bebba8f42a318f10cb342975fded7df8961
d1cb341cfacd61705fe3a2b9e098243faeac85a2,eb6f503badb9d8f5475ad81f1146466090c98b09,9710b2cbb406c6fe6bfb66b88fe72906038056d7
3c9a5ff75846720cdf50f539de81771f20cc1c82,c90f78488c5c590a17d05c3880dba5077263c207,09bd361b484806a5d45865a963d3579b1133e787
dfa736bdcaaa5e466bdf59563601ae2cfae6345c,47ba80a54525b5ef8662f28282e4ccd73fc7d698,a0e2cd36382e3ad061e54cf9a32804b729e527ba
5816a4a9403df29aa77a5ed54e02d4dcde5651d9,4a78b7e0730278224eb7204c5e94ee557a484e4d,de08108b27a2df1bcc945ece1b86292d90874c1d
aafc22bd74cf83c82037e51a1699abb3517cd9f6,5f118da6001068537b38bfcdab33319d1a0243a4,6698f6c56b76c60476a15f20a4135dc8ca030acd
20f6514d9749d3e3a2323be70188df6eba2858f6,b2ed667a86f9a978c6d2eb6dae48e3f1932a86f8,58eca57feb4528a423fe0406ba0bb4c838c230cb
4ec76072b4e4a02cb94cbe38363c12014181d9a9,c45c543faaef72817b1e1d9ddc7e774f599b9835,febeef03e4830cc4ecfcda0a5236e6f6b86d483b
33094d263fdfc7c0aba42e6bb9c48d349831207a,b3817f6d9275f887b48fb10db3400ec2c3a686fc,c6c996f506797b54228c248a3784265582a4975d
62c417c8bfd8a82909eea05dc63c52661b545e67,8738b4b47f3868d3c795f94743aebe743a1ea49d,2e36783d0e4fd89fecdf84623a1dddf32e491109
a2303bd89994f2997949a6f5e4a6043604cbaa98,11fd466394d945f20de98d013acb95b8603437c2,cc23515927ef60eb3675a5626802cefbce0d7d2b
c15b6f4516adb7c8e524adc70d7adfd1c1682bc6,7bffafdf8b0adf60492709c939e24c73a0de0139,4e1e35aef550f6a05f9307b0d39346f39e3eceee
78698beaadba891b06eb4e32534e95b6fcd08c91,27943baa2f65cb749ff9d0be8c37b4298abc1c60,a423bf64027c49e48d69cb365831a7ec15bd628b
cc7b6d0b05fd4871c2ba9909d6aac59a74837800,a7c0fa0deffdb9341c31c45bd3f1918faa42bab5,221d8d84aeeea1c61d689aadc1a13017b9cb5af2
e63c03125a8b066638cec8593d96eb8eb38ed3d9,1ae70c68258dc9c4c85650adea494c8aecb2a3c3,e41912b07644864a3a685ac339de2085d252706e
cb11e2568d5afb2616e29fda4fe6cb2634c1ab40,f94518a9aefd1cd9511a9816cc842e838c7d4266,cba109c55d10bf8f95b8cdd88782f109c6e1e7ba
caee96399eec1c792b1168b222b809d2b424fb57,d22e24937a30273c189fc6f01406e6c82ffc44a4,d401639b24ba6635c3dd05718459557c216b7b27
d62d6af7ec5a5103b53b0430ea07952e36700e8b,225b06e84a29cab4fa183ec914291ecfb74ddd4d,4bacec0ee36e3f999ed33047be4136fc65aacdf2
eaa2a2006c6c6ad4502c71dfe3f7746b2237589e,c29a0d029b5c22e27b14b4a5f59c9c389d7854bb,df42716665d467eace97490e4e27a8f927388fe1
cab80d121874b3e5ae2a4a7ccb04f2b873284e79,d41f4c7c4e806156ffbec259a83016fdd598e58e,ff295bf3498bb353abaf168a8834a80c33e8268f
8f91920c9bec7eeea70b2557a3b417aa8d90b58a,b7ef93030aa9484a8f1e34196ee1e314bc069817,965964d07c0ba60f9e13c5ce1ec577be698d65c2
b72419e2a517b6f89fcfa7dcc9506533b30745c7,72f6752b1cb6920c6483abe4705252f2eb51275e,e73dd883cd4f1efe93cebef228c9b2119b1edf4b
9142ad8950d2e2db6b115cd43b7a9471f1ef227b,58dcbab10e05674baaf11635fffaa8fa5b4c45a3,5ad02a3799684c950e71879877469b1f1021de1a
3caacc529a4b00dacfcf3b75a0ec32305ca79ff1,ec3fe2f99029fcedf165d41049d038a75f8382f8,3655c469825be8d1b8bd81810001049aa0e28771
f65f1bd80299a486ea1d396ac25b9381ab6fffdb,d9d231c87534ecf76b51ee362f8ceb1509a62e19,ed9f39032056bdcb7c1701f4055fb4d2615d8d87
792eafadef3b817d59d64706b32906f5b33d2ec8,59379ab02b290b3dbd6ab457a68db0a0b099d125,91149df87f25d472ee905860129da887fde63f5d
cb41b22fdc575e248db3ef960ad4efd449fda102,96ac7f29f7ccf21a55fe34dd90b511076b6f706e,e67236eb969dd5d0e7ef0f6d859de16e3c69e276
7fc94000c4f69d058d50f45eac1640f7f893a8b7,a62534d11f455e37605a3796f131c4c036b60cf3,39f3a72c625daaf370453334f069b170bb7e3d5d
87bf6a4b5680796d37efd0d6779cbd4ffdfbfdb6,78e88f4b77d0bae3cc08ba25f75c62b70cf08031,350d2d92f991538432c0b980efff1c04a2c02a2e
fb23834367314528567e4bae71f0299a6ae31c1e,0cb21e83386d432ccaf8a98d56f72258906d1b51,166ccc49a108d29c967d0d8e91e5f4e435507b86
ac5407268cf8b160aaa714668dba7e2986c695b2,834dbf5f802a9a71982749f0c58a65c08da5074e,7020490f81b308c24d88dadcdcd21faccee544bd
8cf26b7a0fd84602757dd7e2bd0dc788f6ed3c4b,cca536a86a82719d2ffabe7ed1e54c16c92162e6,02fd6f6e54e5e947b20a87591708439e92f1c587
7337515137f87d3ce7e35622250a4d68e2aa37cc,13afd5c6c75487336b6ecef0a62cf0220f5e015b,0e9fc31dd7c0a55227f1b360acf1b851d5d9ef3d
dfdfbf896da044c1e175bb194ae79b189032cfe1,bb6d4929d88b68fae8f0eab3c43291aa34badeaf,db250b04e05e775542e030bbf3c1fffdd616671c
3e9e0a0f7db475f96238ed76722ff083d470ec0a,59331c3d3cb4cbe05ecd209ca2c221e598f842da,043c3df292fbea7a70d7c86d70811dbbf00b1bc3
d6d92e366675c7d73713b66966af423cd46fdc87,09125e834f81eda0f3cd6aa45d51e1bfb4401ba5,0c6998bb110a06cc739c3f0657e403aaaf0dc0ab
14bc6674a6cd8a7974266635487bf09f384d02bf,667a0103573e43d1b650ef56a08a2108f498e434,57b8f28574087bde2fdca66d5f26e8eecbb2f433
72654864ff75a0b1455fdfe2e82a2fd40ec7f2f4,17685fe9ca5a5ff73a86cfcdf0c2306705aaddd2,2c3792a1aea113b378a88e4acaa54fafb3308e66
adf064cbb490c331528e6ce7b9697a1ea440f984,5da913de0ee29c1d4f70569ddb248e996e761e27,6478a727d78ec4d0fda9522f279b1cf3c7184c46
9f60f5093d0754474dfb49550a3842dbbcc431f6,d7122c6338b637f0a4ec5e780764104350a39dff,80facfa0bf6b866c9ca14d2222f3631f8f7caa54
15f411a3328e2f191fdba93b851ed2cc0fe008e1,a258774ba958dc8332d0d0064bf8fd4eedbd9f47,06b1e65864528e48bef61f8adfe47efeedf12da2
c455e942e5dd3bccd111e086d798d69b9ed4de10,6edbc9ed7e3453a0ea19d2f64b01d6049f9aeeca,b1b9d1f341feb04d4dc668981e469a0fc864cc62
34a5dfc8856ca177e6cd8848b41ef2200741f508,28395337766e49f89b58e690ec80b3a140201bdd,a5bad32b7c1bfd2b0578d7cb2eaffa71bf4d34ab
f6e6b807d5db9adaebd4f17f83b331bed1e09399,72dc2145e9692cae4667563847612df46e37d73b,e6b89c98f526394b5b7fbc197a551ab3e8229c2d
3db27945981318c9c71a04a585d3dd76f290fc06,a1720647670f3e009f0543c741c3dbf46f7e778c,55c4986c8d14bc058781031f016bacda3a8a4c41
cc936710a0818e446e8154999a200a5d41f5e450,0b5c50ea413dce745a264bf418f9bc15073bc2e9,2b86651914f674eeeb61d4c9a739a4b0f45a1003
2d8873d0854df357c28def22214ba55d5f0ad2d9,941020af1a9cc9f5136668d1fd03be5aa378c7ea,546a679f4e0114246f934e9d638dd84f64fd9d73
42f2e5f8ad0ca44b0d13b98b98c167354645d19f,b62045809d9e996591c2bb9f2fa80e34108f557a,6f661e44d0af94fddc382f5c563e44a53b2bdcee
04cbf32b1ba789ff52f5669af195cffddfc39ff3,48cc5250f9c17a1dafa3ecb4ec6b43501d557566,107a2e4e854adae9b198c52faf8d461eee253cf9
208e7fb33721bf96fe9c73abc219aaffd2311eb5,f542ee7b92e90fca148df15f35c50d3040d3fd03,08949c86bf39b7432bc36bfd13f219aecac21646
ef099b20756f61a6c9a9be44f63314907393ff83,4964f5cf76586871ef5350d2c4d62de6a9156599,848ec1d2197dfbd696b5c69a8fcb39011ec5ec56
346adf7f556fda4abeb469c173efe806cdb4b7a6,0daba072460a9e6d5240b61fb28da62c7483066a,601e05f17f1e82cd60a2b4f863f68b5f44551459
ff820247c3b3ae7ba88bf244127b6a36abb33423,e70c8985039c67cc4dba5371dc515db77b3b942d,ddea92992347f28a2f9a0043b7743889d3e3e452
0000682043decf5ac145fb13535c1de0ed570bbf,3047ce71bc0506c71e21db1725009fbb983ae3cd,06a5ec5b5c771a120f864753daeacae98f6bb0a7
055cfc177140e5071a549eb9d59904f57603bf16,c17ad509e2c3589a781f96da8128eb3f23188806,fdb1cd38abbeba81032f75edb3df6b05510774e3
a5997e266fa55a7127445bbefc5269df4dd8fe59,a2806954ed29a28b47f03bb8e1a356aa518bbe6d,ca40956a3aedc76fe335ff1a8843c58a16320de3
719220e8a4f5b2b30bf8b7261581bf84c72555e7,1d3ed354debe8b6a937517192cce2abeb1dbc347,86d55055df60fa6c773832076cbdbd29d0e2ec78
738c11199be19de4806dc6c96299c3154f1ee2fe,dcdb57027ac01c861ffb550d599f02238fae5499,42866bbde5f48187dcea24520d0f2fa98ee2ce8a
644678daaad3ae74d7495f7d864a69f835d7fe51,754374d2eec1e6dfac22fb80f431b420e0f2a5ce,6ce1b7d272ee3219d7df9719bf79d0d044ef6afd
6f27c2390e8523fdbab3905ebe1cad82d8b340f8,aa633544f1adf5d8521a99b1e2341168b1611c87,ec10ee8218c9247836264bcdfcef44331fed62c5
28f25b2df0b1422fbcd6ac195a83cfbda40e4d9e,e14a3f17e6d8d6ced42026b3c49e1f6d179e983d,315819692a6a92cd1c22f7a2031a0c0f139acc63
d9db6809373f3e8ac0a0a0d0123988982dbd661d,fcf085b141dbd7ffb23f79e3bc37f52bc7b7a1ae,985220d94c6092336c956ed5dea464eb80c6c0ce
af1e6fde5c8e7e77a96f43366b0ab6a69b1d0609,bb25c604cf7281bfbf85edae9f90ecf78aaf99cd,f20c76d73baf4c534c487b2196b9291de88a3d1d
d7ba09f5432fed805603c776afb6770daf65bb53,e2bf83b5734772ada599ce9176ec4072bc60f18a,995d2d280a79c02d3889fff62aadedc74874ec4d
f798141d30d284a7471c1c4c5f8f2edb89dfad34,b3adeaaea9bf9b54a47692c686784f36d7251033,4b84de6a72df0b82b9217cb336190203b263055a
867786c9539272bbd6be20a4614bbd5fbd0a0a94,87615458481ea121410a7951a387694af6a65a7b,2de0be96334891fdf07966fec883e1b9c612fcdf
fb0a0cb65c41e07549813b86cc6b9afb3d1c7430,a668814613173d9a682271b4c5a85a5137c83ce3,cfff96f44ce391ecd5cf16bb7c8dec76142cd1b0
ff34fb16455ed861cd81137997c187b4906e7011,b88d12c7b9e35798bac97672a92ed9bda401696e,f3541984ee18971ee2bdc8d8580653828d85fdba
4faea3a1869969c91c3a17f891f88a24fa1219f3,352489c397080a5acab70ec57836256de380dfb0,fab0cf953719bd6a772552ee374c77968cffe928
cdd80c131d437af8bb8a435e4b095a34bb21c2cf,43d66a4ac8ce315f8d1bc523c9fa529344947a99,fbb8e161faf81e8ed65524beafc204c74eebafb2
dc4637862ff15560c16e5438618e8daf125b627a,17d583a419b65457783dc7b816297b69309157f0,7b65f85a0b9c398dea2dd5bac7cd1b6140480950
aefc1be555590a7dd6aef6a9b625f7ace096651b,ac6f74a6a24bfb0cd007bf8745728dbd506c5a04,887de9f27c255dfcba30973cd24b1c98431d6b05
631ec771578492fefe448d4f861283f04f1a5521,9d3b105fab0d6d66192678520c14c20d9d638357,f7d14128b53ad2147e50042d1d148e4ae9de62b3
1ba8255af07aa5e3c5a75d487c47b7e97d4a2016,313790502da4de79b8c7b67c1d5e5df59025e923,ad7c3d9a098dd5d354390c3497e95681b2ee0f73
cc14f066771b4f7814b8295a2f85e037fc14f6bf,18b8b9c566f597015de7e0c3a03ac98cedc2a6fb,154ada9e86cd4b6b42857d97437caedbd4d0104e
721e89fafde6662c200a5efc3d67bc5480e4386e,2ab7cceeaae9b79a984bf6b8041f70c207511753,f26735fc778f7f1a9ce234c93f1fad5002fa04f2
8d3ef67218bc4c3583177afd75b1f3efb119e703,a88288bab3803476bfa3e54c432f8cc3ed264b0f,b4139720e60b86e64780e535c74176676ee2b67f
f72f021da42839f838f8161a5d186becd1f21368,324deca817a97a8513ffe60bda659485b739a734,66e682dfdd0d61ff6ed172e40df4fbaa8d10e0d8
f9ddc3ac66d587eb8547bc09d33e855db16b033e,86360152650fffd6720af949cd52579a735badd2,6878ffbf041008c0300f263ec901ae645ec0414d
222f981dd17189cc46d30d248c13d9e50e128797,15d1d00c34f1cd0b913afb83bbd88486a6ca8053,7e8a50452b06928db65533720819a259caa877ef
075057f929f9a197b4c3abca520edcd61315ed6a,2186846ab1d273fdab3ad47a053db8bf3cfb717e,e4b717c81766d4ee4b614e4627887045a781d771
764227193a358e8e5ab83e5a141631a8abfde89a,c75953c12bf0ce476422c8b9ab4964de607bf97b,17e75004c5fac061abeecb38bd55f136292faba3
9e11f8122f49356bf6f3429c67052d95ddc0fef0,580e9e516970c6788ec04994e130f3192d5f8faf,004ac4d1f4e0d67c811fdc51d3070c0203b0c774
b267f6fcb3f3e7d7f2e99b10dce495d510863b27,4873ec73a796b55e7002e8b5971189dd9ce570da,97eb32e6fd2216cb5e284329b4eb9758720b8a16
9d41a435c2c9524623f4c6002cfcd33f3c0822d4,e200fde888ff418fd79566e42a0b84c9cd2740d9,120825d1d6976806b5e7ab02e77ef1455598b03c
9a01bcf3dc185dac2d310d178b62d5e48e608529,5d0e1dbe5a148350b5aa041c511a5115a04a5ae0,8bc2326b772fb85d3fbd297582a04d9008c34d60
82346563c118fa536cdc0b5472be1f2be0e74c6f,ac36a214bff45a88a2018584105934233a524b60,b1ee6f7fdc9bcaa9e249d6e7403e3ee2b5bdc113
1002a7c5901cdb185711fc197b4b0c6cee1de91d,75e5afd45b8ad8fae83c2931a7d04e66de893f7f,c69090446ae513ade58e3c803a3f1d6092b8e6aa
e28fca97299911fbf77142d001c0b905f4337711,0a34a090e0f6676bae0ed2afb9570969b37a461b,de3a479be3a56a2bcb4f43c778d735b4b95e4d99
1ad31dd32d342622dc7b63a28facc251a58ce5e3,7157bac9fddade13cb9325499b12202009d0f7d5,0881e4fd9827791a508b5ad985e6f8def25f496a
85d19af48c004817142f0542782741e0d4a46c3a,213d2905dfc44bdbb83e475efc04aa5de59c5f59,5801a7431c7f923681ab48ad4f29332ba2fd4d9e
1f073818bad405b90da52ca942da5f70db6a1ec4,8a36e63a56821d703a543085ddd8b5de42cdca68,92d5e613b5bc2a33c97153c0a736848b10eb6a37
5ec489c018f207fa13ef58ef1f86a07bfd93fae7,c2c7ac634a3e201575638f6e4452ccc0b1afb28a,11b601d44cfbcb80f32c6d83c90e678dbabcf711
31cb670b2013c0128101c3b4556891b48b897386,6f222e276ed1cba81b3a1cfd328b859eb00d2556,e81920af7bb3c8ec19ab284707c357187a8250ec
15fe9f104786ec06addb735eaa3e4aba863ebcf2,eaa7d95a9d1994bff8d476b57ae61e93cb663760,26e2759c272b992021388c1cf0685194f6d45aa3
6e777d89671eb2d303c33a31645b9529e6848d38,04846345b2c8b7d805869582e9f3b6f96fa124ca,832c3d89c83841bbf21cea783064b14c6a5ad6d4
8cc58423174fd272b2890011b5315b2d30f294db,4dcdaa259a4396078bc00bbe98b7fe2853a4b415,a45f71d0dcf5b8c9605c20f63fa2bbe62ad6c0ce
6a3971c9b631c0e8a0f214d27125278dbd6aa6bd,eee67af68444314bc1668862a77548d1c8882628,5ec101d578ec46059cf5a619e3b30ad85d0be7eb
00db7646c8b9dee96948af82c76d2aba55a13089,04baeb2bcf31735ca563e3806e7c6d4c3fecf4c3,e5a923eb7abe7a6dc063a1c297381d573418be66
d1d3d7cd089fdf840bae5269fa4655f6c8054884,ac18c0090a4b12f532378b3860a85d57c3444fbd,ea2ae3b8f0a677dbda1288f158eab2e57379b0f4
27fbf8c91e97f06d972c43315f2fa9c2fb6d2b88,453bfcd37094c40c7baafdfe477eaa137a3eaa43,3208929e176a2e6664f803ccb6db0fa03b22c246
03a0e6e82f4c6616fe6215e8a241b9aba7b00c23,c73c98d995bb251f0d9b504eb638e6f2d7b5deb2,03b147eef8abda8567224e3c91f4c17afef584ec
46c354ae583e0e983ffa0bca2d46402108c6cc9e,d4c9e1f26047eaf2b6a6f339db190d82a93f9975,836a932b9ab9a993bf4c88db06d08e037bec2453
5aa3da26f5ed043a0eb93cf4b7bcb9e09b4196d7,3c6c403b7b8b289f64fbb909539e6b4c71e75319,6e25a014e636af31e6985d017fa63455312b9a98
f30f62231f1231664b155cbff22f37ad60ad78b5,f4ded560cca46d7230e612511bf63349ba4ab3a1,1041bc5a17a99b5584d67b523442429d5febe323
250c0750a2ab541cb22a57490ef1c2dab64238f8,de7cb543e625d9b911dafb6bb2cb003ba2d55449,47d6699a2ee7a439b7bf02c4b53ed1f3638b2d99
f4e27dcfb655923b02424008658622cbc36f48ba,fd0515344cd7b29f9b3cded698d44cbea3e30ebc,292574f3fc2bd068c68d7fba9425954ca3fa6eb0
3eb7a130885beda849b90b73e4cb54cc3c92c711,55e6ffb428b5990d330179053f2547e5812e5a5a,2c00016fdde15638a0737f51c75582409eea4e12
867ed59459168b90f10f42cb7d9b2450347fe61c,b36597c76ae267ba6b245209b1bd3e14e6eaff5e,6879a16cc33d649b0084668fb59e9775f2f9d966
4407670d15bd4110dc758305a4d74923a3710f89,d5ce344b67a811e9360b47ee0f02cbeeebd44953,2dcb31efcea8273af940376a91f35bf8639bc722
1cbdc9cc9aadd23470954741b89771f417014e35,1e38369d06eea6c5e8c7fbda743b6af27d147a62,03778f9b7f74d53acba2c9368931202b0b543e08
28e2fae09d4580c6df1cf1a3f726c19fbe8cdc91,9a7e9771677176ee2e84883424ce146a95a4f095,b2177fb50e628d3a1fccde2245428b431940ca4b
965f759c0df8ec5383a0f0f6fad9b5203d86d99a,cc315e0ac7d0022197a7b49f4473ab219c3aa6b7,23956e9f10e8bad74b4521ae2db58b2d75b9d6d6
acef1e22d36eb351e2d9e7bf7b3c8929a894d118,c2dc342c556e5fd9a6db27b7de8f12e193b0fbb0,71fcb74e956c0022724c7428c171146994bdf2ef
451bb09e8f570a00db9949f7b6e3ed81652a2ec8,1edf99c324592b9d220984f35b754ccb8b52eff9,8ef63723407a4467752d2c482d92cae4ec67100f
aea85fcd66002e9c80162781f6d9b3458f4c5a75,243300c85fb465f5cc250bc3574667ba75dd8b5f,9337b2a3acf2ffdc6a43077a4902e71e7f4f616f
02df6283998d2b90f4f4ab94c8068f24f3159031,cdf1f710e58de512d1e3504b5cd61b66cfebc49b,60c23daa91f9ed7154c8566e86113aee573e53f7
93eef547ae2ef3996a290ad16ce73d783f339977,e159c9296703c2ae67c48efbab431db049467474,d34168742e56e3b6e9f38ac2961eec23333f0317
c8f592d26055bf2ad05afb611fc5bef0522a732e,b49aa071ca8e4d2396afee7a85cdf34695a664d8,277d98431c0aa3a72664b639fcc02124bf870a14
27b4f3df60156766fee4f681dac5f3d784de856f,ddf26cb3d2aa757a578531e5f59ba2bef189fdbf,8e74a04dc5fb758057bf1cc3d856d7596123e698
c06744b62b251146be8ecab4bfb42cc5fcbbc169,b5abefe03ed357ffdc0e7c69f76827899c9fb87f,d1521e80616f2f52b6c8fa6a1db55f872e3e763c
f8b17c410b1e347f39de7d988b5f95336b73a1a4,2f21f5ae93a99d573bbfca779593100b70db1f5a,d7fe9914a79453141c419fdfa3e9bac379868fcc
7f8f733963df9d4afa363f206ee71aa50f619cf7,2c54477807cf33e8ac18cecb469969a65bdf6797,288c7e3c9eeea0b079dafe0f73c98c23426eb968
1a4fdc7313a85c25efdf0279a422dbe26fecd34d,660cfc49e86ae4b141544a526281883538397a49,16bdee8fcb093dee4c57d49bea4b6848892c0b5f
2b023c62c5bd7877c890a7701b38fd3275d0af93,f316121d53dcb540390ca8fcda64a67e53cf0f17,60bd9c5ba094da176c97adbe10f61d4ec878ec2e
de180d765636fe651f86a239e98b0ebb5538041f,d3e18ccb5eef80f35ccaab8f8551cdbc7acd9f7d,2ff18e48a0dbc1fa9ba54c0ce9f0bf670ddc7d80
bf1eae7bd67e6fb7d3c29733068083f66f4a8762,15141124f4462ec01e052f93aac2ae4c679b5c92,449cc8f152991ccd697dd7eb52dec1e03fa5d478
2c372071fd140265dafc10645cabda2080c57e2e,e83d214e984bd5e8eb4f3d64fe7c78a3dc0f38a8,9f42931eeb56a4073864ecb6a1d0d45d11cfb53f
aa75d39ab5e07a783f97247d544f774a67151579,0904ea0c3fc4935d25173ed734e7ac16ed283283,0bdc1fdea4812db1a728171fe9148a5fe95d2209
6902539bd8fae39fe3a2426ff5d6bd824c31dc55,08b61997ca9e025df4355079a3b58a1db189d736,b55c74070211d90ee90c925b1f6576b07e9c95bd
9d6e34ffc8e4776b8bdf83c522b7c10c621be7bd,ff4e1345ffa0adb4d28fb269aee7b1dc138528fd,74e83e9d8ba5be9c594849ce8ef3caab36ea0700
4de5195a9ac9a3dd0e90af7f93c717a3c6b10cd1,37f1d085104ede10a8118595679d8fce7db34c94,dfc485c4f44ff22cab66875a50e9a7e4178f8391
d52aaf63eba440f2d8c8c13ce38c76e88a7f4e7e,85f14ad3577848238a217654db0fe5087bc6dc8e,78dca42b0e30644e0514a9abc0ca62e92933dbe2
ea4950ee910bf3508bdc57117e601682571faf63,0e72cc94f6669825ac24d96cec22cadf16207041,a4e520180f0ab00ea3d030a151081c2598c9d39e
df6baa888b23c4b43c8d083b68eeff8eedb1983a,882ab946ed9db7e860e6eedc3b1659fa1bd276ab,61da70bb72ebfc5b119b836c6b74cb763740a4cf
1fb7603f615884cb678045ae687636fe27a00da1,aa8fdabe1f0ed4157fef8c25c4a4ef688877a843,112f8a41add94fb12a75636a4b45a155725d9b1e
4ced513363c3a2a387b144a2b5639cc331957b02,1c370ccde1767aadb4d89aa9eb48b4ba68a39733,7f53d04ffdc6b44800ac1caf9276116754975ef1
eec51afadd209e60c37699ad2cda4b628a6e3060,bb92fbafa061f028aded7d3e3a22149b87af31a1,7c195d2062b07943d9bf363702d985ab84fc9d2f
aa745e031988c17c151427e3f61034b348baac48,9f8417ba522dddcbf40268f500d7cb3eaec440de,f3e140fc50d30b617fb1bab28b7e20e7eac13cd3
322d04cdee3e455656296bd2c04357175f41d9d1,e124b07e868dc1a1441aae5306d5d8cadd1e375d,69fcacc9487aac44b1bc9b5cc9aef2d219122369
64da07da48c3206567b97cbd03872a73206afd54,c20b51a80679c899df57fa933ec3d4d32d939520,fa12dfa7b5fc86551e7bbbbccd64300c780a7e96
d72170f9a33cc70bff2748a07978964d28526d38,4a6358bfc1c2433ca4a17ff95cec2844b51f7e3e,875bb32e0be3e0557ba3d2a1b1bafc12d3c5e197
58bca9cce18f26cd9c7c4a7dadae39995621a53b,284aca734872cdc6c60e9d5c3b94047907ec81fe,1e4dc56155d14f7531da51fad19b8986bb669b1d
7e0c21fa5fffcbf548f70ca3d59e436ff3d6a045,1bf58c2a55dfb16d6b000ff62812eae3002614c7,af20b064ed643cd726bea2d5b5a3cc03282e28d0
65047cecdb6a57fff0ff84673bd5e70a88be55d0,3463d469bf0d6c8da57c9157e2592d5b1cb59598,e47f44234c68c167b7a6123e56d74a1097ac1869
bb51a2134a6d5b19ca3300a0b7f262feb7b0c834,0685319be877914bf420f3a47d21dfbb4d8a4ff2,963fe73d195362fc615e4a8ee08b0534ebb43851
399552d3509eafa399565e66ab36f3a89fd4665e,e718cb985ebb6cb444455abc48ac674cd3fd44a5,36d21d2d81dce53761c035f1fd68b59d9dd04424
549bc49c4ae33ae3075dc5d2a8bb452e92ef4cf3,ab9fa2012b7edc18d637f63cd2cd55c4a78cc0a5,c9fcc68ec19dcebaf16dedb4cb0d3d3c69bfe726
e4f53a7e4100a9671745a7e5ad1f8ac20d49cf5d,be371d901c436215490ea3a16c4f3fbe90f85b17,f3a660212de69847743829a0cac380bf3450a61f
8e62bf649ee02a9f4486fd2e9340962449a1429e,cf153b0854ebc825c54303fdf943fe42382fb612,c2684c0dc35bee9fb91c408187c1fe344af147ab
00c6d530b56e7a1c52ef4a07d130e6e234825bea,ad8b2eaf8a2225dfa1059870c0e601e89ab8e6eb,a8b387a166210f5ca575c65981d4706ea51d7025
f284a6eda9e33a6617b958e476e92b4d09e64fcb,a3920d535629614e9d03ec76d143d7d0a8f34167,23af096ef6c0fa3d0f74666c56b8b54c3b843354
99d3651da964ea05c6baf3929c8f9fe70c8c95d8,56c58b517d9290198f50e8efa58290a5724ebc0b,637976e83fc692df21a49930461d41137145d1c4
f4898588551c5c96111e2a3d8c9dd0d716f33c08,7a1903cc8f084acdd210300c16d39641ff468924,0c2494bec82fe3595b77efa1b55ca38a7c853269
5e6ec33a59602b4fb5ecfc9ce6d1ba9ee5d0e03b,7dff106d14e7f9800853e63b4267dfba8f01a91b,3b0168ae162ff2b7a57aeb9114ad6beb42c8b02b
d0d07dc3bf21ab5cbe90f242202556f942233f95,9376f5a43ab500b5577ad71bc9b5b2fce4afcbc7,080d8c28f7a9725d93943ed6e4014ea729627046
3f19bd693ff42aacf053098d507cab586a642195,099134b54554c0c4ed5b871f23952dd40647393d,8bbc7d5df3d76fa56b90b07ea762ccea1b10a686
91a622328105fddad75b9a1794450c9ccda65d49,6fc930a0fc30a339624476fe1f0f79a261632387,044133fc87e120b53f7091d4dcba965028b2ad58
74d145bb16994e08bb5255a15f4d0d547b81c0ec,dc547b1426bcf6f2a15ae2eb384a20c41f9365f5,072934081799accd4acfc667b7046e13a0a54734
6d0ce1c4b60c142db8d968ea82200784c512de3c,703941dde56a38672779439d3aa3cfe93a6c3426,8fa62752d4e8a21b569cdde4644f4d1b006e6d1e
297f468cd6677a0d16b78c36ae34df5f33f1f63e,0df460f56e6b48b294ee3b0a476587c066535e0e,985c4fafeba5fb46477a227e90868ac70263bb77
8eefb37b42ba8edf21d2473c44cfabb25bf258ac,8badcbdd0d77bc2393f23e51e44356ff2b13b3dd,225bc70e7e5592b0c33f219ccde334c442d62be9
d51213d26ada2eddcae37b82be384355361a554c,52cf07d96831bf8def50a45521582e75256f2dda,ff6a58ff89a0334a64329a29db000a0dbf91d9df
17c0291e86d90a27181304b8adb1d51d79c5b618,bf5b85e5e539afd6c964afe225614d0c90d84ac4,438bba76b9d154b8d963b54f8d67721c39252009
dfaee4f04b1c2ec66e01978b3d2377685f366354,3baddff71e3e04ee92cb792b904c9b9f5a4e4043,13f1fb60b4cc7ee884a00de755d983ae0790bb6e
8a543dbc8ad339c0a2693a2df1848a5bb070a06a,f80bd9b034171030819d9ff7efb0f45de375c1e4,1fdf940d0b2937969df7ce2c7fa14a27bef30e62
b8e6610617d5067d8010610b50878c64771296a4,075966f142ca9ccc05cb5db2291a565832c141ba,5b06af888693055fb9d52146b70c356d28d06389
ff31d95a694c2c9bfd4f788ccc280c1d6593e527,7966b29b2f3a2e98dec9a097a3da18be690584b2,f674ed0324fa2af19d0c3a896ec06e33a1db024a
3d049a33096ee1906af356dad7f8830c95d895d2,408fc819b399947025669f134ff779bd78c5602c,8369f035bf5bae7a9d6af7902e514722f89a55bd
3aa0d92c792b4ecb32eb2fc867b770a3160fa9eb,55d4ffa9de2999f1f8f36b7ead07d53ce281b4d4,c2c4048e928ac7e6bbb806c30fae4a35221b03bb
dbb0b24de8b842780b547985e52c434d5b8a2d71,9d425ff4ca3d855ba303b815a93bfff98fe153a8,92beecb6fe00ff0af31bb52bdafefe6cc6c2b255
58a56e38d108e6ec129ccf1ffe1bca4822dc74a6,12843498d1747a87b7e0c0bd8d07e5e861b92140,e80b1d9e70ec37dea35becb348a1052c55301677
ac36eec71ae5a5c654ab9f4e8ac366005179d97e,a36caf90435ae9ebdf620d75efffcbea057c0e07,3e16ad9d6c3cf176706ea2cabdb2d66cfd79879d
1c61c30cd23c625aabb759d0080ecf6965a3fe22,38a059f0398a3f0594300f1a39a222c45c3821bd,312f1436b1fbf5445bd97935be451272ff4fc80f
629b2a89517222e73f472b78a365f262741609c1,0bf1af08c4262d560977260b9f12029fbed5605f,7ad4694e4bd4f2b369b0599b880ad0b9b3031aca
519701960c0893ce801572c9604a91cb8912940f,18f364a497a75c718537ba3157ee36735ff933fe,eda7d535bd5d232c91f8c23fedfb26c8e17c98e7
60bb8600a1248ab490f5b5344e781967ba423bf7,37e934ffbd0864c0893f250e14c45130f11edb1b,f8d33dc1885af3d8eed394bac11f86455ae491a3
b47d2bd2c206114dbf07007ad6fce88f208015d4,1add3490c326215fb09024fa987c80435c1c1b6c,0d36b05df5d7e045c106817d54e9d4df0ea6af7f
691fb2c9fe7fda02868baddb8c0ddfe730df6287,3ae370b1908f4be08df639ed6069f6e34fad2c26,2e48a13bfbea0ec59613140edb9d271148edbb2f
6ec460c619cb339eefb54d4b83a456882a2047a3,81e8982dd4d8d0d19899e55e511605be8174f926,f7050ef41ab48de9884816ddda2c2b1f713fe200
49fbe53cf36a122eeb6526e7c7f9effd069c1f62,e46b426ca13519093fabc509cc2ce2adb507300c,47066f0ce7e8dc21393d07516de90e094610e52b
954123deb3b2d134860fc9dcd4424a3abca23e64,c8d18f5ac64f8c42447d5596eb3eb63fac58ac0e,b425c97fce8bee5326e55e28151ddaa6e8d65d54
d5596ef21da4ce337f95cd8a3e4df272a378652f,c496b609d18b20208fb0ca54f0b9137fe413f5db,359ff64afdf1eb6b134f69f7caa5c60d79a91222
091b0fde0ca1d8ab1aa2e7904f3a95cbfec60431,53928dc0edd2818dcf55b9cdda7eca3bf9aa73b1,e0555c307f44c89b2d70abe11cf955c8ff407d1e
05d680902e71ce9a482384009bb3aaaed9f231ae,82e16f02ca05cf1e64b877c92918321bf14da188,3870c4791c18ae55c748e04b362cfc020de424de
c3bafd3a8d454bc3f335a117e07f37afe4e41d26,a17ad61240ee2a0c6ab6c3b384437a0d1836fb52,3d374727dd2e635beb37ed5de8a8f5b9ca44228c
78244d89dc7bcafd58ff04c29e7d6f1ddbb0777c,c3a0e0c6d2e401496bed2b9a377ad2d949e76c3c,55b99cad045514328e9284a6944b5fb2978ff053
5515b62c9e803da400a307cb68dc72e8503c37a8,da042f77009d70a65e01126fae4216392a1fa18b,51d8ec90a7556a5a641ad5250ed26ece45456919
3abee173f4c473633fb4e9e1875ea18fbac71128,c06a020c9cd174fd641da587b10283ef56329d04,eadcaa5dfc55dab3ed673f4d104fd16c0472bc51
245e0f7cfee4e11d8e9eb02bd409e551f7fe5dc3,10273e54dd198984719a932ced572c056ef464f7,d2247f6539e5cea8e6b31a3a4da63b307169a66c
eb67d87dec24d79a68f523e0a2e3683d2ed59137,27125b760ec7d07abfbd47eda7814ffdfa141ece,f75e6d8a4899ab053ffb33a727e54d0d0de04ed7
257ef24a1e9647c25b6607f3889251d55e4006f6,fc960879dee7f26270e4baf2bee8dacf4c6f9b33,e440bf0e00d4d344b855693664da99ed9221e3aa
bf7961a9016220e8f4ebf9a4b2b62a39863cdc54,b64edc0170da3fa6a366f9564c95b985ea566613,1635d04b7bee15f943952680129098c58d295348
a82a587a1b750cf5fd2a409c9f1a942e78d49c64,e5d2c1a9803158671d8e7e2e32b27a3ed7ad2fbd,157e8792c58f6bb207d766c38c8e30dd93f25975
98eab07abd080e37907c99ef0934a62a54574df3,a0543f7f9bb7702d795e4facdd4da7dc4d3efbe7,24226ef4af57e9fd94deea2fdda3d23913054da1
f2ee1dae523eb5b505aa1f9aaf78fa2a7cf5ea8b,2a733aa751453b8cb285026da61e716488d7b03f,f0b22a1569e315faa4954c7afc00450a35dbf2c8
14b34e4f556dc4e473c69569569a8e130592fa40,edb555f34f166984adda0c40a82420f914b2214b,e94fb2edc3aa38c27a17dfebf42cec19eb6345ef
6380df9b42d29b7db0301f50fa948f90f78521ca,c44095733c36ca1505caea5d389a35c0ebc0476c,e154b9933fc030f4f4e894c48c91b026f688f8c0
d41579fb2b8c8a5c35d280065944a2fa4aee3d7a,aef337e67c4960aad357391e17a09dadfb1708e6,b0deefec4530dad64851d3aec5f1d55b003049fa
33b4772eab459420afb5788ee18e4f4c5d21efc7,5633d5e8aac2d3da9cad03f29a803371f6a98244,1d34f0f139616b1336712ff0e25ce8e8e929e4a1
9d67adcbb6e2c71709eb2e40ee69050c0eef28b6,6f59167c644a4a4a4090e8a1ecbfc5183816b00f,84e1be805c5888ff85e8c564d8e4e89759da0ac8
68d39628891463f399871e60c4432cd06ad034f8,5b3240c8f1cf913530ca5cadb6274d52f44255c0,c06a931d5b7366d766fc9e5f2797ed557e9a95fd
47d96efe2913d5dcf8064da8697aae359713c3dd,152208c0be1952cebbb1636d86f89f277df3b8c8,f68804e9cdc1a0489145ddd82b4a7e8ea9713b09
ebb199b9d465a72c1784c5cfcb4f07b4d324f38c,ea11517d27fa00f40b626e47213f0caa8832d155,d5dcf5cd7ac8b28c6079aa2bd7358f40bf6f3e20
1d474f822e015968b3a0a5b592a454cad726ffc4,9c7cb3dbd7c02c54cb0da8f14f5c05743903742e,76406dbc36564d820b900665579540f4d5b1ff6a
7ad8f94ec4ca74e2fc30ac8278ed0c0accb090ab,1014e530813f01757a6ee4b4b16518fe2a7206e1,ef1ba48cc43b53d103b09b23906531f67d2f7812
4c0dac48649acc8b85729a7b6689661cd786d781,7169b6d04c04c30fd6a5259fea903566f7d7dab4,7444733f5d8e946afc88555d0073f32ba7f5ad5a
6b1c5861afbf20bac0a2462b7340166fa7b64142,e35e5ad34914c11ae2c76a7c2f45334cde844503,6d900039c4e731978286ac35747a7cd7accd03cc
233d883731ca365b96d9ba4c1e54fa452accab99,de6f3ea9b5d941931ba9f0140be5a97609a00504,e4e1ea586c5ce61a5862f27c19fe787418189ee4
40b7af10257e530132327cf4d3d90f911fbc5269,9cf99b818d67babe783f4d9c48f87a46d8fc87c3,96f2e683e7b4e27d7e12473ea3960ba800204a80
75eaca8ab4880c58ecf5643ea05c4630e2ad1892,ffa1b24f7e9bc8c7292367cf1a58c08f61740c7c,ab2db33b4cb91e2897263feecce167f40a3ee391
aa1bbb591c1aab4b1731ecd3e85039719899ac6a,f9d54b7cb746a3567a67493940252cf9da000f76,9dcf85a8efe7d502d9095949b17fe0ec34f8a337
4a050536501595ee343b8581c3278e7a22786497,6ac2957187119df2b0e6295fd99faa6de10abb2a,74eb7b5050dc2dd172e2804b9a1cae3505799a02
45fc515400db981d1bc9f9bf94435b23943f9752,3eece73a89b8433cdb9400ce426b87857e95d456,6a88f2fc28bef9aefa6bf0ed3cef4693273ef7fa
2294472ac7fc458043166f8972806ace349de4e8,fcd9625d6b2cec2f9886a02fa1df9e0319ce71a8,d8997405c55b3454df147adae413ff263f50d1eb
64866179a980ed3070ff888603b9e44347a90612,834bbc4c7bd835b600210041962f51dd5b9f70fe,912f8e8817dd15d27d7dddffcc471737c23050ef
078ff5c2268c00a62407df7f753aa524c3752507,c69f1a20f498f1e8b5db8a59e83c3e5c53ec95fa,c3e2285c45a80f3683daaa9b98863b77f6580442
5cd4e5a016fda0f446fe775e6b0de4a4a08c5b7d,bb80851d656c15fb20ddc4626ee230f8098ee074,787899b9216cf4e13cc1f584e803b2081baa8987
9c1c2acd64559533d3c01ff58a1c0c2938f8f25c,c4dd3b661a6c7a91b75e4f6d834702092dad6a40,48271b880cba5d4479fc27890f3b4bb4bf69e60c
07a9767b630b72b0b3f8bb63c7241f395cb50142,5207d0ee25a8bb2f37088e654b25dae2a5ade454,1a0ba60de6d14f019d6b3fec2126037047bf7211
3af6a9826347573ff8a33b50748e48541e41a1e9,fdfe06382a17e6daa86523b886dd03e013853146,f4251bc11a21d64cf80df90db853c8df12558b73
329ec242cf6c5391861c7f6ba2f65990fe1a4669,b0cbff646399f64905cf29fdb82857a1856adf56,f8c84dd1fd36d1647cca55943c640964579d13d9
7b88d1127ff9e4d011b4ad4cab8dac70e190811f,99d88b91a9ec759fca2b345d7c38362ed1c285ee,ff87df758174e4f7be7303fb40f03895beaf270b
5ca2356638e7c3a144d832668a06e8dbe035993c,ece9c98362c68a9eee6527153e8c36c5cdf424cb,82957ec5a382eb151a7fcde2bed5f5ca041b887c
8e13adad4c6ad7e1b5a3a2f6358f0ae564eef30b,8192bf1b3373484e96c6a31c368b9dfbdddddbbc,fbb2e63fea518aa03f018f42589c14d8db8ed78f
a33256c1fbd5896ef346b95fb95ef966361afd92,91229dcee9f6b783f7268da54aec3fe416735657,c47d6d7af0ee2eedcf79aa76b91156ed4845e48b
6854f171d1ab1e7bbe3916d29b0e379e21e75f4e,f982317ebd3fbbd180f354b72dad502d8e5f694b,706d89d6cc695c0740db66e5f141f21d787210d0
b7e2b751cf1683e7f4f93b1b13ec706a7b7bb3ff,8ddcb34e60d63a85c93a845c968d5bfb89816b97,9758bec36c75cdde8f63d4d2f822c6fe0ce5cf3a
0a3d980f7e883862dec13db1745e75646c5f6f09,ae71ab728462e24367107623c19c4ba6aaaf8716,9730a50a5badf6803d2f7412d98cc227240e70c8
c890a126fe2ce05614b0bbff10b8046146824d86,792b629aa6e33ed5f9dc8bd6427bd87aa9c2606d,7f07c9f94d9e963f5bd457ea667178ec0b73c1e3
84bf87b20dbacb2db9bc8770043968fe1d4e35d9,d97929e9cf8db0b23a936830ec3e4e64206b6813,9901a11d223ff5407a9d243a343e0811b1e41bf4
af17e9460b17f9e0cebf469fde8c221f8b501768,8b06b43c1aad9b68467844ca51acbb017d0650f4,0b63068ad2b7270cd9abcdb79026f77956303d7d
cbec395907c9c3e8871c2ef08f6fe1fa57e4e44d,06b229e1c33157af5d90c1596dd62b675ae34bc8,ec4556e03d6213debed73786cfa6e9f7cfdcd801
a7fa31aa10ffd22de56175d14a6321fdcad160b5,6230de31bb7507f9a4eb6694f283f769fe0eae9a,482698e566a62166d5cbb129409ba2d4cba8ea86
0cc91a50c782509d8fac0ed8f977f60a727fb387,28fdba2c08f6fdee34557b1419e310e70b864a41,0530a2f6e718ed0178d417551b0d4235506bd190
9c6bdcfbb793f7557fc0339c251a727e8f14b701,d8d472cf68aaa59c255456d23a5698d70858c45f,96fcd2e760881dff0086fa86eb208e30f0d47fb2
8e5a54c92e47f1257e804bab50b5e045917870d8,b2615a9ba11f613a7920efd59b2199cfbc4f4017,4f3a21eeecdcd63d878b4d010796a2bba43bb380
0189276a12c2784225e4d97baacb0a7bea6aac6c,19d5e4361575564889b0d4230a10fd84973c43e9,28d248c9d41e47fff2237448b7c30d1096d7908d
6e4997265ca10e315fa140d645b9166c64c95b7b,57dc416d9608f12749c1a50f7b058b0f62fd2c10,e60a367f1b325b10428f3c7a274a4b6d24d60ffe
7da0284bfce4513392431f80b2b4ea35e29c0011,19ce665b3d95ffd9a59577f980819665b32aa8fc,a16b34d951e1b1ae145419cea7bc6c8c6682f794
92520c423e7d6a78f7f657ddae930b6abb404794,4f3271500a84ec359824d38ec2a0f1da564dc4d3,c0d75c1c69f804e924f79271a188a2f5bc590397
1a9678f4c4fd4dc138cdfb5e1e94dee81877ce97,d49453edbadd3242cb7a1077d5d5390aeb7573ed,8d238cfaa17fdc886d8465f3d2416243400f30bc
aeca33e80ad2db7c2c885c624b534c0b19aaef21,b3680eb5bda0d635435859166223dcfae6d4690c,6784bcb033971a2f6250e9d11cf17fd30e8298e3
7aa94f6191bb586ebf69cd93e13c3bebdf10001e,a7232669fff29a5a4054bb64ea000f402d31bc45,674c3f04e042493b93c3b89990bc321b20df1287
348be7657df8af9c28ad0230bd81e85ebb42dc2c,3707cb4b1ec8931596f2e0c33e820358bbf0a085,a0e96fd55111b9f4512653f9f782b43a8e7b479d
a849e51a3c698f59fe89facb9b161b2d8d91bfdb,7f96a26de03564f81ba124211601a0b969243b97,7040587cc3a8be4e692a4eb85ebf0a73eaff2b52
8c98be824df6e28fad2a957e4908cf96be65d400,2bd7877ec00e5de5cb954ce87403c604aad204b4,1efeb5851ada4f52ab63cda11fc1862198744a63
bb8c3fd153083180e5f527eaa95ec5a70f0b08fd,817ef6949ae0334c4cb2ffd3a1251b4f16439bee,0d592e8d1a3c232754f0de04a8803ed0dfc1b8a8
67284c7452b0d81090c90b80233320ad6759c6b2,f0298f63d0a2442d867f9565155ac77ead27541c,a0a8a6911a1d0f9e17fbd6c7f4a54bcdb1a9adca
0ab69ea0ad067a2114eb1e5142afc99cf5f5d965,c82aae59a11fdfde4b5cf400392450312126e869,9597ae1f039493d4984f35fcb3b97e59ade2d06f
324032941a3b4171b59c99a1663c2a6407dbeec0,53a4e6c513bf1a7e3d98e869027a92041b2b40ee,88a0d4d64bc49b3c18150773506a11a487467132
b90ec52a0eb7042ce95d12843c246c80a05caa4f,6d7d567a25a28dccb3f5603644a4fccbb9f1bacf,eb722c8294f91f274806673ee4941fd40334890a
00af340febfa4f8b38630d5818f3003d8e74d4dc,2e2f2eb78467fd70d59196033a7197e9428f3992,aeff5b3577af8d13b99a78e0021306a2c03aacf5
9a0107a19dee80cf629e147e6ccf70ac5843500b,a2b720da564edba0ab08efd53eba8a6aa126c0c5,d6fdb384590bf8306e16b990dac52ca86f90deab
04b059268bb291cb1b5471481bacf5aa93a756eb,2a7ca7ddc721fee3a36a0af405a47fdad1449af0,25b27281375284e07b7b9047d7cfcb14f2805555
fadac6a9a4169b7354b908e7ac7eb11b17927e68,9858d9c5e67ffc9580feda5de1789b8e7f6d1b2f,9af9f140a52981f0d88b7d26bdcf2f915c95ad89
80f87edffd5b383a3530571bebdf15899c7c1724,ecf5e515791cf5b1c7d22b89dc41477661ea19dc,76dd6ff6e784410972d33fdd3aa77d0252a46ea5
a1b252538fc592ad908f881b5b7aa63bc152696e,2a897f5b6b36e4817a73b18bc9e2d3c346befd30,295e2d4dff621a17c042f1f48474b140f7bfb1d4
518db35eb075e4bbee9fd9f55324b96d292abe4b,072be7b0f7dd383df9653c900080513e12a38afc,1d92cc43bb5a80894d732202acd658d0add06c70
b8fc193b0ce6c478d9d7ea0fca2486e3817fea55,75acaad1219d06bb3821c4d964dbd6bc17241ea9,213f84ad6ce093b49829e9411b597b626fb113b8
2a990b8167e0da36ce24a4e90263ac8e6cb47aae,da468719df559b3d0e0e0561fc8537de10a5ce2e,4f05523db92992b8fd91fc7d7620c5ae267b08bc
cc92af8423a84a63ca73688c50f211869af3be97,01691e9ecbe3a4cccd531799227886d3d1ac92b1,11c17a87de784e7cd6dd4e412336a6d2094244d4
2ec8145ec543c0babf24ecd8de10d0114a91dca0,2bcd2a4a937cb2c8eb5e2e090e03816e934b8549,b713c7380bbd705f224c1bc1ad1e26eb8f5694e4
3a668d9b7c1720851d9980e132e0201d02b6a1aa,b03eefd5d0bc17a5bcd03eb7850280509aa17b0b,6db164c9936938755328022913d2985b1d3eec66
26170815b410639e9a1b233a854884f913d47068,0fd7a5cb1fb05d0ee521c98cdcff695e95194b79,16a21eea87c564e9bd99c95eefb5980c9b230cfa
053c42da3376a83975d1b45b78587f466d28fcba,6190258f5d0c9b9992e8346bffbc8c18070f976b,33afecd117abbd8c48433ff6396bc3b7419cda09
98d3473a1a699919fa8e27f616cb2e2e660c2430,c0c0acbcb9edd11007a891b0942d2d74ee315209,3e047d3691851aa988e95fd76fe241fdb2386470
5d51a788f77f5a9b6610375c5b7f7598274bc6ae,5e3e4437c442a0e916cc3137f1a17583161a78de,8ba4c4bcf0ccb8f927c6a15dd9cf07bb02789946
514db355b1fce2eaedf4efd2ac2b637946f4efe4,b359080f42f427da88a6dc8790f00f486ac2351e,6d03f2807a94366b797af7c01350beda4fd19b3b
6169bbeed5936ec152279666681362007726f3cb,a0d21148b453cf1c6e879c4989737b829b0c8229,17cf72ff2de84dcf1414d664cfd6576e08c8e17d
402f0d348e68536880a06507689e175ab7428226,6d1553984e1a418d63d2bd4362b1e55255a073cb,9b2bed6fdf168b694b7c62751b208bc82d075c16
e98771608e51c0ccb8b4910376e9e563b8b0c794,185f20b9ecfaa598d6d6e3c042707c4e87273e0f,93be88b270d425ff7725db6f653519d2459ae3dc
b7ade3e566160485a9fa8c5f16c337fe7b5dc47a,2452e991b86091045a296ca6251b66ca3f6cea5d,95fae1a81d7a92d9e7511e02400fa362d4763bbd
507f0b3362db9513e09255168306a3c46d35f0b3,2fc672452d27fe93609cb52bfca8a90a1b002cd7,eb7702bea42c58dc4591524ef35fce8ea9b5b62b
6866b0726693946e7e15903c10e83a2df1bc2bdd,edfbf2ce30215262b7e8c2d5f0b9c516bead4fc3,195c8b599c1ddd61ebaa739fd2def0db21436cec
7bba64854b52c877aac354180ba7928a903ff23f,b5725ac3ed071ec564e8f49a80e89b9d46b54bf6,32999fbaba853286412aed98a5d2a89262a0cd65
b4a6c22234aeb9982a3d27ca0c37e0f2b7963958,97abf6b49557961c9fdd525b4b4db4e4763d6e37,e6037961e3be89a55dcb273dd8327fdb85d5338c
8b080792240467c8df06d80cc87deeb06fca1434,7de94e7a1dd1ee7de675c334fc936a64f72fb978,f8fc0073248b2be95224d2419bb844b4bec0d5e9
b6cf482fcf3fc1f916615c8fc80e552e241ad15c,3109005791794f433437c6d452e72f1bffbd4a4a,d854d18bd9730ffbe4340dd8a1dc9c2c1efd65b8
9179f9d43b5ebc1ba356a7d0ad12a13a2ac52b3f,43ba5b69d2b86a6b00908c0c1664cd893db22f9d,f42b39a7b5c586378c5baef31567ee53cc427715
a65d778f73ae920d4eeec28438c254ad9ee0f8cb,e4eed4e25994349c28dec79ab566831565bec643,7343e9c4a273b789577856915e0edf6613fa4b41
c96029ebd57c852dd3f006cf8769d9fd5473a605,b8578f804f48a7e7fc45a176f4556cf729dab2db,12adb47d65e06d4d730cbb860c711bb668a94367
3362abb30c9eee50eab4181333c3a99b866c8633,57861c934d5830f9187b2a06bb8b6c1dd781ab8b,f2568e37e422b9767766ef686ff77c8b3e9b04ad
7d5b0d23827e124da3eab2f39fe6cd52673ff4c4,38ddf2e8c5883189c13fdce704f28862c91fec07,de36d6c0499c2ce4ceba4825d004767f0ba944bb
09c009868604cb1a9a065ea9c739a37c41c93923,c84c4eb1a4cfffe8cacef0193af7a854f34c5bc6,ce1f115b2d17e17832f36c91b285e83aa3fe8f74
c3b5d0d5d5b522e8d1a594183e2b49dce34decfb,28efcfba65295ebf1b88238906b79594fe54fda4,57d9884d964cc8e1208814fc3b0f381c3140e642
aec18c2426a503c0c85e057bbc2f029d649fe3bf,6160abe37ec2fd61fcd1424cd62cf95fd2f8b1f6,38cde3817754458936db1662687ae37498500da5
80282d6effe141239c36d02d418c51142b38f6f5,d2b0bcdf1fbc5426b6f4c2331f3ea34cb38f99cc,37201319bf44a5b61336a8273329212d109bc816
7f775abb6dc5c5b3b3a1dfe347304a81d970df77,4e9b42344e5e19210d8ffec442f1bba631df9078,f42f62565bf31b15c943b91eab9fc5a9569e01fe
359bb64aedafca34fee136e053b69a897b9c428a,efe6b32638c26cdd511b8ed35ffa9074817dcf20,227bd3e9041fa1347905fcf666a951382c1a0f09
eb81b981cd66a1ab82fa0dcc05119e3a9c5a09d6,469959d9b52e49254c45885e9e9f6d631a3481b6,217e9ac5a5714fa60214616b33f0e7a0860c2a64
b7c519de81316bccb8fb8e71458ef89d8b1f48df,5c2303a76b1a616d24f9e41679bf61f79020f4c4,a286ad9d774c19718bea0cbfc84347dc67dd4862
17d1b8afdb7dfe862aaa84d4bb012c2674d8cfc6,64e796ace2f58eda26c7c732c8d592029f5cf297,26442e45d542376c709ca18923c0ea47cca312b4
db2051e2d2c07c5190c93d7f19409b2eec5c11c3,7a536df60e1acc939157b2608c7a68f33223c9b4,ee07cc4db5a9dc3fc14ce4661000f3a605e4bbce
ecdac1dd399df3d5dade5151e320686db821ef9e,472f8c900b8b5dd32333c930ba1c6f4a75828102,259c865667d580981c3b8b0e98287383f38b40a4
54ea8468fc0fa0c2775c82a10ad62785c2a8f11a,344aadebb9e2cc9abe51bfad885a57400508d088,1fa5edd34e6fe5bb45b76893a5a8b3b83f8d03ce
9003114a8f7cf994275dbfc88b93a0c8d0ce25d5,50a13b4df4e2b0016883d14571eb2bc79d15e334,707bce74d765b6442a28036f5bbb0320c61b7560
8618a3b21f4079b12a7b439c9026d3ace63d3925,ecc3ce64eaeeca34fbcdf297fdea90420845fb11,14ddc59edbfafc8f7ff20ca7bfaeecee4ee3fd16
d4ad618a702802f02fe4196ce6487f15c5535bed,16f201292c0690d29ee40a4b525a60c13d203c7c,dc799a9d49d234980b4184d2561bb0ba04337177
fb6a892d9eb0babcbe7660c1d8985f207cae61d5,555ecd826bd9b6d28784f7e285eb648d49e251ee,c2a3f03093d6a4814d0d740244afa7800194781d
ef621e70141e881296ed835ac2730aee0d1ea13d,2c196ee8a9f1c0cc419b561f55996b7b86a04f5d,050a342101549189ada47267944d9494b610f7de
5d69ba2cd895cb74fb6a13bbe3ea23f3c29e781a,30587299ea290ed23669ba95a96e1d1503a347b3,85afaf528916ef20938b019e802619d65dc3f778
83a1f5fbc3f60760e36fa2832648b82690543b45,0055023394e23271b641f9bcfc38606b6b4e4f36,4111e13017f90f992971a522ec67f3bdf3b46b85
62edfa558412e5708469db173957eb5799ce828b,4737a937b17e6e4575ce5000952a3f0ab24b1a2e,149f8ddfe9965e73e3e0acb94b46c623a9c0c087
7a3eb453d40af468faa5c395a6bf301cc0a0cc40,b88f9ad57cb67ae1b565d9564f2d8e938c239ce0,8ad127ca309d4fe1e5761c02207b43a66b363aa5
84d05a5b0e7dc18cf58fbfe7e003b1580e811a94,22e8cd3fd3ebf6b1747cb17064419d9d90450985,3bfb995a4871cfe088d6753086b13b06a613e4b1
2b79b117445d6a9f7f1cb1669390ee7737c0e443,f28629e8e122887b3658de1e061a1b6ed036e5f4,1351ccb3bfe6adad6be0246acb7645203df8b3b0
0558fefc5179a79f11240d503789e3e538162a6a,2519fb126663d9dc4184d8ed9d7edca2e65baf78,9803318feffd8cbf8904be68d784f062eee3ed90
e84fbcedaca496d292598a9800c89b90cf8ed6c5,64c586b86dc064d1bdb07655975f1787f17129df,0a021be803f923bae563abf7eacc9a1d6bf36b66
221efd7a806a778f59a29b7f9baf74048e8b3978,9c265d71f0fc92ec1065d0a19c2565ff884dcc9c,402876bc1f6ceefe3109ecb7ea16add202d8865d
31cd3df783edbe1bec40a90ccf4df82b5c327f2b,0ab6b1ab4dcc5a513a83831fdd1070ed8fbe49db,75491ae21c54217fc1838dad300f5c86a247db4b
4fa99cff624119b65aba0c5c6fd0af267ad0dc42,9b1567f0546a7df6e7a5818dab3c614146f95c7b,1f49e633b6599ef4acf917a4190a62bf171843bf
2567631aad9684c8b6c4cae9e4d94e3c93a2466f,04727844b5c663cadd8620aef3ec2fc892115d0e,225eb8ed12ef191cf97a185f1a405bbdaf9634b2
268f7bfb5c73b8e6dc11bfba6bcd1c61ec0353d0,c3fd06b6b5986d7a1db7971cd0633d8b2421615b,b446023e5b2655f9dad6a47462edc7062762f767
91649eb2e5e882700c3f08a339c163b7f24837ca,e5c6e91bd0deb773586b10741d8435409313bf56,6975437da8f582ce6f964ba1f3d95972477784e0
5950a5f97b1a920fb9622f8897da0d1eef2ec04f,0b76059b37bdb2553beec800b2d4134a9d0df826,0ab4515e587d6eba0c82700a003dc3a0ba6a25bb
67fcf0f03e9b81241040ce5e31f8a8290384d029,f172d87925680e203f51bb062d0a5e8b35d9ed10,0a254b46bc0c01773778e93497609b5e27d139a9
1112e9f30137de9ae545fef8bda72a397d473f3e,684bdb0245b603c5c116d90f5fe2438089e1201f,334becf76b7140af2f79a7dbe64e32c143bfacc1
ae97668967c8d2dd3ddc05e8ae7e4e54519bb6a0,56cc421c77249e7efbe29493c27cdf174ba6d31b,5dbd9eb2e059de506eb9e13317b7645db130918a
d38e2920824b9e9d6d129744afa3b8144d2579f7,1bcf50ce701c200fb6962226b2f48274d8a68985,706e72e1fd681d688ba504b2e7ce1f78694ad686
e99827246e52288205bf3dff3533634aa553acb3,4bec57702f93cd54d61f68b1f8078ce4a4d985fc,ee3c4629aa1157fcb97db79e962b522649c7abd3
de62cb8b021a39dcbd2835e2c8459d492afee10f,8496690ed0f812c72b008f609106c933871be484,8b24d60df752458f3b2ec1eba42a1143529a7af6
b8dfa1b8e68946db2ce52deb37c681eccba73418,f8320dff082272a41e6a2d6d0f8a5ba50b4ea80b,3f852e1444278f8d146f93cd39cdf239f0fc93e2
0d1fef96a1d0b4c7c70f9eed24b6a8997e3e109b,d13838ac0b8509eece4f43b7750bb9b33016f851,b13c8e3ef68607a7a37694fc1605dbb743e8650b
90113ef819430c8dc471551e5c953fec06cce03c,ea3124ed4af17414c0526ffac7a80b6ac6178842,ce6260c8971c9928f99b79b34a8e734a06288865
cb6ba25e1b1a23ac2dfb3c17afb6ada075b54b9b,d5283cae7fa84ede4b82743a762bebd51ede8a55,c907f4cb28fdd9f561086372f7f7f1404f99e916
bc6e837100933671e8960bb499f42341f2f22435,6eb2cd6dfde2bb99e1bf7dac9fc7b963497f09e4,e844f748825dc710c80277804bddfe65b90e1ec9
3ada628813023a9ff9eabb0892e835f6d5fb8fa2,cf1fa4cf7f0d84e4eb347ff33cbac74dc0872ce9,66cdab722370350681f7b381b815a23033ce7602
a67c184200c266f2cc586323a8e55f5f3e01b85f,bc9629c446de8fbfec27dcd77e348adca0b1c218,d13d625090c4902ebcc2343c2265c0bac50eef52
c43787f7f8f30126563b9189d33f178916b47c1f,2e54def8e5bc837a86138524a2a99c530b7d0399,1e960a9aeb12ae75877ef9321efbb89f34bbbdce
e309c47ed619cf7161ef355b4d1fa3128efaaa38,b9fc7729c66f62da8345cb461bcc977dcd5a0abe,91586331b550f102ee2a90e460807b75177ceb2d
d0910b5ac837d58c141ceb758c366bb8a87f56ff,b1f7fb4ba18b56be4ea098f93393306d14e013ce,539a578cce5f4e05bf46dc283a0fc96952f22bfa
aff1f4999c47aecd65f1f17bfe96e736a55b4ec7,4e151d5a6d8b1b11617cc17f3fa3e08f612efe4a,d4913f490f30a2f4521573fadd6229f0a7e6402a
3634e7823f3b50deecc14b4c9734501cb2567c7e,1b2e13bf77c36b810e92609b199c687a6a0a3871,2746b0e035f558d7b67366a5633f929e73ed452e
453bdaaafc71dcc467528063395aa3188886df6d,11db30ab3d347f358f6ca5e86bc1640f8930c11c,4864aba47a325c28674bc9581ed2cde92b94b016
6109c5606624c41923a1b3bb5ba2107e586ef2a9,ec0fa8f46f25ec4f307486dc6fc9b7fe2d8c3bc0,834a6579d7ea7caab3b8e40d2a94ab6bda4dc198
75db39f06434280c32980480d52def9c188a2c66,44213e33895210b0b1ece2353414355ea364dbd8,28cc421b13ded883a6c2e6c39a7d2e3ee63271f6
e341e247e99e1adfb84f522ea6a9468415d722d5,3d4a242974f5290302e7afc1f18cb462ce6942a7,c5541e9376af14246897f7013d1a72a62da7032f
1f3e903c107ef366b8c1ed2d57e4e1efdad13d02,be64fd707a6ed1aa52ce366872b302dd18270a44,b564e400fc76fa5f429922849a96580d6494bfac
3a0eb110ec513fad178844309b16d66347f7525d,4b0edb61153aa71dea42c1f6e270daf72753384e,0d76565e50239b58176c9d8a298677c2093ac3a1
8a7ba17e12daa3e03c89e4794daa07e852105f57,3297a453ea0717b1c4858015adc494c4dd467239,ae339ed8fb7d5678db9d5f9db3df4002a21074c7
7fd8562d4a19c3d271ca9d8ea912d006d1b8012c,6fa787674f53b7e01dfb9f2de12e92367c44ba0c,98132ce24e7eab0793065dea5d91d14ae8a4e075
c9cc530d948d4270e528b63ba2bb13493366d907,6198d4a0a1eabe00f5ba947f24747f5c1bab9f94,bb06c623c3100372c1cf7a769da0d7bf1eb94ce0
766162a3481880e0c0533c0309aeb9fd19a0e545,e8a0abf075a6ac777b3928f5623f6f3e67a0050a,ecce39a3b253b55250ffa0133d8d6bf3cdacb4cb
763124567d20c79d6bdd9ca550899588367bad2a,2b0cdc0c15d6012f580a1e2e578ab1de291c5bd4,3d74e5a5243c4302102d62592ac4c7ceb3e49c4d
c540ef3bf85d0bb8298d57025400e8fa1af4323a,86f36c66c048f4ed692d829fcbd4a28e2f9b7a7b,8b0747f5529cafaf0823adcb7d9c1184f09a2f04
074f72b64b551ac877d216da62b17fa1dfb10aec,346cf6a32ff9d360f363715b940d081d713a475c,17b748ef9ae87cdff765ff1aedfdf23f643f7367
08c5d9b00773c9f1bbf7d703109ba9cab2b89654,e9024877110a89323c818a9d49979c6c627f62c4,eb6d1dc73f9b2694fe6baf692936a65939c026b3
4ff66758ee71ffdc5a99b86c3b824a0ab5f81b66,ad35f14017ab89059ee8c608c77a34d93f902cd9,668d859cc2b0c341f6a12b0cb92e7dd4caca23f0
c92235f4fd4c9430e3468e3b17868a68ccbd459a,3f0d1aca089fbc674fbd8a1e82674e4726d03c0d,0172420df7dd4f317c050084d39ee271a6eba17a
3fd5f452cdc50dc2cec13ac9b03b750aa2c252c9,d373397f30324be8f0e7f1085ed5322e17bd22a3,0fe68e7c9edc24226fdfe9fe93d6ceef9fce4824
d659c731d8277b7beca49e25df704dc51259eaa4,92334d86dfafcacc31c0c2b5c184c029e8ad2cdb,e1da44c21913bcfb21cd404276d37dd726ee11ff
78862011b2dc79757a001c92b0e7bfa975ce5723,e60b41f2ab405edaa1cb4020e6ca4503ac50b4fb,29dfb6131e6e1819591bf69a009387c6c8dfd07d
90b422b2d44eb1b54cd9c98d9bed8e6f97686296,cb6a66fed0ddde682706434bf638b8158b616396,1ffb6c6fdf22c24e7740462c04d025df8b2d84ec
047b435131103d0c4018745899b2cf2bb6a9e2ad,88e960cd00ee0f4efc259fce11e6c0eec287c0a9,f5005e46469f038ac3debcba16407bdb9f5c4e84
a9a0dfeae387f49a9108263f5498f78cbe024ca2,79aac426fd35f18a52a986656abd7de8cdf84c95,ddde3628ba2c1da90fd28622221996cb341ba59f
5dae243ffd4b2820b7e0bb54eeeefdb4e3bb2a30,2cfab10cb1f9f6f6e44d438576db61d56f5aac99,297e9881c6f6fda8865e50267e033cc68224724d
5e9ba29d89a34e1cc14f95f6ce47b7b87e6e683e,dfc65acfa8a117265260964da616d70a7f4d80bf,4cdc665ab742d4a019897802dc92c373154d380a
ddd262168846fbf2ba5372114ada135af71225cd,4d7538a0da03e8c177c4367d1e7080bc73fd04f2,5b5f6b71581e282d9e7b68f953eb682269f9c79e
0d844aaa4150d4884ebd1ad411c791fe779e41db,7cf1d227fb2435978788ec6f283a7410d5e544e8,f0adf5d6120953274e901e055edbb29b42b7f616
25cf57b085ad8043e1a7a82ac4ea5f1335a8b537,d5ef64fb91cddc665f25bf57c93d1d442604843a,6e845e397fd1d96c6be0ad0caac80bde3c34b27e
1d0ec1b96671437913c86e35deffd2f28a1ac153,5013e7039a3dc30df510941eac1cd365a50fe10a,1a643e250a070d873a2c7b4253767bf457a85643
f64bd5c07974559809148d0872f786122b881b1f,d41d6de6ec40a38ef495924e4cb77fb2cd5f3d15,829404a9570e15839ef15b845b43c009afe2055b
be726fdd09e05de3695f7eb75e8b95c17d02e8f0,55337def9ab243847853ef9b1dd58c0b564fcabc,057b786fbde4ec4963a9d67dc57fe6daa0791642
8a0a97576a5e762d6e6be33b82ea40acc06e8009,b8baf3bb85be26c3e10dfcb44ab61d3d98bd7738,7da5856dbd930ff246d76ec588438b7cceb87b49
3b49e95415b79b02d6d74ee7786ddf1c1177c1a3,0aaa75ba62b1d6f48f2ac9dc0e77634f0912fc79,71c314d7d498c6c346f11f5f703272a2307bac1e
7fc456c04f947f10d2de7615c4c3187a948b190a,edad510ad413c909eac9b1c102e72887c3c14d9d,1c9c84d01eb06bc3550d67836db2926f54eebde2
af4d301af9beb51331fdd864bceda75e1710f2f6,6cbf84eca626981e19a379371614a77b1838a6fb,5d3d64b3409efd9a109aa87f6bf2008a8da4b85c
c466caa0c8b439e563c41259d98a872abb77b0d2,0470ca8fe3958822745063a37481389e56127484,98f42567130bbd6e47b357b93137f516b7ee8d1a
2ac661f63e21363d0715a4d213f8a1710ac8f660,5843d66a38276a1752766f5dfb853f44bdb08d16,d96b84cf1f81413e6ff8f8978b7712e34cbe2e88
9c4d842a6f6c80a1972d5ad8aaf47e66a3b7890a,b240b78c9fcb5daef7388e60f6287e7f93ec308a,b8a2c613e31d808436a13ba2f747801f27632e42
c0482743af23100033e1af8490abc856ed70a580,6c0491f7c2faf4f9c6ef7ad68e9ce5315fed1291,8dc55d82942d36a5723b2b97f4ec5699563edb14
818d3f2f6c112fd8c2fb70e7128e198eb7a0d1aa,4245b20a32206201500e7d9c646b003b93f4c6e9,1c99c2655e3996df83e847a442e52eec3ae171e5
7f1aac8bd71488208af65d46e2bd3783d8efe725,5225dd00f60264f6906abd4006e2a4c477e6b364,3d37b958bcc1c171c66cb654aafbb5546217e7ea
afc80a84cf383fb885ae3366d429a5a0c6ffcd3d,8d21ab9d67d41f06f26a890ab7e346517c1f4f2d,772ea61b12e2320750ed1b3b697d9328bfe2bf0d
87e1dc159d85ad4f56cc8cb3ed3eec71c93cd273,5e7a512777b6c1ca9aa544fedcf5c28c7f42b87c,dda9f83dfe2f4841bf4fdd87aac87b46b0ae833c
a4b35d16f2b168c58016334e1f0c54731db2d84d,f1883c4e617085250b91f579760247865abd01fc,33ce19799b268409d89e0ed8c1598b73728ba970
0316a7697f9b6c3782abf8c6188df983ca1e9f7d,c3fb1e3a658af94ce69f431f739a80522ddcc546,44856e660c4ee3931003802128192b2d77415244
a3d68e6839f1803353d6b575f34fc91686ff5088,cdd2832ea7cac413d10a38e61491f1fd99622584,1cd0364c50e44b6d2b7d859b4e4bc556bfd3593a
1f12cdefb98091c855b0e61d2f899204f943f0ca,6acf8abcc96bc1326a82233b81b409d83460e41a,e694897bb3bdea5f4606946dbad784ba7bf0af1c
09d6398942ffd3e1b139d72067cc20e8ccd7a400,436a0d3f9ee306b55bb8d0b232587668c8ecf48a,5b29e7a3ecfdc47203c64ee8b26e5db5cba35b60
599ba8cc2a1d68bb9dc6dae9600cac6b1847d046,a7e63b66ae0197943a89d4be7431acf61d302407,ef8d520e8277925f08c06e3b635a54ea80b2dfa7
2b73b5bf9a867a8d7b6527835bcd0c9cf657aab6,5677ef4bdd585b07b2669cc38e3aa519a528a4d6,26253b9e88b568da27460734798b26555ec58eac
9bc0f62f45d9fb8291d16e760abdd7d60b7199db,715fb8007f1f7788e8fc2dfe28cff63dd90e6261,12139483933b35388a7fcae02c28a4572174e0f3
80bd080293c5e81123da68799d866a28a1dc55e8,4ab485225c97d77ecd8e9bb7d1836d97da0ab461,8c06529ae21c71b8f9251628d1265ec31c2b0ae2
a202b86f37a18c6bdd6b9d346ed20a481caf3c94,e583ba6cfaff78c2b890a32fbf00fd96bbc71237,545dd0353bfc15751c6d317370fb790d304647c8
89c7ae42afc2511a8cb40000db251f8fbfec4c9a,2ffe777b446a42bc98d278288906bb924bb806c3,fb5cd1aefd30fcf278f494acf5959cb178dd5c38
29b071241818cc4e75ada65bd7eb6fbd08df323e,8ed768d48613b3f49621fe839f1be290def49abf,f04d87bc3da1959e635b1645c4f8bfb36ef7f5f6
1b27a955fa60036ea77d34629d963f104a3bdc10,0d171d91ae78ee7513370574128c5ca22789f613,c271a7106018c7acc056a2ef6bc01b0836923f1a
fb7fdfaae438b1497c6041755bfb15dada8cffc0,1bc06ec2767faca0764880bf70605a1fcacdd2af,83e492235e99c1ae079c87995be30b5d624370c9
9b419b800a2ab0a588615efd4b98f6190201c007,60a7eac72b9292decc314749d9f5a12f4d48ac20,febcfc8d20d5a57544fe394a8b4754731e68943c
91167f41a6f53a6db27085ab0ed9e930ede13ea9,700b30851e8b1294a78c9a50d4619e26f011c3ca,1bedcef063aa9e1753f6905afa4d1a65cc378a04
3d0eac3ee60b948487d491fe851e2eb981c59bcf,99f3a03386df8edd37c2eba09898d39a23314c94,0c22ee86781c2aae8457bddae8b88fbfc38b6cfb
71887b902b76261ed14f8cdab37723f585c89125,f333fb08ec41d4886a8dc9a35479bcdcc08f3b78,34f7c3e6d40e1702c5b9008ab852e5fe23cee7a2
60c8b71bae73cec85e5bde74239f2bc057f264a8,c7f4be71dc1048ed4364609f838bb5e79e372088,fdfc40e86bcfaa5f45bdc87eb8fa74a01b3be8f6
2912e38e91f1940d84b6a846ecc1f9888fb7cc67,5a26c582852c9e6486bfeaa164158a9521eb45b9,6beb28316e004311744aaa46f047f7048b989889
8751e983397d0712e92c7d19bd2c8f7a8d02a41c,cc643608a22e9410c9d6391f40a7ffd9480aa9eb,59a60856dc0dff4041ff1f4cb33629a6aa04fbd6
17f7cb0e45ac10f19dcb7e883365c2c365d1c16d,e539696f29a48912a4e2cd92b9f8b0210a5e0535,4944e9296fc9c3b55367babf31928e8fa7169369
0ca1e2fb424c67f6c6b02eda1dd1ff22773af2aa,75e42870ae10ee5d446ab6d4d8335aa7eb02269e,b6d2c6ccb721bc8707fc992c407cb695a5c5eef7
646ddb82173c7a55d7b4fa34c7b2cc75e9fa7c87,2ecca003dd15e8f7c082eeb3c2ff6ea141487017,d4be82e87988cfe921c8843cbe6856176a1209d1
f9cfc0aeb4de2e6ecb347b011ad2ab2ff2cac007,ca1b315e2799cc3c94e9485312d1b7d2b36a60fb,7b71eefbdfeab44a93695f93dfefac81fa8d09fb
c669b8ac83adfd33d415f1e52cfca03a36cb74bb,46586902f4c11be78d26048061e7203da14ae9e9,ea0213810b5f08a5c8df9ec16c160547101b0151
6bef792f3303eba2da048ad8a9950cac2c2a787b,028c06219290b7f1aa35c581e27b7a7dcfdc2ed8,de770cf1bea6238680853db72816a29f55098760
fe7324a04ca69b5d3f76fded91041f21111c671c,c63534af487eb2972f258fcf5d84a91f9c902095,2f36069dae8eb1f6aa8ae4149c878fb55437868e
e430c92fcbb5b00680ac84579d6f969a4aa1c1c4,cefa05c8b1749d9f5b3d322f93eca52a13ae42ba,2cd695120564fd22f063cefeddc882523a86fd69
5afa26ddd1e80d78959af421ff64edf756e5ab13,f85d7d25912e308b7d77acb246f77633141d6266,1c9fb8ec7dc83230dd264147ddc167eb5f323804
3dfefc25efa6ebced10e2e2dbde187130bbab2cc,2703b36fe16907fb9fbbbeaa8d497e17eb13b4b3,0216f778193aa057395c3632482e751402a21048
e2386ae876c8f9a0772be80ff7711499ca4d721e,236bef961c21611f2969259c8c8fdec54364a225,cfa3f4fa8c3a23fe72849a14532d02cf8bfe7730
ca0d11e308a6c64fa6494d7c904032280ec83111,1893babd062d1cfc3b1db3632885f8c2c1fbd1ad,53d847f26831a212e928d4970a1f2373df60db76
857cbddf04ae8d54abca518b94792e30ee481042,a4b9fcffeb9db818dc6c620434612be3ceed3b65,41399354ce3fdfa9683f310e168427480c01f9d1
c6443809bae23d8f0a519b4b3da501858a2f50c8,8d0ef71e37e6a59066547ebb898b17ca21e3b601,fe312ab99ff41531686afed3ce0f7446d928a765
ddd87e09ff91b16d0926a857787e753eda4baff0,00beafae5be8d267469128964c6e901a6817e0c3,1b1facf87991774ff536acd4bddbd00faac243bc
2932787dee07a24703a24e165ee44973f6839ac1,58171b4308cc2c7825fbd0d33f84c1b67345ee0d,38ef18b4f4af21230d751a546f71065ecd3512af
a203313bbf29d192763141b828b0077fec440f08,3c3f43ac665385b2c259c5930da9452682ba3cb8,2f442ab6d09cee0c7675eee9578288609f6fc510
306cfa83e4f044665e23369d2ddd1bb513c8b839,b681e2cd7fb8c12eb55d374b2adc7e247706205f,2181e7c61d14e894cabe6bae050720561164b685
87777ea10b5285a27ac3cc4e387ee65392bbb6b1,0c2a1ffba8bb86294b226db30e4f744eb2b1da9c,78c3b698b183c690592e3f63fa8b2e6c12618607
4b6eea19189dce34125eb0e3de74b07de5cf8e43,4c2e0b9ff0ce9c285f1aedeef6a7146c81a55d0b,40870af6a7dc39322622f7c4646b974c0d0800be
6ca821950d7dcd8579bd1e87ca22049aaf9e8b8d,41a51e8e4a6220935ff65f6e313c80380c71c1e9,ab0531f0ce5b02a4a91430a979f025a4684e2245
803779002d5bdfae8960d95520a4e5e5107f61fd,9c831677ff1f6d00592d7bea91a3fdb6d65e0aea,fe57cd353657f96ea5846d9f2575811e1456ec6d
272a0e3e267eb40a3c3e1a0cfaab9d2656792331,e0a1bc66750d810d57af27e21139203bfc2f3125,fb6867963fcc3e2e1c7a9e4e5b26d1dc4c1723dc
01178532e5ce1180f56697fe7d22e907d1afee11,493879d28cc1c2f76193c44458344f838ac17160,efcc3b2ebaa8c3f84430c99e6eeb362b0efeee5a
af19d2a98285e96995898cfee325f97cd706a9b2,52a29e0ba7e6dbf5cdc6dc0ba9b60c88e2307856,0b7d4801b077856035a56c7a67806210306df21d
3149506d7f82ed315a809a0c76c10daf9c4ce3f1,c1dca28cc5759a9190089849e83d6dd3c72a77e2,183fbf77af9c614b1201377e00a095a78ae52433
3b408e6a6a986e8c1f0493e00e1645db3ee502ef,00efaece74a2d399971a8aece991fac38cc7fc70,316f2429f02f3f4ceb1d1fdbd857df0c500ee5b1
8ffa01e95fec30fbec3961b0df8080020e5b71ac,a57bda94defdebc54a9ea26cbda85d7fe6ab377e,6aacb9696184f25755a7a0c51041eb953c60808c
088a52a1cec23092d2c918cb121b44bd9391ee74,12fb58325a6a24663582762f7296fc903cef3420,063133f2f5726e0f71d74149c2f522ecd37a882e
4cc3a7fb120ab462c03757801f0561f7c6516605,0569ab4a2859d1e5ff60e996deaa0bcf2fff737c,01937c4630f20652dee29b92dfbb2ab3d58cee8d
fa8bbc43960c51ef1fa09ef630ab53c08e76ea29,afd1875834151ef12ccfdf156e9cd5ed65dc76a7,bc42999a09d3acb45eb1b3daf3a2223e828f93ff
e6ed010e9221f2de56c39988762fcfe956ac0231,f9f0f9a1d1b388b18d80f648ad230b2ff0bd4039,798eb0e768dee97be6c729e35445765dbedb7d36
5d3faa5ebd1f1d4acbf58d563b5b38c9a4ae6cf1,da4be71fc8befb8a2def2299c7f92b59e1c51541,913bd009e9cef31344cee42d9351fa25dac3724e
d6235174ac37b3aa7ba6ee1e03a5abe450d2a4d5,df49a3d067c591e06c511844edb6c0ae33c51151,18b868bfcddada94c2f0398ea873cda70b7aad5b
ad753c0bbd52d42685ef5cdb0406c2c7e369c605,6b9a3bf28333ddf87a1af3182eaebfd5d977f2d9,3dd6272891f18c415998e167f55b53c00354c8dd
c15bb07bf60ec1b6d14ee4954ab67dce787e1e79,62bd0068b65cb0fe8b553d08fa4a667276b40625,f4486039704b5ee3ae17e74e3a537b51fddb44f7
83ce289ea4f738bc0599fedb7fe153e804d1ea42,ba0f08018f7980cb7ce02190e4586370ce070251,d7a45c646e8e557dde5917cb7ca1451d8c502fb5
81402bb077acdaad13e50dd6e093e886e8de3ad8,f620f61d3b0ca68f601c3b76d9e5335fe0a77ae5,6f3fccddd1ac5b363a3e02657cf838b87d741a40
8735d09894a9162ff2e4d73181f8c2748bef6b6c,d1fb44044f4711db2430d267ab8c884d242cb13e,6166084f08a6ca4141a846c45b4e07708539a9d7
b0772ae749bd1c8073b7638d0d511caa54fb5078,5149e58525a560334f4ac1b1064887939769f63c,4be5f07f276e2f8c9080a05f7c297fc9d578b5d5
813cf7b45ec3dc7c0b5c4e3fc681ac9026fb56b6,2abcf62a958476ba80b78b3c7875d9272d9f7e90,14af3cb5cb48b39589a28dfd34618cdcd6000ca0
a4db719eb4ff6d62a733c0042c0b10716b0f141f,df95478d19bceedd41a86dbc3c8c006e91b2a0a3,c6bce8915ff4b0a53ce295d6d14da5ebce9dd200
c603477ec4c19a62a35e5ca3036705ffe565a1dc,77279fb5ef2f4712d38ccd1fcab59f9f9e9802e1,62f8899c1b13c58ab3d318c55c607ccefab9b811
ed670d2ce7ea9d99f1dbd915d5adbd41f5467137,ed0ec9468095a870767b3cf0e54a9603548bcd98,ce9e1e84669018bcd10c9cf3b163af37b66e0c54
40eede3a7a778d383ce2156a595069b320fd8aa0,1c961a498677e41dd210869e4877a27a21cbddfd,da569e952e0123da0e54570dfe32b5377e671939
15ff16d85218ad77941878493af4b120cb11da47,bb97c5ab693b170a31bb7844d2bcff1e809da1f0,b4a002e3e777f7a26040bf42a2372a8f1908e9ba
24f33871c01400fd685e7850248677da0bb91cf8,b7fe338bbee54f18f2ed4e7bb44883972a5e2fbc,96acda5ac9d49ca3e574aedf3a3b288e66d7bdbf
dc3bb933ee23dfcd7a4090e043d39c2afbf96e35,8fa04a0cee8de2d8f6d1c5a72090b4f9a0a44698,577e584c771de341a03c62bc93f1ed2fcda3e2de
3ac178f519ecb990b425b5bfcc65467f55ef7d0f,3c436779521e71c2cd5828508206e25e82be60ec,e8fbe6696b453d9a0c299e68e10386c51b0f0188
a04cd9b9ce7a0dad694fd8bc7fbf51354c4fbb21,8b84ef9f4b7f66c9ff85afcec81082d7b481133c,61a4eaa30212cd6fac0f6e955e3c449981ca191e
5821143387d15b370508efafef84fc12f6d26f80,a399627aee3c1696a6d34d2005f6577c77f3cefd,1e5cbfe546555493b7ff115a326b2722e0c5c978
e047e7db91918a6356b18e5a76eed56aff2db155,62ea31f255cf83b7037e4d56c6a6f4e184d26084,fc32428639cf7761c5d3f1c73afb44921d6be014
445ca8b995c14e9143c771836813cb8d0a4a17be,a9f4c8a16b904ad483b802f4507a392d314faf42,9775a13e0263f14cd74692b3df566752c8de16c1
9ccdf2b3bf4a4da9d61cb657c1800fbfe3e8ecba,d399df83ba9478ed63150abb045fb2db9fb2a186,f5389cbc2884d9d3a77026ae159f86855c7dae38
d1881d09519768a8b2fac9ae78bdebaf49ac7f83,03d353c1f5203640f225f84930fafc8787372b66,649bfecf62a644bf0ae1f79c79af5639a9a07414
314e55204655aaa8f2db239bcf34399e52a04718,77f3acdf76d54e924dbb77682eb9352b5626f88e,85fa313e597796aa2035f39504c467078f51110a
a7de0b365b9d10dac141f7a7b8889e92e12370fb,a70feeca7e984ee20d6e36298bca6a59db539ca8,f7dd8755ccd15cd31e30863a62b0214249eb2907
811cf381ad4f00636cf8b5628b663d7bb8cd07f4,c4dfb2c8bda32f6b1279419accb7b58f294ff27b,6a9279860356ec61d0f133b00345da12744fef1f
612f063795d944b9dc7ea0ffc36a9a0fdc4ef73a,82450e1d57d684b3858b280cf96f045a4505b631,53effea0f5cbbe4e8670c65fc55ec65b507829fe
39c060dfa726274fa05e22652431622de3cf57c4,d608b4b689181bd3bde42078d6c9641348f0a050,3072df59ff4a6ae0cd4665180d68078ed8da4bff
9e2bcd940aa579c470990d60525be160ee191760,85a8169c486dce73aadf89a0a1b1de6b28c55df6,b9affc3406b07c24ffc76005f71d41adf22b08aa
800bb3adc2362456af74494503cca82bd12c0598,c4ddb94cb42420c8e47c6daf181a64550ece1615,90d9f80aa5716874c72948aff282de6ee9f6c035
e8b92a4a7692c4922d7f8d4e394c6f145b193103,4c209a7dc2aa1f0fe43b104255d7d7670942bd4d,bae6ca6883d84aff6c9061af6ddf35a7766b51b4
1105726dcf0065083c5f23921c1e87c9172eb61b,45b5e9215cc4bb6e1b199034aab9ce893d5b526e,e99c9ddd7522d2d07c1bf4f736ea33aa0d0bba55
7fbda0e0e8b1d071e72ccbc5e487dbb1c2173c63,50cb5707eff57d51a30dc2d2953dcf91a7a93f68,c2ff85ac5ba307d7cc10cae7ee17d479c83c9119
632e3ff2cdabd20aa38f8e1f43fab0fcbf79adc3,2ed3bfb58771edfb9882e193506554f1a52051d2,869f6993911b6bbfbe48c424077413f6510eb3ea
2d255cec9146f690285cf34bd56e49a6065da38b,067b9b2922824a6801001abe1f2c67559cdad78c,ca7c775e3671ce703894d6ad4b13fa11ae5c1ff3
308aee42a011e796260906a9d99699dc6521d3c2,6218254e53d3bd9bd6cc2c62b5d6ecb86235dcd7,793ecb3fa67214c2b6da67609c5f4e6ddef96bd3
5a20531d9be85ad43f38fbd240bc65f27c57c801,3ea0c335c9e22f066f59fdb7f0e6cf4529d701ac,ff71c51e4ec7950e7297c57178a3e575ed2bd83e
9b61b538d8216a27fc02e03c203ddaaf5ca1b96b,47eb7cec0cbe9a6c944ff570569138a3d5aff41c,b4eb1780adc03586278a8780b376300308b33727
0d895c5826f0425712611001128e5575e06b392b,8ec71bc810be192183c9dea7ef4bab8a33a2df66,47557e0ad24e6df119fecbf2d42a65dc9cd20b8a
bc4a22e24d21870fe797d495cf5a749cdf89a12c,07a8e6c1d61cfa4a588d3e88997940c22f25fd6a,c8c6e647be33882b84c2ffffd9c4b84ea4fee1a0
8ea95e9b9518ff3c9b52672a2575287d613bf5c9,7811b915a918cd014806bfde2085bdbad62c8b2f,8b779975aa1d93f7a4e64b280ff02179dcff0d70
682e29c4ff6b494b468fdf0f1295ec85fee37ec4,d712c64236a3e5d684975ee2a94a77c17141ceb0,2885d3ab569ac5143b094419de211b2c1405f568
e53d18d876349d27b75a9dc00340b4a8edaceaf9,bf65bad5c5c92a2bffcc5dff4a5ced917116a8a1,3999d037e3f66961a2ee4993db53d1d8e9fa21f0
9e7d80a8bd1f1fcfd60bab5750b30c05db3c3f6a,f38f9ff930b754f2b94f8dc876f53d22ab0d23a6,f879d764917721ff3bd99c7e6fb6134cc8ee7197
f3d8efc8ec3690b97f3d5f15d6874359435271fe,e6f01065ec67ea82b1d8a4484f07d4680be82b8e,d12dd1bdae222b6a7e30c46ed31d5428e1c516a6
08817f1aed8b29c9e30d7d9edc9530e89bb0bea0,87a67a3222693a0b627cda9a47197d8c4893a205,755c574a87c2505c793dc7fa51fdcb2c572ace70
e4cc8af8fc4e66ca5bf7d2741d749c2b5d30c195,9ec85f940e650d196a66510be981d6f8b8a774a6,432cd5bdd36b3057283b1907fbe7dc4f0170b99f
9a39124118cc4b065774f84a7a7d7cfdcc8456c1,3ac0522f70fd2e0eaf66858f64d3d00b73eed42a,44e39f454a38bb3cfc8a61b8587fa225c3ebec61
3aebcccdf29cbe199a204f573fc1390e3760f678,934e3bba63c67b577d941d675cba3dccb2d53826,4bc957a1aa3bc241350f8ee2f917dfd0cf80f8f2
c90616944d3bde7b36e924d27a0790195d61f95c,1b34fe90a33567d41a103838648df4dc930ba2cb,ca399f3c7166947e42e507c3cb141cfec46f9e0f
4166e8c46409c6730e19c5dd3b1cc651b7bcc1de,7b5e58382b8cfd6f97b6928ee1107512741db426,f13b47289e016d61dbf154ba63de090699e0694d
ab0de8eec00aba5b957e2db1b31528a65dac18c7,80d549a73449381204174b98462fd83ba9aeb538,caa2735203b91db513fe8af1e835aa711c0ccf77
08023bbad0df203030f1998f7f5ea724446efaab,d48019247745e8e1b644aa3381ae0303d6310fdd,e7681dfe5beaf76263c2fb7d080e12f8f8c682f8
f5c22b7a9310e0f9f0fa118b04aec75914bc05df,ca475537e886a36b1ba76127db7a3c0bf454e3a2,b09669dffe04ed05fa7f4c19cdde5a2531be0668
b0c434b2b2e41bc2fed97ca70e85eff44134a7c3,243ddea68697120e162f5facac53b0ed59578ee0,9f8566dd84cd77faf02816ff11b6b4092af5a0d4
d8021a11029990117503179f27e8b9af6418d32c,c970c17ecab522488e125c6541c1368a43d1295f,500e29e5e2c9b1ae310bd2193c493a221e55972c
f26c366e9ba6dda24a080f7d0958f4915b584850,ad66a1966650d522a1d9ca2543c9b0de2ce4c93d,f3a19aaf5976d5356a4def9355bf2866ff2aa675
fc26e2629bd22a1b8d7df4dd033dd15c2773cb21,992fa3eea700295201d78e109b33140f63e28dc2,541c65feb758859aadbb99ef66022f79394cbbfb
3d4e677db0e3c2aa309c6513249bb4affc498bc4,9432aa4b69a471904eaa57f44edb1e0cb0e82511,ad05434401e59e015f311cbda833ed0678b39fa7
81bd47343918e8de171f1f53f26db490934ece79,6ec6d2043b1c2c2fa2c5554b142610d9d333075e,c7f3469a3f6135de5990605db59ff5286c6ecbe9
f5bd3d81e78881e7311d4642ac4d41445b0d86d9,1bd9d4173e21a73f4b2fefd1b7daa2207e17d7d4,0188a558d1fb63818129f3adc8513dddb6bd42c7
726ac5a5a6afb3017e06ccdd75d6a593b97a72a7,2cc621618accab4ce12b8f5b34c5f883fa460b3b,75a9c5b5009e094dd4f1abd166f9ef47aab97c1a
c8e712f400aeb5f56d8b370f7e0feb5a6405b6cb,b5216a19907d45ffa87661879b2a571e589fce75,3280ec322060dfd6fb333d5f789d1b148c35c5ca
81287362339a70ad44e20162e6ee02b135d1cebf,9e7a8f44aa47d53c47bdf6081ddaba0a99c622d3,a6d475b9b35f345bbe4dead1e176a99afe8f9f50
8ac821613fc84d5488adc81ac10f6b371bcde021,f90324a02af28994799012e81c4bcf1dfb106bbc,da252e2f4b81ff3e626500454c1974c2b4feb62a
86c036d9ed8a63040dbe4adf22c96668d94fc7cb,695665c393c0c3b0a67b060b5da4c86249c77f38,7b9ed5fe466532e6057a7378ce8028f36fed3b97
2f90dbbd4403147c2131c03b0d25876cdf819d2c,8f61df817aa2d6f254ab5f118f569b826079806d,5442e9f9d86ab7807f917694eab6a06e037ef45a
665180a579b47a5d7843c4912086bc6e2060aee1,0d5260396cc16d63e444670ea9c32cc6392c7241,d53b17cadcad90200962c5942a47cec174047612
b336155be64943a16b297d1684c45f1daf3f9b6e,9969da24e17ba35e319a904afe1f55cdfb888e1a,a0e88efa6a73f044718f233cff76cee983a96dc2
711efc3e3aa0e87dddf71663036337434065bdcd,d8f02107a1c79c2c4560c5e6ac260f516f083198,f5e5f9645cc90c01a6fcc2c89413ccbf0d1d3d5d
f9957f30a5a70def090032b803925a9733d4cc43,70760208bbc0574bd170e3acd7e8baad3cd90cf2,4da1ad71a4ead2a6643e56087d03c1ddb6303416
71dc62dde61909bd587485a20f3c234c832b9389,6dbcd17f54cd8b4e2e4853785d405233e1948762,2a7aa1116397a409066dcef8048db673e50f77f4
f718567c95fdc28f629bbf213c0e8f2507064f3a,77681333f520d55157353f13183ef0dce9dd0e4e,b1497185660cfd390c20390e00cc7fd61b0d2606
5e2bf257904d57b5f5d5b3ccb2b9791351e7bcbd,02ec94c81831f969732b95b27f4fbb35a8de7507,29a5d3267cc3329ed313bdf3e6b8d59e659260fc
43c50d0a3266282a69f9e2d316fbc73b478c0774,a19e461ee05154f1934c39bfd925740b3f28e4da,c3f95f65eddd3cd96601243c3b69b6bd689a5dfe
17e3c31b7ef802363f2b721f076427735d7802e7,cd3570caf14145f0f75af95171ca4e773cb9bfb6,5557dbedf27c88984a322047c57b486fb7a9fccd
1a71ca410691438f182910025443da0580df5a47,f261146b6fe454bb829bcdcde98b2b68c332bf22,822b46009626d3893cf23c2159d3a632f2c1168a
77cc2f4ceda166a09eaf04ca07756f950d1ca806,43910756170672062ac57847b98c16a4096f7f78,1b22962140eee3b11bef19380d071ce49f5f4329
db02c7c85aea5f66f4e083bba8a8ba649e06c313,f1d30a5bc63f4bf5916ad20a81c12922ceae68e3,c2faf6a8fd63727b392123b69f5a403b9ed991cd
d06cb1a20ac5674bc70b8e8da0c419f004afeb7c,423940afd7c7d8afaa4d45a5c08d36f83fcf5401,7721995c71a089a8796aac9c6570dd6eed606d20
77e3a402dabc6622fc48d31c641177452ed49867,0ffd4f87808838f1ddb563eaa2863a4d0f984a6d,72667f41ad1e1b310052fe05a244276c7f813ad4
837b433abc0378039d91f0f03061d982b2cbcc9d,b464d3877781b483ed4a1af04784cbbf175019aa,595edf6f9b5bdf4d04ce6580cae49debc72cba89
256ca9d210e9fb9ddc11ca3caeaf811ff1d97dea,dc13516dee4daf6fca861122adf329177d1e6131,bf5f7144972fe1b99f2dabf2f6910b5e93090eca
f0b322f4ed22a2164aba0abad84925a1f40e383d,cdc7fec019bc6e77d40e11c9c3bb173f95a3b364,f76bb5fc5e29998effe2021ba7fa563a9a4a8e2b
c9b90ccde0e43d3a26a812289a383353b83ca220,5ef44c550a605a72a6f8b34fc3690185097aa49a,9977889f4a2dc700ff8bfdaf231d59910fc08739
02e63411617bcd6f99f666cf341fba063fb47532,394fd2037a81b069f77b0704c63a651967aeb6db,53674e387f1eff6ec7febaa7bd763a2c657002aa
8c1ebd8353f7aadc5b79706e5bf8b65ac9a450fd,6a35227a50cb62bd454f46d4637a798084dc5e36,cc5814dac195e6c3a60030015339e18d0296fbb3
210674b9a039da69dfd1444c0cbcbe7d5cbaf4c6,f6a444c6fcfa9f1993841e8dce9a36899a8d8c9a,ee187f78f411711fe221f871fea01b203114264c
9664ad4138ec531b0be7680bb274db0fdb39b554,542c3f0c4c916a61cce0614fc855241ba0e4e8c3,c38b8ac28fd17072e2db87f4d008c36e68e8e0a7
d0b1402e103cec251219270215591240103d8bd3,4dbdb4f0f1ec9a675c22f0f5650a8cc5b44275e2,9f6651fdb7fc4e9b37a7f3ac1d417e6de95f1f34
0d37e0e0f8cbc66df8267d6cb1b571d0c919dd67,0ba689de84df28a0a690aa5607ee83df7bba26b4,f383cf4deb29c6ba3d89c830bd40fc1e6632e98c
39896a1b113912c28ee09155ab6f81cc9a14428e,dd9179043e1dd2839249ca4aa2b5eb25bb4760e3,aa03991088eb1856cf7ed2e88a3173dd5709d210
cb2c0ae59406caae7672f2f8d7488515c150e04d,a6525062547065325350639064508a3abbb6a57e,3c205f895c6499b31004cb82a58942d69c34a42b
d936280c6b5810d72bcf1db26189339025343143,9bad5180bb210fa49437353c7643d9bc574af68b,964c04aded9d81191c5030d1bd75be285e36d8b8
ac9d2b3cc5d8eaf34ea5aa3cb89cd850607be49c,4de8ca83938b98367f4326d5cdb993521173288a,4ab310e0ed49cf72441c1072beb3e24206eb6e12
8535c758efc41d890c3d343d43e064deed88d132,929fc500043b93f1e06976d0735c3cfffcb2c446,4ddaa26fc06824c8212e34d8ed99f20a0298eb74
da3eb5c1785feb0dbd417632bff6f791b4b458e6,022a9b210ffce670dbe4d675baf3b70db3e74b92,6db4ab5012c6a32a4c66da973e0b7e7163b54503
20039e3b77a094ea807ccb318e06df4cce4dcacd,d77f249332f6a73ebd3750a5c7463ed5b738a587,bc21634b467631b3350b42f83894a7339bea54b1
f0cc2c38b8aaff7b6b407aeeeb8bfe9556fbfa5f,6fbf4dfd9059f8a3bdcf5efdf257262dcd17d178,13f3cd2ae3f3d5197a85035b8d8ee40792eb66ff
884d24e321d3db6a74c25a2d0bf09b1e755645e0,e72665051f16a80d673a8d1f92a9997fb35a5f26,e57059eea3959cfc9daeee5bd558b07a4ad21713
90afbc81146d59c0cd85d73f7cb8e8091fdc4c8c,6f1d965dace0a9e093ce73faa9e02828db463694,430b2fd7917e4689de57e75a67ad864f38b570aa
c43d8e4adf47edacce499563558c0bbcc9c7fc3c,906d0ba06ef076fa6bebc994e1145bf222449b47,12a0083c5924a69f6928a7f28379df4cca86f12d
6f482952dee00a2e14dc900815d660a32e46bc8d,578424cf51d3c1a127c5eaddfe462e82a5588586,5726428dccfb87159f31ce505ab1bef04a5f59e6
fd91e8263c8acc492a928027b55ed8d44ffa83f9,cd5c2b82717d3168587fc9e853f8a0a0c71ac565,61cd38e6db176dd006be6adb8c6c350011a8b108
2bf7676f00a35ef8e1f252bae8e118b5088638a2,c9f875b15ff458afb0c28dc1e8e95aa155234657,54f761b4dafc35325e2d49dbfb12720dddef0d42
70011c2306dbf89b7b1b5c92c464550c6ef8b126,94693e5f70828ae617af1a4c1c008e1f4af4b366,7b03bac5d6171b3c1c29e38ad81fdc12373647fe
19876ca805828d1d59625790bd443fdecfc43e63,e9b3db0d78ec4a3043d69de785b951b25179c2ae,814b68fac0e7a2328bf4cb0adc995bf20947383a
8006900e8e969fd4f8078398ce762f1575fff961,73448deda64923dae27270f9eaf7f3b9b9bf2987,bae583118a0e685032f2712943d2ec5bcdbb900b
cb953f68c24fdb97ed1e8b5c2c59c7cdcf3c38e8,d56a90e5ed984b10ce192d3197e72fba5b4e184c,8e2478e6328415ca01414db2a77c2180c23631bc
30df9550019731ed3cf29d5e30fc6bff4bc4cc03,f2e0af6d37956caac79c5acf8c8cf5ad08475443,d5a0dd3d2577809d169cfe18aa78e8372fc3b856
0a3efb67020967ab55c4bb96f87507a45a85d572,52813c8965efe348a94bee65ebceb9bc0e81be76,1e3de5db58072959e8d6f75aaa21e922d38f322e
8cdbf5887b7cf1bd5a17dcf0c406e52fd6b27d4a,0ed69fc662821756b873ad3bf9e81fd0c26ca9e4,5e3efa4455a0c20e72ee2d970df1fa630308192e
93fea6de3a0252bee42d8fb20f38960907994184,ea5ffd597f3b8a50300e9e7d1ea2fcd0f1e14f48,99f33824a7994a8e4fdbedfed79093cffcda03ad
1957ea11cba7537976c6600b2334a9df386d7aa7,3ecb41cd2dbbededc213dc54ee4e44880dbd8336,f59aab1371a008ff7c5f46d2b4d2fa56019cc15d
5085a04930268442e1dfd07f325291dc1f95d086,87111246ca24629d15385f9ec00fc9ee57421ea5,45620b11c0cca007cb38c94fc201cd8eef7875da
390be44cce0d32775bf1e24756f0535a1e55d1c5,27ff471ff4f9c54bed5df5e04fbdf654a8bdb5dd,08520e032a7dfdb7cf01c355d5a2a451ae4f91fc
d0b3a599a300945a46abd020fae9878c97d75c4c,1e34f047291dcf6140f89250d85a7b5fa5f907fe,a7dfbf012441cd54a960c7c1c153ca1a4f77582e
2a688eb948ac869dbf4165d2315e563b9d790e17,47b664ba92ac1e129b9401d7c0b1a0265f68c4a0,cf857a22eec513f3d131912a7d53c4239fc8924b
d6fc3129b390702dc0ebf94a07ef44032402a343,3d56f75ba7ac99a0bb6527b860209dda548a287d,9bebe9bcb7cc581f700600cfd0f3b9b100154bd0
84b3036574bfcc4acb20b211afd2ae9df63f8f50,c02b43fb93381fec8823752d0ac24e76e143868b,c69649782a27d9234c3c9d4f6f066fdb67a1e0e4
fa7444a0d81bea369311fbc3b353bd5ffcdd993a,de7ebe219c562ddc18e07c9f437d25cd42c3e1d6,e830ed6cbc39f0b8899447a1e9f732aaccd49eba
e00dca144860bb2c8d5e25d4d57f54853700ddde,cdd7aaf2eb015e2f60a49b263bee54d74998c0ef,385c130e8d0f1f2035dd1f9059879e3b80cf5f3c
eed9bc1f356acc9da3471b862ae0b35e8fca0908,1eec91056173d563a084787159f1607c1e712b39,5b192cb82a38a4960734493e781827d34124f14a
14ec15be7b0f91cc2892928e38380f8f98b16308,7c09f0be9673f9b95326ed2a442e496f011b50a4,56aa1e1bbe51ecf1143700e03119cfcccfd834a1
378b5f73a5e5d74b2504828dcba698475a56d245,5dd48078a65fee0363c11b44e80bc72b4b194bba,c2c7982a22f940366468c2b78e6625739d584be4
e6e49baed14c826a83e384fca0e29e739d3aef22,e841e95390eecdfc83dd7747597d3bc15195f171,33b29b0df4454ea4fde0782c6542668b324780b5
aadcb0097781d53e6b555da644d3dc05dcb5f3a8,4483343d00693632b120151f8ea67abf2a2c2d5f,04ebdf8df81632e5e3e8dd13d80dba4c75ea9c3f
6e4984184b94547a91ffdd96dc47046377693a0d,e89e87372e90016506c9a0bb904bc3e4ade3032e,be1461654f507d8210fca21236e7b5d6c3e9e1ba
40e1a09e6c73c245cbc1bb3ea1b97a0816fb29e8,b3ced4de97192b965f90325e14466e7f247d8bd9,e41c1ec118deaa1a65b58a933dc962699a932c9b
134bc7eb423c398b8ae1d1b93b105c2d1dc66667,214936b90e2f67c323cc530a4f022d3ab957e2ed,464730dc44dbffcdd9fb0d3ef0847e7f0a04c633
9374155344b33b1880042527540133700e286089,97b2f7a5e13190319754c19a688e000f8a6f50d7,9d2e71ff699c447a2fc954ef15928f6697d60a8e
776667366feec2f8f00a81ba8d3f016730fd1e5d,8608b82c015f13461728170613e4eafbcad067aa,2e086a25703995d5f636025fd9d478988c261104
4e159b3d455d51054b400595723f80c76998327e,7ee31ae252e6796fc32a3e1de90193e6f936920a,c19355198034141ea35c2e75cc148052e677618b
2c418b988cbfd4d9737fb34f6c81c52bd32c0bcc,3f8aeadb916de0d20cdef18897275c348133e90a,e1d9d1be0aa9b4029bdd144bb97374c3bf559d5a
ce2984e16abac4c2b1ee1ab11d19a9edff8bf25b,50648f2a6052a27c6ab8591c5817d63c830aa0ff,43b29375899276a2734571d2be8daef68e5b9008
85fffd7a77f5dafbf672ee80493fc42fe09aae5d,89d3d866d2370f8f332746506e97dea19c9fe382,7368fcf4c5a6845a0c2257ae0479556850184565
ddb572513c5530c024a83801b13227b6b2ce5578,810e62b7c9ab3e56f6c49e4a2a5b2b297dfbfd0e,436b8c212154e4935b3f030e92169a639db7895c
356afdd25bd80af7c674633df6eda10826dbbf4b,bbcc3966445438e2d97e07d21491a83e9b0bbb99,0a384b09058aab280c58752a46916d8e53cd71e2
d3ce008cd3c8069b1b9cfae5f989c52c756a89ee,ba3383f7e350afb3ca07b3ed50941edbd4170604,bc08af99b04772a62fdae261eeb9ddfa8c147fed
144d7ed97896b31ce9c18cddbeb3ffb998aec35d,0af333bd0f04010aa86fca053d29b8c53bb01796,a7b3747b7beac97be48a3d868355c6dd564853f9
5ee902800cf318036eb74044e4e87ecc542b080f,5718b33dd868a8266c933a51547e168a301a7ca0,17fac45ddce93a1769433e72688eddea046cd597
539ea53babd8f10c5e1b2a2404bf2e2639a6ceeb,125dbdc21cd23fe9f4184d3c2444b1291439b154,615e1c0431038c38ed1a2fc7710129438d05fe2a
ba1dcfc6a4136c6b8154ba16d05d977553b30160,953893267bb45dc8179f55da4c4c203468b2777c,25a9843ea4488a7fcd462ba7a20964c20933e96f
c48f27225e0ca6dccbcba86f3000f48f374df7a4,827f543289dd3f8ff80c09d36cad489b583c3410,720068360ea09dac6fcd35dd47e763baa5805c6b
a5309a5d0cdeb9791a4ac59f666aca5628ed6f0a,3fd6704582a29832f9aa518bd7a178cff083aef7,9efcd4e5548637e8c970dd693bd52b4c859ceeee
67c152092835268be95e6e35f1f31b50d6546bbd,90eb1351dcf77267e4a02a699b6f21ad2995ab2b,5ff2af5176ecef0e9f0deda6a007089f82d5840f
ca3f1d7b6d507c5f4f3e4d681b85cb9ad51b659d,4240279a848b8cc4dffb4dba278d3c1c1be60bb7,c275c3c7f2df5eaaaf1080d5685280062db1d246
afb9c2ae94e020a1061aaeaaf8d44bff2b95e797,433050a2c41069ba5dd519058e47166aba1adfc5,618237a1c75ec3d2c19cc26ef9f9595084b7bc10
73aa30ee0ad204f280309e9e36102d75f847cc3c,5eac35664fa0a3df98a3fa7b6bbe8c129e5fe7c0,d7a9a7319493dcd61d41e68b3baedcaf9442ec5a
820e0dddcdce4beac67320a4a3d683f00db46883,4236bee6f1832b11845869ffe99cb8ea0a96a230,51996d628079dbbf5f6aa74d55674a1ba1bad2d3
ba1b0883c2771b3a4b9e5ab3954d2a9ea960cad6,ce1f9cce01e1f58859886593ea04e5a5bfd0da32,51326e94f38d72e89bc833c60e20df237502d811
aca327d7873f16e89b3ed89846c1a91b6e2cf0ca,1e6952264b61d66f62db499f9ffbf405f7f4bcd2,49ff6f512693b6c6a0ef94822ccc31be0d4a2595
0219b4018cc400bb18f8ea3a924a5a0775186408,f0543ad8d523e40068359ddc096ad120c55cb5db,b463d511bfbbc7bd3a4570c7c4d56ad3d5127884
94a15faa7f435b1b8a5e0776446b2352b0359065,7a4110cca91f7fcb4097d156104bf7e12021bc52,7d6b01bfc429e2bc70eaf7449a2f899f0ce4b0dd
ea47cb313def016b4f6359126d45ba9da4054411,5ca73c61f4d95f688a592a93cea607417a734c9c,cb0f422eb1f04ba531b1acdc0212194eb1c565e6
924f9466f0219cab6ea5c52da9b5676c97f9cf5d,c185ce02cc24c43f5213563669fce7c2c9727747,d7b509e1498336660abaa1e35ca179c724861140
d16160be915fc86a6ba634f9ea8500255ff996c9,dfaa12e9d907cb7a8923cd6431e0817a6aa653a6,2247691e71814b68089dec04bd0b7f4b804d6700
9bc7df23578e59166cb0bfee9097c36587f4acc8,296cdf89ef05cdcfddc9d71fe1b84533d5b93aa7,f0a78f48f3ed43d40632c17fbaa8ac8058d35066
6c0b79c258dbb242931b90418c458b610ef018ea,723371b30a1ab3707e30292e4906cc983f92c0f8,9394158fe228595a8ede81b3a9f9b69a89aa413d
0d6a1d24bd0adb93608b17fff1e956564cc4d975,1c13db554cb9f11246951089bef3647f760ab2f4,2629bd7ba92a03ed6b106448b7eae6429b63e94a
2a2576b1d5c6335deb98c92f51344903e912c7ee,c67d35b8ccfe8a4de74ea6f33017fbd9f68979b0,db8c723b9d503f0eee1b7058495170b97326752f
46507f956552ac35f745568284ca6ca7de4f328f,eb96734b2062ee19daf54cd52266164d70e84b02,7a8893396d2598628075a4f3e001622d731e1191
415bf22e01cbb676fbefc4de83ee4d18bfa6145e,e6a593c5fae1bdf3ff77da7b50e1bfe272a33674,fafee8b85b91942bd60adba63c1348a6d89d5177
0e3d95b589923d8701e9f8c2dcb3cb06e9c27f95,4e4d268963dd6d2b596d1cb5a70332015011bb04,ddba001b651a404c2b01bdb88679599cc5df118f
5129c2cb9ac6bd7756bf77f8d94d60c0390e9734,17514ed5c0dcbfcc2d141653b021adf870d825ff,2be8f01efe35eec1c1bb9b278b54de3715fc5b2f
cebf880df914dceb662155d130bc6b565dc65a35,122c6c92cb5e494385d3fa3adffe6bee6ec4a51c,f0d92b74c1341cc1d09177718accb889d3791aa3
b878d461c8e7f1eaa4a928c285f0208ea8f5ad7a,cf1d3539feebe1e8726a42a1929b19449defec2a,1699471b8dfba863d6624edaf18b63e075286b5c
9846fd3f37424ef692f286dac238da33de9cd31b,c3798a4a38335681a17ee0a35a63baaf8daa93d8,c6ef087850f57667612964049242965bbd452481
63760fce6a05ed9743d7af4a758009b9ee8e1bb0,261aff9de8ba3435e87d996689a074c6bcbcc783,68c964bf59c8380843fda383273a05d5aa44b27d
d33e6d639b70ace8f97c4a47953b0b910612d2a1,650d2fcaa9a463f90e17de0b719c41b7cdb4e8ed,68e026ab2dc225e950bdd85a59d9106cd9de77aa
a061b2e76386729992137803cb9259df66202ab9,b3744bf11fc50891c3769b1268f72dc93824d5bb,e27ea76b8887c6d4c597054edf5beddc40100867
5350ac7d65f1f595ba4e3b6d582829fc9ad3bca1,c1f6a7afdd035f96168c58b3af8e453962c69de7,5920d169c096737ad6288a96a37a9377fd8697dc
136f0429725919c7759358a0499a4cec09f8a3ad,e1a75bf6588284851b11c20f55791b496a764a86,8117c97d921cb0b56f4e958a0ddb7b6d34acf0dd
c5a128fae7e1c7671b05bbe286b4bf927a6c67b2,5d826cfe3cf1bcb0c5da68e0d584ddeb6a3220f9,352435cb75c53e081baf0dd311fc6cf90a804884
c0d57d03c232bafa06d80fee74b07e91300944c5,6a3f32ba6983dfda5250d03b9b2d33c8ffc6022a,10acbca82824b6a3ebf5dd829941da61211f947c
306fae299e2b90543f863504cd9a35be802d103e,777d536d9bc826fcf5d580dd80ba2c25a73de1ee,07698050e56747de32c7ce580467cc8bbebb2a28
a7d608dd431df9e641b147bb9370daae4750f723,9d9128a747adcbdc2a7a3fafb17237f895dbff21,7fbc82a9ffd9fda11f0643f32dcfd675de7a53a4
8bf5eb83229a05e2c630bc4015b9c622ff8e48df,162ecdc543f8022f77bac46223537ece7cbc4188,7d890608b8cea84f701e5f88a32f7a6edea3f173
1d18f2fdbf2b190f9abefd954bcea71795de8bc3,c67a44c07a699e9c70b71f28370f875e1e010bb1,eaffd1deca89d08f780f34c7788c28a0ac49b939
722a37ab2f8b008c750a4a143d49aae8563032cd,676c9a7bf6e181662c5838ced35d0326fe5da564,bf2e3bf51a1e9a5c2156edf112fbb8a83aabe42c
af47d108af4e289f6018b2a386b9c96b2a65c12d,da10b8141c184e592b1d8d4ab65d675c0755fbcc,6a2f596b8eb7efa8fb672451a7afe0a00b5a03e9
c4e20291797583b2d172f804c0c684747279e70a,52c00037d3600f819bd8495b470c06a2f026dc10,7ccdcd3d14a35c350c5463d2488906f66d26163a
8fc1bc276f14fd1deadf250385c408b0973074a7,964a9839d1ed9a4fe9400ec95ef0a0db563f0659,ae1c809a2de4d326571b2f086854feb70c35fdae
410916ab6bfad9c66f396fb94fef0a256f9610a6,ed861e5343dba6e3e10d75a6db8919deaf4b350f,c68c22e9e88413abd80866aa3293e553fb0c5b95
dd4b4af6a53514749c8ed329cbd9c41ab6f1b7b5,c64c0e617d070de85b11e171d895886c064b1bec,5479663e560bbe906bf05274b74cd168dac41627
122ed4b76a4e735ab76b44d52c845879e6fa5535,c78e9557f81f7711a60400f8709b5b1fe017bdd5,64ddf22e1b77cea0a29d13f5bcd1e09e8bb17ebf
675312c201c678c8446482f7e53b1209684b45bd,d502a38f2044a641fac2eb94501f1b49d3b698a5,fdaa1a12d03ab0af27d783a6ebd8c989673f145b
fc3685819c07008860e35f2d727d55365a4586e0,3ca73da91282ae5ea53ab61ece3301dacb454a43,40c359a5510fdbda573a1eb75a50977382f0996d
07dcd22b1c812f4dc659995c84c51fc580383a59,4401ef32bb51ed138015821fc2c8f51c467fec6d,4fdeada0a5b43442f09ebe64cee3cac9f2a2a860
838cc89faceda7b5439d6a816da8a3f7567a3855,f6c476ae79112ef1866dab22cee7c307fc8ec98f,56a8f295190f31bfb90d2503364ad462dc0726f5
5bf9de22d696143e5e25a350cf407312603d183e,f7265bf79e0945845c2b3e9472de654b5a2c9c35,181653162cfa3807e9077176b73800231c40d808
db0d1501e0bfe9166e94f8eb0204b31023f92940,27529a7e748ff7580e0a05865f7738632c61a559,aa9ff6c225997c84ded257d33219b60374470786
b2d2c5dde3260dbb688849aead1fe72f05f458c5,ab7de664719e8421f17c32307eae700c832f2787,4ac009846c7a61d2a3a9965b6e6fc7257691d427
a68a6415f2f559afbde579f1333043090ff5db8d,bb9a1af24849031928f0db2ddfbd1991f91792bc,e6f40c196a4a76aeda73632a67eff84f56c2d7bb
aecec2f6df34e7ddc759215a258899a19bb2eed4,4697de93793690818baef08586f3f06cf6c776b6,0f0b9833fefa846d3291d275d5d78602212c23be
74ebc15596a6ba09eb663919c340df005291924c,58b252705ea9be56262b384f2b633e386b41f69a,3892689ef77e8cb86add2760482a7eb72e93345e
2e608a3dd025db0a270cfdb17a382e46547fe62b,61a3f6603d2fac4f4b88cabb5c1ab1361bf6429b,87e9958429835f501f83e8714f2a407c2ffffd12
7b6f273023059d3a905fd35897f2db9eb5bf46d0,c4069b5fe8d22d55bc667804aa0301fd00a308ef,592c2ea0fbf6b9fb44e911fa98725a005e6e1ded
06d99b1e6822a8c8cbf63b0af2b820068feb530b,6c8b7577958cb4d7589ecaf9705a4568e24c7656,848bd3e0c0515ff84b72a5300f03992d8a05d55c
72213d42da79cc35d4f158c8a8555eb0cbb3afd3,b4f939a4ab82eb56fadb74ee53c183d9c814f5c2,a73ee4f403dc037bdc0d45e2ae793f55f994771a
bc84f780ee3baba239b7cf99b16ac8ad70150c7b,4fe3e1f8f8712a12969583853c4cd1059f5dfd16,26f4d957a0e50653dfac5a7e594d30154146fe89
d354428f42a29010872e8aa19afc7cc2c3b1418d,23bf243acdec7fa418833975a25d80edf89cfa15,e310be017eb68e356085ffb0495fc1d042aaf294
968d00fedf64ee56f23796069752cac3207d48e5,a18a6b4391ee8c0786fdbccf8154949b41be86b1,9526fc64cde63ce5768ebc21f9cacdbd9b827219
c28995494c33ff0cf4c66858e8a7de86e10dc411,4a67f098ee5f2077417ed8b47e6912a0e4794d1e,5ab67753769a4dd11c3d6c4d2356a18a6bf14fba
f134e3b0eec1866a21572feb012813fa14623b87,dbca95518bf69f6d236de3a23cdd91917d208065,b31adddd7ed834ce5be5f15604ac14d528299757
f43a65aec22e9cfd0085a928d05e5ba85d66f9ad,936a35b587afc45921cca0d0d7753b1cd9373061,2ee32623fbf7d9f6a014d71036cf2624441bd61e
94a5fd4a5ef66cfeff2a78fc134f4fbb68e368c9,c2eb68330cf48af3c1fd21a1a1317591b16d7c79,4303d62c2bb5f45cd28fa672e280f83f953148c0
bb2fd561bb253910d57a33b067c269e7894acf08,bbb01506c710df62b55cf7e4127b4f088a7d6f4f,5d9968366bb9b52fda32bc3b99fc18b0383f5f42
9b8a6438c786637768ad435c10f5cf179b0c4760,bce2f262341b9b7dddf6c550582a6aacd24d2de9,fec8cb76297e8a30e5c705c54e13cd769745f40f
d5d90499ee87981a8cb373dc53ed5105e98c36ab,3ce6cae11d0f754038ac31a3249431903a7909c3,bfa0c60e7725ed63f2148de95c4651541716515b
56c3b5b2cd0acd8f0aa531049f7d5b5fc86849e6,df6d2896931c1f7b9bf9f7b401109bc61dc0fdc6,54e418c5e87435e6e1889d755c499da4554a1562
f6587d950520e36b23d412c1b370b861e21e62a6,14dd15373670d02e90897601df347344a3dee709,cb05049c4ffbf9529cb1545ee497ac2a86c134ef
1083746abf9bd7ec09161cc0819d7ef5c5541d1e,35c45dfbe5a1f1d732071ee4e812684ed1a8e58b,ae0cf1b50fc3f480dbed602d27174f84b77b8ec9
468975aa3046e252c5ebbf4c9a01088dc7d86952,9305bff861034a05c8919a8dcc3783017eff6c61,b5fca5b094bb49c03264d6e33a4a1c308b7172dc
133f76c8b7d13e00c891007cebc4a4ceaee80594,4d8ecfb42270e418060c9de45ac5a1527150c66c,dca4bde3a2b43a31fa0e6dbc564c823f53a20da2
8efae66956c35ef07d5dd817cfa20d6600b6fab7,1f272f8f90cb1fc0a0a9ba3723aad13ebfcc5f03,8c5446a03ff70d74427b933ca13c9519e141c0ff
54e0d972783824a2172596154f73bea1d3481944,5dc1d5e93b04b6a5d0afe4260fa2b40278ec0f0d,955e495c217fa558e713aa82cab81ddf7f3c4ea6
ccfb34c518291419b1ba48edbf651335b8d4f8ac,6e5103f3c5da7a9ca8bc7881a543890de47ae30b,0b96cc3a30112d75805553572a4ac75d9ad6110c
71457e64081e43116c8293ed7b28bf2594c53c27,cb22b7a1d5d331b571b6efbcdff7a1eb8ff7659e,3069d74ecce6a302ef844f6fa2819f46af7eff2d
008214ca15812e7f4db97cc9e1ffadce94d68d2d,40dc7380dc3dda2d7b08082437de6bf285e21700,22101432395ad7c81f2334e4f6db5079a7fd9a64
84c2a0d89e1de298659b7e54ed7cf1b589493839,261c0ff708862fd8bfa3fc7487ef6747ff91ca45,2ce34f7bd3a648cfa5c7af111bbd0ef0fc991f8f
7ef2012151438c314d82b279c06939140dbf0c41,cb73bb939bc433b9ce5137492fc69a6b5d993b7e,f9c006ca9f5eff265bf1fdba8697e58a1d09a1ef
66a1486f325f7404ddc3679422366fc020185525,a390a2742024ea5a1820ea20ada0ba0ca325111d,4dc1e22f1f8a8d1bf150c3ed1ebb6498439909d2
a206deddfb5f6b634e5da5a7925c1f867d61eda9,886baf4cb901337929a5bbc7a21510835c089b41,06ab6d7fa71af5b4f14a4a31b9d5dfa74c3a4ea3
bfc5fcb8d15ac2ce9dfcafc7cefe67b387b7fc8b,b36154671b20b843607d3093c673f23bcfc89fcc,396a030fc2e0389249e58231d8c3134952c7a78a
714f0364205c9d439ed762a868648c34dd3c3677,985ebf3b6360c2850b38ccab36aee38828146843,d1bbc99e4815cc1d70dbd9fa475150b8f0940613
a2146824956673e5e356da1b3f1429d73e5ebd36,652643499a88e937c4fbaf95169013339b207052,6a9d2cae93de921b982958cbab49ac5ddf64aa58
b3bf183fd37dcb46c4a89fc48005cb68dbed4a50,d2921dfb55646401ff156f85a7997ba1d17f2d22,a5f6505edc01ba35c0fd05c2b048b6ab7aa306af
3cddfb4e2ff9fc38925ce973bd29fe36cef3fc98,677f8297324e2c089d0cada4a7a9185594088a8e,54415f8f4e0458ae2ab2fb7d0b4ed97e8461cb7d
6b7df6d22e246a54b7ce60e08ac4474664efe90d,33ad038bbbf5d724394d5c07aeb4bf7aa7ad71d3,d20f18634f5d0dd2bd365dbd8f2ff6b69f48e351
ae8972083f6e97772c480dabdf923d5165aa5faf,213a0a704aed3270afbb0c9ec0070e4cbad85d9a,2650049b2cb15178fddf77cacc477d910a5b5df0
86d48207605bea3e2c72bf3734666999dfef14d8,7c6f3810e3e73c4219e6f6f24bdf702c61843d13,f8c92914c2f33be7a3f53b4278b50792c9c73b13
dcf64d8fee683749998f54710fbebe4453f47906,810de9eacacaad3a7b0093e64f61f4c95aa060c8,239557237fa4351aa0b35a0d2dc246b86d8d6334
6007ceb9083c0b27313377c19f65dd8fea51fcc6,4acf8d36b8de9bdeda81fccf8968743e577c7a89,9a1ccd2a16a48e980662be44f228d549871e8b22
ef0aea8ca241aa5d021d74efa830e690ca447bb9,7e57e4514a46336b724174503c7a628e812b24db,679cfab709f7c6c9415524d384716b063a7dfb8a
67b08734cfe4bbe2aa19c4cf4020817abaf74c5d,bad14c5dbd1f72a2ed532636d390fff37b65b195,61cf121533572a72ea65a7ec35bed1a5b3621a5b
37bb10e893d97f44e4f130c06ad825a2b4693945,b4df9dbe1d10937f7e61265cc58cab832f6b8506,a4821b1d0cacf6458dd21544caddbc52d10255ff
2781be118f8cb52757eaa7b369332f72550f6252,7e158b6c9b70248ab9de3a12484a9c82f6c17ef2,c7c8e2e0086f1f257af5f4fb927beae687105f4e
9653406ac6c2633ac2ee2b12ee857beeed5efeeb,bcaa2c9758c41fcc05971c35e14d02faf1163267,c27823568a0c35eacd38cbd8428f8b30563dc452
0567572faeb96cc58e54c2c48bcf6c2ada713936,fca357e898814c4b8d8f83efb3fc82c6be4c8a2f,daa05f19cb49aefb80c3ce974f29f45cd4148fbc
64812bdc6013bc09f6e59e0d554c3e8e3542987f,80c63fae3052241047931f7b0acc9dfacabb5f7f,c30ce7108e3c6f5719a2be4b95b5d20e518813d5
1e072aef31dbc456da749011f2ede30dddd76546,5762e687a3ab8fa55d3d7b14177de991b044e9da,4f77cbbac4accf137ac2683b95f5ee9f7c628ce8
5e9eb673f8141c2a931e971448cf1264d55e7f04,9bd785c06bb6f3b7c1dfe2190cb5fbfcfc6f76d2,5065e4ba50b7bcda40c0c010b404eb228a4d3188
0053cec8809421efc739d7f2e5610fa7c966e61a,59b49addc0f257a695aedd57f28b73b96382ba3b,6c4198fdf3b71e24886479cae3fb529d82e4b556
ffc3e1780d7fb636bd11692558012983e45127af,9b4033fa80bff4b50cd2faa83a49aea8ed71c17f,5d571853acdbf9ca26966ae9ddd0eff94aa565c4
e2624fdaaa0a73ba637629db116ed2c6287494d5,a7e234254f19327d7053f390ac93d29f53d40803,abe3002b5badb867b33dfe4457e92535b089a954
b08c12ff8ab31b63044bb03ef025dc3c175648a0,711e659f5c91098da657ac2f9dcb4cb52f14a937,3e621f201456c6f1cd7c297078f618ffcf953001
b8befe3d1fd54329845387d8c7109827c55a0b3c,bd4c2064726700790c5c6bdd0a55d3d471dd0c5b,e121a753e116701c5a8c68f44ca90b296b67b6e8
b2165570de567ccd94e192353900000376492fbd,4a7a113a30030675eb50c9b1d0e563b6d0b82c73,81e83ffa675a60a8244c2a32723bbb00b70f3e46
6b26fa0f9a4c6c7f8d12a10737428c443c7750e2,eda6b105b718d810129c752ec7749d6a8e6132a7,3a242a17f4ad59a3bccdbc1b7982ce92b9dcec76
cd244cbf7dbd85f2a28b67fabc27455fd23f1e33,08b07122f8c0a270d4f9ccd1bd925e14402323e7,bdbdf2616830ee919a86d5181440b8db1b89ca84
4064694a5e438b10d71a24fe5d1d24bad40e4c48,0f5bd26cba164800a6a3f70e43f0d1af005b89c9,3f26551c42857ba03739f2e0d89fa1dfc64979bb
a83f5749debb1409e18f0ef92b2e81bc9d0adba2,33e25a3dfed57b58ba8576e846e63779e8d6c9a0,962c5bd727fe1930421e1897d0c8aaf6fba6a489
d2929586652740f02401d6c9f603cc1b2faa56f9,f78818e38727ccefbd1c3b1415d186ca67f34fd4,5a2d884fe3f3f556bec5ae3a74917d31c5ce896c
5bcc530707062fc715a4dab703848388d67efd7c,8a0fe7bc855ef5b4d17ee674c94bca42fa7719d9,d14c13fc7213b129d33f5ef83213c245ce85dd3f
f10fae66df3eac37f6e2b9808c48e0075921374f,0b5c8030e40ec3176d667a3bce0db00222b3a809,6c1c4a66e820f3f807edff51be7abbc357b661e8
a46261bc15ad93c953e8d116a2a7bb311a4fac0f,a13694988df7925be96e917c3952e82036d2653e,fc41306c4585c17e34d17a5f3618b59806152fdc
59ea39ce75fd1f8f5d3f9cb5afa264c3198d8a96,ffc5131087cc627c3ce957de0998d92518a3d958,fd4d6b8fc3f139bbb41eaa96d82055b25868ea4b
c200bf531176074e75a0d8efab36ad34886a3cd6,967b721e4ffa310891361e6947a40181e7288d2d,429454c8f48b197db4f8d25fb382cbc074f23e38
698b5de389b0342acb28bc6f753b79aa1b922933,eea8f3277211a2df7cc299dacd03cf600dcd48b5,e45d8578e8d8c5ee425f5efc31439f54ffd02ceb
2563cb6daa45b7b4ff2034f3c383a5c080c5f756,8cb92fd49a8f89d830850e3f775550342ccb1a8e,e8c3f5d6b0a19348358d039c2f975c920b39b26e
905f0b1f7819d50eaa2a0cc0e4c9da7e491d6847,12796d176d278f11843fde6abbd0935c21eba2da,455f603c8c6614f10993047e3c047fb8df3d3f2e
3c3120845af13d067111b13bcdae08ce00247333,92592be8e43db53a29b9f12d49efa317fefe844e,bb0155141ad1afa1869f503b585f9d29fc5bca6f
b97570c8b3b0e1c0f3b5d6c337b026686d5d8a68,ab0d7697c3038537c983dbedd52046fe27022d70,3e760b33c736290988741ce7354824cab306e952
781da5e60d334d6f59cfe97a511660b353bd5ddc,69d5d648a9630a85a0ba9dbe0f79345152294112,671c674d6513502c0bb5bc477d83d4ee5615738b
a0c0a8fa8c1b8d9ab6113eaa6ab6705b2b071df1,01d6358f93faadd4ec8f61c1146d6a5178792580,78af12b58483e701da0097898e26335382e4dcb4
cc8f8dbde854bd3e6ae8663949660924817bb44b,8ae1b6eace7813158e0846dc6edf1c79216aeea1,5abfe21f39cf60800c77ee5f22198d94e8341054
a3666aa8c96c198b294bd794cb1fbc6eed2c28dd,f56aa9abe79fff9dd5f36e5f092aa2629dd1c6fc,72a49b68cef4c213f089c79fc1d47b2874ba146a
27675967f85208af3308f342a4e2ca0d0a8dc0a9,4ef2a889464dcf5b05569da5ef97cc883a4a6938,050519f16fb7f00d857776249fbceab350196b04
7e53fecd092c55b7675af5e6bf5dfafbe9e74da0,fcb646bc3bae2cd53070cd608bf281b1da534271,e924dd0d16c13c27bfee35e98376e05bcb887415
6d1df899e61fc69117a2e061b17cfe241d2637f1,dbb6f95ea74a7d510502818c38e9dabbe8784448,cbf444bbbe699581354288d36b27c43ffcb47c17
a5d1ce26a00d1196bea7292c828caa5fb8a93f27,12496a638b4c5b1ec45b5435c8db03ea34e851f1,8295173f8665ba60a3b6df56581b280b448cf6f4
8c57d20abc119d71c86bf24088623dbced3565b7,3e984294181d96a590a814476616c1d3e365f458,2805e44ccb58b9c8a31864c6ccedccbcd024487c
2d2906205bbbdcc4769ea5587625deb9fa30c83f,ad8ed4b48d60ec8becdf5609d9b1a63cfbd1efdd,5066a7eb2464ad8d4a9d10bcbb8c848c66c63e78
217b3ea3cc200030e22b40831a479d5073bb299b,25af28de1ea5118b84464baeaaeedf1518ae0218,4e4910cb8409adc60bcb4e02d907d75203785a15
67cbb7032e1025996309689fc2fb3687c48b64af,4ebf857ffcf8997a3d5efca9c4f2ae2954d49b09,6e7e6326822490236e1c46895221212bd1840366
83f2f7bf375bd50366d8ae859ae88fcdc8ad795d,acdb65c2a33517d623d8468388f323969a49d946,bf5048cb5e9655558802a7f369fee009d33b57e7
238d09d875d38d19c2ff77a12a8b463ed4a524a8,bd6bbb6cf4fd0ba52c1447dff58a26dfd98579b9,ea401ccc826b13e56965ea4dbc0b79b8a01bb7f2
392ca81c20b781db7c33eba2b8609f71ce90ab15,efd58317428d3407d7ac5b5986f9674698a4de70,2d1ebe4cb3087935ef30467d6d71ca74cb8967da
07461d0fc3a36fd6071aaa9bd13f2d651ae0a74d,c881d057937f8146701634e884a44f58e29d24c4,abf831c430aff63659113e53150debbd0bc8724f
79f60923bad6ba4e0dec027eacf66a892375fae8,e77bf0f3bd38071b6b635750896b1e27e6d09c40,15b2f9a7b1482ab9b1abb457066d494f1e18b57b
2940d0f45f41fd70107d2660a5059f4682833fb4,346b57e238953710adbf9b576cba46a5f2e33817,1c8579da2e401ee0dfb54bcbd170130c0a653659
99c84da071bf59d35e0e0ec85f83dc0a2bde7bef,2102fbdc97e9cdcdb56bb5e549018454197351c8,db843287a2d21b94049af809161a9dab8884331c
bc76487b878e59133ce3c2cc19ebb13f9a9826ea,77b898fe45cecf6a52176dcdb86ce0f63b9a8f57,d37117c460f1cb65e6d750d9085f628a0dcec562
0bb781c92876ed29bb962e9129a4f9f1c14df412,6fb4b9b7dd751e41d7ef808c31a33e7810169c24,10db5ea5dc0093161900a4fc88d2905735c3d95f
a1c8e92904f3504fe6c3a7140134b910aadc04d9,8226233aa3f6265e9c29b120493fd1fff3e6b5ee,812732cb6ad97a11c9aa8f2b0767f8dda2dd29e5
5ad2d47e236b80d0d091667a665c6a4da736c1f6,2bce4d36db45ada7533f2e6d3d42d84d5b58b711,e85aff2b967839b9597ed00d613c268d1a6ccf50
7b3154911931d4b92c619c207e37194057c00b68,b46c010f82aae51435dda77ca93d91b1401b0203,e0ad427b6c83a334362f42f8d1d3782963f76fa3
82b6450f198b15bd2823554d47a275eb836c9933,b463f2a141166cc739f27e5c93c9274db683ad2d,ec0bdfbdd9235119d210efaf7243b0ce2c9decff
f701d2f29498bb4766d814265995bad14c68ad13,cdf1ceca765df8b62d4888981cc27f023978c39d,21fd8cd5d3f98ecdd2847aa3bb43cce64af8f7b9
c9fd115ec575728f9a8b3966b5de73f1477ea549,73bc8edef3ad66e208cfb30fd0df3e13f3b9fbdf,91f0f1a86c293dbf972ed684ff196244f5292af4
0c3e179652842f9f65b810ff64447aefaa9d76f4,3836b0be04762387513cd7f6b95246cd5fc5e295,99e449eaa1b34d4d45df59600ea65cd8c82b2e7f
bfe3afbc62ae65e79ffac64f12a2ce2e884388d2,93b3315691f3e89843c8c16edb9c0b22226a51d7,f2abce7ea58decf10255bdfea14740578068dd4a
ef738f01cf32f00fdd58c7687dca7581fd54126b,0e647a073e5978f2e6aefafc0b034b187dbffce7,7ce1a7c6a0722dcfb6db9f2c2c3a0a54e4a5fc8d
6e7f0744ca11202c2defc6c7dfdd5863245612c8,99dbbcadcd19d4babe656949c20a5c643dd22a70,6e6c946e0fd1765f99110e12c79db27a400c6587
95243ed6ede742a891297e91d687bf510c9f31e0,f42817d1a2d3a3efa595c90d58aa82aa57f77cc8,8822be8a1f1c1b6affca58be1bf337be4c345bb1
d84a7d1bdedae4f5bdb31c406c4f052ff728aaab,f6b4a54f7d2de15793e3da1a477d1ef274f31cb4,835bc62e2a8aa887170510ecc2ebdadee27bb4e7
91d8009b531b61d41604406e3a6a94e92f1b9c41,5446d53156de14483d6210297a99a934ebc5909c,1f19b113983906e1cbffd428eba4488e78b4cdeb
abd494624bf2e722938b14f2eb01ba91f4227799,4d571a19282490972e9434ec4059cf6a01fced72,2e5b895d70f68daaafe52ecee8a66736b055decf
c6a549eb487f3bb5b0578a56f08db35559764b0d,188a21bbfdbbd2c5c0a2b6a8232bf5da9f6ffb90,968e23546c6614cff0607478721e181800ac38b4
baf5ff4e05987a027d8912aa231ecd3c79147dd1,4fc763ac5033ae56e908ee263d538950f71e544d,9aefda1e6a34940880f930df300985aa542e49d8
d2726c240648a1db264cab515969672355746c97,02745b0b83f9ea4e1fc98a44f753d513dfebfe62,177b38dfe9423dd714a99e9fc34abaa7f032df66
b5c7997c88f39c0803a8a5f48188848843f9cc6d,c1d8e32eaedd102759c3b5132228aaf493026b8d,39164ad732ea12af79ecf267172146569297aa1a
cc5ee6b868935bbc3fe22c349b9c312029d88523,6dcb2dffab14d9f212fc23994480ccd858cd1476,4b39f7dea0383c96f62f381ab46f866bd8e2270f
026d23632aa3343756ebf454d4d0961048d34fcc,85207e94f8e4a1904a67ba2a3be06f7b69ef146c,2e3e3edb5fb5b137c79875e5f018e456fdd8c664
3258937d97b8ca6a4ea6b6556fe46664da9d65fa,cc2fa67dfa475710c57c4b3b73631a0f3a959e3f,c450b63f1ccd696c8034142a985222d3f01895f4
020a58b0750902e161a29bb1f8218052ddcd2d54,c1eeb8beda0df3f74741677df85259e86b0a789f,6f88919f3775a94c3df98f6b3d2c03f885202e03
77ca8ba16d0a5ab9aa1b261b4d1b44c94a1aa2b3,0a383d8c0f50bf3ed3333dd57f295864fca02cae,5adec3ca98120bc2c4110ebe354dfc50d7095ebe
be90ad1672cec33b15f8faa09715190f6279e75f,799cd957e625400427836e7309748bbba32e2d72,41db71c21c1c00dc83de8113ad0b35f5250ca2e0
3fb0fab410ac4c791227d74c1bbd8ceb45f653b8,b00c0e44a596bdf167ded7900b3ba71ea903591f,890b899842b741f54f5191ff369c8a97a89ac845
2e8c99947a978f8614d4075b1ee0d9caac4945aa,190c77e8633d185d983e3e59d62443bd443bb807,ab01b0ebd72c646b66a6bb3fd55ed717b9852541
494dac5db57f60073f2d538f66b6570b9fd05beb,2577180b935364b1a84ee8d38f8f6a42c0b812b0,1011c31a80e0ea9e67497b335a8293a49cbdecb7
9a85ac204ce5e0996478c0c4ede0138ab5ecab15,3989a01968ddee76110556f2cb2390da751b9694,c745ae4836a0f19a1733347f208d263d1a5829e5
7778d20003ab3b62779243cfde33bd0b129bb61f,01a449c807e4ad9a4142977ee86b16d6461ad256,1e136b0cc7ff37f900adcb91b2783962cf9d7622
5124ab2521defb4623b6866e4d5c36726ab74608,30b503abc4e628dc3c2299595ee76dba48d308fc,6599f1d898003773f70c24898419f4bf6bef78ee
d02921d66b14ea499ef783a834388be1322620ff,5be1bfeecad2af3cc4acad908fa649849a231bf7,7afb665c92e9e1787c518c1fbd6d205476b36d04
7ce19c1ad78a75d84765790f077f228b448129de,a5dcd1c44ddeac28ca8fda44f6d60e3b179266e4,464b3ebbed39dd87480513372caadb5214fb1e3e
f7b1ec24352fc4eb77adb23ec70fa47388734c75,a01a6021409f83d80ec80d95e73a66912d7d1211,c0cec218d64e082c373a6f973d4cf2f5798f84fa
bab60d819ffdd3c7fa6081634ebf89ee130cc61e,d9eb8d75b9f6005cc36f66da635c46f3d4aad250,7110d1e48e8fe40a95738cb993cb06fdf535afaa
cf7ad98dbfcaf699983d813452a0a5dabe68818c,023f08d54bef139841faaf7c954732498e139277,674ed4069a2fdf69362353707cbfa08fa222d998
ddbdc529b1e3d99244e2d0cedcb20195c0fb55e7,99ab6bd56d4d60aa3cf5ec2680514a143da4dd1b,04a41fa5b08de0a837f11af30cfe9091c36a2830
fab4ca449bb6ba351500c5443a3e9c0567ba19eb,387c80cc57b691c887303cc224ee01dd46684a0d,3c58f26e83b91e2d79e894b03403d469073c7113
074ce9c50fa5d97afd1ebff5720ece287f767f6e,e19fcd2b8b826c69b9ca97ab19eb9d9b49a4cf16,91cf1774dd59376434dde4581f8eaad74696aa0a
d134fc1ddfb6158945bc1751e0d2df1657f89a64,7533496505e52d2df2fa7bb3291c23adb91046c7,e078408dcf76a282a7336afeb5476c75779817cd
d45915b6ba0f99a70c51243377471bd834a5f541,d5867793f6d16bde39e0e209a11741ba8d8b0388,ec40db3da7ab1d8143b4276518416aa2816d792e
4752230c8f5f5f51774b90e52ceec3a142b3f62d,b93998c17c7b2eb81e13fbb93bc987f0258a645c,6bf4c7a68d2491971350170e80414a07e11ab4f5
7388735b11726d1263de7058d7492d9f87f9bcb4,b4bf371b34b19d4505b8a330a1b9250047a4b8ca,344da9597f1dc072a634820a9431146d0b7c60f7
8f68988aefeec865263dfecb29140de582470949,6c7e6191f64ac8cea36e963028c190263d8a2ea9,bff09e8e9e2f6e09d351387fd22b1849c5975ce8
fd28cc0db04b00612387baba33f30f8e0dc3825c,d502bccc1b03094d5260f1494baf49387f674273,bae50d80d246622a958d57c8dc70c3eff91b1b53
a925522ead1e0ccdbd0c77c57e2ccc147b61dc67,85ebd2c94c5fdad806ea96a1cdc3ff3400692dab,a4672fbd1c097752430017fbe84a26d702e43e83
cc3cbbb7b96d75e816f38a83abcbb08b9fd8843d,a41e991a130a43f368a6cd1054fca2d38e417620,0d6b5338d0541b6a844d1d832b09b7709fe2948b
a62c7555d78f049c711cfd594455f73fa04b6620,64db584eefebcc5e5faeb287a9d10977adb4a886,2c180cf101b6a49c1f8bdf462cd7b4e729600ad8
07413be8b569f000a158c290fa856365557c3dd3,25ac1380921c96b933673c8ec9f3e10da66f47d5,13c344a3a078430d212f2f523822c5810157a3d8
d7755a56f6fe705c8edfb955e0f071ac55ea5865,60d350f06788a6da9c2054f2dc2083066d9b10b7,a0e7882692432d6487acf60ae54218335f709233
27df4e98d2f1bf8e64b6037edd8d4643bd764809,aa4070ca8a2c27b818269b42c7470e5b7b03ddad,62846f54adbc08323ce660fbba6b33e1e0275d07
0bbc5a75280fa0ad0ee39e046dedd9d6d97ab90e,305393a9c11b8768a2aaa89ca8f1ff0e852ed94b,977b2f2a4bf7bda09554b034f2112d761d680517
09e61201d221bf098a42d5f994592f7df51a203f,14f361e13f82eceabe67317ba5e243d404419233,4c89eaa6cf12074ffed3b01cdcf30a6aa507aafd
05c6937fd9dd592eb643bc94d1e16c1f95dc6e82,c8d5bd77a31e088d4f5345a8294a27a75b3bf6c7,2a93340bcc22c2f6c45c22569b10a6d81ddadc56
8f95c14827ec62cfe7435e485825dff98b72a8f4,38075ac30c61c95b9371b07312eede596bf0bd22,94d8c22c6ac229faf084188fe25bc04966a47d7a
068f781c7a21335ae04ed8e63a5c18f1a841280e,ca9384fd6c265aa76a9ef59229b3746153e6114a,00d5bb5bbc52baad3f2e268c2d51ceba4b266b04
fe903f2ae413631591528c2ea9b33fcc05eac4e3,4dc0c37678ca9102dc0de687cf27963124bf9bdf,aafb471bc880fc20a9b73cf0d60f109163793794
1e5ecccdc663ca646632cbd46a1fe5905cba99ab,809277d2b15b2c4e713cf7fc81d284429e935c2b,7f7c5785fc77b0e697c15c69be56ba7c84bf2fc9
00aa7b8ab3843aa3d5521ffc1f15cd01c4814685,4e605fb7643902e82de03ef4b43aaa166c30a42f,ca242e9ad0e3ba047fcca8cc95fb8e41599d2d0b
c4d7773c0ed87047041bbf32d8773b70b75709aa,a55980bfb85a47c711b31f6ca6ccf3ad74c66d94,099a92733113b683be425b3400f744394ae2897d
00d4a6889dd2f79981ebaef3f839be5354d2933c,0934df505cdf94d24ff93dcd6c23eefac8799795,f20de5d583cb86f6ec3bf856716fc85ab9ce4a95
44f862fb4eac9ff7383bc57dbd18b87ea314defc,34587a647f791f29c0ac26fec13059e516507c40,236e10d03aab15949f7c2114ddc39b63cf2ea364
66b7ed45fd0f260e2d9d9c00b844e27b7b8b3191,6cb24a392959e10186cb0bdc9347ef78ecc53882,321764bdd93a675343fa0045ec22a1c2d62639c3
ee387f7c66f418a23f78a0b6ceb162bec71a5d1b,3511b8097269e7622ef97c9a6da7f0db8a948888,df92d88f39a81ef2ec20499ea82cfdee6df04df6
b91fc3a0d3409b39e20bf0e0120ec8c072bc410a,dcae87bd5267914c8be0b57481f355a3eb700f3a,0da5d57c1e54cafdfa4f2233a17e4d17dd5ff694
21d843128d02fffcb8126811c16846420d570c32,d55b2c2a35d9a30f4928cab612f02d70e2704fb9,5c75ef30ce78ba8dcf467f65ee6118e7dfe87a09
99d04fb5b4df12fab061bb445dcac84ca2b1538f,4012c3dbd47f661805bb7a831c6c687807ede3b4,ea6529ff63225e13baa4e1fd2c193b84d1432048
ee10850a5793b69b19dc82b9c28342bdd0018f2e,08050086b950a6bdb5a04f6054d58a497f45d7a4,bdc826cc18a03a833735853c0c91268c992e8592
6cfee2f5d5cb602c9a3a199d943fac48be683629,b8102dcdc0e24bd7f7488ad731e330828ce32939,d4e610dbc3a75859ce53654f88ea97e4e3fdb8b9
7e73e0dd2314527e9b9a79e51fdd5727e6efdad8,c6168327925ff1bc96f06fe9df952b147bf2b8de,b2a0df0d10aa701c4e21d215c42fb78cfdf96f62
de3ab7e46b6c7f50723da61aa992b04145cb2472,78c4585b535666f6c2f99af64dcae76c5bbc1f30,6cd88575c63e91afaf914f9ff9a1c67e60c4408a
0ead28c1e05b6eaaf53455be86d8cb3dfc97c669,090cc8fa8f7e60f2bb0fa6fa6d21d17509f39564,8e730d20db57219db3aa63bb97301a0a1591d1f1
8c39213d39eca0bfe89168734159f86bebbcbb4a,6921b968f1cdba59d2403a81c2950336ec2839af,e1698a59691361696e8ba2db1914f70b9d195762
01dc62b1275ca935ab65e856495faf3300f6dc62,b876a02daf2e8ea67b4b6a3aad8a3a96a6445e0d,0662a0bd44c557d338e577cc29065db54b57f202
b3a9c36cbb77bcd8079505ee9f16b68a09307ed5,dc9090e67f48c7e23f7701e46427169be78d03e3,1ce2fb8a4acaeee52446e881f0da0d0540097b2f
1e80ae406d66ba18ff5271d413c72f48f0f698ea,3ceddfb2d682a6440d36ee15fc4d2ebdd599cf46,9f077d4ac04479b4bc3e46a3eb8465d1916df5df
703ae75ba6a9d8d1c39e81e319e72a4fd19ef702,20ae686e31f47256d657a3bb2b79751a98deb38a,bb3095866549b503f6419b773fa2e65c0b88f320
0aecf4d89f40156e602576f251d2ec7b3a442a73,2fa60d1af3e3af9a2c39fd1dc6a0360310967900,03513720a3bab8b168cbb9707417c915d9654608
c96e20378024002d340434835ac2cf912c8ebe90,4e3a6aa5a812fbd1aee6394f98cc4c2425032735,e018264ad93c77e2855f144d004c26873d2f772f
4546673a33b7f31056a5cde492b080b8dd56435e,a4a469ae3786be89f66b7ea635fbc6f3d398ced5,afa1a549acfdfed6768edaa710258230b70e497c
5a0956d8050eb4f3f54ba0d8b9fad41fea3a09c3,203b5e636fc2da4d2c71d9688add1f07f7835b00,4c544d7858f5e74727a4ff57dae7e5426ac73ce6
3eefff75dfcd1b9429b4efaf2902b9cbda3db38b,7baf2461f06eb90429c07950459801e93d286b05,2ee6a81cffbb95c32c08e5b8474bb05d6658d69a
429438fbb9ed8127d3129ad0bfdec8081afbd05d,f4580ff612b2e24eccac30c99a709019ef4dd457,470e77a5725fdb0eeffa9475a14937779dce364c
d2a091ef8522bc99a779f3de26e2c6f1e2065061,6fe647ee3dd194e7ccbf230782da0c42134245be,1b6219823b8403beea600fcdcba775312aacef67
342803532de444c5c0710e625bcc2b884193fc51,3094f756903a6c06ff7786a1fa972ff6a61de457,12a2c56461dd689b24756292d4f069e8e24690d8
d0fdda6da718e26af14c17fc9d7d0fd3d5bd9fab,7997f884b70454fcb9067aec884b947b1d6e7759,7bef4d827d905fc57ed773c2aa70f157a573e225
7f1050464a60977ad6261a108e4e839bea8fa8a3,4610980f2e9ac4269074d2d0613290ab78c50bbd,10fcae34a957e94837fe376fa828815ab99d80a3
5c7974fceb768f96853b4abc05cb122ac8ccfd0c,4b157a14988b5f0637e61b5555ca6e420e896b99,b58fdc3e584854a4c4fc02bd7fc23f378263d25a
c9d9d42f0e3cb3d413bb755b7ec11d99e5446ee0,42eb06f5c660df09a392d99fb41166ffc614e0bc,95ad8f1694dd0efd0774767b0a08b79dd53130d4
76e6beb9298e48f7dd218101f3538f8fd539c420,284317d877bb10d11ffe8f6f8d3cd34bd51ee837,c6723ed2c4acf1d0dd7f4593a65e6d2ae0e5a103
fb7cdbefb3f14cd66a4960bbeded3e6a739a95f5,e657aa64317a385a5c6fb52bf6c752e883220eb9,ff3acfb8cda7f6a077dfc585cbe9acb0d8e34418
fa4e52857646bf1d45bef26d42e9efe75e84cdfe,5a617cd1082e80008559a012673db2eecb6304bf,4426d0da7abffba27f125112a1484e3c9449761a
15865e760244be485772a53a6eaa09f80e5ca8ee,fcdbb31ec4f057f1eb169a1214f6c50a0ad5a90c,1b8170d18dde78045d7269bfd58fb537b59dcabf
c4a1cdceaebf8d01151fc20ae3e3a053180db9e7,89d27751911d6904fbbb10660a0194c43522fc8d,dcb1fcd9b81d364660b9ca5906e7b2f5e0fe688f
d0cc6494280732f5be8ccfaecbafb2b6b7fb0f87,d96600a02d1dd4ee53ffe9bd4efc718f906e80d1,b78761efd30a814d055d78078c3f9d0422ef6291
5b32c81befccea3ba64fc012e3e4216bb875dc17,7e4753bebd600951a76838f3e7c08f17d0e65505,e0a78c2485bbcce7fb5972b2c7ab7fb6263674c0
82cbaa0dc5daaa7b2db18d96c8ade5db06bb0a28,14d589955acc5cb7e241c64130021414ab38675a,10d9918596dfbac73b84c4cf567ee14caa6ef546
2240c690784bc6117f8d602c9eedfb23d0d8846c,44051b4af33b097a1069a0702108fc4799864c84,4dd01de381d056c627f71124c5b6dac6297d7837
3271d1aac712184001956ddb2c0f1b157b7c1107,1023a6ff6b975a44dd4b8b4ad536160e16646032,b760863046f7d2f921c8a9144c94374863a806da
9feafc7bd73705fea94842a34ef704192350fe01,9423d5e390b94f34046ee030b5712e466950640e,716e8c8e8975337c2f40122becd0b596b3461586
8e5c2467e29e86222877085a43575f04ac1204df,c1d43df4a1e58702a57452499fc00898a1e421d6,f570b6cb7bb10b90a7eba22de9d4d10a09e83703
c917639b91bd8d0d784a0f84e6dc3c3789ff8520,492d75483d05af525822561fc8232c52748a24b0,7fcbd1d7e0a24bbe476d5ec4e67c458b742190b1
d708bef92f5353e010bb13857469c55e671a6e05,67e7dc019453212065181dc5d80c92c11e14d603,292be9029e729b03f4f6f2ac415d43ac90fdc03a
8e7791ac232d88f298bd3a5ed3c6cd511c48ce5e,e4ee8fa6a2b6fbebf8723712c63d9e0504d1396e,03ce23246f11b42ac3739f91e2f2433c66ef25f0
1b06599e8224da182c91896475658796826a03bf,687ab895c7e21ac4997fda7ba96f33d587f2b621,550d0481b343effe45626780f047ed090a88bb11
52cc8df0797f3411e29b6480e5d9f29185c5c826,9f60628e5b8283cdfce7e9f6feb7055eb4b52a22,5289aab4f2bff99cbc0cfac2d3993a7fce68252d
dc161e519f1641a8c44f289387ab2880d18e6c7b,54f2308d2aeca1b90a4ae98a94ab044149c167d0,802f24dfbdcba129c833416f1ac273277637674c
f4da53344019331a799d2d5ad0890646421fe99b,5db20610dd8dabee146efd6703a62c2d15bc641b,4820ec07468d58a7809e5f591a9c39bb8381c514
56ab4107059e7220b437bb205174d5626f4b82d8,feb5bde09cf9cc79e26b01080ec9400eef03f600,e86d3af7e0036346c5f189dfc8c49138181f6d6a
655a5f526cd9697d5874e85727adae18e89040a8,565168093009a3403e9dd2d42edbbe6ca15a125e,65a570b77278f47ffe788a1ab1c5aeb86a4e9797
a58567004b907ab6841dfc7d47d9dfea7e824df1,cd6bc9aeb7642f5430b0a3aaf49143a6e1c41041,e994bacbba097fa4cf38f59e9772c7b9b5ccbaed
64c21bb88be2d7b5a7dec56aafe2a896fa1011db,2dc0995067a410daecf4b6cd8744823c1f876d19,b06f2c4a74848b5465f45b4e35bca6b33448ae16
0327a4a04ec16d2d8bafb50d6ddb3c5ce93ce0d3,3ce6c478ccdbd58c04daa6a07a721ae1faebce2c,29ea731b2f7b4140806b37a7b0ef7f1bf2cfaa0b
6404478ea444cda85cdf7f8784efba0ed6669ebe,55d5b11deb804401988e60e1e9163de36a5f8fc1,75b911ce68c27c90d91b7a8796e936ec7ba0a947
ab809fa93cdf48281c334969058abd9001412fce,da0260262d80c4a4c3ee0c854bf1009247b36946,14f62b06d2d4633db5927eeb69bc2c7d74cf6864
f1cb5e678cb86be0ffa57a4336cf9d3f58a7d408,92978caa2f0b1bf84a1c49b20398f721aeabc76c,d3000c617448042b67ed6984a81e77946a8ece1f
67f3a7502d0f1100046abd87c5df2565b8d945b8,78336d2cbacb12bcf3518cb0ea7968e5d697f26c,b733e21fd1055e821b9d9fee644e54c917be440f
b0459a19f48ea41596fd1f0ca61afa1f7598d5d7,fad6b0e4896cc1bcb805051237a9ca6557322b60,1ebc0350d3b4ebcaf8b5f9d45c18196cadb7c4b4
5c9de7edd77ab687a891a62315ecb193295492b7,65ef6f1f3726680eaecc2ae24a2da30ee249c54a,5bddb3a435103997b2ae5b7f6f75a4de994ec571
7d1b7eda0e3e51b49449f96f8d77c26378afb291,c9ee52a8f59bb5b870ffdc1563a95dc71dbc8a67,271ba59cf1c1780d8c0b120dff107c42bcfe1e02
dabc59977d06fb86974e0cef52cf88109858b5e9,b3fb6a0ec0569c655d9c31759b955dc16d7a9f68,bf5f37b14a4b92e9c441cc5bc2cd9924d3cbfb7b
e132ae2feed6ac06daf9e22f48b735841691188e,e1a739d15d6e344727b196890e8afb0b0bd235ea,ab0079434302d85260bf18c420611bd1227aab1a
f66dd54bc277618feb9cf38d81b2651a4f10db61,5c55f1a16ee0c41f8f657f5a706bcb3bfc8a8f2c,4f711a8b2c534fa786922acd8453c49b40bc1768
b0c0309cc1c1dccfd11acd3284b2168d6720892a,793c157a9c69201caf0dca17b64b55ec06e34ed2,222a41be7b5d3eba617c8f0530064911fff84cd8
40196f4a437626044a4a40baf9bedacb3fc984e4,65101b36dca4a4b8019f2c47944ec81e3988daae,60623f39a1917afa3a03a44c7a8b66d6fcfa4f7f
0f1c4b4db8bae6fe397c14d06ac2d2e0795265c2,89aeedac1ec47570922fe219664c3374e93aeb8a,0508f643c0e86479f2e4d49464c0e0a97699bb84
da899df6b2bbb980a2d047b542eee3bff03f4fa9,487721dea8c100d7481012dcc01f6cbeb4ea5bb8,e65b822a0c2a0d0dbe11ae3766dc9876accdbf28
0b3fb55c6a8e75e869ed29cc1ad09189325f82df,f02b7508de42be8a2768036727447cb16106af0c,4825d2d16c2af3d3658e12637fb9fbed32f86491
49af134ba7e2b99153d51eadc8a190bea19f8530,2636966e2aaf9c8ee23b4c7b7c65dba0bcefc2a2,69bfff046ac882c75b94b0c03c233f5d81fcbba8
53e5a4a03a6f802a5ee2217d326eb4f5af87bc5c,d9eae2c2c593f27253aeaea98b12199929d9db3e,01e5f4855a596496921e45f3b098f86285097d4c
d255ffba8ba16c21a006d7ed9710ff095c3d30a5,fa9d77e67ee7235fb02b3a6c7576eee573fbc332,9af13b273178cee02d56d05ac24d16e707b7193a
5b4c104aafdacafe36495a89c4d0e3a8be62fa9d,d083cc7247bbc6895eded5624933114d1e90c50c,56c1e1a5f2e59a7fe53ca8d02a8f4ac34856b0af
d71346aa37828cd36ebfbee342e9fdc04f7bc11e,72661fd5c106a5bc1e689eef63ba7636a01d7d24,2cf68f6dbfa1bdffa4bb40e9c34f67389d12b492
5921fa9a6285f501df028a8fb4e1d10bda5653b8,59fca3a01de11a06d304d72b74df611a4e046495,7b2cd0bcdc450b6c117ace262f4cd9d82e471a5e
e9acd759a4aa88a8ad1ff97a574f108eb7deef33,f60523a3b92a98ab693a37d3acf2a84dd0d321e2,567409379f3af31904f0a0ba408d8d178bcd34f3
c123739af0ed517c9c99e6c8e72df83842595f58,453f45fa1f7e9396b416f9deca2904383a49292e,7a15312b54869784baf92d15a459691fd6c8c419
06da0b3db6563ae317dfc108fe2425ca8b3736be,42c429bf450ea9f674192c0a0f4faabc5a0b9e12,2208b55f767117cfc5a32df3f81c44e8001e7624
fc1ed782322d8e21a8624d5ce57ea5a42ebe84cd,5dcdfeb1260176b94ee89e1e1d0d1e77bc7b811b,be448e29f63fd5d5d2b4320f24bde4ec197ca895
f7239e03e7c4e21aea30ef17393a5303dd5d5ac8,492210fdc73d4681d05fb59619f77efb53bf6086,d5b368988f34e631d2e065971713690fb691ebf3
c6874df5c8ffcb6ad97096e63b63afe12e86b08d,2b9ec05963d7f0834cc64df4a2cf3eb724790fca,b4bd15a5c07ae81b0a7f7906bf61c3c6e6180751
77b9d62520dbc4cce3751fbdabfff0ca73aa90e9,2a50d5abf82d4806129fe9b6475a090dc9204534,e443936e12822b1466e9f0ead1e464742412202e
03b3f00a0b62488697aab90a5fe362b3053ffc59,36eea0c819c51d0424648fcb50b4f6ee52702016,4c6cbfe03edaced0be3e1477f48f6d7b927ba858
159201d054f5564d7843a9943712c8669a59b7c7,fd29f25bf1678ba50adb3c8af2717b6782d03b8b,87a785daa07a0375d3271102dadf105aec8e7d43
b00fdb72059306064217faf72a99cd3e315515ab,a16449c54e344c4cbcb7a87cfa3653e417aa0b3a,e6fe075a425b2463204fb4593e2b90b00fe392c2
bd777877124f84665d133944b585e1708b7c7c29,ebd7bb7cb9179937428809e2337f79153ab5bcdb,6147d6d8a02903b1a11d36424dd53b229aacee6d
b4c8c1da12f2aa006862bb1212ae540521604ca1,8609c0803e592a3e9cf2ab9c2fbf567fdbc750ab,6dbe71cd3000e8d396fe2a05e8e2f74d0c012f81
ab969e0a9b19820e57fedc21d18e0e1335e74949,1da7ce46de3829225c6c50d831656e46109ec7d7,683a92bcc8d791f4f23fde8205229b382dd8fec8
f289f2694ab837b414aa131a0514c56fee4950bc,bc46d8f33a4caacf63a81a8b4bba8afa0ed4ab5c,f9567ff50e62cc7487455323ca5331745f270dd9
322d91758cf08e72cb41949a60a383e7dab69620,f1059679a17d87904455790fe16110cd51c1692f,caaed25f182e46f839ce4af7756f82bace100942
bf37616514079e814312ee72de65262d2b869194,e95572921a85a84f64ce4864544d549ad0ef5b50,00f4aeb39b84e5a291310697064904d10e6d0313
f74a6abccfb416d7235a46258d28001320ff306e,cafd708b6d862776b7454e1b229f3134ccde5009,22cd8d5d62ca165e36c6fe39c9054d18322e51f5
5264e48d90a97e2dcfc5410410d60c1ecc14a824,cc7c328a7cf5b236e53c26b6b517fee0006f45a1,4fe5e53fcc6236fa44441dcba69cc2d274febd3c
9894fe8082531f80de22c5dab342104b800d789a,c0979bbc0cbc6497c29b608fba5565f81a7228c2,abc4a0a4e6ef0c0622bf155edba8c8394fdec95c
781b2d0a80db394bfcb6ad42d75549a32b360cb4,30166f8eb79bd6a0609cdea2fd91559bd0a7eec6,67a1d52806449c5fa249d2c2b6e84bec4c9f1c6f
d3de4b59512915d19f7f06dcdb3a836ad6816feb,5a8434234869887dae77479507af8bdc94c11cf0,b54068d1a457de5db08ca831f0edd5470c23fa71
c298c0e0dadb96a99040b766091784831dd9d6f1,1e37eef3d240ff422ad2f92ea9cab6ebdc8391c4,273a598be86b5bc65f23c36eae35e88356389a28
53a67b34b53bec3ca526da2ddd70c69488d69556,539f2cd7f095b616b6452f1fcc4aa3635d99fb57,6146aa6eb6d9ce9906aa14fc80cfb9446d74479d
1f41cd195fd8f3a73c3a3a5c17f62d51c720b3f6,c01c13c29aacf5e1475d1e3438bc4c699c1ab9a9,db39d1a4e4af8d543db22dbf85abc1c0e4dc522e
11d2960db868d02757ae8810018dc661db034fe6,d362d47e88aa2dddbcd35c371a92e5014cca5a02,8a63e7ee5a34f8dfe2f412fd218dbea3d3df9e73
27e9377a3a7b3b90457d79f4d7a9e65785fee186,08f3a3c8ef460fd5bb326c0b74f3fe16ab4dd7bc,98dd448ce849325373057ad5713f96edf7492bee
3608be8f13b3d90bd8bfbc2707ac485c9cfd4d99,50572fda8cdbe8ac3199ffbc22588dd7c7d0e372,cbc8aa63c83df4e16635b26e479c508229428e07
116c861af6c13f6d3d0d0d91b6dc4e0c1eb88550,8360b180972a70af23e57128fe54bc0e451b481e,b46f361d91683b19af2ba8ef60826e47b2643126
2be3978bb446ced6857ab18fe0cd186f6fafe217,7d4844919bdb8776c21da2822effe27873885eaa,baec255bbc8fc6eb7378c142148fa375398e35bc
12616f657973a62154454c10ddf1b1396b808ca1,036aea025d8f7852098fd49e4eef17de00fc6cf0,2f82a084e838f90ed5329f707ea98d7e9908ff82
2f23239ebd4719b743e8b7549e30639c9479faaf,fa7d3d845b8bc4fa7335ed3f5ef73b697c35a3ec,c944484e66a3c67e92ae1a87b2329f98ea73e65a
a18e75eaffb2bea2784a87bb957205510715fe81,dde8f54ee70849c6a179f126f085c6dcc5eff9eb,c9b988e146512169f283172b60cd97b278fcfcfb
25eab57a582a022f3336e052971fd56d9d3cbfd9,b6ba87bed489e5eedaf9cc7e84b938a5c700293d,e091d263c84890f64ca8353fa837c4fd7eb94c37
f590e65c7b45c8b5c559574decca3eec95b39c13,bb182470a563483803883b01f1a9b4ea3cd7d0fc,769aeaae03f9eae322270f5800bf409e73fbbd2e
d2447026de4165b06c574c99f54f6f646b897d88,2a8c2c4382222c3a7be8eaee74153ee40ca8c8fe,2a93e65511cc09cd0723e63fd74e88f693a1c140
86c097086a23476a6a7cf73d28bddee86039cb5c,4aebfe97a95cd9b3dfb331f1329854e37691ae0e,50a37d00e78c9b51b6eda868fd28baac87361d1f
b02b3b79b4312768194b5f7fbb7dc8b58e67765e,1c9280de560b65d02f03a4f1ee22df37a45084f9,3a1efb7c07537638c87911829871697b9a9b1e7a
2b7c28e41a496cb86ca5b59bdb64596c0bcb3fa0,3cf00af48df50812ef32e8bbb82eb57f5edfa61d,52ed79c7f3e943129171327dda6d651d83649a35
60a09b65f4d23ebc2a5315cc530cf271c2b3cc58,52549439fa4a7cdef77c214ddd7fbb107dfddf04,33cf86ff9f11e17c1e3dc78cd4fb503e2059193a
ea345f34aac81046f9865da1186024615e10a85d,73529f5266940b416f6c943e1c372e1a1454f034,045472a5e7e2535a449abf8f38e3888789db48dc
749c8110b6a41765f5548efa76e4565a9b7e29e7,9e710e298c5952cee4fae64d2408038cda4a1298,ebdb90b1a5788b56d4a0396cef9a0f83c40b04ab
8362ee0e5f818a1b5ddb2d0b090676d412ceb360,b2f46586bc891aeb335b4b8ddac048fa0d204cbd,c06a3f2ca3254b39718b1ea69653d231a0e8accb
abee4d46b668e5985ca49f3bcf5dc2b53e244f7f,15a5a62eb4a0cd3de7d8eabf394fd1fe93e4633e,e26b29888565c291d9d1bb80a99d02ff28aea1b3
fd54c958c945827151fcc66cf98f4ecf3cd70888,644263277fe49d9be901527f02d8aa0170c840a2,4ef8ae2a63551ec34ca2fc8a60be645e3cdd9810
0b2a58027c3171a3ba2962d472653e2f8839e1f2,5944631246cabaebdaab78e5ac36426b7e2ea51e,aa82a2e446bfe225d41400d5784a1092ca905754
a5811a35a91f955918edf249650b67fd7d8e3dad,e8bf3817021d50f76f41f4f1ce4aef34b422144b,3cfd40a4d38ed6e23b452abfa6ce982601a177e7
c83c89128a4d97154b2d23a01f82d354df5d435c,58e9d7c6477268f6e55629cbe45264631243644b,07d298d23b8216d64dedb129267a667272e49d22
de97010011d3658208c86c26a044af971add34f6,0bbfad1add6d76b4aad7bac9d6b2cb34b8f7fe1e,9c9c6cc81bcd2d99e54a7b040b1f80641ce49b9b
e5ac99a4c97b52c95b26829b6f62ec0029798e7c,bd226c00f16b778444c41673678b2ba6eb6e1000,e5df46722ef25585c66dc698943515ce95438283
acee4eb27ac492447d4dbde978f8989dcd292d54,89f9ebc7b7fed1af0347c9290bc8d657fab8ccb3,a8cf67d73b3a9421ec3089eae5c54e38e934161f
6e7a82440ef55b0e8d125e49b791ac8dd7ca43f9,bc4eb00a7a1d2c2050a8056d13abaf8656897bc0,f4e28ab357c786dc55efc9f9b3f5a4356f7d0629
326776c7fa47a36692b800a78966c66ba295ee38,2460ecb9d9918929c7b3b0e41367811072ab04fb,09b763c698a783efadecf81dbfffe6730d9fd2d0
9ee672f9eb8584c4d2de627aa131f6299711776f,4d33e5f137bce78e1d14a02cee370fd42e6adebe,d5a104f493227253eed8daa13f8b631366bfdccf
4966e9376477defcdf6f292a8ef84d2079c7ce41,11ac750e873d31738c2bb344e5e216192c8045e3,f3a0bdd23222cf281539ec545e4185b971e357a2
6a9b4a1b13b4e0585301037c6f26838216f43ebd,1d4c28fb35ffe12a16ae79c8e6cd3c4a85b38c7b,d29a482cd12ef50734121e4dc7e4c5938c1df5ae
4c296af05eccba74d3bd854b6248d56a8efeffdf,5a9021c14c39c376b2cf1967989482f0f6bdb4b0,1aed740440643b0fe4a0dfb28d26e2a6cf4aa88d
3b8b549eaa71dad42d2955dca6dbb787cd55cf7a,05072d0d82a707444a2847926525a0834d64cefd,38c06e64c742e269d7b9c01bba5344f12845c4e2
c3e94051a18038745302b04dd6e1a75fa5153574,307c284f6a4f6da41c302fa2ed54128de1a10176,f39a6a775587692103ec6ba1012007224d57c01e
544b58680e3afb95bcf6344daa775a431c1195cd,62f17711218c65e94e8814fde5ec8efcbc92009a,bb49c190afdd16da94cae4c6fdbc1e5ae4f8aa7f
b5e57a63f5caff23f6a6a6d6dc6d24c3b05d9a3b,6ac50f4100ee4c4e967dbd5754d338d4c7debe3a,088c746d45fadc744878771d586ecd42a1d75b31
9d95e6159ef7e9a88b50c751341e789db2e1033b,52e30aa332592c8a3b7afca3c98c9f6c63f4b581,985e8d3d13ae35a53b3353ffe79df261cb8e5680
8386906668afeebf9a06bfd723981b23bd049a28,6347c9d03cc141ac939d09df8d90a35b70e171ce,091e86082dd1043d26fc1be9d1607ed544bb3da0
fc3b635013d0fd8552b9ae59b092d3697f6a82c5,11b069fa615668224bcdd5824eb723faa11f4d9b,8e4e229a5fe9e8086d39bf36d23496794e29fe6f
d209d3ba846b9f8a5858efe1a261f793b30349e7,2d1ab3410dee76eece1a7e7b980f0b278fa19310,11d16be702862041c9793a389bbf5c9ce179bda8
986a6feb95287ae33f0acbb8854327f43c6227b7,894c49ca93d96aa0ca197bc6a2dde4d1c971a016,0634d5349d549e3af38d845d92b727504c752857
92771760b79fe0f30e67400b6e1f131287c621b7,bb91dadb009f9d8032f1b1ee4c065a0d144911c8,d6a26f2c28a494b068bd21664b84430c6375636b
9a90db79c30e3531034544d757d4f292617ea175,ec1766ac3f629c3c9fe09bc6895ffa36cc102915,55f010324835946394d88b02b5aa87755444b66e
e19b45a71baaac76980f3240e3384d9d73925b96,5f089afdfb3820d055e06e727859f38b0ed1f9b0,32d6cf7093c086fc3e963880860e62509f69d0bb
2f8750924f6da75b9842c1b2a4b97b522453d084,fbc65314b97740a39dac494cdd1fe238554a43a9,a7a0f47d9802eec87bd1154c5abdd4a5251dc5f4
eaeb6148874625b62b5bb6e8e75f802b88ea11d5,cdf676c9b5334642fc72a5f17928b8280cbe6038,76d3a9c4b5a20a226aad427a61c87e12595e0139
7de854ef1ec86310c67192a734cd1114ef03ad26,718709c87dfdd442dcd5326e374270abe6fd864b,f8aaab3cd732f7b4b3c8d80308c91c81abb81f41
a9d883ada1de38e0c6cabf8832952111ad56fca1,73287c35d20d3583840fa115519ca96baa659d5f,4640120dbd167ac8c800311e52f6694dd3c4307a
d76cfdd9138b731ec27601bf7589c8fd490ea968,c59b6a5d8dfa4a20eec23345839d116905de03f5,c062061d6d16782c0e0f53e3fc9f2ad4bda0b905
ec02d0abb083a556a5240c27b4baf8a7dc606cc6,22bbcf4b27a574dd3e8bf1978f10f35cacf71b57,b407b67ca1afef62a10c9bcd06539b480250d580
5738a6ccf12819d7a4a039ea70e80f69432e3b61,713074ded521ff2c1b781ebd6ff2aca83fda55d8,bd104270ae7683eaaa48c65a9d7833f4712dc9a0
02abad58d8836e80928e078ebccde151e1ea4b44,63d8282f8ffb56e35ec780e5b2d9a3e43ae1c82c,9b7f24841c7302b0bd35fba42f00e9409097e622
a362c93f73148b505d87feea9e8e3c7ade99178b,a6921fff7bd15a4635d0bffc5f17df08bdeaa6d7,a7a689ca1632ef7c8783ea884d5ad59863aa1fde
47825610b807e0b29022956ed8c6079f82080a37,69fff102af0e272918219f7e168dbc9f3df8c3a9,2e70bd7dcb7ede8d97c18582ce725597bb0507b4
2e8321e0fa8ade82c71aebe4ec31a1f52f742584,30b0d98636836e9d16557aa6879c81fa38ad7ed3,115f83794b8005274bdf149448f46bc4f42c531c
366aedc6d829bddee3b6063c56bf5244ecee74ab,d4e0a79d9e43686ec0584a87d57acff189f01d01,5ce96de0f2aa890496721b3462629ae99f3c2e64
1a8444087a70a0984f6e2f84efb16db0c235f1b7,042eb7e8c196b6a0c8f6016af9985b8b3062703b,7097a1030f0df9196a2b9d9142f5c1b6827522e4
2a7744df803e34ae64172be65946322b09748b6a,773babd45df4b829f8d4958afd8118a5ed1b9879,d93c7579deabaf1dc14abe1b90b91dd57621b16a
f8e04aad038cbdd8719cc7e72b850850c8983713,859ae5fc7c8d7fd43be1e1dc11284c455a176f90,9c20a033e0ba0c0cde2594a92d8f512252f50cc3
140fe74efb997300d4471495b05ad5c6e043ca35,40cf71c9a5a6d2e2c4ee5134fc347fda711201aa,88959bdda78e45058714616f15d3d625b3e5b570
c4f9ec91c92b9d018b24be606b1c7cf74460cd66,54efcc4bbb79d54d69395782ca00019b36e3cb4c,bb637fa389d846893ed8e5b4d2b1fd02b1382ab9
ca8a94e693ea963c2dfb4ad6efa9232068af508b,b3cbf07f27bd59c1988ff5055f82dd1f092d6f19,9739a88e119f4639eaf51b0eb07a04b3a28fb457
ed2dca9a9b6aa989265b355d597a23302144a818,a87b38f7530f472401ec5e77aec73d37ab1dd47e,6010ece53248848dff792ee6af912ebadccb1efd
1e90a4db3e9908fe0f06bafb801c967aa9c1c0c5,f12fcc9e065a6550617261dea1d9073cd4cea94b,29625c71126cf418d6f25f7e868b40e6e5a24c08
bef4da339abfd785ccded8821539ac0f8d946bfe,c9e8bfd118dd79985f4ee8f42cae590c5268ca12,a8b0e0ed65cf9b0be0e7a177dc23c1e816fb9004
ee2d313aa0785735289f0a8630e2818971782c96,9579759f01783e8596e647731970dc55bb436783,68cd1c39732449efc0e83adfc3d66dce80f1f9eb
2c0f10d9887b676545b05e06e2c29a07d74d8fae,60c967f255d4116c784810a1f8bdf45e8f7982ea,35db2b2da3732abc46140a1b930a877d7bbe4aa1
fd26453d5a802abadf17a5a3dc258e6bea4ac632,d5d97169163c83545fbb298b812a7f34d5b7ffe2,c92e290d679ac3d7b46b15b8f3a53fbf59284cd8
39f553496995104b1b674d48eead521243ce70f8,92082ab28f3f7d4a149cf3ca0b6a6190c50be29f,2391d317bce0425c6e553e551572e05246d46f81
4d5d1c8e10b295b6b428909d5fb37f9900d3cc9e,de58691e75b64891a12b106fcc243a79b63f15a6,62c24b375626ad02e6697107f4c69011c38d9b79
f21f7f0f506a66a8384c2300330e3235bbb68e20,52334737489c37e2e4a01ab62c982d838d64736c,b26463ed993e184d2e2dc2cd9059ca7a024552a4
e5472845882a4747c80ba6e0d7ceaff936c71484,181ee30174afabdb00c3d631ac4bda26c0c31135,5f27474465ebd72dcea3e8fb740fc07f3bcf53b3
bc6d8fbaf2551cbf752ecf2183c1368f359bbd39,c4ea01cf3d328f81311b2ae0118cf2c3944efe56,8bef91d1de212c03036d234ebd0ece80a11f1867
5cf15be434bdaf2cacca29270030a5fd0ca4012e,30a7199165e96728ee8ab899209fe83ed775454d,41d4e181ea3674581bf32633bdc90376513a145c
fecb72fea3fe979c2875c8a94cfcc7da6f1249f9,a2b66ea061fb9bbd311d26203525a11394840955,073b48de826c232bba310d8b05490daead429411
7a444281e8271f4850162974ed6a86c92f029717,030c3b66520a8eb125e222b527150381464a3358,a70d33ff00fe331f8e2528ad4f0411597eb4a0c9
e298e6eccd378a23540f95d22a0a66be14ecbc4c,32d06f2e87710cf749cab40d520a711ba044d65d,ad971df05a418d04027323d423e9527e6374955b
5bedf92bfba41350e1854b43fa9acee704f871e4,a8449ad9598cebb21c4a892935e41fcb28f05060,a7951612da74ed7b709dc4b3ebb759eec1da3b2f
ced452e2ef37628854b945de15791f796a52d0e9,edeb5909da627e4132c280b99d0ea50ffb07fbb4,c6ce763336442f8b59239c3ef96be8709f2a4110
85928a738d71326fa3eb41c2361d0cb012bd1cca,a0a23a8968c319733a9edd1b80031ce6b334cbc2,6faa3872fcaf94826e07499c11b635bb41453faa
4e51973dbaa26581b29ae72d0f345382443205aa,f10fe0985a4b0b60dd03e70d6b150fe193785e05,b66802a14e9851e542d4483b250555fdd0946f77
abac7a02bde9cd0bd582e7db028474708b194709,b2eaa4e701b6f3959a9ae94f116bdee092a56cb9,b4d8f2d1b6164755fd3e7777bc02d9a8cbbecc0a
a237aaa1f5c4938272e7424dcc806d16d78ea78f,5e082c9d9048aaa691b833c9ddbbd32413eb01a5,859755ac851477d31e6461242470e516b7b3129f
672c9b14669fd1432679d1012d3d841e01926984,f0f981882419c900360446da529fc3b8692a1b1e,89e028285624ca1193c6502f15d971e48f650e3b
d3c87f9c584a23591643e3a2dbe234a73ef3c3a3,b2e553d3c403c2fc8994714ed998cc542c6eaaa1,4a85ab9cb9785d31ab8d6f8808432010b1de8a34
ee5e89733f4fcc26b9389d4dc62b0c707ec8ddb1,98f767efbfe742a749d61d7a598388be12ac3558,e8e1a6e874641ce7e8b637810efa9b7ed2c0c370
5ff82c14cfe2e2b5110d9bdea4c202a20621b80b,b56e1b0cd8df80ec246d5939088b8cbcae7b5ec1,b30a1bf447b75c7260eaafb1acaa7d008bdf48ea
93494bf8bf41ca0dc37b698bc2852cb82687b609,a4e2d7462665ffdcb27d9d25ec1b2acd58063887,3713784e40f99bf14d41875267f6943541b994c5
9bf4f9e2ce4c04a0227f722416f510a0706de4ce,664a96c58489cbd7fc636a05f21ab7edd5d1ab84,953d15a9390bba467699c0fcecd8f86bbc1128ef
e8f9ffdb5e4a3155da37aa101185fee096093eea,ea812d1c2ea7994f610b30cd459c0e235f46fdd3,65880e66313c1329c4079e2be1a4121baa83ff21
4db332fecf8a81392120f58d42e84142161ab7fd,fbed0680487193cda590fde37f6fb35374a67d76,d54d787df2ad3bf28ab07220daa82e8f177d85a8
a9c67f22fd3c74fcdf352f11ebe861d0f526710a,ed2b73eee6ce40f37f52ad0d09d4f30421b6646e,904c59fbfffb65cddd60d892d0e49489773490da
43e92ef2b78195384c25202582141f91813f473a,40adddea3477b3c7960ea0c25779f3b8312ad9ad,bf86e57cfe0726d8b9fccc3eeba815b326a5fa3a
396b516a85a692b7b8d17c7c8e08c8a3167f40b8,17a90f9521420593069df50ca2c0eaebcfd44b0d,6dd5b63e2df7eca4f53868d2bf15cb3cd119c68f
22b3268ac75ebf44e095572f57af6fd97576bae1,f02fc4fe0fa850f574eab90ac308933cb8eb1485,ec96d4242a682926ef1df2724a9cea074aa69f8b
b297199ab6dd8e698fd8009d8c5b4bc26fb53376,ac4df2b0660b1f7896ab20d30a7f845f446d5b72,6299e94c8f99fa043920d005c4111d657f690e7c
ff0b560fe422caa2692f77799dd382e566a89fdc,145b37425d4af659e6d77faa75cc564c9bfa8395,47d7520b32b13967dbf65464edd65cf713477f67
533a11ec80671a14059c89f6ccd15be44f16f1c8,3eac88eeaf90fa5addcf7b03612dafe9236cd114,e9e8013316ed280b268485762206dc9c3357359e
c9ec57bd737aa00cc132ea3418d2f4ef07dd3fdf,bd82ad0d4166303b6ff2b0f43ba66d5fc7edebe1,90ebeb275a6cb28db8397cdaab9eb16eb961b835
b5ab81c98342cf824a8337be41ea15e1f5502b75,897f0e178414116764304b49b26db58beef476d8,a0171e433531aa21219e715be55a936ef9d5efc3
0e0739a64f4da96b414f5ed447428c44ad8155ca,9aac622dc91b8c9b6c9293c12901cf9f57d4d048,749faa42eed7c49def6323af3412831cf1e6adb8
6fe9a1509497cac3937163bc676693c832e62fe2,9b9ae2db1ad85bb5d9aa0aab7772b8aea9bb32be,f8b1801a8fb7a247ea31be7260c44e333d069a8e
b31d5386ee2cf470763357b25b6d7f6d5f0d1710,39b7b07ebb2f6416ce2de95bd8423f24df5375c7,c1ef0944572b0a38dcc30f9555cc8b78913896c7
a1f865ae45c1b007252224179ad591f2449b4e90,4f3093657e11970b3b28f0d0bdcb7f39644e40ee,568d4de77ec6088683375ea8ad376972e03d3c95
685f72ca2f5682d153800a11dc5d25acbe97e455,46ab8d79a28979dd94e0a36eece2420e57c67ceb,a79aa8727276de8db173d67839e78a3df195a357
b4cc4f851becc27ccb86229a5924d38b80e1253c,06a00b53c3ea8d0ff655a0b925c26dcb275be1e7,621dcbeaf2118a9cb7622db19bb5d859e0e22f9d
b28495a423993aebba17b3e157ea75e10f5e7179,2ed2c213136a4e7eede7ec2f4761f4d23bb27562,a6d6f938878d5723e8dff5f81def5d2392b0a3b6
f56b6728a522fec1494b28f36aa18d89db1e97b2,f0748ad59bdff939e9d3c2f535fc8e046ec3a305,833a971877521a3a906207fb37e84ccbc9f27f23
c3736810ac018b5aadb7d54c6f6c4c41d1c59344,28964711d7941d466e54261a7581241a97e66a1e,d42f577a3ff2bd02b6ce709b6c89bf6fc08b32ae
93b8707ed31af9efa328109774c8015a8c32f087,dc7a8fa9e5cd4851a95e896be337f88c7dfcddfd,2b829480e14abf2a8dacf1013ff796acee90b752
6200af404d8d8baa1935ba8780dc9893075d9307,0e4e4b89ab7acf1bed1b2ee7637de9580042a8bf,13ed9a2277918d2da5c9a008cdf4b7f4c78ba309
e5ac07db13024df5941957bedf2dbc62578925a8,cb03124cc5366b25f539bdbc2f76e1ca25806234,c8403ad49ed815e53ab700f783b9c7e371dc4831
1e779014523bf774664e738d2395223b5caa85ba,79cf1dd9cfe47b43d7c057709006b0206e8a0079,540fd5e58d00e1a70ae02ff74ca199b4f6473599
c42b8c43bd8725ca5f479ba02124f9bdb2e9670b,fe39f9ca216b22ca75bf1f065b3a6bdd5fcfd491,8f083f6342ab8d193d5dc0ae2205bad4b1d7bab9
077a3f1892da9a3f493c321f905825a02b82968b,3c5d6e72240dbb968f42f50c8fe7eb0783a0c16a,305e49c0b81b9db7872c2ff2717dbe54b92c8f3b
a20bfc07535f5e6d7d27fafdec826ed8de07ee61,0ad2150457a100fbef2476378f3ac56a33858fd2,952eee5ed0e4d65fd7a7ea52b9f3025976763503
9387f87db917ae23a26d56050887ce3793e11eaa,e3e8cb5b583e4e1aa9c24c0bb942dde9490dd341,d06ab24389054cd342b82275168d5e9d8ee200ee
704a5a50816d2fca65740f774e5c0bbaa7af9a38,a57a2b6cbefa2e60c69256f3a45796525d0501c3,473db46e083a34106ca4bcd26b3681407576dd5f
d31e219510b80dca9f0c676e5298ccdc2a935255,c0c6ce5422bb7ba906f78aeb2b3119fbd6498f67,af49e3dc9f1e35a1d036e119934985b5e5fe1e3a
308bc294654f955b357c5e71ad9a7fa9e45d39ad,bbece3e6680dd7a7a9454b1f55db125619f8e639,454365325ecdaac85fab704f6cf2d459af79fcce
12ef9a4a223ec54c16cbe96a8107c7aa26380cbe,ef8ad5446026ca623a4daa9e5e7af5f5783aa724,8d1989fc9a261715c0188be4902a3255cfda361d
ba51494bd7d9f5552c91918ea01f3c9e02152149,5e148c1dca80849b7ddd9b51574cab821fab7a60,2ec382e68cce7f7fe90c3b4c88b15af79c947d99
0b1734cc04e76d2a7972c39ffc77b7d0bcb16455,c223ae3610c215340a1fe34c61c9e6b7f8f454b1,850ba0bc7432168157aa582698976ea2e80b6cc3
fdfd7c07ed33bb762b3abd0c64b30d82197ecf4f,a9e3882e37fa75856678470d137ff2e6d648d727,72f852f653b73edfc14807bf971aefbd2782ed55
7b62186b9c9efddcb0114df889d5830d8634b0bd,30e24e48c28dc947f2721e9e524fe72894a07776,a8d19553b9151b5e13e7f07dbe71bcee9037eef5
67d80d414b5d1e9b8cad34ce56f984c6c51de00d,ac8e64c93abbf349227e186ef02d31056b279e01,b5ce98fec736ad7d22017c9fa9045051c1b2325e
751417b6852836b6dd067a4661b5a7fe92612a9c,2d1e420e54226cd68ab647d416db84f5fceee2af,85ce54f83f9c0c4ae3cec62fd16238bf3acacea5
9abd81efa5e384ec0a11901a1fb67b79a0f78378,38706a17134fb8307724dee4fa8fbb1dfbc523a8,1fce64fa0a780d4b0753eae79c2ae172ca8fb58e
784d2146c54471cb666248d5554b59d7a17a6cf7,0b8a0fb495ded3cc71e4a44c6174216922ebcd36,6df6e4f7ff16ea4ed9db2a1215cd2b2f262a0331
af5f75fd5adc53383a654e8f9849117c2219fe52,153baf41ce46448440b170f8d0d175953bd17f24,412de8a17dbf5b23e6f85e26216b5cb645e41346
f19402e81b15a4eeb63314b892d53b97cfa0e719,15b7a8763f6b16dece5336603049024158cb3b49,ee2d2a4bd4672135b746c925e8af12febf7149ae
08742e1a91d05570ced72fd869301f3f583f5ae3,10c60c45d5f9704e376c34c5168a20cbb17f6b43,41e32d0fbad6ad541959802590c4cdb12d857cbb
c44f82d11a4b3400e0648508e9d6fda8d132d15f,09b5e7c6b228604155f9dcade788950c26f337f3,b97c8bdf5594ac273f9f3851030b694b97789035
ecef61e9c5413d254616d4bae10e0c993177d3ab,51ce1e883f4112067b5d3d3910eab0a1cf5ce657,925dc4bc7562394c8ea56c3b597c33b0051c551e
7be86f4635f6953a65462ffa7bfa602cceff8d71,151c7ba163b2fac5b44e05a07b79ef3d1e4382d4,dfcbdd9aa64824a51376482bce581ce36049401e
3b9035c94638156629666dcdf6e2340db5405809,b2251e34691a63bbb61cfaecd6125db6a51a23c6,0fb08a76194c8fd8e08236b9657e1e03e847d385
39836e2d37ae11f4052cfa527394994d61495a44,b27335e8a5fee1d8de272ae83a0405928b187e7a,9f22623459866915d8769bd2e6cd9c8a75357c6e
3c91a7c01ea16f5fc9239b21636d4127faacaf31,3bb0ae4bf965d66489db5350a1706267e5702087,a954fe6e8fbcb4ddca014a2a9f2086ccf85b5776
e2f1be330639941d2ff01160dfa205ca35eb03c0,c22466183670db7f11f6cd160550eac330825302,83a5ba663643f5e87980186da0767c059f0f4488
21593942a16d2788103501ee1e2921fef90cedba,b4938247fd7236cfb4acb2fd372449a91b0bf145,6bfef9e75239f76c31df1119b603307e35a60862
be696c474b3bcd6ecbc4b9f310eb4bd578edcd5d,8eaa4fc12751af5b2644d6b021eafa0c5da2ec9b,fa0bfc9a6030419c8ac27dd7a2e14ffbbeb02520
47e6422dfd3b7c14e1a0cecf037cb381356b1c97,18f996fd03f11f6637feeb7b3854ba3304cd8198,364a091474f2e652895a338e1110288e2d00d580
6502f7b35ab7438a7c38c64686d86d44eec3a388,6bded28a1004fae8410321c898049611e4fa3c33,34630c2ef952944108b702134db3b99cf2ef1d2a
bbe18e2633e1537e36767634c3b9cc3906f8f5b2,c74a6f4ca27503ed8837a803169d6c40780329f1,ff68e7b9de5045c67d723933985da998f115efb8
456bed94863ef0cb776454b020633b25a106f22e,d4d55f5c877064220bb13a0123e6e67df7e75237,44094dba2f96fcc6c252f9c42398b6740edb85a1
7e7072c8233435934c326b7c709feba1efaf4db1,680a5b94ff271521e7af907f08f6ad1d3160ea0c,00a287e77d4917662b5f57ff99898b598c3fe996
b048ae37b20d06da7f9beb52dc7f50c9d2bb4fde,2c80b2419ead1870965686bfca004b2a7315c0a3,92a0640bcc6ad53326eec32db9cd8353f434e777
855a0af427202506a4fa4bc5b7d8666e81f95493,d0db89072e95b7e93910edc560e79cd07aea8810,4da4c96349d205cf99a8aff0618315904f451935
ac3fab3e921dab8d23c6d9e8fb6c94da21f76351,7aabdb85fa9d718b2cfb3e306aa7de22a59cb746,f2305d1cee38e762aa2409adb9d01dc6751db740
ef4255c65bccc121da2f5943600e2bfd7c1c2ec4,ae17e6acb678406aa91a9029dd6a0857e5c90f2c,f7b7c39129d72330dcb4b37010f1f5b7f729f43e
f01c8411908099b369e7c0d83733ddb78bcaefaf,d2a2240a2cf9f00c8497c696155c9e0657a614fc,5f66de624d8f8c75e8a9b0323b5e4e709dc25685
590c8786902fb712aa84e1e87351f0cf484380a5,e34116f7dea7c3f35da3a3ae43d14110d4c70fc1,2a339485214d53d5c37a390fc59a314413e192ab
7711ba610a7488361472f2a0bcefa52a573c653d,696b7b6f68d3dd75f870dcb5931dd6216640505c,a7545e08926723802528d0ed139606d4fc718fde
7f33dc18d01914d30f52db7b81f449254fc9a244,f8358977616796818531c57569d61af710be69c2,bcab6185b9f7a02da1aea46893ce7a38aca43ca4
9ad2bdcecde1fd9f5696ef3cb76f6762b30c01ac,72e88a345251c138efa396094f0e0d5f145f40bb,b3e079c5da47fa070524d0cb2ecd1d25be099235
67fedc6b5ba09803a2264cb4ea2b3dce06713af9,7f1e420bb05add6439b6ae1028e841ad7780b481,3e26beb1edc839f05063aa957164b69fdf8afe56
094a353d879f36a3c46acb1fe91b56295abe388f,3444b23c9a7178cc475d9f72035a0b7530958bb7,2a5023508a2bc4ff3ba4f3a0ca16366d3df86db8
c14c3ec98f584b8952027e1e9b451ed7104c232c,92eb260521827b0db9392c99b0966f6a7f928ad2,3f14a19d3e5ad546841bda2f8abbcb8029f79370
04145589a9b263fc9159dbc55835e1e1e53d0237,acc590ac07e438509bc2f1b09b2d3991b294db1b,939572ebb685767f16318c0811ba4d9eab2f34ec
91a023a1789ac775da9e526a9908d77921e68443,d7ab5300968d67eda1a09f65e1be43b17b6a72ca,82df643b7471ddaf5445fc99267081959cccd7c0
d198fc46cb6cec08fc91cd35d34c64e182e207b5,3a81f5c732ed75c555a9f6b96488cdb19bb9f4e4,738a0a35de9c93d37368b6ea796372e757eff5d1
1cd8c249b1cba95a03488989ca6eb82232f88608,dea81f4f60174483f0c61a77dfb2a63dc117efb3,4b88fa8e3b56330086d17a01fb1f836d97dd04d0
471a5eb4e01279d5444dcc9f51f0c730e309a889,c85bef5494f4ca409b37791f96acaef97eabc7b2,982071d4a998d0921a7e8d784d76004c10ef5053
81c8078735cf79755750e39e0a6ad2159ae61ead,665c1b396670d57d6c595bafeea3aa732f52170b,546455faca05d2827398cd0f2ab76ebe45de5b1e
01142f11d7f6e50b6b80b75ae9a611f8fc662d78,49f1f4d26e00de8f62e2f39bcf98520f6e98ae55,3e9ddf59df740d12ff51122bcdcdf1ce20b0cd56
93f2bd48ddb54550f2369b28af6823ab72f35d29,4f8d6c9df1adac8a8175bedc08f72f826245dd06,6b8ab2c4d2a6fdf412fd6e9e16288ca10c81d59c
b637a3a022e7f959f07f9c60efb619621890499b,d3722861599383de61f0d09158917a8aa691553c,d36761f4a4dac1f859bfbc12784e6c5a55a5b425
9e3f64733359a6ca802b5e913ffc4c6626746ad8,08228d7fb37669f7ed4de4eedabd5dc576dc4f23,6f749cf43d6bfcad745e6639aa1b5dc09e570c27
33db5200e62fc14f07a000ca92afdbeb8f4dee0f,8d864559b7014df07a9fffd16e0654cdbafdc421,2b66f60a8844f45cfad54fb59703b4c332e34171
ac53225817b8a5b520996eb2326f76a7d68378b2,3164b535e54f39fad4ec5030b2ed0ba05c12dcac,3024aea354579b389db901441f3c7af4aef633aa
10191477aef35b233b08ccded1b8442ad763c156,7d13e5c70d3a1cbcc76beca639b3b5a5b7ee778e,49f45764ec0dcb35b5fdb3cdf86473752dd63d61
39627cbdfb488c9dd0653f576737448098284226,cb959c2e6fb5911c74c07e23d00346902521faff,6f0f339fc431f92c23a20316b5b355ad688c9d51
ae892610080ecf4711f1b105a6464ed06ad639d7,554ae218cacff3de526f7f89f8f1543613e615ed,61f9bc35e97e554dc79f282dcc6f8a89b1a1a3e1
c23a64523ed3be55e4f29f8f9b082ced0e703e0f,853f8b2202fc70820e23a7cfc4287c30f7dfaa46,01ae235676fd3e5d3197e0cd2edd0c8c2e06907f
ad2ac98858f5c422ddf016b4941a503090b73792,0d03cad279240f219a5f01b21207e751e4c38609,6d26d56f2fbe45209d48696600225a75d60c57da
8639dea46cfc4fb83cd2b64e3fc3e95872702d50,2f28c5596ff22f288c64a297c30b7d33a7efe284,2a19e152b70ffc0ff673e1bea07c836eb98d0c4b
59a7024d73b9345d667b839532200735255d1fac,27fb9086aaa079212cf225f194efd225e54c50a3,e0599bb231c48e7a039e1703c09f6c6ff9a62632
e9dc638a76649987bba77eca8c789ef49d6433c4,82ccc863efd606b8c2592bf947b7381f17759609,5ca52bcab1b61b5cd47325be5f5e4d3f3581f3b1
14b40473fc2fcad52fdefa632863b7aa76bb2bf8,9e631db928b5bf3bd379830b9376b31fddc343f0,68bc5da3a23dd74a2fcc792f7f12223855644196
60919b497934d50e039c7a44962f101cb32f129e,7f8591926af2de78051f2dbe91ee5d9e64a912b9,0600287c638a5507710bd600e334e437675fe959
6df2eb5fd44a69d2f9e8f663c8a4972c3cbbbb21,5e0d5cd92eb51686d5299ab62f6ce3806af8b93d,398c6519a541c47a6d86271daae53b2562fee0ee
55b8fd6e9425fe627352930a716c0871393e7d96,4ed7bd9f668123b7a20a2f871ed36a024e41596f,14ae44c362cbb78cafd5354137a3cf86e5f5fa0f
be2c1c751df2f669920b3826ad495603fee09463,b1a72a86e5b6af44300a19aebec096df00000e2a,91ccf4e9c643917472cd55d42094c2a1c29e05ac
e1e939c844b4c285cdb52be178b938f5e9a44a0e,c881067b2395609448fdc7b49fce076b13ffae93,501b2d6c6f48a43a1cf695fac795abca45cd0536
6345a25304ed2de2cd28dadc24e4b5bc57d1a7c2,405523ace2a9e24dcfe9f0b1b0376b33c7cf29c9,50b6978e681268a2ca80d62e8a7d274f65120719
27ed2808dcb4c95b101cada579f32ea3325e08d3,22eb1e099fa15b018ad81c0bdff24462190b7afd,e9ee0a0be3513d2949cbd1b120f1b0e90d896a93
7c68ead57aeae69834526b26b99bc40b2a2c941f,25a681295a2ee176bd00493b02addc8cbc384139,ac9feac2c86dfd118f017f7462072805be95ec97
aee5a58000dcc2f7c0dd6fa0bc6bffacf07470af,e79fbff1545e41545141a14e1c4953d301370c7a,61623c43ca57cce7deec020cf68e9cabc683ad57
3eae0213be485a9c4a7384796bb4639ae3317cc9,3564d5e34a9a3dfa02ddef37ec9498afa40848e0,28732fffa2f153ea55cd450a075ab484111a2e7a
0d9298f01aaaf8c137bef8ad4fc8f7a603e70db7,a68884f7502941e37b4a51b525b1698a04d4eb3d,f5de329076217765e1127c424c52837a572f0f50
729d920ed3f96c09ef015303d656455efdb078a6,5121e2c259c12411ea77fac454a83e498f0bd7d8,921a72566f396e58fad456700d34cac40830d935
89726bbb982e2a3d02a1d2f0a47fd58fda11c87c,f49675c4fe286879131001986f7707fc3aad2ac6,a9db41f1e5715fed88916e4cb2a11178af2bd10a
ca186440ebe63429d8642f770cd6f900a57ce60f,07ff5f423abb1107be587bbb1edb55e840017b5c,6421f2c36bc406e30f732086588aeefd9ff96fc6
f183b2952ea5438993f4395e47bbc8694f3ea6b5,f1cf83bd8a2ff5b38a4fa5ecb6e2f8e102d8b372,2099e35d826b5336d0aa5e1717dc6339dec27cf4
4181e24ea4517069f84d987204c715a19ff24640,dedab626fe7eb60d63858ae68055845ad848a93a,e9b8738f200167865f8c6d2d333a01243d25f9fd
89abeff99af7c1ab41b395d2e1466472f62542e2,04a2b42f63c20e0edf9982f5c7fbff7520ee001e,c785fa4435a9abd48c8e338b1935cd5569900542
ce20ba23fa4dcf5bcb2a1f152ab2eef67df8b3c8,de9880375118fc0718080b97bd61090353e32fef,3317078ae121ed1462a4033242e6edccf25f9dde
fba3da47c6c762c7e260f89bba56bdead6c42ba7,ed520548be3ee7ec66e4dd909c0e61978960d7a7,35fd79ca523485df5e927e9f1a426dd9d814b530
f50e6dfe8e1f84e98395f8de4683ad729b6895f2,59c33d69abd815c2ce7b1dd4345f6c99b4391570,fbf68af60533634bd627ca24a9a6b57d4208df89
652e75f8ec7e0705b4c394cbf906894afece306e,551f26767048e2cb9e1f895122cd8dac95b2dca6,163d2ab344b7ef739f501d79b7a0de9b2bda0666
6a56ed24abc94c040a1c41a7890cb5fa44e06664,2f33c970066529c482f37a6a77a11b01bb7fdccd,5b3953dde37e5802b6417748f633bd9278bf95da
5377cee3a29c267161a8e46aedb04e8e3b91cee5,54c95288f868a762f1caa9d8e62fa6f193237cf2,ee8c3ff3cfd8851111e5094dc6673cd997ddd74c
1619bef4a01bdd73d97d3b9f0d50d212b2be01b0,6ea0050990e5786bf369dc68b0971f433e8c9069,ff576fad0f4b3e3c92e9c695b518b34bd90e4830
a45394d849213a0a54e3e719cfc281f11d500ec0,497dd20a088a67a950c7c61f0a365f170c547f18,c3ec62878eb04316a545fdb98553f5d71002bb07
2dcca2eb6848b10defa57ef509f2990aea72f5ea,8b9c7b8254385e5b797cbaa0b73e160a26f5ff77,eccd1720c9812b99e0e70c3e37d3af36051fb7ad
16881556b915c6916a488334328d586951d76ff3,be046aa5558f8ab39441f9270a45f6e3ceb53745,4fae1bb6dfd1d65f8250ef390541647006cd1236
0e4188749bacc70a7d472f05053a90a1d0ee620a,05c47722dd5bd09e8a7c3dd43fee47c0392ff873,385b271bcd6b4a8b845c89e12bdde6a48e8ba314
8512d7ac8f47e053ccc02f042cc0607f29d6c3fc,7f3a5eb9abbf23c97b22ac93c287ec7e228f0ae3,943da88ddacfbad9b5d730ed61c59cb31529e27e
702f79ec8cfbcf1f077977f595b6aadbc186abd3,c6aba5cd8dbd71f7393b1b52ba401c20e09341c8,4718029fe07e813a2e61ece0ea9bd6d3db3d0bac
4994d9cab67d6be5206517e693065e41129b21fc,a01dc282067e70f9e693e3272ba5aeb526336a3c,90844c2027e078fcc1ff6b8d3df911a77bac2ed3
410c1bbaa0211b56076ede5ec0b2c9605c5cba62,0978f6ce16085662bca71344e135cad6a507ca49,56108f479979e7dc9c10dceed5f74870e7d62c79
2b99abdd4df8f3aabe11d2ebe4d1fcbacf37fd5c,aedb6dbacd0ee1d790c4092bef5bf46de0558c07,14c4a6796b35cd6efeeb84a6b6a5ea16f8221bdc
31f74f65b082f33402f3e59ca04ed36461c0f1c7,3da54dcf9f87336887f592c98c0088372da876e6,727e25e93eea38a44e493722a9aa74aeb7333f6a
96aa2bbf740e1af0e814fe6d07250fe06af9d510,b1f85792d7a7aa90bc2b200d3d2db0c97875fc32,9813eb9048a413d8cde171b9e2fd558da1e3a46f
ff64dacf259d083b728d1dece18ffe02bf8d4101,81d7e28a87ef6949e9bcffe214ba9e83c097f7e9,5ce9353d58cd5ee2679dc510561ff35914329daa
4e28962115ee9479d465ba00a1db6028d2badb60,92b51febc69c645e263c5bfa2abd1635ef7675c5,85860f126f2afb5ae384e9cca2c19b2a278de2f9
d1af2c7007e2434f5a848b743c1b8d644fdbc5bd,6bbefcae9e4c96887653d17331b3dd616a654440,6ca6666d28d27151fdf2bf04c570d92afba6e154
57107c331093212fa5bc0d8fc865b43755ff3f12,7ff393085e3b1538a1c14f3ffcffa92a6b4a6c73,8120fb8b774ae89bba6a3d186e4b7723a84ed3d2
54dccaaad1a768d2028bdd7ecb238fe0e5415bd6,971d7baa8a050489fe3f45db09669076d2c61b4b,d29473154267150c65be268cf070941573a58ffc
411fa298ae03b9420a722ed347428c27ee423c29,a8cb061a5063fdab6cd5c1a92d7abe5feadc0c8a,527c68b6c3c9a77318768ad43b1558278dacf465
4293d4455c6481529846ff30ee7f50a19ff31bf1,379c1414a7088019cd71b98ea36353e65bd9e8f5,a939c0ccd48aa8502c347fc9cf39220d1db992c6
85c648e60318526bb63aa57dbf3c862805717606,d748bb6630dd628f6ee6859c60b4b373693eeb20,971b8b9217d257dba56b7cdac22d71492fb6a7d5
3e11b0e8707bf720cc1ef1c8fce9a4c2953141ed,62f21ae60dfaa4dc6f37972a03ca9acf33d0b8d1,43b4b343950aa11420fac1471c4d3a647541f2de
b108608b2918674762ed04b436604bffad4bd58b,6af886c2b961d5a4ed7772f81d6348b8634ab385,78535bbcd884a550ce399bc6c0ce8ca47017b45e
229eb93e72156f8d7175c3ae379087b8a46b60e9,b7b495a679e1ed166c6f99f1247398d3dec5dd4d,366d1332d18eece8de310aef2b9bb7af07d12e7d
5f3749dc49b9a7a8d68af715d51070c8903d1ddf,627fb9a25b1866f9fa30658ec7962f4cd31ab145,5075198a8b76034e5b5c36b8d783e276c6f11b56
bdd26766ed25c0cc6b9dd83861d2f3dadbbb2022,2f1eb9be18338485bd807dd03ea602d41948cf6d,ee3b5f5a62f09a33031f5276351bb1877ba83b5a
9f3dcdb211ec3cecc9013f45e811bd0f633a7072,f62ffa74dc5eed4acd756d59cb891a3bf49f4eb0,4d57dee8d9e98e005a94fcd744aa3047a20e3a98
4808ed63e3717bd68a3e1fe0c5bcf63463016e0d,fab610a92770b9e5c3cbc8427c88fa770821e414,236febb14891bb2a46f273f69aef5cc7212982c6
f1bcd02aaf66b7eeaddc6173ded485938f8335b7,6cacd9c824d34c42f71977b23342dcf2403b47de,02289d1f5b986c96b0843110de46a143500f4c79
40418f5b3d5d69b4c38fefbbc46d353b84bc02ae,510a281c3fcbfc67a8691a892a17d37cb662dbae,8784dbc095442790a2f24cb675fdc67d1fe2d08f
b1d9d34665ce1f26bc1b95a87ab085a6bb3530ad,559fcdf73611ccba421b988237b062ed84a5e287,98a942a37e4d19a3c85f03c3fcc01f907abe3ef2
4053d59a2c9745af6f84fbca70293cae81a05006,66bac7c415966d5531b9b1f020147b522740040b,a5f3040da528a76bf21187f647e15c24c82d980b
c0fa45dc922b2ee1fbf6d63782e50f8b46c162e5,76753438edfdbf29d3c12c6793ee5ab9663eedde,22a4cc66ec7dc79315a0f63d27d2ab003f7777f1
97c16401f76ced3f0411d8f314acc4415bea24c1,ee7cbb61a0e1a6d282206819832981d89bcae634,62d5ddffb8b56411a06b8288b6237e31ff3c711d
6556d18bed27361321c0a2df91a1a6e126db2b36,e0e8620deda3a3b67df3a99a1f7b9951db533d33,74f95238064736efc2e83d349a712b8140f566e8
1fd2d3a83d2f3b656e2fcfe6a3399255320f5459,3fac3996839bd40587fa0dce1ed747cb029af551,fc6d55872708c1d8f6a6b63caf58e9a8e452e86b
e87c52d7dc87eb53a11e91e2b27f55abbc03cc85,49edb0b60641bd52de8dddb80b687197c35b6f1e,9695dba4d98dcadab0fd972ed9b5b20d3323781f
aa8fe28a05b423cc4a59e9b985d8cc401ce153bd,1fde206ee6703e9ace1a809ae49fb511d35a07d7,61304bf324b59cfab9579af02e4c77bf4d5daff6
33eef1f9b12f4063fb7c93c01f4b184f0e1e4ee7,5cdef8050bb607ca65845f79a35c95f3cae518e0,f832444eaa72854e53515b253914221095c92419
c2e9642b278acc80cfce2232e8d97d439e88b6f5,bf2d0853b60de40b69dbb0efad3617bfb8d2c67d,3c5ad4eadf5afe1fd9afbce8793142d51f2a615c
78fba07415e9caf09604ea3019ba2b4e0db0223e,d309b77b59612157a5a729170791cd9153599be5,13055bb58a2ca715666b5f19a8ce4b507e921886
20674089bd3306c2b2b9bef14647e9c41c6499c8,ac95c20c5a0fa5387aa87a963ef224fb86bcffe7,96c6045023aa49703a4e85210237010f81c708de
7631dfb563f38c9e595de8f50ef96826fabb788d,86af4b8cd84bcd4dcd02dab42189fba7dc5d789e,ca9ea2be6134ac1e4a571fc33fd248aaffaafdd7
b8a8068dce424f75a4f5d2ff43c09151be24934e,f227efb2589e121cbeed03ab1024b89b25674615,7b39089d4f60d08768c481674e94f4e7c09c3a86
7664b32e5fbbe97a11ef8a71c8ecf55e8c92a99d,c43579a3254627bf53a17211597ed72670e6832f,aec7aefdd5a0beea97fe69de99815f350afaf717
91563115c42448df25ac313b4be6049e0f65d11f,a75adf542dc2e3c8c0ff80a976d96cc53d5598ba,1dd23696e308e31d1f11672b62ec297bc7a91bfd
606f27563e4237e986ad8caf9ca57005f2138e89,67905957cb7f433c153ca53146a5910dbdacff22,864b2ad3f30ffc573794d88bfef99fe6e7294c94
863959357444a0754aa3a8bcc5ef662c084bbe22,0a44e3192d404146342f98e3e825f02cf3405da4,6bf0de0ba2f99e0cdd6ac2ca9157e3628976d065
216c848075589f86f1051eca2d6b35b0e99a33b0,a7e19e9f068422a4d6ff58ecc1559c0f5627612c,8d2d91d5055e27ee3c2bed9444241d4ee5bd6dbb
f2fc63aed25369295e2525f84c35e6c74e5fc779,ab1a31d9acd6603bd7173f3d73853171013bbb71,9540dc8989c53554a90b86e0874ce20eaf8a7cea
314d3579fc29303cbeed06286e951ae31a2ed556,5d97ff43fa4b34f88279ef6e944fd1874cfa5c0e,74ab27ae4717aed64f7aa12a1ea5dcc772582961
d038f9f6e0a4041e2fb20f4e7d25bf88cb35e4f4,44902c339b85bd855f65d40836b6aa9f5dc471a1,f0c3d69068b3e9e3156a3b89af62233ed96dc086
bb1b0cdbf0a477f81c30db8ebcd4d989c7d132a3,19f97666e88abe2e9062973e59d435bb5eb7ce6e,c3db9d63f2bc2341769266a9172772d6a1c710a9
cf6a97c8edea0f589a46eb3b862ef36455c18ec9,067d96242c10b0ec3c24f1461d71d450d9d72fc5,d1aaeff832bd6b0ef20f1f38c156622b0939ac7e
9b280db2b12bd6fb201ebc967af98a1320ca14cd,e339f8b66053c2a35e20e8d71d1b97d2513bd668,a596fab3d5271475c6e2ea57de309905250529e3
22c86e857e34668c3c430f84132fa7763e870e76,77851090aa24e800434db219c442073ced066787,20887aeadddc4f7ed4c0c5fab5420f39ff94ed52
2a75debff6ac80dbb0492d4e90e8c68b01f1c718,e339d236e151e89a94b30460e0cc15e758d5bd45,2324055b1fb39b7846f3094fe2edb8872d1f3977
b2f6ca70cdc4f46602c8bf0bbc46bcd2b301c22a,d207a293c7640517ced9a02366cb4e54b16cc0f9,94d47bf7cb5e01c97905763979df0956b8cac421
853b9c5c96f8faaf73c1fc5ead2153e2ddf93885,d78e39d360f3a4873caad0c214628d0bcd263973,f67c4b1c454ba1d62a8a83db3fa93752a2ee7457
95ba16228a8018187bf4e1a1d6324ede023efede,eba76dd0526f13fd297eaea1cc0d6228f88571b8,b90b6f2b872f203eca409cd31f863fc8567f6445
4e5916d17d69e79b1b2fd27032fd8bdd7b996b23,727d606b45402e6812b975cc83ff5b9d0d8de1dd,727f019fd799bbf37ab013c551388aef897bf732
a81e527e1d49d2a4f232574d7e0f2c5a8fcd949d,caa4574c7304ce7110ac2d9d828bba73a9cec20d,7ea34ceb222eb03fd7cd448fcbd90f5caefdb143
fbd26ab472cc5b6e2b75f006afa4d9174026c277,b8f7a53dcb1e26299c5b264fe2392b4368cfc9da,4afb8fad427028f21486eb937ac3a2e12855bc22
395851a554b9e8dffeaac2cc553424a7f8681011,6c33e240ffdda78a327b00d472907bec8bd19169,ddfe51415b9ce782b80d4ddbbcb94a68baeb4f21
46b52d92d38fbbda8255542e888d23f0359b3081,038230bbeaa0828d92b1740874b753308afb162b,7d98462c1cd28524492922303630f599fb4b1615
816ab7ffcce3ae3b73fe5fbb0cf1f363a9efcfff,edbddec98a5e2ea120ea0217656cbc0fadd838cd,a6766d62eed085ed4ac65e7ecb81876b0205f11c
bcdc75cecfae395076c02ecb822f670d41632971,6d6774bcc4756c701b7418d803dd7b4907894c2d,0ae45bd2cf17b5d9dcc39f4f4590a214329e57c6
f5742f21a082bf59603184944f4c988a9aa533b8,54aae023ea2f4ee864c4ef3ce98ad387c166cb52,de5c056ef338750a889e5af6148f3a6ece8ba73d
0f30dad3412e3ea678b821bc8995f2066c9cb9d9,4df9da6c15e8b2492a75f7fd2dcb75a047307bc3,5acd7a7b83643e3c4f8dc96955906b67ea14eb8e
76e4e5d8948ed5601fafba16343c8adba04303af,37d107a953a30829760954daf9eaad1057648367,120303576b775f666c7e993cba9baf0296d947b3
8a64bddb20127015318dd91c50ce242e695b121a,989b378bcd9007540afe067cb8edfce46948fbd5,c6e9c7c1f838170d97d8f5e38c86c509045cf6f4
36b4a77c946529d278d938122ac70c8e0621b531,29881ee675c9f3fe4961d3956120eed76c666937,2ec59db2fa7933213a2c67b892858282df6afed5
8851c8968c3490fd48988274e1557e7ebce23808,3ecc1272e09b761fab6a02ba842d7507518ed943,82c27c72c9ffb1f9d6dec0657b2d5ba6100b8307
12866e2e61cbf2da72b2e5891c7e50d8928bb035,beb97b8110db0b60e55e3a0fa6169c16d58198ab,9432a550e190d0530971363b55918ce85c045d58
cab37732c4b064eb11d09b796002be3edb30b58b,bce88f2e2bf76c3f979902aaa60598a0487f1509,efe414f128b6797c2b7bbed9cecdadd02242ab62
e07185bc11189d4fc24b1d8c5d12dd6f33dc2d25,3439b220a71c0888cd906ea010265e202717ff46,1d1a68761e27d473aee8d41a6c15a5a1f7a4324e
9a47cc5c47528ffefc554f9a7c1fc90fa084e9c4,030fe14bdecfb96d136cef785ff55f3087da6c71,5a0d76e45ab161063d5981a807ffcdd8f683314f
c4e85e5d2c25f57b11faa3d6828ffbff29b73294,712823eb6c53fb9fec5843c796bd60560ea6212e,f6c741ee73d12001867ae9a750165320871cc340
c745e2cfba3dee29c22a28ac313d6776e5118c32,78f23a462e3f4d4c3be14d4ea2a83877093543c5,08cc81ff60ca9f66ce9f4de4bf36e30dec1403d2
8bc7d5897d19829217f2953128c2bf1cf718e791,fcaea2107583d5afd1d2cf43e7d85d32ea1248c7,3d3c904ac588dc79441b0d9c29bd79b6744358c7
4add05c625395fec0a2eda897f3f3dec67f760bd,8bef28ccbeaa95f39020c4c954ba9bee9ee5c0a9,084a4a05631c119edc3072a6c599a8e58c39d8e0
a73869b879537feb38206e95e3ebbadf755fb406,578ce51fc3178e9a6a1602337ee6626426739b5f,8184287ec0c49498f61a587290a0117806282d64
b218393b5747b7c2ee86099a91315012a9b616e8,deec6fc4ba954e698c7e928d9d2cbb2724a40b43,fd125b506e5f69cd2d70d011745c73bb35f8bfb8
798a4d76117736af4bafb662ecaacf66f0c45be4,69d40dd17a37b87ea0d9ab6aac62703819652470,4f9c19d94334a8ae546c0e9e0aaae699f16efad5
2931b43000b5950b345e8f2aba87ec384e36b284,b467de658d6a4b1c9d677935d8d0566429e1de7e,41a48fe385604914f7c40aed701a8b7304fe809a
14f97748380ef4aa4dcf3859e493d2273ae4928f,c6601203291f2460a9cff03cc67c238bb6701169,4058a0ac4b4b1f47dc58a3055ebda62edaf6560e
de7d7d34cab1e3d04a8539345b2b0a5912dff36a,ac89cfc6c705d65fa0e8a359d0a83e0a08a261ed,1d010d918bdc0d0eb07220f75ead869100093f1d
5198e47e36c8bceb2842570a7e3f4ec7fd8748e0,ddab39dbdc65259d388133c8a99f9ab028c0e879,a285500d3680b13c2c5795d99c51404764b7df39
1d70437017f8158469f0d91186ccfb177bdb15dd,812736bd416afb2f02c894259aaa8b74f88f9c3f,cddffbed58d6cf218eb0266455b0ae5c8bc806a3
481741c65b34f6090e319161eadfa4612f786736,a0d4cccd873a152308f0f917f636d17ed6d86100,9b87fb4a347a3ac3aef351440911b50899b5e444
e8da1d081a710fb13101bc265bc363d05049316f,16cb409fbf3004690ac9cc22a41e4d564f1e441d,1923c8a6117876ed9646ed0ea8a7f8f2f49123bf
9b11509dd077389a25f3abafdf172a03002dca1e,27db63969a047b37e4cacbd5d1be12b75cdf8dd7,0d74752b1fd94103ee9dd360bc56c1d22c6f6bb9
637645b6d6d534f65d56a5b6a8582507f8f89941,81fd3e274831ad5caab055f3066cf3751e96d4c2,d6ff4ed9673ab5a0cd0ec8fd4c1df23429755d17
06cbb6edc7f1c0964999224e64fdb21238ed2bcd,7f886cc4b0f57b41c7391a2e359b3db16281232a,9f47e21da3c24a06be2dde8435acd3b3a2d1aa72
be969205ad77a1ecaa8dfd98bcfe6257d3a07b0c,5203c3e84962c29670f4e0a87fd23cd6737ad882,050153fb503b5090e29ad31e8bf4c3b8501e691a
1b22a68fc6be4fb51c57a5f01b5193abacab4cf1,76df7144bae7df032872ce6a009b6bee110ef2e8,dd6ccd0fb4bf6ed6988ad04fb71ee441a4600438
f102e40b691268bf3ec424491c918501fac489fb,621f3b8387ca140437280a6cd91936bbc304f2b1,09625785114812ff5b3565d357426e7af2e537d3
c79df5f0fccf50ec0c18d580af898b68021d49e4,c5a443d0dd4579f9873ece67624bba33edce8cef,d8f06aa4f163efae1c2938662c5e816e25a42b64
e03b9205206455c56174029ccc35d27a0e43b61a,8817e896db8619b278e679b1c62bbec316a12f0a,a1ee4e04ed8b5410a10b49b854fa17420eea19fc
5700cb56aca837a4ba11b3451ab3630596e98ca9,08a9b16c82d61ea383854174b81528532ef124ab,e376851fd8aabb05ac93bc234ae06fd9ed0cdd32
3cfdf000a2506431a9176e47aeadb1db67d7357d,86643710c438d759e902012bd98c90a9996f070b,f1cb5d8f71cc09bd03a3fc6a67a1803bc2265016
6a6a17717ac141abdd0b6f661f766010837ff212,a764c035b23b0a278afa3710542ce850923804e1,f8967668371d7b2fe86362f898745d1710ab9abe
a33e6230a00bde7fda922ccf94a49da79f0bff5c,e865ab4c3a52fac811b39f24b4572610b0e59a7e,d0bf7acc188e3a0b701c58f48a196bc2d8ded78b
1b393c80aad885242259470682078971d29a83a1,9a7a97175ef8d78e03d878b29ee5d48d24186016,ccc843f98319c4dc3e5a6654f4c20a238969e284
91481a5fae82c1995f41256dfdb08c0f278348c5,47c271dcd0635ea584023800d66d1ef8ca5ec07e,bcea5581def3f663a2fa52bca29f7e2191e7e45e
aa43441ac98ddd6cf5fcb6b6109775a4ec91ee33,4c8e802dd36a951f6925bb8bcf4c9ea043235f81,20e3a7311c6a44fd44995f3e56c94098f60da32d
f2ba814b9e75bfae1aadfcb4fbefb0696f5c8c0d,1b7aefc11df9cf7f034a29c4c372d571ab49e78b,172803b2f7e5123e8d2f973dd281665e446340c1
e8e53d13cde14e49512f220373c6ef2f9352e1db,fe0048bcecff7c5c9af3fa64be991da072fb1ec1,32fa0ecaf991bb0f8ecca00675a31808976fbef4
3ca3c7a60609c3dd861f4335bc8118a83f0a0551,90eabdd6b4cb82333039c102808beebc9df0a3d7,a8b789d183513c381c0dc60c0cd50700e8909dfe
0f4340e65963273c12c30358b34df6eb055fea4c,283c213a0c6ffb942860649f703b4cf8862e4f5f,8bea5dd41e86662f33771e442650d774af1a3d4b
6e4e3b85800d8f12fabe4527e4c13ec5002d9a02,748f71e5bbbe88d57dfa3cdc2569c698a982fc27,e74797d41150a8b333a104c245d69a700da0401a
8c562995d7307608746f3a86d9354d06443b0c36,d9781bcebee08dfdbbdee90a595e92ce1fc284fd,585d0cf5746ab85b5dc5a202606f8426d4a282ab
99d66b4c93821f5b4dfbc0fc236ad0c7626d5310,362cabe6845a0769cc8e7fcd4dd5c75a74a07a85,9ba01e7aee19489072b616647ec044ce03a14a43
7fa8f514af5bf6d2e1865353b34ab56d92b54e1b,9274f17c527a2e785206282bd05fe7f4ccc7a01d,f4964691b0ae2590ddd9a530f78ad9a378898098
f12752372f5e2544e5c4a9d60794c037b55df546,0103964250203de699636e16921fec85562f0b17,219294c02b4129d8a063626c72dc3f867ab75680
16f5863847120e1990e3bcb14948d78a04936df0,7cac9d2f02bfc1d207b28974340503afbe68d00c,19cce3e42e46f010065146dec761dc6b00a6efc1
a916aa36d82bf3d37588c1118ad838940453e527,3cb4952745479eb8cd8b445951e8fd13f88b6fc5,7974f39522b36a525cdfd730a5c989d78308e88f
86b774e792a8454aaa2523b45f6492b488dd42cf,e0de75224b17627c9087f5cad5180c43cf8fffe5,7c21b371051de1de1ca7891802b48a51a8d2197f
dc1e0a6bb3391a0fc1dc1b031abb454b0f1f4dd7,0c6287894b88ebf70c22f4c65a83e8ff2ab99315,3994626cb110c51bb87776f71fc886ad15c0c4ff
abfd975571b3fd59209717b7ec76e2740aa97507,66b471e5160235499f94848a8eed6084c86497df,7f9428eed57e3275a3de99229a3fc2761f38b2bf
e8b0fc88e340b1b288e9e31ae8f3d5b7847ab686,6ee4ee960e41ae5053cbce3cf1336d20e57be942,2c9776ac6be8ca1245ac6e3b20f4756c625cd6af
b810afa1930e12916402d601db6d6c6ae5d9bd61,45bf47ee05bde9acb4c64b1c39ea0009cb405c7d,e148afd506194474790e974cad61118610935f93
02211971a39e4436e53a40833acfb026f874574d,f73fc7d566fc275c067398b083de92fccbf8a1b3,0c9b622a742063d1496cb47ff9b18db2480fbe31
653303274fc0b22a23f8909852a60a26ce2de92f,bb39ec161058e23c3fd41b3fcc9f9c47adb20779,4765d885dfacf93db8202c3b6217a806c09d0dcc
c92a035614a1c9866ca2daba28ae283974b68219,41a6c5e967abc1588e2fa9bbb301704555b31b7b,a76085e463af334c83a13341f3349e6ee29d396c
a76038e1d1eb5a07a2cab78044e793f947247457,b6aaa06f83f64b1f574f0ba41ac8566c2b5d325b,c9ed14f87bf4bfac5231cb2a65ca3cae06cf958c
dbba2d2746022e583890e6ddda9d081eea30d40e,ca29df1aa9c58b951d8e2dbaa7b98a4e56563f3e,e2eadc51a3516e7945d559531ebe4bb7d9a26bf7
534383f6860ddc205294134f53d981ed1002dbb5,288871059448cddfb241a8a8be22854b5e71b640,907e8402ab8ac165fe0a35cc81d180db03df8330
3a095f5ed5b1b715f5697aaac3d1274ca4674251,ee89b7c9ec683320f2fa32cca9b46340a77b074f,1fce5121f3b239994a241d91508f928ca2052988
bf412455494aa6401c89ff331f89ce9dc1eff77f,1ce1a0fe1fe3642b2daca5e16b1058cad0d3b5fb,1dd80d596d0f11601c6c834df19cc1916bf9ea6b
7cd082ba5fdff0517a53e8d711ef654c252b5b51,83604b709c0e8383329d3fc67c37f380a6279404,8c67a4370be13ff0fe91ca86f4107680037d1657
573f2c20d757f2bac27c023d421a81e028c5ecd8,0ba7ef98b39d7d34ecc34f36cb230f5f9c9f0f2e,d3782401347e6887bbf2d9fc421c2c658beaac6f
34ebeb15ed8e3ab334edcfd953bfc328c7b52b5b,1c7626715d14138249a4a7fe0e9fea786ec00959,b29b81ae7b610091241f2f22e53ae2948e114a61
09587d0c1b6dd5e8de98b1e5af284c7a51523d01,6a00f9f40367640fb0ba40f8b705ba93da7de93a,4556cb35d1c96f4d775a2ae993b0476453d232a6
70908b1449289321e48f58b71266fc3e4884071a,743d7c50d0b74afe5709a7f976af2cf3259ada49,638de87a5a14b2ff5d5ab5ee9553f82b0421f010
390084d59e268e846d90a4b5210a4aa955f9fe5b,9e7895575ed1f29e0493d1f6a8e1704786ff1ac3,a19deace45acd25050ecfe0c8f31db1255982876
60b0bc55354360e257aa58cab02629465f1f28f9,dadc10658ccc475d2f016d5c360d1172d1d66842,29cfa3b2252eb8305ebd322ce1ca55ab5092de69
59f293711a806f74b8ebfc175f64fd1f505af73b,5d6ef0f70cd44d289fc6619e57826bf53e4aee7b,ae457a18adb106ee3c91d3f6fda679a16ba5264c
252707a873aace64a0154f099f1dab71e9c58426,5a680f014892d09c531e93ff6c058731f803b84c,ad72542e9e3eec2f4ca704690080534786c93dea
f27b55e9b2730ea8b4c8b5a81143ae618cbd31fe,2cdbdcd5c56251e49e7c56391a8adb04adc5912c,dbbf7e7f3bf1c565ff756c97e91ee5df1357b130
7bb1b12b4f6c6c15f9c441aaa5a20a5438e3d90c,eaeb8b70fffcd163dcc3945ad999649b6d5e9227,4361e36ce0254e4cda21977745ec4bc619952253
ea8e3cfc37b068aefe4c0cb20e3fc081ef043bcc,26888342654bf4e8679de36aa069118cc4a52859,3b7842c30e21d72345fbc4708523a283848279b4
492754ecca850986a256273918bc4006fcd63bf7,2372a069268bb381d8248207ee7a0484811f5b27,883cc6d697a33d1e02e5cb2bfcc1eec8343e938b
0874521a78d357e6b94edf0ce5ed7b243b66298e,a27bc236a06f2dde0c4f8521f1ce0d3e2f75856c,0e142c00cc432cf238e33c7274d2c08b396bb605
430f1910ed39628284a38dc8a7d44e0380c9cdd6,e5ac0b26891f1d5934e8023204f6574195a709cb,9e70f49745836204da6e132ae0822e832a521261
ec3a04da9b8f5f172ce3563ee17b17cae393eef3,f1b166d6b8013fe8e9c192dfe9e3908c5b379625,41dbedfe2275bb536a9eff35bb1054ce1f64b2b3
ea659cbc2065d5c0ccc0dc8804eb02efbc9bccb5,8499fb34b26cecd2550f8108aca26b57972bb8e6,762057f46d321c99d1cd274a7e19eca5180ba746
dcf6063dc3669441e4c0a2fad206f21b253f2916,a05aa25aadd53a6e9857e511a82158c782c61678,591c1b0177b188bdb18572a0b3b20dd1d1ac076b
3ef0db24047a6e5108585a9be8f68bcba18e4903,49ad3b0d2c03a4bbfab9fbe779044357c1e0546c,309d8a90fd2b03fedbef3577b8b793d583c20fc5
a45e5e7ab643ada0dc7c122c405a3e84078a9e89,573b2554f4ed717c9d6f8ebed7e0fcb29021ff86,36d7b534378976f9afae0001765e133166bac41e
13ebe495dfe85ce19b5013c995468ff5001a2c3d,e7ec91eca8b4182e97a6cb88f50504285495df6c,25e832940cb6fa76e0c365762f66c466a1e6eef3
1d8b21bcfc2ed4b60fe625ff82c75153bf77f05c,43444ab7f0680d1b1b003aae5ab5a251e7d4e298,1a28b1b5c48acce54ffc534d2d057735e45c24c9
51ab0d759f6138a639453a429216f0907ac8dae8,60c95032fa92ee43565368feb999d9c66e1d9c64,76e3cfc38f770ac7fc6ef9cc2a1720eea5b4e99c
5d02c65425b2cb33d5c3b6ca07a13c35b4dac90a,b456833b03f54db6bea77cb2f4df20c856eba971,b4666447243b0d2c3fd8eb09884ae2363aa3cb85
927e3fd455e895dea7a8af31eeb5bc82c6f7d24f,706443c354b0c9db48f7461a15f48086deb5a187,2307dc8f26b202a6eef263f2e2d7e6d2ec04a641
4c8249de3429731be1c98dbe8a75ab5d9ec6380f,f9b216f99a3dd7822d9f3f112aa1ebb7c8590f20,addd0e7dcfd08c9bcdc1a9d636d75941cf1c8530
61f01ded6193cd804b04960e151725e53c8cddc2,f382f2d6edcda2ea561d522194d61a8845b596b9,64a8c73df231fecf3cdf24f05bace9ac8a155213
9e8903383beb58b50b32f85f9217c1c89c9ed78f,a01c20ad20a8741c20f5823dca8465e73908dcab,fc94770cdb70e26d869c8a75e2b9bd70f171e692
9e8d779f316db1895795a5fa191e4e50c27ffeb5,a730bf2b003c3715c19d4fa0a7c56407e3760f36,da5865139840a94a35177e27297296244787876d
e6b8aa07d7ebdab77f72838fb3a36035c4d75d19,2d8b10a5d82f3a1940ce63c7295dd10b0883add9,ec97a511d5ff005877006ba199a287a7f4287872
c13517634fb6065309eda729db210ea2af3b1e32,33f5da686ea0c853f5259277ed458b02e8d95a82,e49094f0456f6bff7a98b94d9c925f7a22b835c1
3f2e2ad0fa97b8bdcc10fd85fae8ca0bfe3d07ee,a6be7fc1c2a3c4d3bb98e09d266fdbe76dc9f77f,2970d98550d5d666c78513ed072240e0a6a99cfd
31c893407191eabd96a2e866943b8d2cd8c3d2bf,11e4f6285d382916fc6aa1807f4600cdf0b58ee2,eae098ae3e44dd98e50902ff9be8e2ba5729fcd2
acc8c69cf582a3643341085226e8a57842191123,1fc7609fa898962cb9187cee44e660d597fd76f2,b7e64867be297b95a4e4fef330e422a0725d3368
0a8e174efc32eaf5d7c320680493f7df29411dac,deddc441bc0023d1bf64f61408fdcb1d57edac34,8bd1f196393e22d49f8bd281da3d4cf3c0926891
2dd072a492f7e8d718801470d786f694ce8b08f0,cba89a4713bfcf19444fae0ea0a5c5c381ef1b7c,d3a2145e5a7fed0a8710ab939365ed2fca07864a
ae36829ecd629e506c94bdf3b202e3a3ad44c868,1e3c5865deec7240c649ba147f9616b3f7364494,41495627876fe3c013abdd8e9f650be3a3ccea98
34605e9cd1138632d3b5b099aed9836816059d3e,22926e4fc7a522d8985028922e6e3fd2bdcb46f8,9056887aaedd811e0518ebb1b98219b561e04cba
2ce4f0baf561ba5ace64b9389c9f156f0c618909,d45076d9d6bb0c73c91b9a615679d3fc277e7cdb,f77bd0226f76b7bccda774c7b09adf42384d6b00
9201047f31ec67e94b578ace4ac6537db69fd3c9,71c58c7b3d050d931f624c485f762f5fa1e30e51,25999ad8fff58ed787b8ec2999e5963052b1699f
3a34fc7be3402cb52a436935f31c3c4ccb5a2d86,def37052f159ff189b79860a51f66fb97f3904ab,dfe78668c2673286fc50f504881ed45d2ab99d15
03a961709b0a41630ae65f3723df5470bd34d58e,d153c75e84df79e2765ee566a40e2e7b4af1e39d,0d8156fee9625e8d85aa67f2667b7bf77e1dbfec
5562e3e440991e5d1270ea81925c403e1425da4e,598da1936e0f95aeadea62ed77cd1eaae45f43dc,bcdb68a8c4b512b845c6e0291a86a0e5b03d7344
5446a3afec4a203157f58aacf0f18bbd5b04ef1f,82bfe6cf0ddf5bea81f8560f3cfd84137161e8b4,9f7b814747deb93c7d34dcd35f46adeb895e50d5
32c3e6e844c1b305f3c3e1a5c799b7af8bc7ff38,a0f572892ecea623a8004a8d2dd023bfdef2218c,cc3589d459a7e8b4dcac2957809e0d6d541c8e94
d8196a6ffe33a6315645c8f91e3247055b4a9c52,b68512a96987120e021db04cd15865bc91e4e102,c3f27a2f1c2fe0f1db4594aaa5d111eaf50dc78a
ae346a87a128eb15db921cad916258839a1fe5ce,98ec81896e01c501f7215dd2a39f535621b4c4f4,eed6effe27a384a2455c76d41811677aa2279ac9
e28b76a64e197166d26620b550ff959e22bd0435,5ca8593f143c6420891f96bb871e70354fc6de6c,3348b9f01b6cd52656ef435aba5bab22c538dbfb
b1981d646ee5769e6925665a1e7e1b10d756080c,d92bc0e7606b7e1d207e55fca54deebcbba569ff,7822a90e209cc3f1cf74c0eedd100b2ae0f4b523
94665a40d760b6cdc22b89278c201ace10a0b57f,bf25b32cb23331bf2e4357965384ff22bcb13603,1471d49fb6d6696ddfaa79bd53ec39c7f1dc1a60
75f8d43e363fe326b87dd7654c7427a13dcbbd68,b16ce8806b6819770d0f207eceaaabf834f67740,46de243fe607d4117a40994bb7b135013708f617
5418ccf31ebfe3857cfa784367f22eab253e1f22,6719b7df29df885c603806a44f3e34b1a5b2e7ae,1b2d7755aceb4592607340d8703410aab776be54
6fb16ceec631a8067fc7c1dc9384fe29cff6f142,6d9578a38f0e5448e42efe18159255fbf09caf7e,2b6c46b50d6de99750619bdc399cf3839399d9df
c42e64db82d1c0c40a4b470d46bc70e3fd4a2477,2a7100be8763501ac345d9a907fa46b7aeeaabf7,d5a50eee8aeab634b763e2b8e9c80f4936c50fcc
d2a1f9cb200b2b2b7ee5219c16e4250b037cb043,1ac2334b593e9ba9d9b3442fd1c1952e8fb1ec75,ac6637276b67c6fe377b3566bbd28c49ae3db365
50af4d03888997a768c626627e395cdc76fcba76,a0b637530cd7b81d5587907e0867075f9d7fd102,7d0d909a741ab29294313af6fe1eea32bd37075a
7335f0c1d643629c539c221686fd353bdad8096f,a0f69557cc15fa9fcac56658a4cbbfa3c480385b,9a9a87a94babe84cfd0e7c98ad4444ef342b722b
ad9383f2c09bb277e4a3ee9a0e3fb8a3d80499c5,b4cf545a94870056395983691ac2b9fb9e6bd883,a653a4e0e99637d5858f085b1adeb527e2b9b170
2f9c283bb17f3f4f4f6cc9983f6e08e23db24d94,b4926283f8af906dd917ea966c3878f811f75843,c26f9329b683ec0beebc131ecae9c120ba32627b
8c5bc91855dcdb1812d0d8ad851e1eef92047187,48f115686d105165d9637ffcfcce2f10b6192d9c,bc6ab39ea2f13d24b8a53a177901cbf3fc689143
558da7363e8c3b7c459dc6475f698f3bc8a7da0c,f26725e70cef018762baad434b03afb93e00bb80,1108d0360917223aa243e3ac0419499ec67803c2
14dc066d6ba599bc2ef8a34545920266f956adc8,4d6e3b4e1a4a9a0d7eb8933d83c154de1f612a8f,0b9e02d920f95367d89a2da0657376115411830d
8920a4c08d238f7433c187db1666a4fae621b145,7f34f27a1c393c264687a5148bf91744436c75ad,b11434a6f8f8f41730b7ec49c21bfa613bb99378
90e43e055b34073fb92f5fd7f89a6a4ef790bf5b,ca550e1a704e6345044d283b9921fb0fa7f66a11,9a85db897244d3745312f9247941f7e894faf3fe
09b492536594be8666b3569e0d757088b52f8533,b2350d90ea29de8c1009c8d1babfbfd9a25df899,9b16fafc526d9ea57209fa6d48a364ccb72eb1d2
b923613eadbb455b35adae8facfb479b7f9f3629,283b1daca8cc58afd398b6e372b653732c0a3b03,8471879cd9c88c0e30700db210f1abb7d54374a0
e7dc8ba5352e6155101fe1179b3141c6f49e11b8,45415f0645a09545decea45ea40ca226f47410b8,b2a5334a7594238d83b84144e41cb0e37d8fc1c9
832bbe9cab4289a844a9c4f5a4c948bd1c1af78e,a9ec4b3767c6475c90c195de1d623b94f30429f1,943272b6f20d823554ec49bb57e08b66026036ae
bf52952b868320247eeb9482ba568b21483197eb,8d79dcc0d0454d1c0e53753c89217185961bdd4b,ec6f3288222b0b17641d13d2b2f5a2a4f53ee385
bb68aa7e16a1703f603a4b75d63baa38ba74c6a5,98ecfb1e4146927de0530a862643ddbafdc7a249,8eb2cea3494b684c5e5591e12b98511636ad1353
e0baf898b1f670cb09e7c59bdff2128f88c706c2,a64f44e5791be2d210308f91c262b6211f90a6a0,1173a6b2e993482704e097cc19c31810220c1044
0ac7e38797294fa66e7d8615cbe574903f061222,947eda3964749bf28f36db59a8774b558dac8eac,06ef8fba46d86a709511e4d72b8ec3cda227efac
65d8c3d7ebef6ea5a893314b4a3267d3f1d6bcd6,ef15d3d9ec80213697bb2acbfba3e6ca0f8fd487,66099b04020409672faaafb1804b4c03f0b8d43d
37b5147b19c893de4555b0760cc8df1aa24b0f93,05c2bd85d36d0338e33d31293c04dd9704bc07bc,1f328cf362768d56dfe6101661209e6aeffdded5
95dfccbb5e35bd5e97013e0336ee6a95ec6b04b4,63b9a6bda8d5f5cef76e8af7f4e262fa54a6a6e2,1c1475957f2fe65d918868690536c33f10e509d1
97f43999367e1e8e2f4ac5acb01963aabde462a0,8d42a9df83f0ad18cc8f5593e415a6b74d3950f6,576ef5a33d0331af55047818aa4556b1ce448ab1
29d1212bf3528c38169814b62cf44b66d306d766,2333af5cfdf16e9dd2e62055a7c2c1c1a94a197e,d7f1e56191970344b538f551391f36907e9fb048
b9dc428e20e65e6bffad1e541a039aae950783a2,fb5456da796a6245a48e054e816aad09c11e8838,dd0acb63606006c27294a6177abddb72e85823c7
a50e0382c591d279280ad2c3a569b708a001acc0,bbda3631fa9b338c5d5db160f749660140d82ba3,54ba991c111410bb74b1a97eee90f7f8ca6ba017
27a1acdc7d90a8aaa931f2d011fdd6f28695bafb,f92102a5f22ae7b978ecf91d59781e16f0b82163,f1075020189b3a526597a5e9f1c5d4813508ecfc
ceda27ae256cb00987c9face4adfa80a20477534,623b723b113d9bc862ecaac881d881c832171d82,c50ef1efcfa251ec06c577f8b462aecff3d79814
6aaa92680cba719e316605bde85763c43a083e43,29be433e1b360eb782eefa3405d673cb0e4bce7a,6dfc0c4bae77665408d5e011fad5b694c82bc3b7
aff2a424312993642fcaeeb34814a43ac6973dcd,8abe70e25a777f8e04b5fd251d8464d5dd319200,83ce54b8153d6eb47b392517e3092ae0f501dcee
748678267458b7da6d655f1988dea51142a7c9e9,fcb5531fbc90cab7e998ce8eab655182d165ac50,d6dbcb5c8b914f11f5931f07e60e40ca6f29f698
c286e444991a4bffdc1161f9a18c5fca36497c61,f5cf8956c5622b240dd8f2013a983afdf5b59014,6a485065ba42601a46eebed8ab85705bceef3f23
2ce3656ed3e43445a41168015466e8490bc39653,c5a0d16c585fd7af0135537346b6f0611d51d739,a2a2a6d79edcf53dc406daa1730968c766ea893d
a19add9c886b7f64a2371633e16cf8ac2e9447fd,a9db747eb912f4124d9690d9395413479a2848f5,6dc47c71fbd26f85458ed5f923e60fa109f76bbd
e28238da9b5111fbceaf4bdc81528ef4cdfe26e2,1d32a575e756319dd8ba62a0a2960973dbe3eee1,4fecfe3df3d3eaea31e1c4da6eaeb5a84d07e0bc
012204422613f44a6908f22c96d18a23e906d8c4,a8352f3e99382c195ea69466e2f63be2ff723a9a,403292a13151dbc265748d2119f9d1bd52fb9d54
7bad1771390cbc297580a4d5bdea5b5281a9012e,b2ea782eb4cfd6fed9a85619390793815c204dda,1ab6fc9a4bf25638a2e2364f8d4679025fcd3613
1aae90b29495ba2602bc57a94a7f2bdb1df4602b,f6b5c513bb73bc476a71769e094ea8401eab13eb,bcb5365ccae8de57a976d9b88b6eaa7837647138
d9e156e90e5a33aeba270962ebc16ea1c103223d,82a8640111169ad62aafce0e0cbeb2fd6864af44,af9c9a826e888fa0927a1969c93bb90dbaeba124
7cefe8a822589c09be7d80381a6ef9c4cc32e3aa,94c87243ca2a55d5374a22900b59bfbdda348d8a,4193563190b9a25de40bd6803f58e3529539bb18
776c39dc0a8b7563b0f511d19346e280a749e9ee,3385ce92a2ce8a7c6b47b02c689e8b28b8fc8362,be39828fca10b355e2cf9ee514736e87157748a0
d1f035f456df43bbd068ecda33d2ec08d9190b2b,fcae0e311db59f8c545d7b2f37f94a343c8ac206,501f3972779ce635f67c5c0bfd3cbc34d4699f4a
8c251db2c1bb15d4f9ee8ef84a6998babca199f1,6ea4ddd3d5dcc27ae70d8e33e8a744b289fcc449,e25594c48e207157dddad49d8dd246fe59537e57
3e94af163bdff38073de96da87ed074c167afdb2,cf5feb0dca15e1898739352de4bc0028b831d0f9,8363c48863a1d8ee33fe1cecbd184030f86da0e9
9859125c7b927677e77085dd99b4b4b83df65ee1,eb8325300e523a56d4a11c8f2dcb16f5892a5cf7,d27c3b4b7922dae901d42653b1a6b1859b72b04c
2606cef21fc2d8d3679d33c994d9d5fb04a68def,fa5575ea549cb3b9f6c70c3d6429db41fa46864b,b821b9d502b1cfea62fcf2fa36f439eac09739a3
557e82373484ddb4b48373d7e4931d7b234043bd,4db653998bc84211acce9ca2945d06dbd2feb90a,7475d22154dd441e70e8c256642e33a1e6a42dbc
b900be6142403533e6c6d7cc2ab78eca1676b797,e3139fea211474f8b31ac880c259ae68b8278c6f,db980a5d18d1de83a9ceccad8ce9e283d58484f9
c910ec814cb6bfb0627142dfa44e17ecafc9e49b,4e3c170ad4fc325c532c2075dece7459b9682f5e,7cef39657f0211ce337b25aae8c0cd7901b03718
30f5558bf2fdc410e73ebf597574e64cf114fa19,8aee781950f2333140c7bace9bd9c36be86af4d2,1bbd16d1b7d8c7c48348d63a5bcba07e32ef9982
078aa5d04677fbbfb0818bcd0b004719c742c5e4,9dfda963a3df7c62be5ec5c94de0b149de590f2d,ec9c81e77e0f39f2a5748fadac320f6251959748
ad35fc82af76c5460dce612b2792398bcc9833d6,b6c4592513f8a8295093b82c5293c2570003c33d,46dcd4da760057b54e5f5694e8f75408c33fbb3d
dba189f4af385e887d479365612d398358d9f732,8d90cd3e64c8e2cd348f5f5d88714ee259f05527,4144f8d93a7f63d62ad13092c72a290b3a3f967f
799c22d5534e3f296eaafbb6b4ee3680e1ac8438,22a1849733049dfa003389287e2420f6e9ff0c5c,5395e52539816eed706dbbd90d3ef5051857bd30
eed1fbe38aad67688da6bf7b142e146ca34a2fbd,a9698b6f6ef11184139ef9e53c3bed8b24c0942b,b82af25e63e562264c0cf2d3ce5077a272129480
90305b6032926a4e7d19d8cdedb183310d56edb7,6a94d2683bdf2ff9cec4aae2815d079b592c0650,bf17a84dd28433d810b4f83dec7bf08a1eb52c87
972a9df03189ef97cb7de63bbf9af1e56f74cd6e,fcadc801638ae44193e61aafa7ec1a65630159d0,63c8e458bba2831baaae76913d61ab0ccabc4b94
1148caaece7a1924ca70f4a6db73790bb02c8856,5604bd951ee6bada9d50bc86d8ec1dbdd84e6948,399e699b723150f05c03c67cd4451e148bd9801c
7a1f617194277944c5c742e04bca327d4ed4ba38,a16f35dcb18eedba213c9311a76babef6d529dff,2076f200deba77d8ce8cc8a7032c146cbb9a59d0
f8c49c4a1fb273f70d7498b8830fd01f63d3de24,20746a907df39a74d531cd812500b57fea9b9c28,62e9de223d6df636a44d5737f0eccdec68d0fea6
99f34158ca892b4dfb86247b34db22692340991e,769b8a07b093512ecf79ab5df2b687679356f748,258b4576a27d5d086c4a5ba33f75c65992b59ecb
0e8d87bc269d3e59a174b8b4bcc84c7dbc7ff6b1,e66378ee59998ae15f8a3b6afae4f657d17d37c3,984dcbb8107ed0e732f5879fa8449a0ff2df05bf
e660f2ea84132f96b5448d102cdf2d331c6a3f23,f1a6d977653cd4852bae6c2eedac4f1692f49575,368289d5d869d5c0f9a58d13f8f95162ec806b18
d35640bf10a2e58f2204408563568aeae41b1f18,88efd9eed64a5e7b90d4895a331cd3d6b9e7923f,a84c13ad18ff12ebaf83ff9072aebdcc7e37798b
fd38810f338741511c609ba5cbff2192063de737,85e84d048b3593ba03fc4790124f4c54f0c0d229,c2b1eeb8c6dcb1090173193e2966d5328f8ed912
6915cd9b269649ca945a4fc952ee7dedb1b38b85,2da28054d4ebb426bdf6fd3888df387c4cf6d0fc,19ad26afd850fa79b4bd599042a87c88abebdf14
75c16b61266043673223fdfed30c543e353d4b6c,7ef33cf4b2857437662c9aaf505d824e3fdca023,425707e936772a859aa4e0208fd671397f0b2808
2ed4071c1e02e8374aa8ca5235df314eed3dc7a8,55482bd87644bcc0d813b90b4c67187695d8ff55,8d441929a8c725273d101a0cc3138ce59f9c59e8
90b8b9d121a3d60c65022f3456d896f68a472795,7bd1ac4507647dcc1b07f0ee09acd8676f0960c5,6e1d7b4e57e0317e53947c0f33203c28325c0489
c6af4df9b91312d1feac6863b934ef14794b31a4,6ba6658aec7e3beb8a908807a91fec0eb3f7d602,d3220b46d220b876a59ccd297dbd14b0f9d1f6c5
35cae0bd3d8abeb67f8da64a1de3ceba33a814c2,db6e1ef1ccc4b729a7b67c2b6406172497b9f499,f0eccda1ab3e83086bc9835edd4f8f6bf658d661
9b1d5ef92a2abfe43fe2df53ca8f054c465f9f19,6bc34710c8c24948fdae13761225cb0d3fd7b1d6,2cbbcdf096c9554ab1b2930bcbcc5625000a59bc
f32ef29253f6f347c568adf4686de4e10893bc6d,3c4e4187aa5d46f14596bd3e3ac08a279eb0de40,0e9ea11859fca6ff4a40536c22f8c25483344252
1072e68498e545bb69879614e02d3bda335e4cba,2c6b82417692b8884f2f24d5e6d96b796fba4790,b3e7d867cf9474edcad7c961e180146f7e533950
b47588b088a00db62b3384453f3c0fd76b26144b,9dabf6e3e4944204eb9ce1c4346a8d8265e0e7a6,5012e45d0482034268a530ef31a3e33c2360e1d2
3d6c53ee74d148bba2a3da49d76792037b78eae7,4809c1fa64204fe868eef38d0196ff24c8371813,0ea798d8625b0ec1f1084b3bd48231360b19d481
92944e7b5e942352aab44e1123071a791119b982,6007752ff3bc2b59bf0292448345880ab91828ea,5bfbc145c6d3a6b7744e2ff0c478274e6b6e0e99
de650dea55203e30699f786b59cc811498c9671d,d36d9c7deee6449511feda19dfcd7b5918bc3167,c9947b4ee6865af658ac101c8f6cb0b3370c6dcd
becbd5411cce8e6aa23bbf206ef52b25e6224eda,6c065e69fd17b5fb5fd7384f4ca97317cafb11dd,7232e3ac442427c39fafa9dd4479e152bf73de50
43bdd8c07e7dc0ac9814135c4c99ad463ead4890,d2c2ddb337c3bea49c1fb5b6ad7408fa128b2d53,815b17a43b059c1aba2023ce866200f6cf887f2d
3a07aadba2db6140876ab58ab55ec7b0a6cc6d93,e1312deafeb565c9cb5fea486e46273accc88d26,c122e16bebcaa76a8e1740d7404c1eaf56082a9f
6c47f8f4d79d3cd571e5d6526dec0791d2b2c8f8,b1e65ca49fca83bd215b4c8e8427560bf9083cdf,f5d76c55932f8e5ca2c267fb9b0a1a6abc3936ce
8ba76f7d0a71e5d27ec63a7d81983a649913b8c9,77e350b6b8dc61de3cba519b0f4f79b25eea9f49,f19b390c685209851873339a9c9f9756b0bf81c1
0c62ac9f1624faffca6d6505b6564e8b9969d3c0,e9b394a5507b35cff1ea969ef7991ee0fe2c6d45,6eede0f71f0fa802f18aeb6217d3f82b9d5834a1
f7dcb68c5a0173048e3a1fb2cdd1a2c5c0f3b761,89605f47c23776c423698a5b4bc2493060e3c13c,65b442567218f772939978849f85c497f96c4dc7
6d3da836113fb65085d437d4b7f932a1d049cfd3,6d23d22d5000c677a8c59a79a9bfbfd8b9c20dfd,8c9a07a3e816372a5ae2d46e0dd9d822d56e6e6b
99074a557895249d03538e5df9861fcd6ae9a6f0,899981f318cdafa2e2e4764f0bc5a26889091ebb,dd5c2ea6e92ec1af35393ffc8ab83cf81fb80eba
d13a8671274398f7bc01e2a9dfbc9fd4b2bee4b6,18a226962291704c2edfe4a0daf196c41305ec55,59811090e1269d403f67bbf74d6288d4103eebc9
2a196899bcac210138cc267bb47475075aa07cb0,b5a71086e840fd6080d2d376ed43d31918ed1d0a,edf5fce7e33aa26cebca17878b42971c8da91475
e9594227538ce6dc537f25cf7082b5853034282b,cc260eb7b2549e88bb6c2aa0480197ee5eaf5016,ceab50cafbfe9b4b8cce092994fd1bf888e9c476
efd92fba01224190b6b225f487ef3735aa9c58a0,dd13b4608886c540135bf83d2992107bc03fdeb0,a401898139b7e50d9b6e872de949b56e4fe0e24d
a45ba3add5f08399745e8f6f4e4eff58a63c5853,a5486e04cd7dac0acdf4efe24129736650154064,d7801027c4abb7e1a53155dba2026a8b90789791
a08ac618a4ca9c5ace5af9c3b3253f11e6aa297c,5afd809e88788ea53097471a7ee783826475d15a,306559667c7c569f3da35d2d3d2d692b53a5c3fd
35958a9b6b927d8ce9b1d0002ba942e14c6b8422,abb7aebaba5721512c3d16857c78781c60259e66,33ef88858ddb65eedff41e3a1108cd6baf563917
6407b5f4db68d24454b0fbaaad864727b5c61352,260368ea557daad41a5395c9d08bf1f2eadfa2fe,5e7330448dfdf3974ebf638dc8837c87bf0c2e5f
be4a317cb463f031e91527ca4e74ce03c7e3d661,bb4d3fda25e858b0f9153a0861fd8336c6007ef2,a135940cf5184c7af0b2ca1a7c72f58a45dc4f3c
cc66eb27ab549216e2b1e99026f0beb31e5d0102,6757bf3832ddfe5cc0fd488e98b20d5245fbe8bd,6c98a632850715f63fa0c83473dd23d977ca8469
85230758e453f88ee2b89665f774994db443d968,b8723226787a98cd1bb7a1020dc0e73029991df3,44dca29926bd8364d5b013cbc6820fde67cf3e75
55629aeb19b0e7cf968d33c9fc0f465baba8f82d,761f65cef8dbb17867efcb380db2b28d1454e701,9e14dee1c35bd3131a99de5fcd613afeee9757f7
32f4931fd24c18db383d9ce156dec1a65c83d98a,131c1e1b938c14cd5a3892d92d20f2950b13cc3a,e7218d09fbf59d858cc952569537d739e93401f5
a2d7503f714ee8ff856efd8d17548fbab928f0ec,3f24bd38864d884b37aa4c8da025c51a437452cd,84de6a00491c1f20c7fc988d01197f8ae012af62
d6e8375e64516fd5e2310c8baf4efdd4420c6e36,079905654dbb98e0838a18e3d25a86b03889c012,d3d4de78186a2aaec323b49c8c8dc5dd677a8f42
7bcefd287d8109ed80190797e33bb5422395436a,5af087cfc3ad9a328c3a709e7857fcd27471f359,4503070f7f140a7696fd3b9ac445865b90179d84
0b24d5f92e1995fc6afe2dd72a23c8ace29bebce,87857252a46b212ac383cdd91ce6a028ed9defb1,8ebced609c453363e0168b1d3b6baff393817896
4c9f2b8b25958fb80887205ff74b3df3e4c1c056,1d95e6087a37fb9ef776e4322d351035a63ce909,4f7dffadbbc11c11a7fe4d790a562d3e78e4445e
2670eb1ce74564d64524a0f5abb8b685894b34aa,87ea9a9e0f5cfbaaa4112fb07f728326214d459c,f8bf34303c62190b66f0cacd081a3c0328c13e99
85c7368759f5fb53aa23e03c8cc27c2deb424b62,bdc4297811d2fca79a7c2c02e88fd31b1088ba46,90df440df3f89ef3da3953affa88e13130db30d6
0894b5fd029d8e5a2fba8941d4b8e20466ef0613,ad64eb7af84c366a4b197d981dbec90ba06e22de,0acab89b0b9b7be8451c839a814f70e0a89f91bf
7f4841c76d9e3b3574af03afafa583a6282393de,922210eaa8c6f96a29a909926aa2decad31286d0,73185e89e1e50c0c39f9d08607465c35bb364d5d
717d38f0601d506e41b82c222c429c6f98362c55,7d23c2e9d0f569d3560f774da097ebb443c8c737,6c67798272308aee107d13be45ca61f0a7e5c12a
832b566097608a1864baf649e03638603d610ce8,ecbd5840cef7db23b6ac4da18061dbead8a9dfa7,8f2734e1f18b96d4b1e8399fc9fa7d4b322d04d8
8595c927a87f661700dce8391bfab95cddd730ba,5135b586cb692ca40e08114cc25cab5f709fda76,e5957b1ef0a3bcb7d6d04a24525f0a8634e26ed6
3d9d80b007dfee801cf5ae9769283733c75d1963,f2a5bf17fc9192bcb7ba4c53800e6cbd726c382d,3695bb5da509d5ce98ff59c2b0a76da714b61578
f9a4631adfa3ac07fb46811aaa847691e6de6be1,645fe8a0c309f3c33297509b977ba76954edc05e,0440749562b0a7aae0055c4441985be4869403c8
a93942cd272eb048590c7e0ad3a373067853c4da,8e9a019fb75cb2098dcfd4ca9e730ab818755feb,889c164f787fb720314ec1090f725927a06eb69c
5a60eac0c816b8d4c107d5d0f751ce487f70df61,92e5ede3478073799ed5df091349fb4b90635e92,76aa9b1f8b23c74a174dc436b3865b7fa5c1d7af
89dbfd0d990d3b3b193c51b9d699999b19816534,8a0498622b029a9c1150347f45a2fa310099a2d0,018c1e5dfdcf49b3e7d5e3035ddb089b3cfc2897
fd94b6db913cf9c38ee03a179ecc180ef52db711,fd83fd5779e5f19373202c57209f648bae072640,a8b4d702e206df803a1aca1205283d98cf350f9b
29495c9ba57dce83d6753ed19e301855ea37f035,9adcc891cf8bff2098fd9360ae1b4d5d508213c1,ad1c19864d20b4fb311f8e74ace511a58c40cdc8
9061fba9ff2599442b5fd214efaa2789c34a261b,cebb47fe9aa7298b8ff50bc2963266f78ce4830e,c1db756617aaa5ed0477ce48292b44e1bb997179
4846bd78fb0e7f1199ed3d5f52b5099bb183ccc8,ed7b0c5e68bd870faadb6fdb8b24969cb434b78b,5cbb36f218ebb40c708c29b342ecbf43e7ffc6ba
4b1978026a3c63f1de96e8e310b4535e2b2d4197,e01ab79823d0e31dfebe5dc9d5807ec04a4c63e1,051c5fc7b6f76bdc9f740718f1ff2a48281178cb
4e0b9e85341bcac28c1f146cab638d29390edef8,f097d1ea353382bdab42490a2cc91d239de82e24,3a11ee9a14ae2e43449db6acdfd9e1312cde68a5
83969d3ba38ec2321439c98a7da615ee66b0e228,6cbb3d982d3f547ad09a73aaf5939c6092ae3aab,63a2395e2c552f5b983406f20b88dd364458bf09
b6a7504665b4382c0f879dc8d82c0bd4ea4efa41,27133cb66d75ae134110acf12f002d367ff04523,cb96acefc93200a2e035edb877edd8cd5721c5d9
a6c7ed5e61f961a022897dde1d47140998466a23,f51798e449aa229723742425342b84f41025791e,657b9a62033085763aef3004e928f56abb9bbc7b
b93d49df9b4ba90f25219d3a4ba8536649646c09,8c8f8088ebaf68c83500668e97b9c16c41f7d92e,897caac4ac733e650c1e0109e692ddd066ad9238
bc100eda4d4bb811d63a265a4f13bcce76b64fce,e244c7bbb2092db39637c83b34a428631f90a5a7,a40a3ee34dc8d30bf968d5becfc0295b53226025
de586e55c0a5376939753c86787645c84264b44c,d8d5087782a4813cccfccd505b3496b6e78174b8,754a3749ce299d64757e1a9273f3a5e470f90772
b26703feaa97b31004bf833428a0a7cf8315e1fb,df3a0af7e0574f160e3934175b9ae4252269a1d0,136022a7b2f24e0005aa966f84042815d6d50187
72466cac467bbb1da954bd6a5891ed1ae1eacb34,23098d049ddd5f65cef550a478a6734f579f0756,2d1510e067311b17d450b3904b7528cbcd52fdb3
a7e983b08abf4d384fd84a1f7f42579fa93c384e,e746cf96daffc2365178a934dcd1eb28ac955f4c,a2c518285c6460734fd700d5d922540db556014a
a6afacd63303bee50cb04ca5d5a13c5c79c8158e,a23a4805f4b8dbf76c6472db14825350341e0405,b33ae75c591490b85a09300dac1f912ab8cade93
b0e1867b4c2658568d72cb1d023a5a010d483825,db499b61c0a030b0c9cddac026e854d540ed600e,c3d0d3edd3652c5448c9fdb9470e707841ac46fd
e024fdc5d7a5ff55e3ff96ed11ebd921fd582d78,3e9fd9073fbb232f34b914e8fced3691bfbaa496,a6dd77e32a3e7c802c578890214bc39504e991c2
7ce609e72168df2869aa355afaa22edd4e14ef91,a429b4743640ba738a9f178458ec8110f2f13615,eff489a37a09c7607da289c96365cbf12e8c755f
02f41731ebc658a56b7708f7584bd5010103f054,d4a74319389a0319f28cb6947f53bcb46d609539,9848349610219cd0d2dadc67b112fb09a8317e91
891723111cdeb36c8cab0fea41f6dd3ed1648e2d,cc7d67d08cca783f2d0f439b24285a526e9185f5,b997e41366bb9f6d70be3fd027a4d93fa20220c5
0c4d61b3ded37eb1dbc6c567411c599beea91dea,a9fb193b1c308a0a052d394386766a3232153a3d,843ef82002b2477bc09713f80259a965c408f7f5
11373226348f53234c333d25deae715d687172b9,9156d1025732c0744a2b8cfb8d5295333a1cf94d,6a0e8feeba03a1c89ea7dd6f7c13b2aeeca4a81a
f562a8d9fdaccdfd630db4792ec4e0ba3a8d6e58,8a6ee0055ad5109e050d293c9a92529484899be2,2bf377744ae19bff141878708df2c9beb78b03f8
abed465c089b9b046b44fedafc7aed6720ea12b5,62a57bf82ef45c28142baa6f07d3b9b8873b7d57,c43f671baa06671d2aa86653f3925b9dc8f74c4d
d1d0afe337c11f386fc189630265b6142f5f734a,13fb30c52ef398c3c8a82c262ea64bb83567fe55,e21186cac0739d0a8290759c551a3feceb1b4360
68253e2a738a32d47259137de23d67c5adc1d228,168016b865d3d1ea7de06f0be713ca4ce18b717c,6d104459e2f5857b518f68444b835f1f21dcd586
533d8a775254137e288df31ea99b48676f3faa98,76e0ec6744f8affb72f2c82b61a897facfddab7d,7b09eee02a70122b34747137458412f1a29ae541
c8fee693450dd3cd085a662952b4239483e2e1d2,3963a30f9e434871c515109f24632751a710ae51,5a6d9ff5329a79ddc330a4e8b6a59c4805a19113
5a7664f7d12a47e9efd859aeeae763460d7d0e62,6454c931b8fa4d8479dbd8c572b3d48356e62134,879b6f1e6e20aaa9be81167eb015d9f1135929fa
9e783cc3ad4bffe0381afd0034896e30045a1515,af1194de4d5a33681608e7e745249db774e3a22a,48f6ecc1f15892237f903d2d2bf59474a17cbc76
4f9acc10f092a6a59a8c213ca29c08227ee1ab61,dcc0b706bc48979458080099b7a92ca83646c6d1,2cbc6bb6749fe327d5febedbd7971b5ea16bf3eb
9c7d1515bfa32bb78906e09e0c66793bc802300a,b8920670f442575cc5e981066c1512377d2ac50f,5913434ba91a5726dd2842277eb378cba6eb2e3f
2187bfaddd5734e223948e60857b502909e80c8b,efbf5eaa01649749fc7f8adee03b63db407ec2a3,960c154f48e79f22f570ffcb75d1fcbc21c334e2
965bba5ab477bcfe124c7981e47f53457e718928,b11366c95b2c9eb3611e71919692eae50cd0e7a5,dbbb91705f606be92e0cc9daeaefeaeb290ad643
444fe092da1e614163712d0710f6f38b2948ee3b,1a66cde35bd76cc076e25f8c2f71426f333117c2,93752573657acece7e917904e59078ab99cbef93
88cf633b973ba2002e8f392ad0748b614bf1f1c9,123f196d5d4bbbac76bf1b918a6a0e4dda0174ff,8b3c9e0970507bf7cddfe8946032bf9a20ba93aa
1fc54dd8bbdb83ad9a8f82e4a16d73a17178b655,9e9b38d0cfc08bbc3c9aa873ba41441b9ea0afb7,9cbc802d0dd183ea0c72aa32348b7bee14eef836
b0675058f5764236ed3b32279700155fc968a1ed,c32d556a3c1377b40284b68ecce8a3eef74fd8b3,51a3030b6a5b37adc64f59c6bd9b2e41d724f8ef
2b63c02bc503dc1b1081c90dec770bf78473ecbd,0a9e1ede723605b2cf0a1319a56535068f36fbd8,7dc2a617882931374ba3cf12955d657bc4631bb8
9a760db57350c5efcf0521ece91c4157d0fc1d36,a91e547832499249ef916470154a1a2b31421ee4,f8848dd1857855256d50e4855725fae3aa5b4d60
e736011c37a7421efa7c4b560f7eb25b93afaa78,eb8c322a537af698f9ee8de05ad61227ab004545,a2182cb7a5026cd3a746c559a93a7f2747c6e635
01c982ad707f23090c37e04f646ac7878e3bba0c,569f83e33dd158cd13c338824a8d3179228732a4,ad7cc0e69d28afc3091c8b9a1e90175533efa9a2
9f293df425a6c31b554bfbbad9f1020611b077cd,b934517871cf6fafd0313b4ab408886cc0c2df60,6cbbf9c52aad12dcaf3ff5e44cbe19f39a5b7018
920e1c8d1916b723d2aa60268f1c6a8b5527712c,188cac3bc6dc666167aacf47fedff1a81d378137,5b73fc4d0e772bac6f6c8f24ca948e96ac6fb186
d12bf094aba2667fcacbc7d4c9ae6ac2c32b2e28,32261a0f6d6a7277bd48712f13a4480c14c75a73,f2580efc1585bf5f3810b7b90321bfae3d7d313f
02aac653d2599332b70af2cb3433e8f5d76e6400,3e5f6d322853f4615392217e462a59f1a9c59178,1b6982107f1ac4b4111e37be0a3649d155a2bc1e
3e181d7640ded13fddab537b461c3a1aaf78fc59,bb51ac77dd8ba9ad3512f3552515f5ddcd051d11,989895c82f1cf77d9549bedc5fdc8897758d044e
f0c0d8a033f8ece2dc406f6b59abff9b9a480b6f,e2ade64a1e34f6374b9f3a4f1ff802b4b9a4c803,a835d8b533fd7ebba6d375602a4b5c981ac465fb
b150480c60aff770924e4ffd3382132b189aba2d,eb17e6fd2d85f700250dcbf721dd41d3bc096b55,d5777174d8ec13dc54e09497a21a030debc5c088
41b8f6a42e7c43acf8295c26acdd861210ed98b5,567244007ecf2a289cc6761dfd53c4db97bf0ee9,fa76baa3d4a6415d004686bfe99068837f51ea5d
45b1d592f5a4bf280c7f1a59394aac2cd8f4a541,6b77017cb9f95a445f1173ba3badc05758112d84,dbd8259c48e3654620507cfcac4f532ba857aaab
e2a26ecece15f944eaa327c30143bb55a4528235,27315ac528fb6921a0a66e5d54c36cc3ff9b7200,27aa4d4e3495db95e396cf32746ecd93020f484c
1c86a4bbebf6bce1f14f2e3e17ab132fb3ccb8db,73e5d6f70fc9354e10d5fa8498fba52dfb024c61,991460c4ee3c26f0811e3ee749bad8e98cd467b3
c83e6c34a90cc86ce1c3f3aae1da39d618793335,5670a7543cb170889fee2f3e8e65ccfd96c0b18e,176462c39a2a15a2e68a34babaf4915a66668ebc
0758aa1143a6498532b3d100ed15edd63ca878b6,b38d13577f94364b4c7ba6f4d6b032eae404e934,cdba427bcf82e1c7af5a47b132f17550be4a473b
c89848a00f59cc2539c5ff3862a547218129f594,130c36c406e500af2dfae72748bdf470db602b5f,2d94575fa8124933e47924909766b9eaedfc2bba
36f771a3125ada1b155bb98b62765f88bb9bb540,fb7787b11eef04a5f0f136ecfe83cea67a2e8619,e142953c6d2b796e833e441773acd51325a7ed77
9e60c686b42b79ea69b97aa5376e4e71e8fb333c,850685844b9a0028b7ef11b4239975ab2a61db45,dd0711a27e85d15d45dc47e7b014c6bcc3fbf230
229d88c50fc0b4d07f7c1c51923f7acf59c896a7,626e23d89fbb58d5eb3aa4ac9532fe8790d1d689,87a9214983a52f7564ec282cfaedfdc107b6541a
0a2447a9559f579cdd225603a7a4ece9575f5c28,4e4fcaa8a286fe959e1d6595f2d3781b9b893796,399d82e1da8ddef74297867282862598aa96fd97
d35be8a9eac21ee762b452df1ea879c9c5699f03,2c51abf40dcbdfdfad4532f571e1f095dff9c8aa,2b48afe151a41943520040852a7d075968ff1bf6
3d805b8a9a2e9803f58ae40ce286b274877f2b78,8f269d4540fdd94c2d1891653892875946a18d66,afc9acda374142b802a0fa02e11d0e98140d85f8
a1ea1dd98e7c76d656a232e822d3d7c47063a11a,fb66369a3bcffdf7d2a96cffe8c633b2ecd12182,ae4c8359aabf282d0e1047ab9b5d89cfda3e8928
86547d35d78ffd26e1d0b63187ebc8472beb204b,e63cc73cfa4672c92b7ebfd3600aa18683bab528,3ba9cf5b4ffe0a10dc0874f69e0d72e5c77f7358
6685e22ead441cd00e292e6940e2ece96b674fa5,3fa77a4f627e5ce993c88be7849e27b64e7ae80a,be401422fd786e0c14b27340eef512f70d1f668d
7243befdb7fdb80e4257009497a4321f5241a3c7,49ddf159b26fc34b5f9a0385d1e82edeb75e894f,0f43c7b229f2b400edbd22ac0e2b242755260a41
9fc2b9062da63731b113043f5550b6734ae0eea1,c75bb80b140536d16e31f140a111a14c18ae7ad2,a7d1f7d7712b7f8845a59937fc9e22e67a7fa5ca
35a57bac94046da556fe8af48b1e791d23df9c0f,e050a019a278827a3ae9c0a32cdcb2dde00ce50d,acaa4660fb7162c7e76d09c93e759cf384492bdb
f0e31628ad7d584507612b2d7c4ea017532cea78,49fb1b4c292e3fe305a470b3a2c4dd52f6d46733,cd8ddffe426f37743c0d17ecfa990b5b9ddf442a
f18524f2fe32fdbb798b38a19d9e9bbc24fef3e4,e62cf5b9e7f98f8beaef2ab288574aced94b15ec,57935a895cd02101ae2e26701579133fb23f75e2
ae12a79bf75e2019cba48e94d54b1f5c2fe07f92,a1064ad8fdf5b5941c86eb5d94009a264e9f8cbf,6d3e3d06e2bc18dc15000093869e821a050d9b60
92cc78e723496ec16475848d6339bd8ddbcad9cd,87044c004f22c34457a634074dbd8b253fadaa35,0eee70ac816afaebbc567e00a5c18a6ee46873e1
36073c1b6511134bc0a2312abc943844d22261ae,78666090c2673dd7eeb75864797301aea9adcab1,d351b78821fe7c1a5e4c6680d5928683a1a8f55c
3f7bf0fd70b339a43889898efa59af4fec33ea84,7ee1dea027dc045e8227822987e89db4d592584a,dab6c48b472f83e14173ee55bd3393bbd44222da
e748e4c7ab79a4dcacee4f106f53c5699d55dda1,7da9b4a98858e6d82f297b12757b32e62c8491d7,56cb11e3efbecf83b509a7709238fa55dc2c6748
6bb59c66cb311a871a7a334362edfa925dac7dc8,c40f518de4c9ee3c4e6bafd2ec909dc4ca286b24,a0366d7d28f806b3bf825d6613040e38d3bdd64f
342524c31234981a48e52659d07ff2e52cbd81b4,0dbf40a24c9e8db931875d659c38f975c06bd208,029ea37ed940e20e6b491649da808397bb0c96c2
b881deeb9fcdbb69995eba2b0aa4f5fad40209ab,28a8279d91f1c56e470aae5624c1f3d891fe81a8,eab28cdd2eb66c32f7e8d6ec186c479d3a70e519
c5f4fe28826b3018bbbff3fa1de3822b35583f3b,a1a30876d596e9bca2a5409b53b0fc637eda5dfd,e67670fa70b7f92724ad4c55f5fedbb3b4231615
c5cdfbd9c03c0d443e5a4f4a7eafd5ea1c2b0e21,9b6926c5f514ab5a66abb78bdd0c31cc7770d99e,cda8971baaeb240bb7c5075faa96dd4be02d923a
2d680afab7ce6d66ee736c93761c82141229ab67,96f43001588a2a88d10cf2e2a8d5e8561e98a774,8fac3d62ce2a37cfc11f16ed5d47761c6cfd57d2
12c4290ffe114161fca1a0c5ecdcac5cfd7f87a2,3d2c96ebbfb8ba47349db24d327fb1b577ab12e8,f737860763db3e6e581eea342f2ff148a700ec86
664c613d960ed04fb02ab85475032e6f09c4e902,92e60d210759a6250e1820f891c8aade6214ad20,7cde8df8c78c3e7f7af2758c53e57e2867680baa
783bbb66f9324152ba2f2914c8a2a9a1884c37e4,031c16dd3cd6a8b7b85a747225899d34898ef0a8,e2d86ad66a13ed9fece73ed3afa086a728441da9
3db1415a449212d8c3ab5a9085106c9f11acaa0d,95f94a279c1807554ec2c865ca045aa29bd9e5b7,1b08b89b7b552beecc90672f8ed0b1a858169658
3c2703787cff417098cd01d1c51b4b5cf70f2677,a714e2ff35e78233486f4549d646980ead04c4a5,19cee9b8415bce777f012d5ec7634497f0cd53e3
d221f42a578316c99fc74674b037e54725bfbdbc,b051e7667c5051b3ae9dd511ad235aea19f2c0d5,9e3483fbeb8743afdb32df31c859753adfc96039
9c8f362accb973d6b1ea109e2b71b29649301d3b,36afcbf7fea3dd51e292b20594ef994f683d26b0,314f632377306065e939fb1b17593168bca3982b
827fe2bd83a9ee5d77b49cf4eb8cdc3ce0369859,822022186611aa62d08c8a328f69f37bad2dd38f,57466587c5470ed174144263608febae128895af
a2789d611f74b71fefbf8a3bc0c66f3f3ec3eaa3,df80d4e6120edd441361bcf9e2e64045ec042c2c,0f30af07e5dd34acd7bbee812a92a13078ad1428
12aa48602bcd35b2013f97782520ca209bd4bd30,931bda56331fc2fbd376ce925c4c9923c92498bc,77f53ebde3c14b1e26734fc0a57629e5149743f7
aa5517d44228f2909b25744ed2fb90770d45dfe6,e942c00f8259a6d9505d1ed849b36399e9def989,3e6d4bf1cc120e5885356af1cc3b0e93101fddaf
71df6b83c64d331a3a7347f762e80755088639e2,d3abd339b7cf9b3c7e70679ee65a4732b56ca37d,f2bd099afba70273fb8ef60dd42226feda3808bc
9e5cdc2abeb9de41e630e3aa6fbe197b7d37c0f7,2fc71285f4f709e0ce764dae6616ae67da4056c4,3cf8ae8433acbc20e09eb6bee6c6e1e1000e6b9c
a0c87be0fc75cb242378c1029e5fc58e7dd41a18,1853e94b98100336410c9093ce5f6ff2c63a3bf4,c9461b73139c742a7a86af045212e08dea83c72b
9b58545fb7a244c527ca30f71db7d4f4e4fdc780,3b43bd027c51f7914bc8fe7f938a7a21d58c1d85,9145565895b7b8ea393d1818e9c590cfa6c34cfc
71f8893366881e86e16f15dcb7a4befcd0bd6261,d38c3f8073f8e954b1e0224c5e46141eeae63da5,9cda1666a6129b613770a93799ae57b77630d6c1
75c252fd8f754788a4ab2f9ca8da110f6dd6aa86,8bb3367a491826f1f5984810bdee49b8ee35552e,af4578f8ca12acd094b39f8a263ea6cbefd3e4d5
94368d06ee17f513eaa45519b5e5b79e1ff86980,8520dabebb53c28245bb39d8b52503aa750e02a1,e57ef24e37be92ca117302735b9e3584254483d9
5e0eb521c4dfd2430e77ba4f8d01b8a887afedda,a27cb35fa83d995a33f90474c2481d367cf6b14b,c21bf747fb3d5750ce62ef49ad5334528e2880ba
e7e4044bf053846dbc1fa692b9d559225e385f06,c1ec558d0aeda85edd81e095678952b34250d208,ef53f9bc25aad1cef20f3cd7e7e248dd5d172e25
47789734923810f9363f0ef384c2aca27171dde8,f6a8b045c2f52740186feca3d50c3211c74c775c,7da8c774be6670d6cfe3dd9b707d4e47c0a4870b
735f297f5b187f5d92a88ed1d836311602ac8003,42b052eb83682e0bc5dcbb2c8d47e045c462dcfa,f3f9c68ddbea571e5cc95625a7a14fee620c09b8
0ba4cee279b0bd8b13dfa27ff9a32b6b80397d79,d38c24fee753c550c27239f9e111c4cbef11ca4e,69c78385718462de06ac5af39e5b1c2829582bc0
170c112301ab3bcdba04a12657ae61dd275496cc,1a19fe1f033a7d4571f62a4506cf3a60d37e3080,d338206814796306ab4dc428f1a398326ee0a4df
00dc7930978dd2e6a8d9b4ef88f0e22191cae871,1aa8f978bcd0011be1ae5c2ac1b50874f91b6f57,e7fda48327cf37bb1de86ecde32d4279cb32e35c
cce3280fdd7befc699047a71f990b66badcf6657,9cbcd399b1b95b0357a7dd8964d3200f633c8cd0,84be45f55d92a379c237d76f7b2db9e55e0603d7
1b439134083d3f032eab1ed5ec5c016bf4be84db,16bd996e74560b716938e825ad216ff57b9a51aa,2a44ffe51bf56f86ad3043e9f578e268b860e4dc
247423400f0d0686f2eaaf5de7d95a99b258419e,9d8fd6d55e486d7234c597a89823e0dcafd91331,7488f1e3f886d215ca392e47bb7c2e5754c18985
a5702d89e8703ed2e5c4bdcd246ff9421fd551d7,74bef61b9966c53270b025d8e9fda669142bfa93,170051672181f66a9296bb6f8dab13bfe0a03de4
f8f824aa8d30279cc6d8130a3ba2380582f8a4ff,cc27576339115108f045222df45a8acb3d91723e,5704626762d217e886f23b582d9b5628603d6c5a
348fbfde9d524108e94ea970caf00c2be38bbe98,2c3b78682ad065b9aa677322b4d050b07df5f9c3,a1a2549cf10e38b25c8f277a41dc3ba409a7a1b1
b202fb2b0a2e89006dc3ff98befaa7459041b0f0,96d4bd19ac815bf860541e51249fef93ebe41c76,b835005941d918fcb1ec4470448cf9f4dbb6a6d2
f1abd2c2f00c69ae25a02df3d06d394c8dfdb546,c5f4a6acd0d48a567e2d11bb0041c92a2a8db897,487ca08cf31ab89695d703d45cc7861868251c94
c4899b5dc080d09fdb5ba48fcecdf1f9cdbdb5e3,aff133cac2c4ca04dd68c4e6ac02f2e44946b799,7a34677b2ab134fab30a19c6bb6249425e802daf
977ca19dc013324096e5ef2ac6d9e2ccff824d42,e0eff8bd89aa0aa3d631a197f33863241c6b13c2,230142e183d986fc9a4b1f8f32b42816bef6be26
f00a932cc6fec80533ad821192d4be8266446839,ebb4de1441be4e6b3d6e7df5633db7898a367b2b,f54917d600979a7cb719f3be7af476e548912385
88ae6721c65e5eb62e16627c6ec9555674c6f04c,42d91c02bdf7c57fb2df8887d92e0fa298c4d8ef,a1abe51f2a760d47c2a12641f7b7fcf9c634d4ec
1e83d415c3a2aa7b66c191bf40781d40e37e5179,bba1076e12d2c689b405b12f16120c1a46f9b69a,8ad7decaa39dac87fab7f37f75b7da0aea49b2a1
7854152304110571f6c1a950f3828b4aceded90b,851af5033fb80d4e19c4a7b5c44d50a36f456374,14466ee9d99918072db8982765e621c2de309a9d
b787203db79b52ecb5a47c224386ae091d2e4897,06b0927f1e4e763d62fb1a34da215cf1f03a399c,13548088b7687916e1d12d213995fc2b639c3ff8
a592636d9c07ad615223957b57b83a8c502c80e5,b9a8e6832f8db6bee1abeb9e5e958de8821d949e,af04a523bb4881f106908e231b94561d889f2d81
d65de901db648e6a8254722bbddc6be1075cd119,e2905b8fad1750fed539e32f40cd69619beeae39,96c63c4443cae99de5e1a48a89d18791db441764
2c77416da0bf340fdafd5fb0acb896ca43c02ec6,bf2911a562ed7ccfd3cec8871de3655b2dffa478,c92056fcac53d1e0fcac9d6de4cab18c53b33b41
44a2d4a1eb57711b0050279cc9f4a5cf558bd38b,7917cbed22e42bb7483d2546b2c46808050c7beb,5605cebd462b2011437b05d12b320c3b6544736a
49d8a3e3f52625ff7f0250f40fed79d973eeae00,193550945c1dca37465dc8b7340a6c8025b73876,725da25477e1284c44a0fecb9ee709da592ee895
ea7b9c73f3ba29a464b2cdacc83d73129f4f8d6a,e1f993c363a05c12f7d54d9da46e7133431be624,59807472aac504bd2acc0d64af0ad1988f3a2ff9
6605248b2d58c15760480ee404b4731b9ef16a2c,929b6ff18b3bdebebfdce018fd84f7135df2b6f3,7762897d320c5e0ee57e9d9dee57308813173033
4b5c7ab0f571f3c2b4b6d1d63fb3f767bf038fb7,3eab1c1c028360576a6d928fe7d35afbba66e512,3b1220e3230a040425fc872a1a6933a5742b95ee
28e7dd77dedae2b592eb3ecf7d3188b23718f637,81b22cc5d1673cee927fc645edcf8a90fd8a7f8b,9cceb41c04c2b60bdf17da13e73e7ede25069343
54dd32805eedfde9908458ad5bf91269db14752c,34f11a7a14b514d80c57fdaf26c78edfc48a2d1b,fa735ba7b28fa97fe0d326e473958ba3fbe40ca4
f1b071bbba978ee95389fcc557b6d06680d7a9c0,c0893e5c160e21a40086e573dd870ccfce6e53c7,babcb631f8f24998899b6fc2112025a077e281aa
a5eba4b14f51a52d4d12fa95dda1a3a920d4088e,6bc25c1e89734c1e93d828cd5027a6be0a07a074,0b0a5cb458e8179972ff83911535e0c784851856
d1f999100b449adf175104b355b9e52ae2441fb4,bc17da25e17d2c3f980427e3587661da33dda827,68cdd7073f13f85d8cc192aea7af17afde91cbee
817ec09ec01e4e8134dd5b0175e2ce390cf8d973,3c2ab09a481b237c5b3fab6ef8b399250404cb8f,c34eedb9cf70b2ad9f4d9dc2a99c6c8be1cf68b5
125dc64b1eb9883711d84acfa144eb2fcd14fe87,fbe1db32abda9fccb5bc52aac593efafd89770c5,ade9ac865ea361864128fdd8043bacd0b69c8663
e1747381219360a06b66960ba7221ea74df78492,310db2ce9203623d2e1c18d0212e834f524ad842,48b97514193933e20c354a459c1cb37ca8edeb6c
adf9f98f7c182131fe5f83dac16411645897f123,7559c7520155c501652056011ae188079ff6e76e,4b1681aa1e9a16b3afcc3af4a4fffc0520d4d850
a2caccd31fc027a71216ac85372336fea1a209d8,2ce2bab2a6f2e268642278219df9ec6857998e7f,7cba4bffa14f25487f58850c74d80bcb29e6b912
306e156b2bd329bd6e56267a23379291f1857614,08820e97e8607e8d7bda8b1414c85048b35c1f18,7c538b17976e30802293f19690d9c54b2ec6a3e6
bd2b954ae59fdee3e94f7bafeb43a527a5e8c2e2,1ded960fc8da793f1339ad7cb2a752b0a7af6f97,221be05cac57f53ba60ee422297bb5de4950e608
fc32211dd22c4f5b2ebbdf25a901e20c68627b37,a7cc9d55cf1b0677ee6e212d0bdda7d5f0e0c8e2,810f54ac071f95fa1022874a8b737b7f14bab199
e0fef23d77e43c36d6d6ad474a21e5d1235742c5,45b5f58c4ae667abe3541fc213540ab9922743f2,304372262a90db77c9fa5b24b358c4de63693054
6ffa3d4a89adc384b4bcc4459c63b30d1c0d830b,4c2b54ee0d9c3ced0b6ed6d8e9f1535fec82add9,af5a10946de0e9a3f4a12a5ed30007509043ac99
bcb2aa1323c25c97d12086f4bc5e8142b06a67ab,710d6eb5c5add99f01b73e08778e1cf64aba76ad,2ca6f178fb4439be72b093c25c318396eab5238b
1852006c6127cc8bf5562bf9cd44cb104aa0df30,a3dda258787fbeb2225ee14708aa4e238434cca3,88459e680cdc6ee850c95189ee2dec658370b2db
8f6b6ccde59d9fadf63b6e40ed88fee0993ba0be,1d331117b5edf89f43cfa71036b9029186d5eb18,6e9537aeeb48f2301b41802ba4f56158e422a2d2
83cad83c35b4340170ed66fb58c97966f344dd26,7fa92807882390fd92cf6d082855239579512fe6,57353df68fbf82350fb2dbb70492bf35b7ea6e84
3ec4c5ffcb728ca057deb8065ae3c3ee9176cdd7,2d6534ddb0c199f730ce06a0d4c6a667778475af,485944b49288e248294564139ffc378d4caff964
4e9c267af949d7c625a1b84c08f6530ae8126d48,23411b36e03c25c2210f43454a8bde8c53d4cf17,d3bc8745006e9b5278c325572b020956a844e219
ec8d82332ac7d9be03ff8ca0829b567140a7bade,f96476b4fc116fb4a4d0e457841a1b99543d926e,d88a7c2e24b6682ddb393f5a175d37301c84dfba
a5ad266065adf90fd69fefc6230ad8779f066f03,24d2bcebdd0f2ddc1f28a9f60d40f7a596210901,a17efde2a32938708ba22689d8d29558601030a0
706e0904577fc4742b24a1aaa52fbe4db41ecde2,5ce739135b524b05d003f5daecbc7b31f5866363,46ca9f437ae89a6e82d3472ea59ffbf72002a48b
b849d92589642d3712afa9becd310756e21dae32,abd1e72e9db3d30201a1b0d15561da90b274529c,8c39b9376ba26cae71101c0d12a1f4c82d1ec50a
9d9df104b96b20c59924d245e80f5cc8dd9b4c61,6032bd09ba30de71d72ab5e8404177035a6257cd,d2d3fe6bc3f7499ef111e689fb848dab2a18fdae
2767a9c979eb181ffdfcb27569b92875c43ea643,54338a12b32d8d2ed1cb1ccacb2be1b00971d175,efb204d5e7f3676be2345272876dc1f83a95b137
6f4ade6abef6ee2d35c4209a4501a88cd5b30e7b,4336599c3a44f645bd83d7a7e51ef44825ce08bc,d23fa5a87f000e16f8687e83e68a4fe58e6b4c24
2339db3b0096e9292f055c60a16c1b51225c6c9d,98cdab52003cb8de54ff90bd2d908288f6963f86,30e0df384d5961c5525c70f2878963f04ec9bafd
28b4189a9a704b284e75ff7436d1cb808e569382,3203eac6d370f7b53749b338cc2fd12d5bb288d1,571e0c39cc2c19827c44bd9de4a662963c3d1367
d948420ebacf9ba73d37fac2dc0eab0b2af16962,59501f11a5d908bb5f84325c45f94f7b4d162d72,ef4a1c74cb71abe10041522cf1aceb0c6b6d9c45
cf41a549b93d72cd414f19526abeab7e23b4dd8a,23d61350bdf694f77ccd3015274d3e24ec20f970,4f054f4097fa0e30083f6e4657867c20e031dde3
546919972600998b4d719f123473cde1d5b4b451,a5f49c1cefffcee2e9552407f428a9d01f79cac2,234a9551258b94eebed481ee535a523597cde7db
535f11886de9ddcc3bb52a38f6d7cae06e557e96,9f2f4a6574516cd64cfb213174710013ad0d86f7,20f649b7e9670c947eb54bca12e0e2b5ef8bb679
ea68c97f5048973b8ba9eed354be828fe14a42f9,9e48addff52b3a5d398dec64030e026a45665d4d,4430422489633ac2fcd7c8833267ecf9cfbb9361
e19f60503b81a4752596a845e9dba035d4510550,721e988da2298e426c5ebc78205b2917c7169816,d7870c81e929f5869ee9e1c7d3666033cbe01bd4
56006aa002ea57a67ff1d7b7c69c4261b6bcfe84,4e959de2c73a6a87b96dfac61334628437afeedf,3eee2d8ff34834d7f17f7970019db5e5ab0f5e1d
4c6338207f4b13eee54c34e67502630efc4d2459,5d7e3ca24005a3b76d307c879d76d05e99ae59b8,1d73dab2b0e61165ec2100a21dfd4071fffb2145
a6ddea87b7eb020c03692d383d9592dea2be0cef,d410deb7ae8f405e9451bd10db24a65ec5f30a33,4510945465e4e8cd483c64d316d1d43005ffb585
d7d65fe0d7b62c61f4751b896eb6ab9271d03a0c,7affd789045f9bf2a141cb96c50c08cc484e0100,430bcac389c29a5ceca7759cfca69454aa31abf9
b6b2785b66023ad48242b2a7bc55e445ccd48238,e1288897f3639a08330dea060b23283d9e455558,4b659175d9043c58f5fc78f3ef159a09167d45ca
32f8dc7ef5916443ececb9742d4ddf5ee8abeed6,0b6942de8ac5b69d48a07cca22539945cbe5d201,e9ce3be110edd8df93b4f693ab6096eb54db6988
c631d86122bd52e50bcb1a7345e80879c2fed1a8,092bc17cb29be794702cff046fdf48b63d987d43,45b15c57504017951b26b61123100c18314e308a
abbec0eb9b78621b03948bf3f72381f1aaa87a0f,baf950bf76b7becc2a13fdd4d2814a744ee9b52e,1bb4003984c399f8a9d881ec1d1a231d907c41b2
6c5f9537b36d95ea91686af22b34c2087634ec80,ee0ad3ff86723cc14eac57aa8f5f625976b557fb,ab581c5c301090d6c68c24437af404c0a5962990
29bae2297fa3cebc09fd9d18a823a683aa67daed,60c80a45a0fad2e6316b6e04340951f00fe07d1a,f2d6b4d530b0e7f7429bbb1a7c6459f23ce36b24
99981040483b28e0ba00379b1fa9b4b0919a731c,cd8aa3f0e0716b44cf14ee24b4463f1c12b77de7,cfbdf90ab02f618d6c23980b74ed3bea1ee70284
aced88e43cc720fc7aabf3b083682893316f82e4,17fab24221cf84180221592b978174f9b4719a2a,a641860fa84fb2686b1360723b13625f6ac1866e
51fdbb5524512dc3279d0cca38d44b38160b8111,a260f1987c8a302522e006d822ae96b644831191,cee45ea6fc855ac2bf43f3c373cefb0116c238d6
05f5e9ad12d1d647bc4ea7e50619c48fc8a492d6,f364bb6b112e7765544195e4d16da1f5943f415d,96eb5da93988646fca88865a682c5f6e644327c8
b641c564c6dff6785fec81e38c4d29b1d0767988,9889a810628091c1b7a542e832e1238efdcb9f2d,a74a35a16e236463207780120735d0501f922800
cd6d048588584e4a641de16abc7b857eba961e32,9cfe6e97a0688bd6321e4a42603e0a6ed0cb3815,ea91170a81abd667ab4aabc46eec37bb9109f561
459dc68ab9a7ff969a121ab5e22e18efe41b9854,aa3a5f83248e6accfc32dca36745a2e647c42582,4c529287c66689ee5e750abf4e34acab9d439511
9bb9ec0fa2a06c8feed1f5b030a555e66ff8003c,33ec5643c6b899d2a378a80f93b2041949c055f8,3a5b18e0e499321680ed3aed4b76814f4e802a9d
0f7f9a73a842be9cd7af283a6c9e9478fbb9ef49,ef98dd877a2c801f67b20fc28fd9d11422c0fba7,3d88722d8ff537e43b3bef57f643b2b6ac095aae
e8b3f2dba39b83f3f869d47745fad28488b08aea,c21838cd315465c90572544fc2d544980d5d6c71,a6e499264b726eaa190c3adda9e0926f853a2d81
cd8af229a8b207484a1e7105b798a353cfebfe75,dd46dd133a3e96753039bd8b1c055f605a6ccae2,c19b1d2fd5a61cfe059a28710b0ed2eed6c7ed0e
9d6a495c0272124f134dbe93ae0c7f9ee0f09b38,216c55871a1a939702e94dc083f4d6df940cb2a4,53b50327e9305adb60f1502d33f600552009a3de
53679400847938b202185636c1f019e43e12c545,79d906795db2d2a7b6453264762d12162b46e987,21d0a2d299414e1829a26ba7cef58c76fffac3e4
0135ff90f675ac7dccf5843004358b0b617e096e,cf17bd27339bfc947060c4fc9e0530808da14da6,552c2146d8e959b4fbfefd3995f1d921bb13f20a
44658572cdb096e1ac183d31f26602ab13cc47d7,05620b271debce0aced38264f258bfb8fb4bf5fb,08200fffa11124994727e235fd6f1304df396e64
d70d11a650623baa9eb34176c5d00ad72632f349,59016499dcfc94c8ba0f5c0b6ce58b207808c60f,e9ce7ebd4b89a1fae646fa58fb872799b48b43ed
f6beba0b0be3dc457baf08163f22a226dade7747,bf1af7a962f51924c99dce37dec930b6f28ff69c,1e587e1150f7d64dcd9bd6a523b2743ac1912312
0d0317b3af32e7d366acb8000607a1797fa6c5af,74fdf0692caf78d795585b06078f93310d7ae0cf,32d55bb0ea8042ee202b34d4e29d27b08afa2a58
e50d90b7e90bc6489eff6601d221446ca8df375b,29c36aa4072cd3f300f5cc53b76f05a48cf4ace8,c8551879f7b259d56c9de254c1b3a28b658b009b
40bb7d9bdf7eadada9b57f8f85234e47de59787b,2677ad9f868406d8e5cababe04cb549b853f35f0,dafe77b954dd9e786817c37865a9945744f575b0
c29d36e369550035eed8b7e877b327a43b87f312,775408b21b85496d09ebf03541034cfaf4f55972,581dfc6d28fe712245a021a161f5cb74270a1bcd
057cfc100c0f5fa5fc703738bbaccd16bb70201d,4d42d013b8f0f2527d5bf0251f755547d906966f,01b70479a0ec5911460d35520b6984bf83d52135
62d650d926e914b0f210dd5a853a8598430030d6,bec6b8c2493860736d344c6a426187ef8470c224,16710100868d0a48b87ade93a7ab43976d467886
f75f208992232eac7d61d3a0f31dd9a90287e7b5,31ef6622019e34788a532b19813a6042d2f017c5,bcaf82f5e7b4ba858f0987055de374ffc550b009
e98ef65b6f39edc4d9eaef0ee2d97b7e96ff37c7,3085eac5017bdf6da203663305d47682ca7c98e8,b69c78cccea9c45d3ed02b2407fb119f653e2e3a
f04577d29273b9ad30c4a1d4e6e9fd2d3bf9df68,3aefada11a74147de6e220d907e840024c4a9060,b9a1a90d6e737b1132b5e3fbc69e580fc4bf9f1c
96c83e7f39d2f02d5ab26a18fc5031e22c6e139e,7edf9b388456751fa36bd696e3c20b62b06bd643,78374bf772a15c8903240d4be5b484c7c44ed095
68db04d89e0ebeb32317a39769b7312e2bd30c2d,8b84926993ccae39c33f2993ec57bced6380b1e8,0d0e66f2f02632209a07f6a3807a47fc0caca95f
0c17b8e9c6c3c873c507fbb01bf86d938a0ceb6d,1ee1040bce44e46b9a47c564315cab362eb7d617,bf3ced76b244385edbadeea1c9d2c7c19f48c5a5
30e3d93d5716b60ca4fa07319725a74d6c974830,899bdc00168a7f3a66cab452ae84c20a46860f40,b0f5d5a4e19e6f1cd5bca6a1c0e00440c725999d
a3d8d941ccca0cce923c127a76e51fbce3d7a9d2,4bddf12657ac416c76e192a848a6f9539026fec4,b5dd1f9beb9361901e264f78a1f0049f1453d594
fba7595bb1ed577ce67c6a10ba466824e5ee0ee5,ab3aae149bf7c9782b851201b66c57ddae42ea26,731fd94b8c16cd7320a3c0e2671c9d0e4d5a21f0
6084bb6d09aab6c4f337f0df1ae121f0c7149c7e,00a5d30300e91ebe54ab99d4b64922d5e6e39850,4deb23ba584b8e3d87e57fbae9f898034f908c2e
3224f2c8b5051b038a43d5a1782177913a633fe4,ed894b40c9c25ee8942149cf3da06ddb715f44d9,69761839c0c2094d9ae69ae2d0283eb06d761df6
c1f39603889e52ffc0eb9a392ff9b4f8b093de74,ea4768456f894c4b9dfb65a5dc5a0c04d0ea4791,0b45cd95f745a2cfc485062e1bdc171984d68568
b56ebfa93d381940ffb31102805afee44b5ae7ba,00e3cdddce16b60ec09df10da8f8d9da199f944d,fb73ad3411add5e599beaf06b5b0da8bf9d7df05
6cc315d4da71821165c3e80218512d0b4734a9c8,3cea1706e9208fb739b0482519fe48420ca520ea,cf50f8ede09526008682cb308d51a2997cc44d26
6453af40d8827c60f611879f706911dcd519c7b1,4793447be120d6d3d9fa2e53d50b45b4b00ba2f5,51bb01734b3d683a64dd2d3dc391ec27d23dbe8f
aaa6f0d9c5ea729efccfb200f4ee0125cfa6c847,e77ec69de4f3db4d89f2e9287672d46cd35c949e,ec65ed9e648c08ad1b5f461abb6b96cb2630005b
6535a72a08a68a4c023cd19c6dd14deb7ce46f6d,64e41e44199bed417da98f26a255855d4d84f665,8e189408690e12ee11b42aea88591d36bde1d2b1
1ea3c8486099f1d633329b7ed12c0e213a0881f1,a9b29137dfeec494f09a2a2849661626f8376c3d,5e1dc65865cd1ea132a5ca5ff358701f7277fb24
0ec4203e2c2c99be4c5ec6763bd69a221244f9b9,733f59a35cc8481c8e46d15333d4996cdac4de1b,58037dfaaafb8820f76a140a0c1da60873bf5868
26d7067c513230f99d02ac7f2025e8faf3775146,863bf00357b739ae02f8ba392dbb6d8d3a8eb858,d81c42424163729e6fc5b1ff26be5751aa43df3b
d6cf5f1386731fed65bda7cbbdf80f138809561b,889e3a15b65b08f070c03b4bc3f4bb11d3c56faf,827606f114dec4ace342081df1db9f12d2f3f172
940016034c369bf8f20ac2cdd8b4d57bd0ff7a77,f1680f05b614cf57de0b89ee20675d222951fb5b,945446b06ac9f3eb87b94c5b6474ad7de9044435
d75405e47a8b4c109ab1f66e119ddf903295cbb4,9aab3305e5ad647ee86467231539724f23b0d25c,2210a8c84583a3b4137b5672d6546f9fd8c6547b
ab1b45383f10c608162c6065e1cb82c19f26c02f,a8a778395b2dfbb73f1b64bf2e574e661354aee8,79fd772870ea992ff9a0123a130b2ba44065d23d
e53f842d5097346a4f53ed9c8c9a10c9db25d9c7,07450440b182474c26e2bd1db93c615b394a0030,660248ec41ff0fd453d851b12f53795d8647e757
0ffc8de07722cf18f732b8315d9c7e11b604b511,9e7110e244008d9c0bf86b454572488858dc9f3a,501666c4bd9b0c5ae47207123512e306fe9bbc00
98ea5cdddaad0f94db357949ca8e1b2709477109,4cfd9fa16e27a6c1dc3a6f4e2581313362105664,382f6fc6776e0a507c1d48cf0fa0fe00cbe30bbe
09d4f7f4c1092655e362b50315ca025c1a703176,e0b3bd26baea13d2b3a72ad0f3876a266bcdd10f,584b43db81aea71ac257e35a1709d50545a16670
6aa4c98cfab9cc1b640f499dbad9e72c1797a88d,23e397cb35664bcf8ea051aa327392198a055a2e,145388cbc066823eee254765e55ef6c71531af60
574ddada392690cbeb4070f052d32065352f1cad,63e7f4feb6726581e9d04c98477c7c6c37b30f5d,8fa951f369418d7486ec033ddc19c5bb3965e047
0b35f53ddb96fb45233967529584f4f664aa8544,85f81b64a2e12f467892ee03b1d426f6bcc923b4,ef651f72662e5f911b75fb956207d1fa264f4795
c7ec598bf9112d3be4f1f28c59112314474c7d73,8cb2c3f606458887e0ef313e6f0a33825dbd3aaa,a9dca3268982c53b363346f2ccbc716b7d695183
c8b2b5e060ab7f3866f4378cef8b3b5b1610c960,33a41603f33c16b0ed69ef9b249a45c6083af0ac,be6b57e35870308544c3578de92d959d23618d94
b1ca0cdeecaa291311ddaa5dd74c6de7ef88464a,d6e9c5e18a76fecfd6d0884fc3a0264c0034385d,afaea85c9f2504772eaad8be29ce01fafde6b121
a6f41f9f1c3efed49b2f90dca97c144ec8656f6f,7e6f9a1806aaaf115c2c84c7d159143faa4aa075,622215005ec9abc9afbeaaaa3f85ef58b8f327d1
239224f99e9b37a6ee516d6de0eed97dc64cc3e0,219a57d90501a86a137ddbc4b5cfe577c1b90a23,ee3059f4400e6c065dc6d556de107ce0d3940087
adc1723f97d69e461e163675104166a3348f00b1,1c0760619f59effe144c528e2e68f7c84f218171,56c75c40fa3801c4a20c8b1cb6abcc5094e273e3
cd58f233417cc3761708039cfb439a08f689390e,cc4521b7b5e5bb7b499e248c6750a9cb1ccf6dca,3d889ab8cc3746c35b0a84863fa7e059ac9a1c14
49e41873b0048919d2f0bdadf2deb3f5dd0a04f5,505b66b892151e8590368b013caa922117be6b1e,f60987bd442fefc6018fda8774781cef3f2b0628
a4265d4c64bde36119f6c398e8edddcfe130ba9d,4a15ca0cbe42d741b845527faa9ed0303662afbd,9c680b6669438e063fc6b5a1fe99260e504816fa
99106402cbb3094534f6ba8a436b7174368c860b,42c0fd5c34623c72719d2178131a557397dc9bad,c5a97445b0ccef869009e0281a948543062e2cad
0c7d351c8f6037ab6c90967f339bffa57e9a87be,e05c612139f3d839f8530e5fc92f0ca429a36e35,7a23cfb2c8b6ba155b35de941a675ddaee4a8843
3798dd8d531f791f52cd7e44f039af05945645b0,8e6782d9078f4075b45e6ed8061ec1f2b97f0eba,85ee8b25ebb4bd0f96c9ea03b1755f180b984f0d
54292a28aa32dd61229ef8c6073da370390ee9af,2bca50e10a1ded6aca38605605fa80434bbf5501,5b868bfda25e950947272c7974403c0902b43f5c
52ebf638b84d099715b89bddb3b739bd4ee8f0e2,83b8edacd24d1cee90722360965d9532b038f2bf,239fe6806b50f810a7085ef0b6e0c5c5f80a14dd
92df6c234b696903416ad484226941588776cfcd,657b16d13f1b72b4927a18975f87b1c4bc558be9,89b91dfd74e8bdcd16ee16c564bb5a41b879672b
0923dfaf5a563bdf8d02ffe44bc8619aa9968e65,1a8b08197eb351d435d0cd032d7cb66a0de20fd9,a1466c7057f18e4c77abb04017c8907fd25dd486
616727791ef96eb0f9fdccff97d0abb3a18b2de5,a2570f806cdf85bd57baec8b18d212e377bb23b8,4b5c4494cd531245988023c7e196d85938e84bd9
88ff885ab5a62b652f679e96c5bc86c50ea60fe4,25fe5694bf7ba5a811a5870098e85c922b64da2b,e3c9e0d26730a72dbeebcb7d2fbe1772f2bbdacd
88c52bc23edcb0ccd9f27143d174c3db8cf7f297,280aceea65036e74485e42164d641b41305382c9,85dcdf751cbffca9febf95e891c40a2101b9b9cc
4a2214baf775cf288e8a4abb8e39d934eb19df29,a0dbd61f08c5c1b07444077121f99cc432a1ab73,878e9349e83c30a03c8a97f0ca64b1f1e9bcd927
4072e73f12ea856d77a6c333adda2a541cc78e53,4fd74f8471e595045d89e5645aa50355d3a3f273,c33af225a5fda133e93d76a346a7b5614fa2083b
2ad71a49ed49ad06cb6bcb95cc9e0caf166e1d39,bec52928dc3d98a2b05dbb189cb3c4183503dc8c,00f7bfc43d4854a572c3f66182028330f913b765
ee4c0673bded4e3b97e29bd0f625d4610fb3a803,cb69602418a9f121b657d08f9e395c617ceee5da,324eb595893225f4f5a5e540218d0719bd05329e
0454ec3f2f5bf361f5109bfa62fdf3b052449d11,0e965ad02d5538551b40edbc3ccc03f119b1ff5a,7e1f1a31b0e9637d1cae9c0a21c76c2018ca2ec5
147c93d38e4a1e9be02d3b19033f250af7843746,721e0b51d5c1864628fa95744611d996ef0e9f33,62accca3a9da0a60f7f46a5125acdc36ad5aaa7a
414a55c3cee502d868e1ac4f85e323caae7d3a96,6a92202ce5d922b6899932fd749341c798a00be2,9c110db56893b9c96b5c54e4b0e01c9046c0a5b9
0a798a4b723cf091084712dc1f0798acea1f0610,7cacddbd2847101da882a8c70bb3fe9ba706a78e,9683219322b69da71fe640ff1d665a017b55ecc7
f7911393450ac617175341d77df30013117147ce,7231cd8f3865829a3b47912ed45ec25d6055fedb,8d173d7190018a24abbbd496dccd098a99ef63ae
fa09eb9b08826364b713b3fe4179e9ed2e420312,b1a86854d6b3239341d505cf9abe603cf7b98b3f,eb62a71a5fe3008b5ba53a5d6609f0f5354706af
39c29ffae2ab4e29b3aabc17e5f8d64f4388144f,5e9c294edab151e3b9bfa350c03b21b8a342bb54,6de25772511598e63f2a872325133767292476f7
550af49112f2a8b6265b5f7967731fc8a2a0bc1d,d661e7288bbd19582e9c49d9bc4184a9cb728bff,dcddd44cd9240e22c0dd36f5bde8d612e3ab9ea9
46ab62fbb94646e4413856a9bb738a7771f10e9c,ba81f4ed7abe10197f3dc99626c5927a7a1fbdf8,d28bbd789c4daae389437256a8a262d4b216403d
02db58c18222b9b4cd335930dbc3d72b51eaea82,f12605d21062c5800a358261e0bdb8e930b38f99,395ff00f9c38ad162e215e1e8eb201ae67f9094b
62086bfc997a1f101add3a220fc07e9ca677090a,9a7ec30db3e079d972a9c5ab63ecae5f37958062,5f0fadc575cf03740dc1598db6e9979e75ec639c
103b8164a5d69baf874b960aee91cabdedb01322,a846897f6850eefdebd9add40db27afda1185918,bbdb188c8d263fe0064ece9a0c16691dfc28d005
391bec7249193dd6737adb9d224f69e5672826fd,42b10196f16592cfabc4284ada2e8c3e78b44015,fdea66d2171915c3b3ec135bf391a442c9e3169b
8b08486fa1ffa3f84aa6715bebe98895dd83a0ee,3c6f64ac912fd5e87f90fb3e20bbce37257ce08d,b3f8270ea6f6da65ae05f94cf59c1a3615cae784
3fdbf1f1afd7c318341ba99259bc4d393532c2c6,dcd7758e4c2527d5fae90b782e12c5d29e83da4a,98404eab49cc4f844df7595a3392378fae8556b5
eb1905a60735fed693aacc0a3cc65c1a8cd421ac,4e8ef448eda713f0b54d8ff02b2c195c6f66dccb,b5763eb4124f86ab55e84fd7d2dce87724b734ae
eb009243aac29cc1ded85946322eff6309598f7f,fdd26e6fcaba00bb1839feb9501bf64c797f9bb5,7493e040157e43d966fbca300d441e9d6fe467e0
290b5b07cf96e687c925abaa58a0e8abaf40c82a,0bb2b47bf8e859b9e836e1affbf3bbe9beb11fc3,3180a5e83ae8a77e84cd7d13940a481f3d229451
e794b85242de5ad2a4a5fff673ddfc56a169b3dc,b32e940bebb42593963586df012a3c5600bcd213,5598ffc210c387da7e4e166aea1c018bf6b3f185
55deefbab5a5f3f203587cfdb1f065251d3321f4,218da184e633d5268d80fcf12d1f2158c7dd2618,8b3544192e890f6678dc9b45c31efd1c2f5f6b9f
a06c034189304457633b01adbc978231674b7498,5691f2a2c0e00943762aa4dbf85b165f438da3df,e54197e9d2b5c595cf77d884fec32f0639dafb8e
ec28b7586c4b74823555f196772743fe9bfa3dde,789031a6e638a733e34cfda80ec8c355e2fdea63,735fd20a6a48da586b49b43d1034f950b5ba49bf
0bad315dafc027649333ae3ed76fbee3c1426734,821c22a38f8c172e3a6eca20e28027d86f854876,84e7a17b67acab49f6db6c821ffcced4ec3dcd95
196ab9e12ff5680547f0ba3d8412cda620469390,5cfaac64d558e549fd16112ec0bf622a409262b0,509ba3b480fbde8cda7df492f9a5c1a295f5af1b
8ef0f590250b9d1f374dfee8409827fcb3020d4d,16eed74ca40725c5b4a00986ab465eed91844b8d,c948c16f791af2b02bd2af93146bfd504c541fb4
4c3fae270fab5989675a0234265474f7886d50c2,b65efe2756eca2da1bcfaa7b18c8aa70b55694a5,1f74ca0d1def5111f300f824161e3eb2b42cb662
dfb8794d4d2cad05b61dc07402610bde5febf506,ea417fbaaf750b7e1fdf1dd1150416785501e270,e8fcc5343beea4180e7e1f83bef6e27e19dde242
8ef4625e4d91ab3fda180e3102d08dc25ba8cd85,b83d4fae29cac83c79eb311a8f821dc298db67e8,efc0272b99eba5c072baf074e16f85d70816d4a8
fb9c7183716e375d2c35ef7ffe4e6d1400d62993,34fec3c2318fe94fa8ad5218587bc6541adc8a8d,885a265edbe6cfe3a784b95899ccc988b69d8cac
10b66491ba6f9d90d9414d46aa5261125e324c69,b95bfd07d9fff57970901c224d038e3266ddf49f,ed50a1941b9ecaa3269d4744fcc00f62261ca218
3e75ba52f32d1e826b9dce0c406f22628a1ebf0d,048385fd7f3ff8573ef72b00fbd02c20c21e0710,0e77ef6ebf0f9898b92aee0c8bc7a7573824b96e
cdc6ff0a30253c0745a098a89f22771f3b52b7c4,fc6c3cf487947f4fa07a7255b6e4003b1df0ae99,524589231fb1fc8b21c9c76f6dffb61190f44f45
bedd4edc727d8f31b9eef0a40403b811656f5c04,ffd14f449d554e9c4a8ac67cca773f47a14c9eae,09b435cdab4e310bb7d0f4d6e4aa0fad3e916ad2
e9ec4a8bb3c08c399fc5f674e07e9876b5f9411c,c577ac5ce9329a112fbc31e3360092f445752615,6bbb10e64d1f3c5e613e9242b3598c30d41888cc
a4e8a15c70cb678fe414d3e950671b52901cd2ea,28569057be9eb404709c83783055d17e7a4c2649,7688f50c905a762be3f13e69655717ac8104a930
1db41363370f842807c215c5a151e904ea304fa5,6f5c356ae5a6ad844e37cb65678b3113ac593415,08b14f06ef1ef3831849441ba238c02a70ca050b
e40f6e13f03a9b6874bc2f17ee210616df5a909a,70b0cb99d435314ec92cbf65749bd899e5d4bd48,a6b01f2b2094b92ee4fab3bfe6a9bdf059d2e666
24109eb2a6412e3682e37609b5957ec27cf0d0f1,30698ea06c93820a218861007154f3b25d8fffa6,66891b1d59177b7b6f32f3e3544c3f952b1f35cf
22243058345dc952492a1846fb13c2f7357616c8,18eec3055e0b05bad8583a87dcd70da07c9fef40,3cae3e7e4861aefea93bf7598444b5a292b141b1
33dfb6cb4e38fbb9f960c900f3c57a8aa7faffc0,ae47cc2c88688f9daaeec061d870db8f88bedd52,64feb6a5cd3bda525fc0dedccd8d7900abe88fe9
7f41bb4718f238a86ab07aeef677d27c16a43c5a,15b49f4609a377af7b778bd28f87827572377acd,e84e0a16e13a4b73192edafd2aa356254dc2ac88
9c10167b6fd114d4996debe4ce117b3df3d38a53,ffa14ee4485dbb452fe4a89b9c7a6340ea359c7f,6e5c5f599e5c8d12a7c8da81f949adf7f61e6916
cb0ed2b6f0f06783a77b505b08a49e817eddd56c,2619e6b87008ce336c7b64823c22cb322880ebb4,d07e34297f55768911c82fa9690511f7bcb07e80
f0811e448daf681e70d7761353c3b19cb79e41fb,da12cfc867e3c522d7af9ff0cf3b6b7924d7be99,6e84ee580668f9df9fe5cd9219fb2f1858fe5d98
73f11c71cbee01dae6a9a27aca85513e8fe81eb5,f79448a9ffff84ffeb2242e7ec442477ad6a022c,ee5b9e53a9dbb247e34372cfd2eb862a5967bdac
d36e96ea74202f3a5d22e691ca6046e356b0ef67,08f396f64e990b96939676623dbe361c5218fd1e,047e360538318cf4fb6df9d2f1a29cf590311026
910fc7215dbabcee683ebb75ef0dbda911b7edbf,7e3bdd501c189f7446bf34600add137a2be25cbe,87ec3d6fad48ec2179019ba0789c8616ecb47e5c
71e0c12c88dea98b02812f8b9c6b15b766486332,71863e1b2cd5e954df0d2988b7e1ea33fdd73718,eff26797abf1d1eec6b68c6ec1895ae4cbc9547e
0e05e908d54113f40a6d4ce0870e2fb9f87a5d6f,2ad22a3f32243337754a8080dc74c786232984ab,f1f84a292c9478a02bb2ea40b4c368fa15047e21
c7a0c0bbb4984f935eec3b933c1a00db7b511052,67864b662a9ab677d2653500daed0b40a49b28ac,d3ccd10674a7c3d3e4aab9025f98d7f71299b5cc
d06852e6e9b50422f9a7173119f7d64d1755011e,def475f889d886c05f8de0b3c85b4e6ae4f58e35,63199a096610f3d7b1d1dc07d1715357dccf11b1
c8b2a36bb1671e6347fe7ecb7312856321b608ea,b8933dd267c554ca4f5441f23f14a822ea6ecde7,b49c3fe4f8e3396aec1469fa072cd105a5db2965
61bee98af90f0c17fe8b4600955b192f1a067271,513c8983e0b7fa03529185436c6da150346f5f11,3f25438d35d772669aa2ada696c23d51f14c004a
93a47ddada3fce302dd726ed01dcc373a7925605,21897ff46c6db3bfbf5243fe875d4bc520066ba6,b292e19862ac103fbab1fbe57b91b05dcde3337e
2780b5f830c4bfe647d985d791c9b23a8bf8495a,11cf24891dee700e81bbb9eeca61f867502f6d7b,4d676cd6fa2995248eb969a7861168c20a78c175
811c68377596fdebf8bfcee8e8ce773df42593f7,b72317811792b2332741e8a7b15d07e0a1939d6b,dd7320ec137055b4d1992b5a0b65d4068a86d1c5
090e4fea96b068652de95b4a4b4eb9ad95311e95,ece59f25341cc47a1f3c38919844ca5b0904af2e,22f1289b2a1a04c81e9421ed2a1d36216f0fb73e
e4ad313f8b87fdac3aead3e546799348b18ca52e,a221f2af79ac6f13b4b74cab79037bda1430327a,5fe9ed18d972a6890e7d8092827864bc831dbe81
1cacbeff1e2d74df8030c4ebf4bc46b46516d020,8f7e61eef68f532103387b9d88d23dfdaaeb3cad,586a7d30abb173acab88226edeb9a2c4549caeda
ccfa38c68ef1428faeef660970a964e3b7328e00,905c485ff413cd48f98891e2075c814759d0c6f1,3635f7cd6fa703a23ff6b93b5264b527b1846c81
548ab476f7d854ae3e7eb9ee8902c6d44ea0fe0e,bd4e9676fa6b0fef8f216ec95d5a3038dbcdb20c,a960aeeed2796b2eab124f539e45fea54f76f99b
ec710fb219a1f12195feda6ddaaf1f602ba8f297,7cc94fc000e6c6631ebb706044ef0349b3006c50,95e5eeb2262ed56d2c617ac5e45a626b7a4bb3a3
15f29b8fa06a5b5d25a0d4783d7940fdf73b00d2,3882066f235ad7d31ae6f90780c4b6fd6c7bb9ff,159fa785147c8b71b60922cae2c8ea5bb6a52972
ee16fc7b96129dfb1eb6ca7e11fb54e2eafc852b,6a902660a52f622042d6aa005a1f60f2845e1b70,40f23030dc4600301936f826949704112feb440f
708aaa7b97f598f0c378578e491a6e16f5a4bda7,ecf2ad3e53c1ca9ce9486ba1adbd82c117a8473d,acb1e598620b6286da9e0dec38db7e27cbfb4015
3cec86390a07ac742c50cf0d4649608fbf09d7c4,ccbdfa91505dfde79e981b12030205933e1b20b4,bf8746ed101c4603ea005db72ef9743ee8cf3a11
d7d4b446c147aa5bbbf485b4665ec9309b14fee2,e42a11fbfea9d54fd84a11d03e71af92ddea311a,57fa801ed228056c3090065a74c3a265f40d95d4
5d4aa763f24a8f766ffc4734a2abdf366a022e70,79529a0cc066c48508a72a39a369bb1cd327b32b,4537f34c825959537b41c5c1af51b6a5b109b805
c357977a1ee3df9cf918c2bf1ba0370dd7b063fd,f67793022e16edfabd65a70f2f01f4aa5fb4492d,7f592bb331b1d8e7d80dae91260dab4ee38c313e
60c68a7301a86b44a9cb910dedc8246749e704b3,0cb53989ccdbefda256ef0056a258ae12e596b6f,7378994ec553d600cfc96d1dcb1b5dfb13b2fcbc
935467ae2320ef36021d6428752ea6b26cfdae74,cc950e79741ac8a9ec97cc1132f11a9cd43fdd4c,5da79e7ffaf1a011ce33f15c6b1bf9c5af5770e8
3e5323476d3694fd59b5a82c7033b3253d6b5b95,422cf466be643fed3c3ec869637f7726f7829d12,04ec431edae6f2a622476ae04cdf902bf8ebbf9a
4b9ca326d0b7f7e01653d87b55834702a1645b0b,b2543a0f18cf9ca4672cd468949ef5e705d72c34,a8f5fada572b30304198e356bd106954055a5f46
6cdf023a21cbc7e357d9bb65bf389bd3acfd3be0,52c051d954be577ba67f6f60fa5d99b2dc94faf2,a1d21b2d17a2c1cb1ff575f04ed785e6bd774739
b3dad1f6b1eed6fc6d9dd4b9948fbbe7fd6df725,cf147f7a497dfedfc10e7db51ce19fc5ef5b31ab,6593231fe49d306bc6dead82e850fb44db0d9c72
1095433a37b24bed1563b786f1d7bf76075e262f,151a3124e032a91d96c944d08fde6777346ef5a1,a1e7a0ba09b7220db149c0cbf7a78421396e0cc6
24bbfe2c45eb62502e917ec84289d2bb45238cbe,6df876e5460e0df1bd1f095507c335bb6fb1a30c,c7f406b1f9ad5301e802a47cabbfee3525342af2
352f864210d4a79ad26a0ac0190d57a2b105826b,2c6d0fb7f29d67255c97ea2164da154a2bc1b0e2,c5c40147e6567ad86b3b1953866fd8d7f7e9c9e0
0707b5f7ca971119a9015fc2d063f57bce28ec5e,3718b52ce07739c543b2554301cada3be74f3ebd,f126fbe2cfc71ae1a7c78321ead4381548da971d
d312b46d1b34f605a3540b21c5a4c3c5f22e4c09,0fe1317c820cddd59f5b303458fb27957edfafe7,100bdd5b0c6bc1533a31097aade59f4da2150fa8
a99f330e3baf50ce852e8397413268a23c1c588e,dcca8ab6fdf86773372135b014bdc9c15a876d33,ef5824a4d24f277d23c58c749cdd74eb033ebd88
a3828c8e3e5cc5801cf0fced38fc8622b331a0f2,8058aaad9c43462db46784c659656803332d12db,8d7a1585d7c0e7c0873f6196288a6e5f8b78972d
2c84e82e6768646e148493884753cd821f1bb083,6183327b18284addf62e93cbb6859a759f3f0688,f2e6f77adef190db1893773d591dc4d8ef9d2b1f
a057c967170808c0e0c1a9b51208cfcd95b238a3,e6e5c1724dc6c9c86a0261d898c1f872ed3d6489,cad28fa07520dbb36e7ea8d24def0c612f339d35
9a5f95b3a479f487f9b088673051777d936ff858,d23863c821820dca29230b270ae0e4eaebfd9aec,8307b72f747b1368899e125cddb86a213b24942d
e63ca07d641db8789890df2bf744d9fa36b0f5c9,64ae844825d56221d1d616203829c0a777bc50a4,ab8dc45ff8da2a5cdc890e7460f4d093e4feb7c3
ff7eb2970676a32c8d45aed21934aeaad3d5c181,a9fbc6b9ed90ddb335f0b0ed5faeb29efbe56363,f3c74295e26f48dbb7cb062779b0625a89a5ee0f
d3df269339192d521f266809d7fb00e9a9893201,1ddbb6a6623d9334cd0f4ca3468dcc38bdf17d85,6913f674b0d5e5c160c370380a0d346317a10b7f
93def13823a527a1b5d611cf11ac563e86747da7,699cdca74dbe3509156134b1fc7dd639fdc32e7e,043f6188af4bad9a22b70c506b4bf687e5ead2be
7256f8be25aab8c91cf7ade2e257993be522ee7f,96d1f229b50eb1632a985f0f0f9f7c2bf9b29a11,ce140620b9a78dd8e0edddd01e6d1dc6d6f3f9e8
18f0d90ba692cb84c5315a3d9decc37657d08ad2,99549eec92b0b84784ed7897ea836780264323bf,3856f3dba0335de7e81629f38f2e78bfeb06272b
14091abda5f962de254084aeeed11b530138678c,b2dd200863a5311f26915d9a7106eb02c1f79d7d,864f097053e5050508472d4aac637f2929ec805d
1a0a36f928f6d929f2ed1a146054ea23df1c72e0,46785d3884438cfd7252183cc6fb531926d18062,00439969cea540f5089b22b9df9955435d2f5a1f
95654bcaa571980efa862f58d49195a0ba2fbcbf,eba6b08625f7648ad264429b12907b98ad88ac0d,81c6474e9f4bce4d5072be34346d1381cde9bf66
359e551c7fb0d3edff33a19aa3a73578860a2e71,3b6fce659944325d175aad854a6b8747e335ad18,3f78ba87a3e5435164cc6d300186e3a6569a4510
ac35ba705e15917dca3f562e7ce3c006f03d7375,f74fa39e2646acc6c076b0e24b194d7a2d099c81,42928f997372ad04e4d2b5fb31e93ca1f79fdcda
234c5cdc5a11ff0b4debd1c7221d0663d629c6ba,ae9cc5ed1833a2e6b65c68a5e76b911416ef15f3,38350a9701a9b03e214fc4e0761d9249d0dd501e
ba290bb35831c75ab2bcf13d81ac89f00f93b443,25f3dad01de01b325d1313ece23f9470fc554c16,679281a7d357d16f36e624394e842a7699f7fb3b
88ba748ef09b5fcd283082938a93c077fd38f08c,9c15301b348d87adfd1f5d052bee8d9c2b4c268b,54d89d43ce67d1c1a4fa1cbd69633a578cded94a
069e4c77bcbe8f8cf6006d5369c9c473b8d62b7e,077c661b2d136b3640bdf87aa2a37bf9923bb8a3,43812138ca661f19f5f747e61ecddb88354765ee
08c8e0ec668cdaebfb9a8a0a6daa854b4f2b9e33,6b308b9416a815b20674204decb50a8416a0f59c,d5ae0a0b99fa136b7153db89182fb9a91a98790b
139fc803b40ef61f2747925b9a4e2eca7aa1e89e,484c45340983f494c6a86e110eb79b749e196f1b,19541da2ad1c1a6da877f4b7cbb57f2b74f67c81
9e083789bacd4e660c2474ac8216445e981980f1,a3d32e6c5bd41595a4ff8fa7e0dd8dce601ba6e1,22d290491e837d0dfc7a2003aaa0791890014351
4b5ffd1b2363b8853525a11d20d4ada6c8c5bc12,d05bcd846ea9f296e9acb855de4810e2c24448a0,3cc17229479045475c1168cf4621d4f1faa36a51
f063c5b611abcd64078dff948b4ea1b8a98e4e2d,fdac8f4e43961e247e7899514b96c66cc5e4183a,7ef30a4081075ecc5cc68427f0e3677cda1db12f
71226c3bb2fd9ba8139a544785d0b958e2217bcd,a2321b38c7b2083ab94a8053ba1e0a0fe97a5014,dc88694c7fe63043c2cedafd124750cd2c1fdaff
ff4c0ecd900126c1d8c69d00110d309a3766b507,6a98cfa05d780d47db2d11f53eb6e208c79dd239,0166d64bb85bafc0f11029f5cd638d77a91786de
d201478f852ed4d7314ecf5abbdbdc449ffa3d84,779604d6a3b3fb68793d372cb1c110329663b805,b3a5a031630516bbf4c6463a5a67d7f6ed070feb
ca8b0f094880ad9b11fa7579f1360da2230a973b,09dd03240d1bfaea8932743cae705bedfbe74791,e55c2b0fb74c360f35f1e93df59ad291a0c89201
d1c34f3ac0cac05172c80dc2a874c1b320d048d1,dc096609ffdf6112565449464b54b097d87129bc,db83f9ea44dcdf4c4de9b6f270477861141c4cd3
600a9a4d98e225f9a9d119ad4a9811a9bf1cee2d,91318fdea20fe3e65faf7ac7e72f1364fdb48305,1415385d29e5a12b7cbfa12f63648c6ae7467648
d331e14bde6f8ce0890ef2535f9d5145a8624ce5,ef0f5d4fa406ba982998356c778b2d41fc0d1108,ac62ae5ce59a542e810022441c6beb7c45959c0b
610b269a123ba588cb3fe99a2d0775e9cc7ab7be,b3aaf78961599acd6842acef7ed79ebf608c2749,e1ca68479f39f79a674ecb216eca0752dcdef6b5
325b3e4d4247f1ea25bfdeb8fcf11a2ab73d3456,be57852e8bf75249dadd90e8deba55260c8a3d0b,c9a7893b61bb4a79a8461b9c27f006c8f39ef1dd
f03b0238e08aa72677d0a0fff65c22a96ee5ece9,e289d78b28724554c73f8714145b91b6199d576e,093d78071e4bf32bf628231870fdb54899934a50
83e5ae792e643c8b3bf3f4da36f94dd7d46c5506,a3d722dfe93d3fcc5291f7930098945cd9de15ec,c2e666b6c769fc878b78fd35f1297bed7c654023
c04dbe036a33dec5ba2e05e8d6efbc2b5d357392,e3bba8cf367951f14d93b574c5b780e7b48745b8,3391c2661ce3c2e180f4919766d396d2c5a4f219
07db64412887d74519c1a76141a525ec110e7a5a,5a670c60237187b8f243f80285fd35bd14212c8f,9a9484b26d89b8344cc6c492889378bee063fb15
401268818aa980bc7646b06a5a7d096b759b0ee9,a9cc89ff46ec68f37a1a0ffcf636d7a9a4cfba99,9e228ff35571d28049571bd55f265993f62a0c57
5adde504a973b765c68268a8f9a9910e13851b30,b878a0d39057fcdcf4d8dc64eb04ca133eb99b54,d40a2dbb1271ca1964fdfd8b34efb55c580724b9
99b01f66343d9d28c1231953d186a4e5f34b3210,d6d693696e030786f4031c102ed4965d18cca72a,93816c379b3207d11c6a84e0251d39b9f970b94f
bfa3e156d234b569db886879211ea12279362d4e,d383f6102df663aa550a26f2838388ea574792b4,f9a96e5e63a93340d2c9406023f2a5ac0581581d
8dcabc5796aeac40f559cfa2d56c586242100e0d,c3c3bd347112393a0de03a7efeb8bae127a619bf,0e2102e17249645b441c377219a9e7c69bf32e24
66ff7a928c665e8524160da6004bbd98e0889e0b,73b528d17028e361229070ebd241f9980d4f8892,b2b2606e36f0c4e4d9b24b85cacfff4d82be019f
f0ac02cb2e2ec6b54666372f01e94702f717bf15,be99dea38bdffe725f38afaa56f1a5faf7cbc238,b30256ad6be6ccbf3a303450c2cc15e0ead643b6
9acf1921414cef154677d7dbfa444d811e11878f,30cb20bccd1e2ad966d107c43da4e799463d0bf1,2b0317f400596561c986147c61c9ed7248c4a7e9
7909f00c834b31579aa4a9cb50c5cd719c379732,c1ecfc323ae3c259aa3c085dc7bdb2abb5b0f3e7,6aab856213554cb5f5c64c87f494e6bae868141d
98fa292b202f6da868eed12fa9a538ad8d3d7143,7d31e25ba646791c200e1365b2578bdc8c21c551,5fe8fbd43aa5edd3fe4f1c67c3bf587528a5f4b8
e774a6275c99cf57f11a046de42b59d35364f270,64319dc019b03af26fff3b35bb3cb2853e540909,0e46041717a2d5fd81d4a5881c50a2fcce8aad3e
839849085b397690e4337e22fa6f51ef1bd88b5b,e41bfa04951efd43e7b89c16594e994702d33f5a,0ea0b69a30d32333ffa6d336bb3c0ef7aebf8f5a
42e202f791cb3fa3193559084cf3cb8fcb3c1186,a35f66a73071c6f985bdb21fcfca4b6e9e629fcd,86ffe6938012c52d4a31dc791b06ba933cfdf2c0
0d3ec87492b9d2918608839746c34836ba19d3c0,4ed8182c753a5bb0e10190fddc1c45627e059f1d,488c389b9b8e6bff675fd486d601efe17f3b52d4
3e3b96e08878da9b828a3530b0f70bfd2bcf376f,224f62a843c2d478e3de70e44d07f3b91a7afae5,2596af84faf82b0cd93c56989bd774789be03d66
4848327300b0580f23eed91842ea767e0cc60227,8cd10d88cc81868bce6f03f481b0bc83946d6ace,12bde4e9030c2c366b1cfcb62bf163ef77a24632
3ad8b4199c6293ef911ceb53ade968eb336c3478,466561f09fdccac4c599aaa1a337153773f3c99c,b797bbf5dc08ecf002c05c73ec1aec4adfd7195d
327aac7f24028bdd3a5719d33d63dcda3b79be5e,5343ada365f7de9732bce6df8f5d609e7a64885e,8e884d9acd2463ed0f6397e52dd87dd5f6373d2c
6663d5ca63d7ef3498c936bc35a749ccf66a2384,644ffa8e7ae3740c4997ac235a6675002eec4911,652f54fe315daf6508b429517c2a2d17f9eb5524
f2696ef1c8986ba154bfad475524e3450b293eaa,3d08253192da985829e5f7fdbb13c58ded3195d7,e40f997a40868536d6f49024e07f928052c4da23
e82c98bfce885e79fd7f9f10cd8d6c060bb1f90d,acdde37429d46c857bd11c3d2bbd613e86108e8d,5ec1ab2164ab8c1bcb664960bb626defa5f2488f
4143912b7287ad135e56b079a426b25277a22836,34471a640381a3012e12c0456f308192dcc0ebf5,538f8201e2a6ca609841628747bfafbad9abc871
1eca53a681301256bbf41d4bd551e55fdb91a480,8f3cce556d7c3e3acd3205eb747ed58a5f9236e3,8bb8e5716eb8b2ba3574369349a0aea2b7c5ee93
c0f9878e2fbc070bbd5db68ae59daff59e6469d7,3855625b8da2d403825b5fb27a55ad65fd7cfa88,a807144ead497385572b4af461f240422a517ef8
2a4ca98e852939dc2337b66e0c88b9ddab682e8d,b6fec2c97e2500795ef626230d0f9c57f292bdc3,6fe22044e7e2eb1950b4aeef5f7efba51663c55b
9f491a40c7b4a1c627b2f11553e1aa5d315a2c18,c07f36b30bde00274997123525e364d608e79d61,652f21b656cf37ad7cd5c627cf9fece13a86ab8f
4750840e89293d286db914f853154f2dcbb10b96,665670ae015eeb151e39336214cf7c15746b0608,b56cbad50e1913235114311ccd2c943678e63ace
e8546a9e41f471041c0c7dd89302d567eb9a2670,3b58e18065e57680fcf75194b77d4aa930c327a1,a4c324ee237674950e4675894df386519b75a130
a304962ea04633be422527bbe64c44cf635450b1,c88751a610f1b16e942af6fe6a1265f74707c64a,3a4b494bf1d45fc5b01db6b89291f8c498f142e3
8d5d7b480ddc11daa0f7554e8f60ba8b90a21cc4,669d41172cfd95e0b6b52416744960638798e642,b468793c6347bc84f3d536c36fa1028b80db3076
0efa4cbc678f8c9fd6baa09eb9386858522bacb4,fca0ace070ea67a899d909d2df34f38443267302,9d8b801e4c27a898d267126ae0500b102d62b7e8
148e4abd0ae4539d130cd844ec1a47dc9e9fd201,75256399b829a2645c1738cc8a82c27cc9a1db14,ce44efdae3c42aa8472a149cd9b93bb1d6dca00e
e74d89ce62efab3983701b34278fe7aa61aeead1,262904b8c1b8c64801c2a6c24153fe2497f46798,e40996cd2c1a0719f324c68ab31cf7048761ac26
0a89e68d55094a272948111d211fb2ed19e2c20b,144ee6d51d302376a19099ba98af595c143b80d6,bb407aa135c73da8da59dd9a8122016625b08ef0
78368d4432091c520d31d2b8b012ff2807f24379,289fdc72c5e692069d120e45031bee68b3ca3f20,f720ea3a21cf0d65cd4289b9037f72790252c608
b53034705fda8db007d80a2a866a8e60b4ab3aac,be54d40660a006800d6e55c8cf5f0cc5d48aa84b,c00fe41625423627b379748108f31387b22fc16c
24acfb806428a1f6d2136210070022dc20fce15d,60cff917ba595ec388dddd080296b4dd10ad2c42,513ba3c733a23a945c002f5d5b673bcffa06e095
7c64bce04eed17eb0b594a970e38c56d79bae60b,094345871385d9deb3a9138f4aaa287c1f5600cb,9d7fe320288890b8664116a5d8151796dbbf1fed
12405f9ee4439edec0bf7bc7a4d8427de7b398c4,d96f9b805983071385d170abfaa5ae0a26e0b2c2,6ec8c9e2a23cb8126ffe9fda3b2656b0a64d3f4b
5f757a231322bbc9cc34f1d6f0d0e218b9d511aa,1066a0dbfd451e56e632d8c10f16cfce5e6da05e,17509088244de6992d7f7e628de10c0d1181b23b
54a959808402a95d4bfffb1ee1ac757b15544f9d,4bdf6233c3eab01ab63f83bece826ccbd5b8931d,b445e679e755648cc834a04ad8ccf29374f8ecd9
f3c94ccbce16c6981e302da918479feb159136b3,1cdbefe8516ad1275bb3b243e486564b8d321d22,98f1fdda942a5b5172506be316c2c9d25ed4888c
3d7481b2f018ad0a650a74b8b80d409a10e80274,5b9d738da0f0f3f19552fabed9fd1f4a16cfc02a,944e4087aa2f2f3419fe9b9eb00693a6208b479c
3db1307ddc9d5d3db5dfc6dcad7e2c0ecdf91ff4,96e89c43b84655d81a26bed09123894da167506a,5a712a0cdec794bd70b0e2862b595b728dd385c9
5b4ba67a855a82d6796df08b58e93118d0756e1e,46fa168d43ecd2f07bb101ba322d64d22e30d237,219fedfea6ee033ec68d4cd19447595c531e9d61
7420dc545d459efa3e763e5e631e07b36df2c8bd,27476a915b81f5fce5486831db41a0cc3e669ad5,5d104c9115301beba82a7918ae61903cbd6f94ff
647f211aa5622ea9ff21c354cad5d0eff46fc499,a52b3522dc88a5d35c5084523ea5260a1dc737bb,c6effbd676cb27a2b733c3c0d6b467ae6c17f6f5
a3f441b590804111ee5f5912eb78622fb1de0fff,c38cc828e8885d50ee2d71b235c403ee98bd1591,31c225f6b5e88cc2da1662712b87dbe75114532d
452ec93f0696cf7dddbf2f57f328bb884fc75e9b,b77fec34332c974104282115f684565b96e57845,4927025a2c4a3f522c3899cc4ad9bdd317a26138
c6d936dc25f443c76983068bf0718b9bf8cc2f81,e83bb1964235a108b810e01a42930cb72c4af167,8ae016fb85a071be24cf1b9de24dbf9cda432df4
a99575b74c9430865c6e84513be0dcd025112482,53e3f7a5f753a28ff96f7ffb10e98176c106503f,498b8be957becd096a30cc044195fd5b8b38f185
8b00faa4eb9a740db2a89944e4a0e000a3ba292b,a7578e144d4dbb18405e80f55822e140fc049be8,b2f2c5671cb74fe64f68423d0835129eb0c3ed69
6f3582954c716047f6126a1389a4951f8ec902cd,c1e2f557f124dd6d00ac869446da0e9ad2ff74c9,5a123d33bab953b780933a6c310fc6217ff3e92a
d24548f8d8a26e19cd306b2f58ea5f2a62b6ae8c,484c178c1591359fbeef7cd3d9ae2092dbd89a9d,071ae41d2485ae3200aadc10757c741f71148acd
3bb2586269c876856a834fb0d72a09928ff9d16b,5a0ace6d45c27f1629943b89e971d76dc08d9e38,0515be62b4f9e3b7b9b82c90128489afecb6767a
8696ca652d6f9686f26fa4627b070fe1da589077,bc72021039c8b01e5a76ebbaf5a2285787c6e7e1,a31f37b5e560433aea4eed2162d2dd19c35d7549
ecfff40f960ff65a27ea4cc6f72e21dc9e36b651,fefa163a354885c289f9672673cd65dee2960df6,2005e3c0941051eed2f5d224f493059b47c40e8e
d74d41c5d217d32d2e81e0c65334cb7ac61d2b39,519a102379bf41de2a988f9c0aac508a5d384a51,b4ff9b71d318be9463d054b4c8cc998aadc8affd
50d72bb559b3d88f5971bb1ba8a305ad4cf679b3,c39e51485c2d2b122b9e682385169287b2cb1413,a224f8ded7c0bc2b0e17c2536d56bb0fda1c5149
a98462835ed6848b62ef95188627e11c4ba52df0,c94531645a31d8bfb9cce98e6c8ac7c32e9e7eb7,52147baa0495218ea06c588d1f849106f480c4f3
6e324989ebd805b8c5963bbf3f97df7c895b1e27,bcdd3cd84b586cac264d8153bef94aa3a9f89fe5,a50be083488f4b3bd80f0331a332a5ef63cbc224
462536ca9b3609e60ad147282d408e6612d18c99,d24eeffa2befa12115bbf24b0bc02a2adfec672a,9249506a2ed9ff9482094f70081610dd78f2dac2
f20c7b9ae9bbfeb808668d66218c22f723216eae,9b8af14f47176d0c97a7b3b07e70631e8bbc044c,da2649fadefac495f3da024bf955aa889a0e5108
93438ef1a5f157d2acda458c15f5e074f9ce9866,33fb8874799a1c90f79175f108dd21702d696472,60cde554fda8facdd2f7d79db327d628a7dddb69
bebe53ef9f82bab6c8a6396f4c96d53d73db796f,ad69c6e1b5462769798f96d71d4327a5d6eab3b8,c925c1aaa6fbd3091c7917603fcf49cf7faba2f3
3e21d24098ec9822d0b6bac12cfd9492e8521840,a778fb2eaa4c793cd7f6f3c6d4a864dbe308184e,dd09bf64b39e402109394dd0f4d32cc97c2352bb
022d2804a9500d50cf68e02d398af269ea731291,c33f47a707add75d246ab1efb5e63a8f21c9ff24,5cc4096f41544ea8ff8948aa7e6058ae37bcf12c
1f7636612542d76c4a9163de1f126f9d654fa6cf,b8738944ed4319b07c293c742bab2c12ca8d62dd,4d66ac911835cbeb60af330b6a36c5280cf343a7
21f57606a6e99c3135dcabf9d7cd45c590d6248f,1d7e34683183130d680055753308978d029af427,627fd6bce120c83fd3446f01e44f3cb147df8de3
3770b55ce135c7d2868b6e5bfdc95b17bd97ed1a,92eab370c3269f87e339a75a4ddffc9316ee58e5,1afe0114d47e60c3092e18d66c00172864f2d392
1ab29086f87ba4a58a911025a5aa73c272d9c8aa,7056ec1a87daa62f01a1834404387e98db43b8a5,add67ca0e3665cdfb6bd5cf5ae1ede76b13df486
3b3a0a660cfd8427674a6d689172b4bc4672ae3e,48556ab039b1b2a6507377ba1f7148655a0e804b,e555eddeda10f75c367d6e1b0bb3dcee6b5a3083
11712658b0ee16f5df5ec56840161afcc1863613,2039509cfb7940fe9a912c776ec1644cc6d76882,a0b78ad1f7859efbd51f3267fc93fafbc9d7de32
b6a87450eb2ca9f68a8d8be3e1a76e13ff8fcebd,85524ff821e196fdf84d0410346a596d6eae57b4,5a78e82c8f9f1e676bc1c3a52fb8936c3fead372
5193f676bff222064094a5a4310f01ee736720d6,702ec640acafe9234c6c469b605a76aea748c473,65b175cebdc0b69f7b6ab1449622f944588e8214
8743f72f1134750b0522330904f57d7ebd535eab,84b60d3f001c642e252659e84923d21924da90e3,8b138aa0597d7c12f0a5c5f43564c5818a4f295e
fcd5ecfcce4968f96c2fa38880d5dcdbbf7a55e3,021c1a7bb49de3c6df7116eca7e363ee88bf201f,a47a1c093a31e2352d44f94a37698c1e69cc5e23
7abe3eeb84022c929246d43994920f7fbd4fe3f8,ca0384172482ab6488ec7efa643c68c96a796671,9daabb2123594cee642baf50ea3c0cc5e7f7ab6e
8cd6606970c8fedda95a3411d684dbd57379b46d,f670ebbb280f5bf5cb198f12498e57ba1dc5bf0e,acf8fe59d09d6b37f089e4c4c14b886e257a3702
6ff566350cbc2ecf8615cae6cc6792939a288ec8,64569df0172569c3f5e3299b859a2a7cd4662ef0,3d55ac9d0967620c1a2c196e2aca66cc62a95d9c
c117c0abf576dc47f01257751b8c10109b5c9c6c,e6cbdba0bd6bba9c4dac1333ce0405a14389e3a9,d38dbcac8f21d79c666649301216ec274ad838b7
8eea58f64901b97890fc5eb4b37427a55036b539,9b4366e4f6d565b0a1b2b2d105e350b0744b8d7c,95d7bdc3da9cd08954dc6fb12f8d6b2ac890a7d4
b891cef5d2ffd8af876eff736ec15045eb02ed92,b247302871aa4d46bee7e0d516a96cb8102732df,b97f3a08edca89cf8444a5261eb6e5e0fd141303
1a4b97a62a6e6569c3b8146e80d489ef22347df4,80c8575636a7b2e41f9081f78878d6399cea84ed,ad1812f90aa26c0ead768ab1ed32287fb9dccd67
15c95e0ac7f66c4e21033d9e01c1328e00ea2545,c22b6c10b7a29b5375e95102e43ec60fdef32b60,d2396a848b214c405a41febb0036d501e5adda01
61e53fd42ac3f84169467eead72671b030d8365c,f6cd75add97afbc45461db9befd4d47325a8384c,aedacd916089f2392d89dcc9d5a6c0e2e95fc53a
0f89852908219e54e76a72bb21e1847305166d52,4d62764fa34b7c0fb8a4699e689e3ac8a846ba94,c6b059ede6d90f87e4507c0cc4e258ac8b4461e5
601c8f9c8b23db6102663ecee9b1a697b410bc4b,c67bcf003295d9ba9f56cf06450050e528c3f305,2eb3f5f0b84f60daf562376b0bcf0dd12776aca1
ed748a65b49f64d53e96adc2dd485e34f550af3d,9ea1f6de197d554fefa42bfb2b29b76918460408,0d256f517f57f80933f3e6305e38df55d8277d11
f410d8a77c0e23be19ee87c33fc160b738320a4d,87e49314892e33419c0104dae47ab463bc6e6b91,f1fcdcfbc3738c608d8e687b93c3884238787b7d
be0c92c65d684fe637575bc9187273c5883252ce,9d893b5d0d040194bbbb2ec220e03ec5f88f759f,2f1ccd6f2a1451c13f16851c10ea8435254130c0
f800e405958125dd1b05c79dd06617b0860e3d44,d5a538b5908065ecf83b6f5e74625a5eb85393b3,08dca09c7ee43e2b73fd98c319fdf54934a082e3
e44a33a78b30bb0315fa04810110399bb7eab5a5,0b7a771ca945dc531060e0597c8f1e69774a6451,8382c6f5860949eebe1e6e6aefd156c8dae83fad
553cee72eb0349e50f1430f28900fa47c036759a,8acf2e3ff31df8b8396ad0f416df9e1ac221a9b5,389646adeed406d305c0dc7d13c7133ca176963a
fa278564786c5ec7fee45d7bd3b3f4f2d253be6e,322befbf5603040e68207d847ce87f5dab7917fe,0c3c9982b960f6e10cdfc30f1186f1e1ceeaf254
c482bafdafe17ba5e23e292e1127e6f103444ce8,535107a700c98bb89e23332f2465f5b896fe6e1c,1930aaa340a808e6ec530093d7463b157646646c
188fc9c11281018efcdb567895f6137a5862552f,76474c85bd7b449a233d409727a53e71869f3c7b,bbedb958f61b03c8af63ca52af882115d051ec71
68ad000a34398b1f16f076e481b6506921ecf00c,fce34eb4bf9a70ac0b8a9a5417f0f7b327b8bb37,edbb865260e4033930f266b2f453524a68c48ec9
5c792c438db1a5dca3ee6539ecf5b1c84e52e56f,06f35ae04f229e4cdd54de4bac67e785c043a1ae,bcf7701887088598606eca13de251f7d0eab60c7
706aefb2aac30597c26d4f4e3d9633949bfe8248,bad62d51fa1eb41ea7ab811df5b12617abb433a7,fc76d9fac299ff9630515bb62b980d09dd432437
20884fdc1b60d678999bc55452accb0e914fd137,2928837225267b3fc95acffe029712c61a6a8c48,f202dda5c5d9c2f8dd82c4d36c376659017eccb4
6ef31c643abc5ce46651ef4f6ddb3ba4ff1e8621,6b4ee224bf6024e12821e2e3889937f3d404a11b,a3a827eba5593f57bae6d0131b18bdd5cd7b071c
fcb5cf42bfd26e076628902778c65f7d6cc3b7ec,dea9aa56a718341d33a4b6257e5351156907e44f,977d123b32a0c36b86b0e91453f8573dfbdb07e3
f047c40bcaaf3a4dfe3f0329c03a590700809dd9,74e24a38642b79458b6b32d311a30f0d463ce094,62cc594ca469388c8bb45cadd24e73b21437230f
7133ad7ecc46700618193adff85cef84682355b0,251af216ce7c63204152c8cacfffaeab899c8c82,34f1a3ee280a5d2e1e9aff4f2f39c1b9e97c771e
f721210638e919e910d340b4187b2154df8e835c,e776368ac8063128ebf61ddca10a4b902442400b,c7109674d167868bc027558f0906b376bafb4c23
d97d34ee9c538f4d9d9f0cb4ac1b2fbec6c91deb,8592d42afae604428d5ff08a8c7adff8dedf45b3,574d07041ec841f44634cf28aaecb948bb5b8b11
82857174cc6efb1d562fd2a3e774485d07638f54,d5c153337711521bf418a7357fc46e89ee6557e2,3dc64dd67ef64da854e08093e229719ab1e3d49f
c7776d899bba809811549d2dd99b37b80fa361c9,78025d90b3ee3aec45bb100d2bb01e3d931391fc,a20e8b9a3d1c2bda0b5d62d50435a8647bcd7105
c994b5efe8809ce84b3ba52046c32fc37909a65e,8a0d530eb198502818c3f51655c649aa40c38496,78c0c267a5c62e1bb773813d24d12717256d2ca5
1e62913183eaf9906c5ebaf98241a7e14e45dca8,f47ca0c5d102655f5b336f04594f2cc15b9bbe96,755f350d5e88d5a9f72074eab159f2aa11fb8c99
1e3c2154ce5de686d50b7437e8573b5f7466b591,92f148e667620fbdc439e5baa13c36f8a66302cc,2cc319bb8e2d21c61e051f77d8d31f0704275289
d472c920ba6f715f0d36e4a99bba135169748641,70282826ade9305b7aa0046efb0dea3b84089ace,79d1fcd40d6ee362a0340751051edade7b124027
0261a025de8b59a41b3c43cd07c30d81a8e59567,486f3a0c7f7884895a0e9742a1a3ede419f208a7,8f4b56d10e8ffc1c34c355d97d6afc8329d3ade0
e14692f59483e83b1ac55e9741916c93d5699582,b5cc48bf915306623242717b56253ecdb36d48a9,82ed35ead0b9cda4910c02de4d52d8e24ab53252
21b135a6ecc49cfa6ed65ab0e26bd14aa04cde38,5271d1958581b3b4f4cc8a261d75663ac941208b,3a808074339418e066d2745dd0c3c98b420db259
1df255cddfa3ecb9b48e6142b302bb28c5193510,168b158514f299c709b146d13b583d5a56c5b5d3,b121045d4a0cebf142af45f270241a8eb520158e
2a87366086419afd28cfb109f464c532148a9567,299f942d291fbeb2c3b6e6e653ae57ede9b7e525,96921aaba35135b40114ad02a6208101c2e15b66
7f4b2f63b3e384dc3589499f21e0545205b9d3df,ba2b29bd2cc75452b1a1578ac2c9a5e68db39723,032158d9437cd26e3ef857632fcc3abc842dc16e
c9c2a1d30d0f7d25278f98621185c397714bf8d0,e6c7efe0570577bf99cb59bfb9fd9c22fec1a963,e4ded6e277d0816820552c0959de4a5900d0c26c
e32418a1895102b51517d9c15f3bee8fb3ca59c6,70850835597032f7fb37777bf6fe44eea3b0d16a,d3cc97655125c9e8bfd6577c29ad61e3f4ed87f3
125bd9d5e91d67849303f33f47daed55130208f5,90f902c7d4a6d95e40eedeb813cab74fe3e4e73d,4beda764aaed04c3fb7d08c46922fee98468e46a
337fff51c5314dccc2aef497c5f963b21b4d43ca,98b49b292d21b8ba1366ee97f94176118f90628b,87cc2593a7420d6b5c00b9d02e2eb3a6a2149900
1f981116f649cfeadd2eb8814431d5db299b0198,517d1b017c45bfe75aa0bbe20778d532b253ea65,4d8af148643005b1b5fcd548d41b1a0b91a42bfc
ccd445bbd10f1989ec0bb9bafdebfe5eeff08fff,93866592862dc797b5208a00f152827200d27b5b,f0dd99c65ce8ab8fa3ad6fedeb6c369dc35c142f
682e11b1401cfa2789592b82b1ebc934253f3b9d,440af0f81f55a802d7dcdecc8758a0b637fe02fa,087bc4d3bffdbc3c775efafbc98abbb25adee61a
0a58afe71af45df64f943d623c3e783f360eb3b5,e4356a0d38858f91e586e47968efaecabcbb2b14,322503678d0522ba5aa513c863d7f81e336df652
37a5130fc3bb1be79c4e1bee59da728a69c65ecb,fe873006dc31b4793322f8cf80a97531b7d548a2,8d1d763a1a7ead756b90a65192ff9a5eeb8610f2
a77fca820e5a3bae247c2befb840b5515ef20607,873492006d3e22bf1b07d7fa44cf735008a288ba,9d3c4487f35e4aff74a3a13bde23056c227ea795
0d3d4918b3d44614d6a6bc552958faee46cead98,a6e0e1fe59ddc7349d9aae062fa264cc215dec7c,28b8d069ba74fdfc1bf26aba4c7fc9a9b883f20b
28a3223b6b017dec23f867c8ceead32d2b22bd72,a3300b5ef5a03727ec6f14d99045fd1c1a5dbe47,cc339fd3b886c438337d351dd3d934c08a0b0368
6e5c4667cdc2adefc0b78e852a9fd211b938ee09,d3111517d5cfd1d044e619766e37c3312ebe12fb,bd036125274266dc82d19aa3be16a4c770f096ad
fd1f7b2ef8989c9da4fc58adcf90d29b0df6d8c5,ab5b3a6e1c47a3d213663ea29a73daad4dc187f1,31edc46202702412f041562793781038c6bfc657
15ed1f131ea919d68368fd5a7fe5c9b22b4ed106,9a9a11ee5d61332484cee22918cdbb821c2d738b,f36ec0ed7fe87b027323b43c4e22af3b4c7dd751
b8b091cef889b6ab30fd6b1ecfb559c9cac4db05,55ecd471c834b9d010f7b9f7d66097d327597753,340ee21b34577cfac0514abef4ed144db00552e8
11e3b123542732fad685478a5d08f15cae60619c,1e880c47bf90ae5546b78ff50053e1253c9c70c9,9552d2b757dce8f48bb3645d0f00618259000702
adabc721c49e1e6cb43aa855160197ac54941721,42a52aa7d7372306a2e67b8fc6eeeb92730f0986,5abadd255f108b6041650044a2a98be5b32fe9d8
a283c4dab70daf480a5a9d1cf949363c94a28d56,202d526211a6c43ab3a75fe37fdea88f15c56b1b,097608c94e7e6def92d6205c845bc7032780dd92
49697077fa6e1838f15cf4a469a392154bf3a631,cd275db151c5f5aa234c6f8fc8a8075c86785211,ef724bddd4789cb1702363ffdf56fd9f63ec11da
7aa54010ea000ad76200cc503309de8a63cf8cc6,8a6cc51bb9c16b132f883fc303bf017e860b6413,6cfff900e8d7df566c11220c344afff9b39393e1
6e52b7195d525139683af4f5e40e634d97df208f,5a809d4dada723107408dfc95d98f82c4b05a4d4,73f28f7edfa8cc03a56eb81053783ae4e4959f05
2a83972db8c644948b29e3eb745f2796dd868af8,3bd3a671893df5df8cda67bcd11663606786576a,73322fa6af3881008773b23d60d2830f2bfc33ac
e1a216a4aa366c6b8091b5ca4699caf868e67936,f39ed31cbb506711a462dc52105d81c11ce3b91a,6ffa258abbf7f27a213cf96fac2b94a27e591dfa
656254a984065ef5461cdbeb0e28f8da2e472d8b,d046153c7970c7f42b3a1b348d18a4d7c6f31bc3,d7b3a7655570c385fbb29fbc2570c657d8c1bf18
0099f845ed3b590b1b8cb50e44c94f05559acedd,f79e969127060ee89937c70f2ea4eb7b4e22d772,3c07686687c9877d2e38b0e111f97e350ff9a289
e84370e532b5759103656f6ceff7e9dadc98a8e7,6bd8388fb430d497c949c8ab20a5924689385146,4d4834183b68c1da7cb67898dbfa7826c141c1a7
13ee3c24bcd0258e01e8ad90c368bce478a56ca1,2b15f243bd7e874e332c7f80366362dd1859244c,01723a3cb2b49186ad54a7695202161adf902076
823fffa7bc53d0a307a598bb46cd5a87229ee617,f89025ec471b9d29568cdb76721283c4ff4e973e,262948f06d9d45f5b1807d031d490a8814e4073e
4d79ff20e2968c0499d25200c253bdfa287ab2c2,dc074df9a8f560c24e8403bc84e9c86684061bcf,11a847dc27d306923b7644d5c5702630dca3550b
de12eab65b5defea71db7b50740b1a5d443b4cd7,49690fb663927ed5f8c78394e4fc6d52036e77ae,7dbbc79c9c43a050b0fe363da15f34ca63a2a944
27fc3c95f8beb028fe358addb53695eea7ebe0a3,33dba315366ec3002e062c3aa6dcb15b88356580,f8d1602db568c5b9d22845360b3d0e5cc72e2783
6d5876a29cf256866eef0a5d34e72419fe04d0aa,0be4498284856bbed27ae00823782f38bcb202d1,8af6fdefa8550251f025ce5b17adc5a4c4cef4cb
c249495e2df2c695fe8f97a17cdd5de0a02aa501,e00ed69d661024cde0482cc2f801dbbbedff82c2,8471024ddc95aa54287581ecafb907f3c21cd0af
24bc93430e1e3c1e10bc3cd2983f71c9f105df25,9aeb7237478f33cb452da9d34ec45ce6a0c28d5e,ce37431a3f57ce11da4e8025a12a0eda3e651ff0
17ed07ac90b4a59cd8c45fdbe6cff9fb59a52a0e,757f65d0e283c9fd33f2f99e794203590711c686,7f4420495b9a92d5ae8de25ce21e9eaf5368aace
1083111ba1d3f192262431e532ddf3b720601436,dc6728c8798097fba399e8fd37f24d530585cd65,6b5a4dbf6eef597d7e84140ad74945c1dd0afa47
354c4ddcc1b6c9ee4bf521d66b0123811344fa10,512faa71415be47530dff235711c9ea8f49e9a2f,b83673ecf9ff225de2197bb6824e73ba37d6b3e3
943b88e3daca1bd2f4c25fd9ceb725274d6ff0d0,45cfdcc5828a21f35a731ff59f36b722b61824d7,ba15672a4414526fec873833d40d6e7d432e34c9
62bc640306b7f1ff006b2be7ddc4049004276aa6,e4d5de8d05d4ac260ac9d9c451d176486d88dbd0,ae5544db4c44b08b5e16d08dc4efc23e6c9cac0d
fe01f88e4e7c02d09b212ab343cbc06897022a9c,ce41aa9557a7493ec7dad5820d0e547e22e2b25b,757d2b4f91683bc9e7c8b84dd0aa67208790d465
ceddc2aec32441f2b62ad23625d78efd0472952a,48815baef63e4eff8191d1867a56615c7719295b,b5433100f442172414aebc2d7dff3babedc42a8e
fb5b891c45a0774f0429eb672402bf760a61fb9a,a3beff94dcda2ca803abc655de46ff9ef35207ca,defc7e99d1abbd9cf75cb13ebd0f28ccaab7d376
f0ef6b08ed07df9d962aa79016b432991cb59a35,65f9c5375937ecab75962f7ac60d6bf26fd7b506,bb1b1bc70558bed46b5b10b03777312fb204dbbc
813105ea0acd7e33418ef88e25aa19b5701dfd70,6e84d4275d17d85380e79f421bbc6841dd0194bd,ef5a32ab9531f0c6626fff54981a05d0cef3a0d0
0dcb555acafcaba20fed219f54b781790e31d2c2,fad52c62ed69a9a8fc935d08a969196ffeaa29f2,2443fd0ad738f0f3232c779e9d2c9d7ff1072ce3
ee97c0ca03cf35ddc2ebb7c7590d57cd7d407e14,1180638f66ecd05493ad098aabcb123d92a5c504,2289c1f6a2fcaca03ff4bc9c31b03baa26b3fd1e
f9d7e989e53c4d99c94b4c1e80a863bc687afbdf,9a0f9fa5545d84ca340bad329fae466424f8b4be,0db8f72dcd933703eb7354db677bcf32c3b94bde
2232626ff717443501164d38a67d41f600048a1b,37a44463936022e3a09dfd4d599cda8cc8a811ac,b1534feb3e31eaee0ce8007c1201c08acf63959d
c80bdbdd742ac867834c505b66ae63e702616703,c75aa72b8f844d9a702d12c3c85e36e77c9a3c28,208f655b6fd361c547b7dcff38b12457a1c71866
fef4ae489abfea94bbda5818bdf7f668066951d3,b8f8a1dd1f869bd4a09e571a766ccbd2d641193d,8ca4afd2d0e943ad2dd851ed33589a6fd590e990
fb5d9285e3e4f00c8d95b76bac5e59dbf244703d,37e637b61fbccefccb7d914e277bcebbd48c3eb5,a9705e64362fddd8e0bbb7a96c7906de0ff92efa
699db16fe4d81890f6f9a0ebf525624f34f35245,02b45aa6e4b5267c162d560fa3242a9ea59b2ccb,5ecf99a477049dec9773d1eae5025c0dd568fe88
66951c1bb960c35266785d000543369ad0535a4a,dde19c01441be3aec285967d6a9aa279332597f1,11957d9a602caaf4bd14b0f145e5893047734682
41f5b0756e15daec1025d05ac9de793a0f3b8231,38f7eab9824571970f36589b53a83225ae0767cd,64226a0ab1b6b65fdcd88d85f62a295f97046387
b49d58a9fa9bab90e1b0501584b0f0d58f01b0dc,c43db94883ec56f0dfd3f34d1004d4c5e4d1a152,2bd2ffff2ae72988e3624f2c6ac08cccbee3ee94
2d562c1560dbf632128f42dead3f77ac1adfdf12,fb93b599668b7ee8dc996c9bc43c2dc54b17d7ed,379deed2f08169535e0bb9f48421f14f460ff7ba
27ce569b0b1e0aaccb01f4c1c3e0cbf4889de4ab,bd3580239a0a7a34e0a3f87be628644b04fbfed8,d94574938ad0b5512a3c7212e90a24f7d8c1d17a
82bc431bf42ad36c2850a016a04df1c2f99162ae,69e775630ab21b0a88a13bc5a502a4a96584ec85,7e7eb033fc099afd6dc1e57355ecc864f7d0fe36
a77c50728f79d18e626fe7f1dde0caed0fe6e809,681a00a76fef57322c70428202c0dd3e9b68d556,682de5967ac39a5d1cb1763d460a12dc514857ed
c4e8dcd2e3bcbfefd088a06db340ebbb86c4ec53,9e9fdec31a64bab180cedaff2e7218dcc7d8fda0,2e91e8b243a48dc240207d691fdb7ad133da9daa
ba79c04af21e1f35cca9f4b9f4eb84854d4c3e70,681dfc91acb9ce61c37738dc3e6adef96c3652e2,2949d0b5488f58f8fe9cae976a9c3ec00efd30d5
45339ddc9880e6d0b6c7eaae9838b121bf4db5cc,f48975ffcf5542816b139a825947b84400d893d3,425612504ff23b94bfb7d6477d1cc8d740e6a973
3cb8d59bab03b24c7460955ad77c5f873ce7079b,b76c111e89b42f9c5fe1990b11c1f1d3a97936da,67cfa79659b2bdef71cc0ecd2d08f64a115f7cbc
1bfcd4530784b19eb3a95b70d96c322d190ef498,5bc82beab34d738db75a7e3007e7a3dc66bce2c0,d1609b0acb67b397b1b2768ff6e6272207166386
d3d39001bce7adfaf6556dcb8cdc4ae861e83072,5004889c3cc16daca2ec8c656b0918476b28c47a,b5a42836be2d8fab697996be2dbb47e836eac21d
f2cb7ffce9c76804148f5e9a395cc480d9156ce9,f65e6cfebee1f6d743821d54fecc5defe1d95be5,6f713ab51ba35c9ab10ddae074f5890a298a81cd
6cbb73034f96826162694b0c3357ef924b8d56dd,89bcc828431ab89496fd87e9b89cf1f2aa1ccf7d,c39071753e99ac8d5430b214a6493f6c83354189
af134d61269435e3e3c015b56c8afe33eaddf826,761eff5fe9db3cdf2d1f5dc14d7828fe6768b726,74ee781ae377cf157332d9beac1a35fa6b866e76
6f8e71cb872faebb9ac9f384263b65b6b2969489,1a410bae128760633dd53f721c7a4865f1d80ab0,176558564ebfd03aa2ee534fa4f18034e92bbc3e
b84d32fe04fc1b8d18ea0552027a5b8cfb7b30eb,47a4b9af4c4d41a68265fe4796079c841a922825,3ab38b69b86570680b287f7824d6fce7a49d3118
8f576a3aefe770e237187d5410a476d542f7ed35,816079a7cc2aee849b35f7aa3173285e8af5a831,b877b2a978ce1db4e10d3d817aa34a5fa32caeca
ac91cbb2e57595a0d08faf363889b3c982a8abeb,e917b5c083f364c07ecbe3bf30e1cd630d6e5da3,591ad88ec0e0b97eef7685513770276cdcae7bd9
640e0e028b5dba25c1e97987d6f7b6f521e4e3b9,2f97637b0f18c561548954065cbb691c579e2ecd,0d8d363de4995ef88df8763b968952cbf2082617
34169d4fbd2a31c355a6c3b8344f19da5561e0a2,603614e28e22f93723a1e383893cb567eb2840d2,93c116ff199d0ec0bc536eaff4a2e5429a3af126
9c68cc937852d52ad0810ec3d626cb56fe668f2c,d12bc9e9b98026f3875053c78a686c15d54b9e44,0c7c75435de0a586a2ad69d18079d3ec67aeb0f1
6577cd16e26bc0e9fdbc2077f9310a274555f568,1a6e6a1b0bfb1d246c5d7e3e00ba46433f1ddcf4,67ba21f8a865e521ca949f76f6b2f4127f36843d
21b02cb56b11b0f9d0e00380d4505f6dedb31767,ec0b830bba13e50fc60cbc201842b48fe02582d5,d863ab6a243022cc8b2605039c41dae84b089169
82dd70e72f3ab33b1b8737f743e1cdd009d9c8a1,f258d2f498e3980cc013090569cb53c93c52ee0c,7228b558dd79f5c95be0077f030851288aa72248
401fcf6dfc41bd3e7e50be871c361a40011e08af,7c7783a24a2a5806c596b78f6cd5ae8f8c6aa57c,d4172b48bcb1df55a03228f416cc18c0bf0cf5bb
3b8edbd6a6f80c4a6a17658dee54dd789b41cff7,b713b84352ac55a8e709c6897f5645efb271143f,d1dca0a815ed200aa44197bada9185e9df10c651
ce5653897b8910bf3cd168f7b6177dfecbd5879b,17fc9aa60b5c9bfde53fcebf298949dc9c348edf,f01d3c6b39ef117c6592e073ce9f57148e2f6f5b
0c75716f11668d17be9e965dfb2be1763bb7174e,84c8a68492f28702e5a6e5086540118dc2c71b47,ed734996fcf75d27e38cdd3649fa96d9ed15564b
493b58d72b06697f641922f08a2c2deb90a3b46c,9acc01cc93d0940e01b65ebf4731de960bb9c8b6,4bd9ad7dee6b41b59e6937120fb765d99d57118f
ba3965e987b0238cd9ab2bed4be3ef671095a4ae,e354e8322ff26feab008033fbd3e65ac9d8f381a,8b0e2cf0cd803417f934917c597752f9a58c66a3
cefa2745b8f432a4e774c9c10a44abf091018f7b,df9efe4cb50ebeab4c36c9b54fd31c1cdf2f3a2b,c01649c7d8b3cf60eed3698e7370bf712bc2a3a1
58d39f8319685da76453205e137ed6760503dc1c,0763ad74c274574f3a50722da8d77d4ae4931175,53de381d876c419a4e51720737456ce77e10491c
9b1acb03970748c265370ebf9acfe7f9961ed3e2,2e5c62e086e618bf755a57aa928d95ae134d0e43,2b82581f92507b07d846623333ca2a359adf93d5
2130d92afc0b595f7a4e585c421b56405d4b2409,bc40d13c4a2e5f6f6900eb78f13b9ea46dbffe4f,b142049e1cdb82a40f263116c5c84978fb80b61f
13b3f1189658668e8e475bafbf3abd6077808e3e,8917f848826be9d81199f3f5bc3ce76f73334fc6,dcb91d0b5283c17d004e8947bcbef54ea76e0ca9
2e4f7bcc22af99c2ba0e11e81a9742b0ab76d10f,3297b8f1fa7fd6b4871a59d14a6b233b8f25d75d,8539a8b7272e4659a7720e1a63c8c4c2adc133b0
b1179dd872526520877c4617b67f4193552929ea,dbb0b013d69e239da8b5fff861b3b0ade0e719c0,a853428cc5c62e5429d30c276f8ecade42e873a5
5bf7492d2d983e3ae5c5522514ad5daf20ea7d0c,eac6add9f70ef11b3dbe3dfe7624885069e3229e,6b185c041d362c21ca9c7e43bde1aaffdd063fb1
9d525501788c03a64c71e60232031af6538e550e,607c603e0fab15a7a04604b47e32fb29fe2b5f7a,9440b17eea324558acec52a25a1d9fd020ea0408
d763c32afec80a034963aedd77ccc573c297b7c2,d655024ccec0533302b56fd744f3e117c4e96af4,adfa555645251e40c2436b28f265fa6e09735f62
d0103704a6cba6651ba291a61d5ae36570850e1b,037bbf006dd9df61b446c8eef17d465f4d4607dc,3d987fa177bb7be6ec0fa898e22f298027c4e935
4809d6da21c2fc559961d490b404b794848eb1e2,39a16c4fa8a39c5e1e36a575c2e52f1596ce0bbc,dd4de2f7e064a75157dc2012f05e8d243983eb33
14fa611979d4005e98315d6aeaf6cf8c8cd24e68,8ecdc6ed057684f8633e7082646403b862edc541,80aa3cf89cd413532974640d68173b5e1003fd0a
961abed52af58ee073b1836e207d732bc4ea25c9,12a084d6c016d1e348a5b3be810eccc7887b3a0f,233e3b996383672d6f882b6da73ae7e7c491ab2a
25360412305f3859c56745cd1a4e69f0c10fa7df,e16364b567be80ad7a555d24f8d9ab9775f08dab,7245f74e9f771e5aa2ebd2d2dfff6f0ba0708bd4
55aff2366b53e7054f955c0ce23a01d97f002545,e1651ccdabbd156f8a8f155f654ac0aae684baa6,645e2963456296199a51c66312ba33785cb473f9
f3003f1bb5474f1958c3571c3d619559c20d3236,2dca69f2accda9ee4f6af3a81469afb628ea20d8,f9667df16f143da6863a995dd118edb839e42f04
33ce4c5fcefe3b1725747b076bf14791a3837d7e,2836bf406d6b7028f7012f055d0cba3ada8052f4,60649204add844e7e3f76382030ada4ffc6ccdfa
c1e5f347bc9082630395d9807cfd30c343ee20c5,feeb22b602dcc91f40644a731609c96a79298845,8af6ad91487dc3801d9d3ac5d346e372dc7c93a6
ddd4011b085765085b394ab702c596397fb47461,febb45c39cff64cdd8b126804b921f2172733254,49e7a98ca1f342dfa148e0a27172cc91670c81b5
2d42040b1d9f4688542250abee954ac8b6746163,73acc393639e81f667b6b981a7c802e306754f77,1057e7cd2d6fad5ae65bd931ce4a6c432dfff4e1
ffdb789a49f3f5874863bd35bc477a974fc2e267,ff673eadac997e39822148a313b9d343ca9c40f4,22a1acd610072a1c3b57e0a8d60affe0aa8b4aac
52da2011dd3660d649a27a859eae74270249595b,f5280abe54d79b180b24608ab71eff9d5b1b87c2,13346a42bccca70bd5bacfb1a16021efdaff2879
896ca4bb75bd4d4e4a70695245d2dd063fcc3c31,fd39fd96b3261e6f1a3df4f8cbfbbea687b07ac8,56a906a4219bc5533335bf84c3df56250de1de37
9b783281753a1b7b76feb9b9fad04975bc7ac109,36a2835f8c95290fbd3002700726d4bfb2ac006c,4096d9b74f2349f9b9b8e3103c02c0be11c70926
cc27a5de78af99553252ea99dac767caafa6a6bb,50040a2cab9975aff6974bf462a0e2635d9b84ca,c48c816e498436cf89c0539cf26551ad6ab39872
1ca9f9af51d7edd44af9c777a51adcfd2e3a6abd,0778071be7a1d3c3360d5b3302134801b539c666,9f93b88c1c3297900ff522604b0803534ba85d05
203c566875af40cd9ee4b05e958aa3ef52b218ed,1be741681648796d41bfc5f06da5ef26d4581541,a518fb1fd55b66684c1b327faca4ae5104ac79db
38537fe27fbce3f53a21a467536f47d9a36c8d03,75338da133a5c278bab44a4acb85076912fe0abe,24760621984e934604baaf60f7937f0222dddd14
c09e8778bdfc30e9dd669a6ba6d18de952befcaf,49d66b8f2018386d7512a5abff875efe82ec1a88,1bcf4a5a8cbb77ffeeba75c4b33619c6d434fb7b
35e52b90f5763f65bfb6953d4b4bd0973753ff2a,a9f3906dd552a0a2e467f3c0dc0b40f9f55b306e,6a07a508b877e09e9e99a8c7b2ff0e9b1e5e7428
a748d7279c85b9bccc82d5ef55dd8812f22bb9d7,5930ffa135642726faf3d38a7e35ef5ebd2d1f1f,dd586da7093bac753ea54a5a7a1ce72a64ca919f
e1f7b50985d6b5d198d8d8bfbbec189c0131761a,fb391d571a7cf46f45d8c8b6d5c172f4e1604c0c,e19103e9a9a7e2269542ffa44601a674a05e8c05
1714dbb5631026371f0121ef454f17618b665ace,1886fad528db7232112ff188e08a846e1cbaf1a6,81a1447b542ff826727ebace6a954c02dbb475e5
db1a906a8f8331b8c1f25cfbbf894de5393b52cf,374d22b5eade55df7ff637518a1cb6ef83cc81de,9c6d1d7dca95714ae3cc297b3821023f46cdb407
15e7dd3d9f5d94136f00c29235f9ffbcb8a5650c,2d1e14f778eb9b8bb08714a5526b4609c8af9abb,4822daaa4f2b40e9eeb7dd6b35c586594257c654
148bde3f8f114951d0a19ba37c6c7e4d95a0ba62,9392e62935ceaf9acb8319ca309a7aab55ebfa81,7e69f399b34b34f1ab3dff11648dc3a61d01625e
324b77f3173877b6bddaa2682483fd1205ed1a91,cafcc1987730bd43292619f7008a424156102aba,fbec954de945e88fc026075baf5afdc43de39869
30bf8047aa3ed465b345485fb693ee46fe814643,961eccf64be013fa3ce2ed70ca90080b4b6f3112,d3f748a020c1f5249f5be02c24abaaa359a98121
f7465bb3ec214d2b2839308f78a13dad366e5ddf,4603b80ac0c3836ccbecb6f5e0ecb88c84a99b78,e1ea58dd2f19717e0c60ebfe120764e874abcac6
2f1663041fd4a0c543ae533e2b17a17e1956d301,0210254b2d58ab371f70d8301c2681fdfbaf149f,397745f49a4a86c5f3bd9c11e39d41bd98e949fe
fd0f72303beb9dab2c170cf89ab57e45d7a7514c,98fc58b229559faf30bee6497223b47cb4070892,30a1cde7a5527cb0a4417a2e053dea2de0f9d736
8fa439e64dc6913cc2f4d5d3f2a3f261bc70257e,2df57e117b52f4cc72b00837141df6ad18405cbe,7f290c27ed72aba72936eb27550f6213dc2fb119
3b455c1cf2ed22fa5a645aebce67fd1066970e8f,1c100f0b130edc389e17b7c9a2b23a4d1c4818de,cf4d02ef92340976b686df6b58ceef8965fcb77b
63f91a768c34e0a7cba88de066b9bef0629bbcb1,63642b13c8876671ba96ee0747dbd8119aa4b78d,67f89afe99faebe50c6177a2112aa5c56f676de9
0c3f7bb6645cc2b5122f78fcf12776a1da55ed76,d63b6294b5e8b033f98e02b0654572964c5f972f,b6b3cc88f864fa2caa8b609e5acabc574a5c778c
64a7bc13d614b1f396e0712203813b5c1bba51a5,d2edd6fd2f0bd37367b396d23c8c45f9a28c6f64,ba78551c4fa3a74b161acd58b423378ac983c435
a6b508b09464d31e8fbc1a81f2a97b82cb5273a1,bcf77c70fdee6bb18be5dda3978659cc8cfe6618,7b2507456c7fd83d048ae24796b07c9f2ad60567
b0bc73b1c2070716c7295981848c9c8a229ef5eb,2eb16fdd5f799a4ced326a000b6c577dc8b989e6,abffcbb1ea2a8b3732ef1b687e0c70c222132234
24a5c24cb618ef4e93f9f503e88aaf57ee23195d,2d45b2a105504c69db9fa25ff87c9a35652ffab0,5bbd1c2172d2c2807406a579e532b69cde860730
b35bcdf7b4ec8e5a3072589003ee4ce0e6a9f3ea,7fd97011dfe657eafec491bd68cd8c495f73e94f,774140bb840b31a4a94d48dbefaae01e399169d5
2252beeaf20428c738e516acc9405da6c21ec5b4,d1c0a1b8d3e5f92931aa2738a433a058ca188541,62fe06ce9e5379c6e35afbb76959dbf3dc2e07c0
e34a5ac44b6ace7b9139df78acafd9ff2cc58be8,39ccf7f23150a77eab8e68b3be91572758292ff7,8f1ca3773c036d874d08793a72cda3480cbe78af
a88ab9e23f422a619b342dfbd4c10bc4f576a19f,5bb3d0ed1884ca58d1f8c4d6b1b3d20d6325fb4c,16d7424a7524568393cddce25abadbb0fdd54aa8
ef41312308fac6fefc8db770843624fd3a1af133,b081947e491b44fc2fe613030c4ba39ea99abd39,54175a1abf7b6eea16162ac3e79c5a1d3b2275a9
df7aa2c1d1b5149a00e79c442756f4b8d5622f67,55196a4faefd9e2f8e65eb02c77098273ae81a27,307083a8ba2671619a43e4f086f337b754d5a76d
52fdfcd8dbb03330dc84aa6b1ca75d0a09e706b1,abc45c7de423d2b31028997a963ee1a86b26862a,3e0db101b9d3a3a219885e1c529b7be285cd02dc
c9a2c24874a74fc9bd0345d6333f8d12946fd7c1,3f4c6c52553a8003c4c14708fb2b9ce28d6585e1,6ba28372dbb372891dcaeb468f03b6bdf1d203b9
e2d466f990e8e6a644732827994342b85f2763ce,ebc34f3dbba039e1df2020a8ee4c825a7c7f2ca3,79e9b05e03613b4d369bdeda4bb0aaa498c9b65e
4e279d1a189eefe60e02f83307a229073f30db2b,e77402ecb4e04bf9b00778ea737df0a758773820,20e87be824543c43b6b57e8fcfc2a46f538c33fd
c6dd35bc54c303c4ac114af97c85dcfaab809eb2,60774990916403f6ee494c7611c6a9dcdd31b7bc,ac23be1b4352755866926cef44b452194a196e87
0f9bc0ecedef7254301543c564ae9b4a9516a7a0,db612173558d796c50854d61b1c218849bb239b2,224a7a8a5448442da597dbbad120d46e7b24fac0
265d51a912ae34663d1216157521a990935084f9,6bff15a0f3a96b52a8e4d82dabec0974b9a2379f,ec310eb2f3083b2e260f1b9288592e1cd5dd7b30
aed1e0a5e26e2ffcd988d56b5462b461431cea01,63d64cce41a7215f993fe76e2c3bc72b73f1d4a8,971ba981f73863ac6d6ab0183f79caa5142c5986
017c1abfac10b46fbe87ca64c166379578e794ca,7ca8abf1e0ecd801a02bc40bdd395be82ec0ad5b,9616ff0364dfc5657519568903132b2c74598596
89fe91efdefe696b4716ac18d9616f833fda869d,7eb36c389b0a42d8aeef8e878d6913ef4c21176a,4d126cbe5732453a94b67824d5cd137a3a4e9f1b
8395118f43b8a6dd1d93f2a51a583de51e63523d,321fb59797b42846e2fee8a3885745956ccc6e92,d8ff551103c0925239dfc645b6fb6bbfcb5ddaa5
308a71c79c52daad21eb9567bf05e3b094605270,038b01bf23e16029acc109467682249a38b7b24b,1d56f9f32410990ee39e2a15abc034b9e9dd3a66
1647b998edd16ae68985095a1c9c72de30849059,8b019b61c2ba3e005d27725ac621ceb2811eaa4b,a56c32993795d81f9a491085fec70d2515530a02
9c9ac092a1a2b4a12cd0662a0194dd934c00d1db,dc6d842dcf2f28ef4d11acf7a237bb7bf84ccd72,82d40c23e7bfc510f9d047c87678b1fb1d63bbcc
3370ae1806522ed273c7433c211b28482f73a6c8,fbe64536d1b6bd12b233ba65976f2faa89239782,5676cf4c1a22468fa9056bed34866d4034f69a8b
31d831d7753354c9f9a0cb49996488c44674a79e,3dd21b88da570c2c8154687d4244e99653fe0f66,d37669c54a4428c87f7c350ef3d0f22207031905
c96641f901daa34aab14f6ccf88e860039dbbaa7,decbac8e8b165037ae087bff614efd538eabc100,83f7213b257ea9f320a589968e46a2c79fe9163f
bc641cc76be7375eba14e343c300476d5af95f4c,f8ba9e4760f9fdc31bace09bda04859c35f59d27,692cf4f2bcaa9aa1527883c70aaddea672cf3e8e
4f7c2890299bf18f9ae0c274f1eed967005f2799,e44054595419ac91c0d37510ccd7a426a7347d9d,803a6fea24d5dda205849a092392c555f9d39338
35ac20c1f0c037d14344fc146306586c37923e34,d7481249969d552ab056d732b92e14d83a237100,193cd4d6ec0cfaeabaa2132abbefe06227e6778a
cf1683d14c6f6b9f981ed352b99cd53da37852a7,854d944cfa79e7308304838fbd208643df9248e3,dd1a1d44856187ff2e0bd18ff07a2072d968440c
0f0454a0921b31cbf80dc52b83a06f8860d1cd06,799ef374800ce898dd5a1895cf0c80aa55c3bccb,9fe073493a2b71d3f7a80f57861d52567a05b98d
82dec844c32a6e60a978828b65aeeffce87798ba,b5e3217bb53d610ed9a4eff585b46f72b79af060,3c0e3b1a3f6c106bce80b1e9b490d75635c9fb53
21fba0badd33ef32a877bf4982438a245ea90a99,3db44e8d8ede4f2e7a48cdc9861d67fd350218f1,6c3888f568187850382f5df3cd0f18a23f80fe0a
9a9bbe5740f376dd059525860ac3b83611f58104,2d621f010f075aa936cf7be3b483ecd43a49a62d,5f14f4447b181313ad51c70f66ea035558ebb769
6f09604636796401a1184b55e9279150ce0669db,bdfd7a66eb1c11e513c222bd30990a9f95813d92,95886b7e0322d6d155b8eb3cf7f8ea23a0245b83
5cc4b7531d7872b6d6a1fd2540f8e627e3992f27,8fb803bba637103350909423865821dc143204f4,7b649ee9a5eb420eaf395e4e3e93df2ddf8388e5
6bf7e4c0d3b2c300790ab5bf8f9fd7ee2d14fa1e,fce4a953a77845c863ffde49c16eb053279e56e6,afc981d2cbbea26e78fe08edc8edc3216d3b8eb7
811fb284335d6abad7ada6559e717eae0cf57942,cb2fa0d2c1f3711d62a17b3f4e2a4796390527c4,6a9a416f84d4fc5d70f8f719b2171fe098d5e8a4
5e6e24ec086b5d71352012f55b713d264f60feb4,e8a03ac8bc1319da1cfac4e3b753066bc83d23dc,a160b2470b1ed43f2e0260d2b755b7229627e86e
be78db81806f362ffff86c73e394c73265da80f1,1ea8e8bda283f48902453580be5e97d71b455ce4,e4fb8aa30ad3028a6641f972c854dce1fefddfad
07d4779ee5029e707ad33648016a8f3819fc0b74,f10f1b59dda3713fba7f6a8250ad7e8fbe1d618c,5001c72510e19226c1ac822519fcf69934030c5f
9d9335dc19d4bf109a8a19818fa74249547eb7f7,b9af293d35b3405ae6f552385f087103d3198b29,ff0e82095340819f20684eb98b13b2b99ec979d6
6f796034db0f43140e3edddd4025c57591709d13,8e98e35ac288bec181a02a8f690cae89a2199a10,d38324e4e0239e8c3102d3405b2fe3cac3db9fe9
1d4d71b5a0f7e70a41ec79e99ba070b05e5a806c,d9c1efe7f06a6f1408898f0b59b10f58231d691f,421347919ff3d263ffc3385de354e3ded3dc3d38
0f26fe9d9a05717c76a26b034f09dc4f795368a2,c0d8241b5df94314d8d255f0056f19c4052843af,b82e6e6f237ccc0443dd536a7d897b6b01a0f338
c6143900525b74ca1a40055b7477e0dd28283571,4b30e836062da10df2e43985a108e3ab7a1b4d2a,febb70688a46818adb9008f17dd632594e687330
edc92f26ff8de0979bac08a32d8ab33018c9d9a9,ececf26d872c9fdc0a315c6289df864f66a1f69a,d956be796b77964e9b5a6df00aee775b1f3087ac
9db23894a5d67416a1a923b7d655e7cacdb25ae1,3daac41f3db8722cab6eda7440e05c53ef6f88a8,2f8c0c091c801c5a3fe9247e927beca27f85630d
2530ac2641c577124ae19a319601438573e5c9ff,48ea716826e215ae671f07dd8eb31631e2c363f9,b12932c7f880a8da618f9446229e6de9b6c64c76
da7ec9acd1c5c570cec0eabff977c7172db973d3,d1a12846ba6e34e90e33e5743d3406a01547bfd8,89142ba73a6dc1dbbb2bbba97cba3913e99861cb
bb20f8f31809c40d116653b518e768ee1e0d3dcd,6b636fc22d23de42c532a6ac18b4ee0d93ec87d4,97c60e25a957aac4f522f0a880a292b39e463d51
bb3f9a24541e20fbc316dd626d92689e4250a9f2,0e68dc575b9bcd3871e32c99efdb51265d44a0a3,b36884c17106f83f663ccbffd5912b043fa7c73d
9f38ebf2c92e91054126275aa4c83498db41487c,cbe5fabd3d991807f5c99b5429eb1af49de6b6c1,541ba50269f824293e3bcb348e41ba8d30fd1eaa
0ad08332941bc3f0f60344d37bd8646af838faae,18c8066528a8fde579abbd546374db0cca8d10b4,abf3ce721ce1865f6aa683a4afabfc98cd38ad08
f8e277ef0ff61ae2676f8c60c9912b5b243d85b9,820830cacc08fa7620f8a0cf1f7d6828260261be,71ebbd7cc3eee078e0ac5a72ce8568c6842fd86b
4f055a92544198c03e2bb6e10939a02cf8cf440e,42a1e427085e01b631fb2ce0b26c4e7fa151e6f3,7438ea1d83ac344838b945bc9c47b1ffdd866cd1
38e3a37b82b421d7fb5ecc4bc05b3ed2a7d9119e,a6353fecf05bcc8200826b8ac8442cd9622428a2,c3fddb91ce7af1db2bb522fb4e28e06c3ad9970d
c844b60fe1530bf7f545aa5b92707506953f89ee,ad33900090a34e2e81a00ebb7e1a235b923528d7,fb43582e94bbc5160179c867857cd860b6b0eafc
dd99cad0abe46d95e6addf292ec58d3ff32bc000,707f79d52dd0b4630a72123761d59d4000d580c3,97b96825569a693179b5c839d6d3ad6357de2aa9
f462aa9cf1addaf2d6cb8cdf1afa5bc938ee55f1,fa1ec0e2912bc99074a60bdd7d0d3740b4dce3ec,7a1195976feeb002b1548357ae9363619d402823
fb80deb52978953da3a865a71a4668d3070bf510,eea13aadd4bfa0a5b6765292ea49a9a20403aff9,c69bfcace20f8de3ab746b758e33ed0319975f6d
f1317e893d1c0b3e7f1584f1205317d547f5f685,8533759737b42137215fc7a769edb2b7d60fa4f2,da1bffd3a60709f20b60d75347c6fa9093877e9a
b9544ad342cbd1146b8518cf142caaa8f2f95b2a,70d25e3b60b2b1b4af15e81b24b3baf2a00fc3ea,ca0fbc1de62f08811833b19830bf0c02c8b824ac
ba559329292b7e06efb9cc1b22d86055ddd41a87,9a9e2e4ae5130e65b59b2043cc615c5e1b25c214,e11838c5bd287f9f07a5470f4895195445daffa2
f7e4c0f28229269a4e59aeba7fab6243b9eb0e2b,9845d1516244ac3c304b09fa0f1f6c1e54bb5c12,261e66fb845830988ca6d9b64b84a5f3709dd5ec
113add75cc3c95acf1bddb87d95034a7fa0c6c1f,ab4db7f4751419cd487f095e7dbc3b759090afae,b317f4702936b3b71a862b57cea4e960692fb5c5
cb2d6757327635a86e942719fc12deccdb087e1e,08f9aaa6e62210ef95f34f33bb86feb30497c4ab,ede47ffea9fab9f2bca9c7bcdfb9a5c6c1f63b7a
123481aa8d6ad7ae04da6a71e3cc88eafcb13f19,d9ad6bdd1f2d586eb3e199b26ed80552c29950fd,e3f4676fb089a279a5c4fb8eecf5033a9064bd95
dec6255a190cdfb47f7b82167ef7839e317f3bde,a37430c245d8ad18303c18db03d3d98a3061be66,431e42c8735f4f2dce3d22b605dbf0469f12efa7
fff60f9f67aafedd5369c1f8297ad56235a6ae02,6ff403139875c45e257ae3f4b291dd6f8254d1f8,0680ea46c85c1482460989a78989cda79f1dc89c
1a26c0ccfea520bed7717b1f72aa5fec6ffe464b,df2488ea6e9f0036a73b18a9375b0e3da1e8777f,16b14c574ee9d97310968fdbb6bbd484ce1dae71
da4980c4c0fcfbc1e588064fc638c63d7a201066,a5f1600275c7a82972a180d1072733d55955e1e8,595402cac7e3e60ba923834b2b5ebdb21f7e0a74
089e7ca6c8a1cfb24f80383afdd26ccea01ad2b6,84f0b94549750466a5f84fc63b9130f865e6b4ef,3a85a5a9cf7e66c8ffecb22e1abd10f3b5376693
11b743fd6ab270a5c34f65ad1a133892d53ed3fa,8e66041b7902f31a3d741ebeaf8b321c2990d171,a3f221e189506777dd25308f67ed457ad121352e
a353d7c65b747a5738c0e4580c31e3e6666307f9,7aa2ae7b3611f9bca56840bb191c07cdbbb9035a,2815273cf098f3085c4f1ca24ca96cc75861f3a5
71c6b6be0c15753b2d45700b5d9029ae92a01966,5e2f088a5b8f40beb1984b46704e2a60b0b3d524,6f5c6ac4107526e2d0856c715208ce4fac011fc5
2ad20b37874268e9fa5157d1da4073c5b6619913,5307ef07c43b0c3005f7d2a2da89b58cd2690993,ad637e8f0931eaa2f956c2deedd7d74df310927b
d8fa6e6a9cf4e197c6211a8c549312a4c4cf09f4,435861b238f125b81184a4bed40b6447aad88686,94cb1c3a49c870888ebcec5c84bba9e42140d4d8
922893ddbb7276d85159ea0ef63f7ebe8f11c2df,26e66fda756b3d75dd22b84c3a63e3f49d25505d,3fbf05ec899374221be7cdecf7cd6058569c3efa
f671db3fa691b70f720b266dc25c6bef77e1288c,38776ca494b22f518de94226143d1505e8df4a55,0ec1f182b4997ae5e9fd201b5dbd7cb4fb01e870
d5807e03b6bbcb6a2df5263d4d51d80a3fc5d60c,08821f94223f639076beca70eb6bf111453e7b8b,c97fa0a05da6fe5fa6e630b4054509974a624bd0
761de25eb4bc8e6a213ceaf25725d9228ca983cc,a23441394b658df01247b5b8d874156356e92a97,5b9998e38b04fec874d0441b625fd25496ead304
2da416c4ea588b424a676365e4b7038ea93ee386,f12abd03ccd4f1810c9fb9bf2e2c48c3400edf62,aa841d584d036accb81af0e0a79c364241d0cc45
32465fbdc1b0d1d9c2a902ff7a65265c6484eeb1,8c620daf337d8a2794fa49e1f950e8364e8b7d50,0bd34bb9927ac9198c9ed2b3d3459b43ad530c8a
f73456a9d92f7453e80e4fb751343c0c2e145f9c,1437928ce65e927a0e0fff4f20dfb250c98e7dd1,2854f08daa2c9b318e233085cd04a6e3c106d8fd
4794e5ffcfc58d982825d18e54ac1e6d95cb2ae4,fb7c1d880519d633f03477a789c2c87bb7c14685,c1be8e590d38ee004ebf1a5206759669c77ed5e1
9588204585d3f8b06b2929d8ec89b19629de7706,3f4c41b45ffacda2defa96b3fe6df84f3c62e448,e318348372f0017a23830a65f217fe50ec5c5316
e523b9b28250353280ae2aa0e4a9c6687d5b17cb,267b99a8aadd1517b6afcdc81d4cde4f568e5903,6aa1f3686e3e557bb1d58b1195ef2080416272f9
3892bb265e492f693c20aff1c369c5f186cf0c8a,c48a8ad31fa9b549be358497a7641481c1d98581,3c19adda78114804ebcc8d923b155b43f229b99f
e0c41ebc5a882278c58d56311e9180bc6720c301,ea18d11d410b6b6cb8f98f54cfb9fc1479c474b2,bc7b113e09d921871c1ecb3c5ad108ae7e8ab010
fa9da559fb8ebd57b55a4a58673d4b30abeae481,c2173185e7996689cab3b5b41caaf89760b78d73,d911e462b2a85b7160400ce36755003400584282
ddd39227eb42f666a341edf1f4396b6e572cab2d,51c3cc97fa2de22bf58af54a84786d98bf36d594,48348ca7a18dccd191182326a9eadafa2db7a61f
86dde7821c25f573d9d52979a419b7b453a4dc09,f477b94f0f6ef9fe178f9c14b6c5c6e8b70e1ebb,c7db379a4fd80a492cd2c40554d0260ee4cb74d2
6bb5c3c48cf0c38fe27fb5f416572924defe1b95,bb817db47afaf781dcc8ec937fd9ad93694ed032,c4061e49e61398ea21466f63d6b1430efa3b7627
985dec61b1898c9d8f730ece7049748dd0a9742b,6b569d0ada1eaadd2384c0ff4f07f0554de3b316,edabca144788a9651c22e624301346aa95b1d9dc
db23f54f8ce5bf8f519d0a7673476210fd747054,0e39e7c12de0812c6daa343796c4d2fd148b1b32,e81cff0408c5008784229ffd1bc1cac39be8854a
5b64e5b9579cadd9baac768a773823d71914f3b2,8b00598cab3618b66c8b68663750d1fffa4ee85b,59128241adc5ca60b513cb47f0316df6d1adbf76
0f07c966b62445ab8bdef939ce15f460c9beae80,9584348c407935d8e306cc9750195c10a4aa4518,ce742b5b4d7f9f750a40581d0219fe2f6d704f78
d50ef3381fa11144a75b300c21c2605ada94b6d3,fc9719f5f989b7785e7d8ea06f82042e49f6229a,9782b206cfefe9a03e5677a7204673d760e8e9eb
59fe173cc7e2f1da36571d050776b370dc72b211,557a324473694e56ffd934e2f9342ce64cd9b50d,44e2c05ef75525f337bca10995423900840bf4e7
b003828d260b8c229d93e3844aebe7601fa8207c,bb2e626fc39410627cada94e17d469e8102fe136,286c823e279d472db5eab60693ee0816b3a92d2e
23e514621d6e5b0963912debe801603b75f62089,f88ee7b2d8053a1599facaeb0c065c216e58ef43,287ef8e79aac426249c59181a07f217ebe95986b
879f48d2151cc48a54cc11242d0aa07150bf5e8d,0e426db5de52a548c18c13f041eb748b27fa62cf,38d2f3d58cdfe477b60f3abf4dfe61ab76ec6cc1
237e2686f1eeda775d7e6ebfab826f34da3a452e,f9ecc12e5bac5414286325ae2f940de555304fc8,6f942996a5870c36a5178a27c21cf248c2d3e894
5e9cf637d36db400f9fc7926af8b51b5ab9b8215,b1cec6de2aa6845ad4b891617fab6b134f8ac046,84186db35f1879b102759102797abbc4f9b90e75
b3e64d70e7b712b675d69a3cd57ad089af5c5ccf,da37fabc42ce12bf7bbb5f9ea75a5eec7a8b7b79,545978b290f97ceb0de431e1d7bbc5f11c7cd19a
9f19f582c414a2543d1db7621d1e1fd3db60ec47,30b745758cd8573dc0a05df1b51ab2796bc61a05,fbcdce2c879f1381aa1f13ad37c6839c11a3468a
0bf609f0f0989a81607073ec70e7f83589f2dcfd,d66a8cb90220883ab66f720b87e8bc9b7ddf6043,84e2613ca87a621d53dca817806f6c66332ecbc2
cf21365a21993c145e9fb7b99f83dfe54b9faa1d,064172d65a4bc04e8205a0c5b560516e70180b83,bf29f2051c6408567e61d428e10b348bd9870861
5486182f568f0151894a6223e8a4255a522b2376,31dff18a61e5ba7bbf0be67c466f0b481c262836,3defa344709ecac3fca36af91829cf48c30f6d22
74c995c06b7759bf741954b2e51ece96b9847f75,b4ccac8defe602648cf287c6030a920b301bde46,b521ac967f6ce6e802521d9ec385d34536abc9ac
1fafcbc12557e8cbebf0d50168f1a6c174c511ad,a0878c9565e5a2912f645fc2ca29a58c418ce503,6fda6f79d8d31ac5d0014aa281e3f374c4490add
00330a562c62423f9dd4579d8a64e0e0b5d4f1f2,f4863177b6583145162fb365e6b6cc24d9bdc1a7,9d00605c358778bc44e87ddb9fe0ba795a84ca1b
652d41a70a9ed048c56bd12e03099484973ecdb8,55d33aa6a777625baa79f3368459f60ed1abd754,4a88ed950a5ebcf9231b587e28541a2328e5935a
48385fce80c853402b1d95c930e54861e1d34aa5,39ef628a771a118159054465a13108bac3936705,1866aa1515412eab5dca74c54c3e94c85b4abd31
1f8865454bdf4df751f16646398e49a2629ff593,01589aa69367f1bc7160c3d86b1e8f2facf2353b,28dba2e7217c7cb560ec81fe6241d97349c3663d
9bb1cda8b5ccbb80e3d1a65cf6d490bb7bef7939,44cda176749d2e50e9b7de9184d475b81f224fa8,acf5675a909452433618b11daa267433a1beac01
76becd36b7c0e19af8860b0d13d74ce8d3cf43e7,37654bda662e821dd638e49702185c9ed5391c85,a36fca37f10da90ddc22569d6913ac7dcf9c14f4
1e64126fbac65075e31a7cf2e675057e71601ebb,5ba5265fe6da4187b4af25f2dbd519529d33bda5,0368e12aaa43c2479ea5d03adad37ee551e74c7d
938207045477ae42af68ac7cf0b30d67de7dffb4,b18c10d0d8930b3e49e2e9f4eca8f9b4b09677e9,9fe395018a371ff4f0a47dff05120e779da01f48
55e72fc0f1505c75f60af706736d32ceca9815a4,af1eb33a7502c017a4fa2c7c739b6a3cff6e962e,f4da88726c208fb12331e2bb4ebd8998977fd79b
1ce1fcf5aeff6fe3ade196c3e4d1b1d58f80f5fd,6045b3a6bdca79be9378337e28c3209535de7c4c,f2d5deb26d396c86b9ff636540464d065647a91c
ee62aa0c13c3f791427361ecd7fe2ae26b7193cb,1529ff773fcf2570859fe4527acd8791bfc2e19a,44cf5d776f92fc30a581e6bbf8571b07eccf02aa
98c11c2365cf68c7b63ce906def4abd8b50cc325,e657d6a07dfeca49b57552bf0d76328c38ba442f,9f3a50315b1c2fc5c3ab09eaa8b2f5b1c40f7fcc
29f7b41fc6244cae29e2e5c06eba02bb447f4366,b0fd2615194fa74e8b4de328974c9834e6ca06a4,dba81381756d73ff6bc9493bf5e6b15197d0118b
36ef7ca8db12d0ccb55bb6a9548e10392f3e377c,e00ab511856c3dd35f876468cb541eefcb305b52,b2a13077c0342db976b79068fc834eab8661b340
de69f1d858256f49a13e45731bdbfd1e35cf9cf9,29c875897533fba31dd98c557ea1f8a3769e3422,0eeba27df610bff57371ec104470bf5b40e764ed
da47c509dfdaa4bdb4d92a4935c4071191341338,c7426a37ef17dc736fa542767a2c7406e201919b,d0fe59feda4b322ea698b48e5614f9e7d8814645
0bc1d8d446274effc390d271a3abd643b0a5bd5e,b054febbc8e2a927629eb888105e2a6e0a4a84d9,80d471a9f1c300bf6899a14ed6ca476fe7862ddb
038f054bdc1a88295d1e217d3391840e0ba01c02,33950a5e220ec7bf024e4b3f14beaee4b4ef0bbd,81e2db47a98ba14a2d01bd67dbb61e05c92610f9
90e0b426ef479cdd8879cc95b7dadb8d4790d45a,e4ebf46df3e1139215ca5cd6f7bc64f6e2f9f50c,df67c18f7dcecde5df374f958915198bc2307183
122ef8bb76d11ab4e1c7cbe198e592a23bcdb22a,50344403834db619bdbf15f42ef88bce903d0692,04b28ed5879408ddf5a07015057768b76b2af9f6
605a495db1c6962ab218457ab4799a5ddf680ef7,a02848632571f0d3cfc676bb8bb38161d4ce1e0e,2ad272f03f9f0dc81ba4d1fa4718be7eae7b1474
b5fa73b82c05ae51ff1c0b51f50de32c7a4491f4,7080bcc16000b5f14ea81b0fad40a8ab0b5f9677,526de20d9a1850e6913ae15e599ce8af03fd6666
2cec31d86f232e5c47fbe20dfd115d8caf2e5ba5,49ce3f5d2a0e65fd340897a684d73ae370e6e624,beca14334c4a38174c0dd6d628d81e4367ac4969
736f5edf98ab5e30efb82991e0b2618906c903e1,e3d3fe654cff6287f97ecac55de2507f521b42d4,9fe4e1247f19a4865ef38479fc588a3b8a1dd63c
be0e06bd505738535a51f22c96f7f235ba977af4,82bc91e6cf23c08ec356e57ed8f075f52e417134,25c75b1784d0a0d37337c15810fc7fe462a96bbe
4363c0b2292dd11aee5a1cbfb12c9853329bad1c,b3883557506f6f61da10b3e4fc1015a6977b263e,589fb20386b63be2f90b0fed86868be88d2b878c
0b6faeba68f1cc4083cc753173e8167d4c64e3e0,0ca260e08ced39b0ec1f111b159ada45060dce44,8e024b26068dc29318759d15afe6963d9b6a3a01
b41a0be5502ade043c63e6cc31fa7a4716e1e519,5181d57559dbac0c2fede6a3f9fbc95db28ed634,afe2e80673d93a936d245e9adbd6b7ef2f71476e
cc3f4508fd843500846ab5caaac62e41dad3e991,5fab6cc5e00e52e60bf6155968e9c950d5a4079b,63a8fe07ee7226016f9e2edcd829c03236829584
ade7af52347f580b26312bad7b6a1f1f01f9df22,d53af12a6dab99b71d8598aa82608e24c488b15e,81157e9846ffbca01d1c3e9f49a218d15f51ab96
bc1c93c05fa4d1d595b33a5cae9ed112cae503de,5205ce30f4fd31e56701aa9bc09ae2b56a79dede,68668c649e5aed88bac022a11a4e78bb3adb3a41
032cbc54a77be957e307acfdf0fcc2636664d173,3f1d62af8e91db86d04cf42c094e17e64eabd258,594090b2157717710c8520272a555637aadef96f
094f8a7be7468a6465981de4f6fc4398110a7581,8179aadb2c28ec3ca76a88f879b70bafaa023334,972b5181eb6501c54ce8194c71ce67469a0a5fe1
d2f3426bda0753986075c88b558c5cb7e9d8f8da,54d692c7d657dd6a7da2b1c9984b9a6cf2deb080,386f31ef4c2ac15fa101addb4f93cb7c4599ebd5
14e9446c087db914ab224e4f11c9140d16bf69ee,05348107034f51b869079ec1b82913fe9b561ff8,b9ef7416f05391d8133bed83311230256732e6f9
2444c5ec790862b948d919d2c35e94fbcfc68ac1,2f9c1e8be4e8bf2de29f6d81922b6324871ab92a,ab3b7f8f69bad57e6ff9e664ac60f326d390bb6d
ebed69e8588775280a3a104bf0cec12938890967,7bd8ac25d4836f26e736e68b35981439ed8f2a03,d04547eb8309f2be7913d0b435208435ca871b11
9b9623b289073b875c8cfad7b43fc1a901f0a462,972b961f2b3a2a61a87cbbffda80b70a9b82d86d,a9ff6272f6825c7df2ccc21cd0448211b04d565c
ce1a82a1e4b72c032500ed709da6a216469b624e,d989fb9a1518bf88add6536f5daf5fcb5ee41fc6,f0b714d5adaa8a660aeaad55d73d6bdbc9805804
457daac896d04239f08b2037d6b4a87b089d897e,7f6931f685338310485c26b9c568213ef6ea2683,63879e74cda7c7d2ea7be1680e6308aa7862c87c
9f62b33ef051476527175a2f102ca7c1a667e1c9,1f178d381fe9f66905cdb409c1986dacac061831,0e3b8cca8c174f3e5e6369079ab2d1f9e3ee2a4f
121f6fce223c975f5ec2d48cad8e40ae9c47cc1f,f2372c0c0aef6fe62df7d2a212cdc4bf8e7636ad,81925b7c1b27bbf95e5228cbe10671521db141ad
d8700e5190293045bafb454d29d4e581206a8451,c9b88a1cd0f02bddbc5a74c662a2c6ee299bb4a5,407fb4b1da9d6ea4072909d0dfb90b5d4b0f9d72
a55da71b23456874e4f5d0c8a91a1b09d9a31aa6,6e9521d99a8f1c6002f4b5f0dd55211f2229662d,6e5860cb8753189d62529ab327e07f6b83d0e629
e87e14c7cc463e3bd752d4ba00c442b463b5cc52,ef1cb852a8fe0d0fab065f2b24eecab37b7bf48c,3c1d50ab72a4d5b4290ad40d58c372e7e05011f4
cb7a8dfea7ddc01a3299ba3ae68d275bf878e4a9,ea63bfb32f906cedf45d8ba1d44925b823cc726d,45021498cf92abc9487ca9cd04e4b916a015c0aa
903f1b9fad11f5002a26d62fd1e8e7cfc1f05697,4943e01e25f364ddb13ebc09c625d8c9cfaa6028,d32deedb4e7f2a6a23a887dba3197ae1ee058374
bc727f9fb220c61518b916307d182a02e5586265,b9668a88c69abcd7061bfb5a4baf74d83db13be9,d98d0c5e62b6fc704ff39364bdc20f66e0dd64d9
6652fa79199d9f0d0c1d433b1c7481571bae9f5c,9917350ef0803af661e14bcd7f902807a62f7afe,3e96ac0c4c7b51cc0694c837c5907a12be26fbd3
340d389e20f6d9a7fd153a8079adcb9c35d173d8,b61d85ad2d3dbf121e5eb3e59309f3dab87ce3de,ddac127347b4dca6ef0c0156bd60f27904431488
5a61f51b3c9cfa8bd2122da0e8747bff97e279f2,8e6bc090c2ba0fcb22aeffe9f57b5fe7257dd179,b7c00a2116dda984ff81d6e465473f744d59bed3
5b1574bd63c81a0d4d10d977bfe612355a54359c,a7b449da8bd0665b0000ba92eaacd12b5a7bda81,a7016a9ea014011d7d3c32ee77e7a7604eac4949
32137ac1605e47e9595d811aea1b5e5137d5a721,cc0170616343e33dd9e40a23ab51e601b63c59da,363bc3e019cac4f6c691c1582ef04731e5a21c9d
c29dd86bb2cc182eae1540af0f0dfd4d32f0f95e,704ad21b239bb328e15f2d7fbfd6ccf4a23a89ad,5be05044ddfa3efd3baa1dc808e2a2478682b612
f3d93a47de53b3735b67c978859934505d2ab476,dd78479afa84c0819c65ce4b7c3c61dcbb357a3a,4a1db1dc797edb2d8f5aa89ec3b8fe9e8b2137c3
3c34c8b86b456574518ce6565d5ea23d65c63402,33e9bd3c7484a376e155d08abfed75fc9befb2c0,cde3dd3a877ec719ae8e9cb3e07e46d0a344697c
e5de38c42d7e767a8625b4042c57ad64bdc941e1,7bcd8dc88352e49a34d92b2d4e2db7b469a3342d,131331bc50fa06099c49c8aaf7466ee728ec4be3
2ed2ca5cf0611267f1f0d58f164625cdfbb6f858,98ef2773e01cb66bfa25c72f6cd84034f6eec22a,cbcc7c8d353de5e128ff76745e7232675f66fc23
b164817e18ec4a6672cd42e24be79e3dcc2a805a,d287788b573958f0d316252f15fcd71244e8b095,c4c3c2a7aa39e10488c5683a24f692340a2f90a5
5508272cd545ea733e5f204abeb3a7744e7c3019,ba773e3385d908ad2ecab8c6e50371b19a3c1adb,d72eaaf734e8cc074acbb9ae43bcf25154476ea5
ac0287b5e03f51ad3f45d1e5fb090758f9edc5fd,8d211f17b4715c3987f429bc5124fe823167390d,679f2f75b3bf361288e87d1130a777207e7c757d
e55f6dbb089f05fd0d6b41894cb142e674809ca7,998db01365d461ee1bb5d8209e13d64daaa793d4,a398da4c72b5a65018ff8f4c1b70ed574a46a95d
728be94328f71f8054402259afc1212a881df473,b7d32e4933771e370932fd969f26fd9ae666a3d8,45cb7d1eff9241fea5165fa135e94bc04522e0f9
439faf0da88cb10015eede0b7b8c6119ad740358,429d2cdf12f628ba3c6ace311d5a590facc4dbcc,29916bc6f64e0a7d0c745df657ad3eb7baaaea01
248082347fc619a7c4381218e01b96ef32545594,6b2e4fa4133a496c1c3f89e3c71fffbdd7c192fb,1ec03269951024d920fa0335717e9190ce1e90f9
271f69db12263731e2efb601e27862b7d97a0b8e,6f02e648cce588ad8dc849497baf40c16b556497,c2d76841dfe38444f78fcfd020c283ebe9937767
55deb8cb43ea8826c8b150be438eb7bca3fe6c97,e78a4d3899022e6afb4b6a1bd408b29c4cf3367a,5cc4d5248751514f960ccd3997d1ec0dc193c569
bad7ea43a8fefbfa417be671fefbdfe8eb124323,33b68e030a034a12eab2f51aee1cf6bb73f9ddd4,2db4cae7aa05c1dbd754744c608ff9c11818fe92
1f4b8a774f82ac843b0b3b09c377e6b22ac0f39a,a3134fcbfd0538c1de7b1b4b2892619389a92bd8,b6a098855907436db3475783b11518e36916426d
6f8fb64d36221000fabd6caaa0b1e6c7bd8c774e,25da420f61d2913dba54562f11cc0908a35765e7,968bd8c12bd440412ac53fd7765e1b8e6e1bebaa
72081c803ee5ea2007ee77a1bdae0f2a02e94c8f,6fd5b86cff2c5e04292da1e4239b93f34c839cf6,dbcab9cc2919b923595e087a9c4aac133390443c
e3d12caa9f9ca5cb168d08c0ab028adada1d5d56,9120ef74e57a7703bca8272ff833d48fd4202972,9ba9e886aeb905884dff95ffff2cc4f2a1b516d1
2c89ddf62b1156ac23c85bf5d34c8cbc98d9875b,af40ae2c9192d5c3ad8370d8ca7799e6015d6a23,3a2342fec4e810872748e3ac2613e552dd2f2fc7
f39cfc75fcb7da60b832e745ba7d442e039aae19,ccf631eabd3f52111825846b4911ee6dc918726a,692754b4228c0c97b08b2857362e7321eac7d936
7e4aca384ff3e7013155120899a3e0a118ab9c92,54b8de47f0b2792cf8888774524c98655ccdf6ee,406313154c4587a906ff40f594e184dd78f850dc
3db14de527e34317dddcdc3ec53949818dcd9488,d621cef9883623c065ff5dd4d97dbb4cd49a26d4,d8e4544fbe384d1598f325310d417275c600eb3c
c6fbebf6adbd5906a098cdee68dfd5830e340946,8122defbd85bee5b9ca4a2561f5ca189d40acbcb,f249987133a617dd1d86cced6e16be1dd36f7205
44f0bb856219142710cec005b7c489a6f429f7a6,9586d3e67429139c22c2fc892acbdb752564c4a4,fe243540a871899c09e1f4a06bfa59628ecdc387
9eda172a485371faa535561c5428b5d5d256b96d,442e9d2573af26be3f770a38157ad14031a5e62b,b179e01b3f0707d4b6a24d3a42c8c3553d191839
487f7bf4ab2a7bd0339f4c00b326deeb523bb73d,eee6168fc14645350b787aa0774891006beab397,07a798f733fb560222e24cbe11647eb2a98f50fd
f2c5bb2bfdd30aaf65514c79899dc4d5dc1eee3c,5649ce150b66e35934033879931cbed15f911aa1,42abb3395a72bb437e1e115f24890c9a270287c9
8a8699ab6a5b50fdfc4d40beabfb2158baa2dc6f,7ecb19f906f3e9010174bd3d70dddea65a415867,f1e32bb187b6ffaffed39eb94e75d0b26be2c989
34ae77bd3b0c157043dd666e65667cb2c7116039,33917ee19bce8e2f7bc5134480221d7037c1969e,8d2e2c6c21df6487ee11f8adc28302c5f4f29838
59cb93fcb4d60f1a3a55e35d2f2c85f9bd5d637d,4e29cac57f5f34e5a2d29f1111356330f0f40154,cda64d090e9cec8d6753dcb49101aab773f7bf09
c49123086d7911274569e7b81685d8d4e31ca024,4a0402f35843ebc5ab73173fd0f28d90d82ec75a,1f874777af8debda0affd60ee1cb045e4d1dd0ea
68217c7cd0661ccd2d38ffc0eb7df8797478a036,fef24dabd65ed9ed71eeddd256e6ff9f8e687095,e1e9a6728f7601f9994be89374720edcf408826c
82f025e9e7505259228cd1b1a1b18e81c9806a82,d85d6b4bac75a65672dc646dbc80eb14b6086377,932849c1bf6043f7c7f4f114bf26542f4f8ba59e
d009941744f5566c8e36e931c43093b5783c3161,0b65c173b8a6a893ea0738e78bb13411cbcc9252,60473c7eadc02e6f1a1f9750bbb3bcfdb38e75f8
1f91fe4b11d06cba30801be7852cf0b0be7a3b21,b81b818a7569b762f653584deba78bb0fca2a81d,a4c94c8b449d5090d2e781f0382a6ba3cdd29c42
1fdd4f8c9028cb0a55fe0e4289faba89bdf6d821,37e4fed3d463b6230c13eeb7ceddb121065d7e3b,d7812f6c05dbae4b3de71b75b6df7a01ca952563
a009cc5c350ca2cc1ab2a6cc96935e5eaf8c3aec,fb9bcac2d3c1dd1178b6a7ce090e0345014ad04f,3cd2cbcda8d082f06ca29ffd1f22c0f992f19793
5c93f3e271bc5c51f9be06f6c17b8804fa2f71ed,1e066ba0bd9d9f54e46037266eee818120080f84,24fcd05e8cbc84c6cc8281c4914bd560a36fcbdc
aa3f29eec8ef6cf9280699e260ee4f700e13588a,958f30f1928c2de6a5fb8882b94ecfda9b4e4145,0750777fc8212c43ae7510aa096383f77b382128
e867fce88370c0d2a029b4d3099c0f0566eb0b0a,93a257ab295c315fd190a953f2fec2f84aa0ac5c,70839bd7f4cce7b299474c14c32fe06eefe8afbc
14cee4c15272f8b8ff2a968a23d5466a4603f536,09397bd542ad0f9d9943a1aab1910c89aa968676,ecc56d7e680907486fa248a6405ffc7d34342980
34519c67a10288a961093e22eca9796e3b77903d,8ceeb8d1651cb79690f96b46f2be35c4ea288789,005cb5914c39af54a599465582c494e88ae45bf8
be5e84715cafda42c8782a7687b0ebaf507a2693,fc6fc6729541dbf9b38a32fc60946dd0da1a2af7,5ba83e8d3544681732d870100c54f02c71cda811
dd768554b48dc2ca35580a6617da9717d2edfd32,49cb7b256476409924c581145a760b863b9e755d,2648f8151db723ff3f52a5ee6a321b378fb65d1e
a462acdb197a0748bbddd7b96b26f00bc696c8eb,ee8903ea7babbab5c1e4ffc3b9ab5cbdba360b7a,a9ad18e6238ce217278b76b9ad173e03466f7a0b
5c090fce2ce9a099ad52ea4aadf7abbefdeb67f3,b95c02af162efd0a80924ad024f822e571661097,776216d032717bb4bc35a0fa02631d1030a16721
efe31e1e554e864b3358b825f1bdae1faea2940e,59883da0a081cd6f3c00da274338fc4f5b4ad7a7,d91847f39c8cbab32ddcf0d937b4d4ede668dc58
4d70faa3c2c176b8bb6c28659ea02d8e1626b19c,0d5f7fa66bf1a9c5b39bac5b98b7eab5dbe0f194,0e0d42f47274c89997538c9dc6393749067c2727
a5a522563660579d68bf62dcad3a0046e1661b0d,5f0c03be10a91eade862360b770b8de3302794bb,2d407362033c95dba37288736b9722a3a4cd8000
1f0488a9553fb0134a3595576243b9ec509427cf,ae5a15825a07388d6de7b296a28a0defa04f3aad,e549de1e3a6a8b1bb1c3dada7c8a74caec25b5c3
a55e2c682b7ee5689c9104115013fe1512039bf1,79d139d494cfa49678643176ffbcb57612633f3b,3a5cd0760a6949b46a003b4058d317f933365084
c22d1530f716540d63b64504c3d3943a87fe4285,84fb1c5a6888789d2851d056f487c4988e6561d6,1fdc6ef6a7abf174c93818b8d435018c089c3aaa
659f7303b9a0b64e1d34c843c1a6b01fb4ae8caa,7eb9ee390aec13dda219e239462d5846442a664c,09be1dfee1541a24f465bc64856080e9fd04e7f9
409abb8a43407d16e9cd25d3e9dba5a6aacfda4c,9546595c1588ac316b6f5f271fa7a3bd9bdb7e7a,60518dc1136189ba06d9ee28100068e97fc0f286
f923348cca415e0312453b93dc9728b6945ee29a,3539b4a6f342a641418d0761942352c158128aae,c06bf85045f57a93aa9ff31e7789d2f11e5c455b
89fb28262d8757583690a328bafcb5500643a598,ab2e02cc5848d2bc058e1acb144f75560d5f5575,481f0efe94c5507d4927f697df395c4f50aa26da
bd5a82bb25fabc4d46690b9ca6f8bda111324c09,2e9ceda11b0c392f19432499593eff754b769a32,7a8fae6194279672e20330c57b8b2957ef4dba6d
29e2277d98fae1246789babafcd0585590d3f3f4,f14aced9c576e0c376ebc7c19d5e661f18147149,f232009010d2f2006049b3246d2db7406dbafa97
c202c6c2fe1823adfa2a54af52995e1a25b51119,5f845aa8ffcddead21098e10dbfabf45b1286c66,2a281b6be66ec424ab991bade7bec639d875a40a
8310b169b780171ba1aac906602bada424b9eb76,8bf8272892aa1cc7bd64d61a2a16eb0d87326325,53e7006d56d7e111ba6629d0296806cd02e91f5f
c38280ef3e41458d1d3de009a90da945bae90445,7c3e792bc1e9e773d4e37e2b7b7fc51a4da6d407,65234c674a3ca0913b0ec549e57819f68492b7d9
790a58be52aa745633f5c23464a774d774200fa6,78793878611786c74714f3ec66551cb9050b4077,0f8ecb73e73c3a5ed9ba6ce7fce91e7d40c611a5
6bead20fc34cbb19d66c74047a3c23dd9d6d378f,340499dd3a7b22bebf01644f857254d1dff2f814,54eb8de6581fa93531ac048f356261ef565d7a53
34445a912abc41bb8c95281e51388fd9ecb0f241,90e7b2be56ec428191cf6a68581840468b74a054,2626b85984b08a8e1a3d9da1ea07d72da43049d2
a08c937bebbe84aa66173b7484caf0246817ef34,126cc0903770b0bd1bb74536c8b9cf7b35873d97,01dbc63735030485dccf5960470de6aa12e6d28a
124834fe295b50e1cbcb68a19e31cc84e31855af,3bc6340424b6c43a67a1879a4648f1542ecf1d29,e6a3aa345000b3738ee681bbb516d6d1c0ac7e33
57aead9a1487bf0d0f60110780e5b73408bd23d8,e81b062e2d295ad64a692dde3cf6649282049d3e,be56b641d708f31fb418f5d2f6133e3d97613f88
c7880e7bd12117dda3958a7792e31e6145ae69ef,f87a66f1e69891839a5e039a0b36084d21423761,bcb7c069fbf2f13ab209b17384b854b3d9f6e2c2
952f6ebf239740e13a243653f96c30ebf1fabaab,f206de703072bef927158670efb22490999ac01d,9efa161ea7cd72aae456ed94bc1fc423d636c2e9
4d1e201975eb8cd10b94403ad2ef7376ba0cc17b,5d20c0f74919648653001432c22229cdc6a150d0,722711d675561a9268d197c8e245f58295c6750b
621699acca8f4f7683795ff8757c247fac6bc57a,c9b407508aee0ac699f5cb6b4a73638776572eb2,36fe4cf43d2945a7123f77bb602af6c4d94dbe97
01d97bea00960c131451ec6f58ee7593a36ab0e6,16c18e845f04fca60341937bcb9117a40784053e,8591f1218c9990918424536446c8751a0edbadae
b2861bacddec80d8fb1a7f84eb30848a4668574f,7d41f5eb92f5d837bd51a6434367122d7e329f67,2ae98a7363e1bef7c369eac8846d622a703b9d26
5a5abe2419afd2f124f821f76c9229f9a7de1a9f,8802c7d489d067ec1ba67b497fa29571701263d9,9063c3c0ed0bd09880b9e6689934b5bf070c85c7
e7f6da4cb09fcfa957cad8bf160a8a22d05ddac5,8a7743b566bffc2bc27033cb208fee09a9a7223b,3121ee136700feef1f966195c5913f4ed8ba4e0e
e3c5d016e0c1f139711edbec8123d9e6b830a5e3,6f7c1b5b4e67c8ab7e59321c457ac6d2fdc55069,10b201c50699cba4a8a2a553f77bf5531dd6516c
e4600f5e3843028ea8c08772860d931a7f57dcd0,818b6e698305326f1d4e5d3b2538a1504d05a7bb,bbb564437d88a8843f1769ce773c79c6ae0ed3c3
e754937ad3a5b4dc97336d476db90141c64c71cb,2ab16a5a8f0374692494351da9bb6b3d54d995fe,50f76a2ffb54c6825f5c1e81816e4e0ae4e77363
56fe6cadc8a6ff57658a3c6cb3dae4b6c83c54c5,23fa8c80b6a1c0892be85eac8e0e73b758621855,8606f13b243891ad0a468fc4d70b6d655f491120
fc7ed302e7c804143223502510288ffe4697d03e,b641687da22a1d868cf4ed0ac05f4c1514e2c9af,272db1b872f59e6a8b5a1f0a2106a77e01dbb318
c6e054dbb94b811cb91bea2f6c75d5ba672bf74c,121e793c37ad31d488da53a7c1ae67e81414362a,e569863a1a8efcd537e440e92ef16da80cebbe22
ee4d77b119cefa866eba5786f34fda261f37bac7,ced7e40c43b3b40ce4bfe37e28b4a8c78d82c041,a0df7c27afd1247988ec3aa3755d0e47b62e03d8
efc4ab792820526df0f7c448323ed09622f5394c,a6d4374f1078ec113f57fa4bbf74f47418bb0c4d,c293d0b7299101e93228925ad239f2472c316c02
4ba064d8942f2fbba8b447951c1ba0bf163572ec,6597f02ebce8d1db39cf44bd6a1a6763532561f9,d25d094d579adceea87cbe96bf0fd64a111eded6
83f383e0041161d8193e392b2c200cfb0d120eb2,3d5a100f7969531e54198bb3721de2f00738d3a8,87a3bfe99d2504740152fd6cd662c35239429c58
4b179ce4fa92d06dc0a4bc44efa58e3665834e3d,4b9e1ab30a5921fa7daa7dc991e044f59cf48313,24972d986167814ccd7d02a4b7da3798463296e5
eeae32669e88af0ae699b0a9bf41551cd9f7759f,605740fd0ad213bc577e3439a6e65c0d478e14d3,791328ccb551ce8c79956271d535eaf6beb9c569
026781b9a36d1afbdf06c0213bf87d8d8e03dbd6,7f30a8765152d85371074c1648cf22a844d612f9,881ca2c52f58c11d44de6ef4f8feb8bee18cb258
a1bdf11d993f03f0d2c4d0f3955b5d9435ee1e38,649438efa63c3534d61cfdcb8481ba41729c85ad,82c52ed12780f83701c05e26d8144a357e3c6131
268a148d3a6e3722781532ba093e539f72453261,95dce3c5a81679ca919411aec27b6fb94199aaef,bc798695fe74403d2d3e1f5b38ebad4e46c24211
aa296af787968ba25e586b6af2f22f63a842768b,c605da6ab31e678a9f8e23da7b89b4420ade58d8,118e093c974d3b3407976d602a93192f668e815c
3e14d47b92df79b31acba350d748a465b2cd9989,bd606c6b77d18fed794725aa5f8365dede23e882,35f2fb1e8d77df3b8e894b6ab5481aae51106c92
ae93f8de918b71ad9ceda00f1e05b7554aed4cb7,73895d3cbca2ccc3a93516495837a002e6bb7f41,d6c3c74b468f443deb81d9782c781eeb00a1c63a
d8079ea239dcb86811ceff4b1674b817f9c18106,b5b7cd54eb4acf37cd3d4108df73f8a54986e96e,ab5c5a7e9a20520ae472b30df8b321571317d705
787454d5b2e8c6f8e7c909fcd1a423ed33404977,ca0323d4ca7519d49c9b8c5fcc39feb6b6bdacac,1606d4e28d1809086629c44f4a6cc190417ed9f3
b00454bb0ec8aaf70496b3f441de0547f7f71cf0,74833bda09fc43a7c1bc00bc4f1f12d36525ab81,1853d1ddd8916104f4087533ba3a861f55fac9fc
ad61db2ff592ee455738b159dc415970e76adca1,569b35dfc4add6006eeb47c7b03815eac6797ad9,6ce266212830dc63dcb641cf767711761a025ab1
087b6cadda7f43c047d97715e950caff1735340c,108ecaff225eff84e09afeeb3fb25e7b312221fd,92e960c49a97e8ed7188d3a9a2362f138c7681dc
7266981c6c55c521ac70f06dc2c287fbba16725c,eb046b07d07fec12b144ebe3fa00b586c6c169b6,7887f4670039897c66ca0f3d904714121e25b98c
0be3fe9ab4b9ccc01ed2bb88b679123bdff2f340,e695edff98f7092adc79ff2a21795941b1593b52,f30a41359d8be3766d6617dcd9363f04da73fd23
7eea850726ab34bbc2a164dedc7d185f18f05f10,e6d32f9f3630d44015faba29b6974bf37f08a920,04180788053c6390969e0d9f3a13820e6b7dde32
f83223c8b2b44437e4b0f1ed5b5eb89268219420,b88b8efbcec52425337044a8ea652d1d738cb6de,541bd66a6ce4d57737709ce9076adb389d172a8e
880eb3658ae80f73662773ca45ad51806a6b9832,4f4beb6225f8c4e907ad0068dc7e35dc1306406b,52f0ec579ed810035db0886b266fecb1934038d2
da8ccd64efd0c6763e414939bb2420c2fe66c660,16c4e0300cf3dd04411b72bb0547e8f80ad72575,b2f31c4112e69e75e29c29f4472a2730547c6004
c342a5f47373ab522ed67ba1f4e95f9a208dc83f,7d6158d5f49b19dc80558318e974d70a6c7b9d32,5583781f4720cd90c579993352fd528649498163
a387accf810bc6c32d07cfe2e9fd7a131cf8e5d0,3c4a1087f33a319b48b99ab6256c48e33f7eda25,2c72b62a0e153f1888e19c988631d0275b0f34f7
d9a67bb16d321cb6ccdae1d1f3132afa8c0d3bbc,ac0c187b56accbcc5f8a72ed9bcabf1fe340f100,946fc370e93ae5e7245ddad0171d006248bc9366
f5dbd38b7eea68cdcc714330eba4e7fb28c95f5b,88a42c3ee0c2c0c53acdb99e2972ab24ecc9faac,507e9eb20aa8129472e348398258bded6c5eb4ba
f4f6a16796a4b3fbbecfcbe9f77d62f6ecc9e54a,1c1dbaf77645efb1c0e6599d0cc3b6d354646f5f,409de5ac96692fea0314aefe5a9c880ab8983599
7747e1f6c8b51cb9c7d04e3a581663d25e1e99bf,e1d56a99445063bfeb640a3c6e0c41688076b65e,c453bac7adfca20397628a8e981c9e92281bfa04
cf79ca16b49445df2332539777dd879f6aad5b36,50986967f52041db50ec176d31342fcb3df7b305,5845bb90951932e8a6863acc0bdda42d3342e434
0b3238bcd37b605701e958099ddf6cd7e4772cbd,69ce966691078a4b344d6691798916b52476ec46,dc4689ba1bf6dbdd5d6cbdb2e5bccaa849b3346e
b361b41a86c1385540e4f85d43263ec4d0716ce9,1e89579766d31975cd605c3f551e58ae6f512c23,12d7d271d6648061fd0c5ced3769578047b0f024
e076c6fc596f808a29bb9d2faf1a0d022d603923,1b2d29ea1a6c28a8828c2dd4acf81054f177db42,7a228bccfc85f23b97ef2d38620463364e24993c
5771245d74a7115ec8a8744c6c91506d40904285,b440f57739efb5d68f18adaf6d71bf0aa126a8b7,4208fc79c702c8c571a8824a7d606774cadf98b8
e6a68b28b6de64dbbf0cf9eb8f859891308f9fb3,880d0333b0b5804ed0e58b71c29447402ae3bad4,408e388af3e48f51925fa2502a3b21a23478418e
9ee13f2937e57b63c014a3764d96606e8218eb1e,167c7bc5656cb7012290bb4d2e683e9f554dab27,2eae62a6e89673af2a083e3f7500c91393ee3f1b
a4121d2201bd3bee71d7425f75f8ae29dc3cf92e,ef796906e9faba606b8a6280c1dc97a88846c71d,cd93050d7e071642ccfce2410d5b8a12161937d4
c74441323ac9712f0a1f08349debcffe580734d1,bbeb98aeefa8d22dad0bcd1ee62c09b91ff205a4,27be091c443b47d9d8a57f21c508fbd678d887f4
f48282d7b34e2d9d276c9e6c2e5ad81dd7a88509,d03963afe9ecd26a7b1cd149ad0ce9a07490aab9,c4a77a832ffda91ba094b260656a19a826df9806
ec206cf4905cdee0764333d3c5ba7fa3adacf095,eaf9a9f1b986c1d2ccbb84972f1ffb3303bfff84,baa81d5275a9cf1137339738fdfe8becf2af779a
5eb5fdabadb5d025613443b09f4b5cafab1cdf9d,c49ac16a195a306d0a60c289658150c4ac24561b,dd1565c667e5bbb60975ea887c7380297286a151
93d38629aa446397d36112cfe853cf00d013e854,35345fe14584eb877b5953c3bc1dc358f6fd4038,952f4bae17dc5a12142ddb7ba7009aee1d7bc604
d83004dee1cc329b640e68e075240354eaef97ad,5fe4ab49bc3c0d58d48ca793677a2ce72c8f85f4,3c08ad4af5be43950c86eeefca448cea9f1c0dae
9a983632f93361100fdb50361f86337760cfacfe,ff4744e0ed1c64879a672e58849875b6189f895a,3724e00169d4780e538a585eb91712512819c35e
995309c20901f2c0e92ebb1ac967c73b00902445,cd9ed54d35fc4573b4adafde00979b15473749e5,81471859075f0835a88bf09bc3d49df5b6fe6c7e
0104edce45a3671d32109db527a2064514336485,f86a9bd5c026c7a10a165a8225bcf83e17c47b25,40cbda6e7e30dc29ddd7bbeeb9f50325c42a8cdb
9a1083c98eef9645ea5c5313496deb321c73ca1f,7f05fee3b8756e2ab97a15780d065e5460b5e72b,bb2e2f83e9087ecbd5f5f652c877e694e00660ae
543b341203f415a4886c1452015ca4c70d4556da,c11772decaa00925feb543aac383c01da0ad918b,6040943918a55a9204fcecc702d37c928a862ebf
450f250b2cfb817e39f18d4e0929fe3f14189496,3423fa9a8283e2b09b4d0d62efada80ddd755c0c,f6de2c57569fa73db7b241b33ad89795935b310f
2cb7e44a1bd86b4a43e7fa777acd8a5d21798d9a,7c9cf75418b9fc60c968820df62a77f162e4d213,37ffd4051a1a31acdd8735ddd4758a8172a9b422
f510e6f59bbb20618d6011f175076257e63d18c7,ada576e559748a528e2f663345cb20f2c517fbd5,6ab2cd3ce994399872036947cc4c0543818874c8
dfdc4a4d78d0584a1a9d2a69681a52581be4eea5,39c3d5d035a49280859339b4814a27cfc50ec97f,2ec9f59b38326d97af0189859ef76097a8a35a42
0bb6ab24a2d3926356f8e8195bb3e056e58bdb0d,4933d739388bd958c3e3ad2bc6d11f44b7bb0738,a2a85dc7af9390d1fddd43880a544492f9849cdb
d87a6c89d46d8eabad17c67f4d0f8c987f78e3a0,00d8d53c4e4804eb3722f114eda489e94b4e0495,baf9681684c1aabddc3b06c7d994e3f9a9b2acb1
3071ae231ae0bfcd22494ff07164e2f8b821e6ad,f3401c3f5393ec512d2ec14b8f70e453bd7c9b3b,b35c1182441e95912f2930684a419421c8da9e65
dc16426790e06df8a08c9af64d6bfe6df5d51c63,30c8930c30c68ccad17d87f364718b0f94ea843d,1061965ea597e8ae4c7fb6ce04f88887a62d247e
baee5b9fd4b1217b7facb2f7814eb5df55671ecc,e3b6d70f93e2f7831897296d218f32247f13adc7,b679f8bc06f52a3e00d282582703beaf0acb0b98
29f2f124961adfcbc10d99ef6eaa94bc6a2bb2b8,3fddae4a40d3ed8e2cba9e5256715b14d9a97040,4b2a924ea038f4304e05a4ecd3ed2dff703e44dd
aac37e31795e3dffabe1cb3745e99d6b75d79f8f,94a56ba3d586581f9663135818147326551867aa,49395f2b00b01e65331ba4ce11749df8291cb26f
749688b3b0938d0c59b31d58adf5e64ec276c179,b8db469c48dbce4cd9128ab2843435839145d623,6a9376cb9e3802c9e7efb8f09bcde88829e3942e
7f3ed9e85c45f126b1aea6e69481ce973e8bdf7e,c527437594d7cba7bf028ae69ba0e2058ffeff8f,55002d19056049236f7c61d984657b54b778325c
2de0bcb8d0fc180b1e1b85769ef55b58b5f50b06,79d739baa60261b18826b202799b82d71fa1f294,02b7cc0e56f8a597df74b821f5413d00a3dd7f3e
09accffd2878899c633c8a65155789a84c68b703,962b36a6e843c3d2d7d0e42cd7d9b03cf8db8b44,3121f3f8a08ff1fbca9d2d3c7416faf3d7cc1523
07677f421412915db1e5453d8b483d2fc8306e42,1d48cd7eba33c5059cf840c42073c3a0b624ead9,59c88f4c7927cfbe4b9e4515bc6a2ddf08dfabaf
6b47a03cc97643fdbdf30dad9fb20e7e21ea6d91,033a2ae2e77427bfeb6d20b76c2e762490b446c3,4084da63abcbfcab5ffe1fa83bb2b50f445ad6ef
cd72a8910e3d0430bcca3d02b783b366cd0a78e0,93365f7e38e8c2fb63dda8e50a570b654560191a,9681378d37b4c5653f586785dce888ea03f74ab2
e3f4bad1646c9b16fdd672707c0145fdaa356d38,03d7518b9b3f5d3a9aaf607de9d1f52e149df087,20ac72e7aacc29a8f71f84fc651d16d8ad1d5759
c90503812ab85049c2dd6adfca0b7d81b3932671,774e0f912213dcba17d6f0e0a876d0b243f47df4,859fa9fe8f4d7424b801f310751f52d3f9de2525
b1e1a107d351ef6c293b5f67b9689ba8f07f2bcd,9dc75c300538a724d4dcf61b5a9b763dbcedcb7e,60e77de115c2ad9fd823ba9684f1b991f8ac3b39
7163a893e9ea8e98731da28347a61854965deb74,98a25439c3d14c1ab4670bd52433cd525a2e1449,3edd92dab1e1aa6968985903761bceaa879b14e5
dbf6527508b6de8799239fa025fe74221b91d829,f7bfa0e426c6dd8d5ea9adb7fd042d5e33634b16,170c05592b56e987c2d72c660f066c349ccc85e8
82ac4299540a0cec37c545787ebf0dc4c1fe303b,919b5560492ef74d7b8a9c016ec12a64d88150db,3b7a34716922d3b7b61d2e9ac6b4258ee3be19fd
fbcd90f2860903ed0bd7fcac0fe51f7202156a14,be4e5f240c9cef72e0867de9cf5aada8a564d459,a1863d8dc85ff64a23dfaa103e862e85151a92eb
21156bc5d3ca6d7e5c1411fc8df882463bcb253c,6ef3aef5f236568f9c07409470f84559ae9d79da,e429be38e8494ae7f18c1a2fbb0f9cc90f990044
3c57eb42f91348c5f066f70d7f7700b843dfbeda,db137d0528f1228abdf90068aac290359cb4009c,020ca55e257c3b3f354211dbeb9f992730578d99
848c3a252e4be4e0e2b09afdec12356b355ab475,2eaa6c5ced4e50171d029b017704c03ba6d3795d,e13625d56244d06fdf64691a927ea0d170a3412b
bb5b9acbb27ffa22fe441f933adeda29c7a40883,88ffc9e22822e13511a7de1eff2d6723505f51fa,19fe377455f4ef904b4f71034fc714f51bab1b1c
e4a0b1adb4d632b9059ecf71f06770e73aa4ae7b,a8b4c0772c18bc98b934815aedb0256fad88f1d3,c2383fc2071d57319d5add9476eeb6aa063b2a74
08b7881083768838ad2aded0b00786566a33546a,107299648fbe4a9cc40999d73b07a2222f630312,637c34571e50d78cc1c9368f0ee44128f06a2bc3
74625648cfd30f1244ca56410a0d5a5a87982c83,038c163717927f9729f0fdac74fcc3838b73bd30,70311bffc66230c609c2ec3a93bc3c6a74df350f
5f9bcc2405e1e59f5aaecde252da955b8721e757,4c330f2799c68105aeacaeb442365ad6f8da8da6,1fecb46c52c98e1d55ec875987770738237ee1ae
377bc0d31106a248771a860413e3a90a87cf0ec6,a9316b1953b31f452d32f6d6fb4a52ea81a05104,01246e4d30d7933b6e08b1ce2bcad9121352304c
5f42443db3ff3a04b64361597c650fee9849cba6,f506df022e10bbba50e997c925c93b9e750bb39a,49100cc42ba9d0af33afb711e5d4478a204927e2
81ae7063f31c6857f2c5374dc959f48ee0198ae6,af3ebf1464224ee159be03d74ab2c73c7f092eef,38ca4f915768e2b984e1809dc3ff9d9dfd6be1e7
dd4f7e9148541883a9478f2644c4e014dd4fc015,9bb6a32c62406fa3d4a8a5975ac072dd0f55fce8,654d75b777565fa55c9694c0c67e16e44e8e00ea
9ee2eee293a157ca05a90344feb82518ed7d7ebe,1ffef6ed41fb47c1e7dac5a0fc2120c3ce96e303,b81f92536dedc52c110fc5117ab11f87685440bf
21ffa221e697c791912949b130191838def3e81d,f65e4f23853f38d6e39221e9d70abb9867c07052,4867d48e99731b11af3d405c621d1f2e945ba95e
03fc5d23235c1b6b7184b9278aae7ebc4546c2c1,04a077707c334705b9ca639642a2db03b6b154a8,42f447257dee02eae4fa1aa194f0bfd387004858
231007ebda4f6f8abce6655ebb04ba35632bfccb,71b10a21e1f6598f94e7f3fb7878acce51381034,8be124100d5e2eeb6e7fddbfbb2d07f1b24da05c
9648463eb544afcb9f6d65c17682ee05a4cc6c1f,4dc4d2b2ba3d7bc1262e5cb32d2880893c570eef,54dba5738c9fc27c06516b8c74e228ce29fecea5
e9c6f1c15261103d0d036f72d94d9eb9d1448f42,7595dd3624f048163ca3b575333d0e0b86d14c92,185a346744c55b0f3e73cfd962e52bcc1c8f68ee
785e259e627992409f323d8851cc8664ce50b1e5,3cd7c675b154f519c25c704622f65599d1369534,2efb72bedeaa96b6e9b5937619f380e4bea74843
08e494ffd190d815266b31fbdb893e48a5aab5ac,dc5041d778811fc6c940aeb283952caa16ff89b7,79f6ee538dc8d81f876c7f32baaf594f5fc9d1cb
7bbd33bcd6fd57b01619449c2f5c9fdf217c2e02,e0a5d07e37c347bdc04a25f48444e9c4ba4272f1,3db060e47afd90db26f7b5cd8ae1584438169a23
fadf43a33b4bf3c5cd4d73f086d8de0c9c02aa6c,6aa49038a5b9a2316e609b3bccee9bc6acca4e2b,47c21fd1bc4700da1e233cc1c8ede88773105057
4aeb1ee2236e7f8f73c09ee1e2aeb0a7f658269d,40072fb762a25409f793fab0ab453a01c984177c,feb79e0068b27c9c22358fcf6ce84282e9390b3b
981ec64666491aacab8ec00d0f631ac371f31812,c4fc5fc916c4eca14831a70d75dda09df96778e8,5605566e427158a4300941f4279b41000985fcdd
14ab1cfb716c0b7635638283fb8633d4080db964,8ae28b48463fab579e6194b76c238c5d7779e0ba,71ba76532b7bfd39f9f861cbb8f87ff949796ee8
5eda6e027d305b1708b7f938745ee454a1e58342,11b0b9dc57556caca09bf46bba722979ded5fcc5,ca6fe96360edd68e1a9822a614c507fbf9681aee
5c564ea940001ecad02db8b2dd9320ffa42a93b4,1d1e070ad2fbf3c5b2cfbd41b307d59fc67e40c1,f3e03f048376a63ec50862c54579104b7685480e
a2f2af87d2c5ce1e2d68b97abfaf58bdacfd9a3d,b514e979bdf7fd53556ba1d58dd5915bb1308f53,e3b93b07c6a6968cbc0b7c8b1d22353faff60614
2e441609bebd024a9cb9d0eb2c3d6885f4f0b092,664f8fc2ba8bf2e23b00efae5819d7079409287a,a774075f2f36bffd342e4ef4d96d297a8524ef5e
05d6e20accbf8ea92b1d17949a5d41d583887c6d,acb6c7f36b15dd81480ef3f53a7a1a7675679790,d901f72002f040261d377c0912ff84b5ed492af4
bcaae577989d727919bfe5e1f2b2cf9aed394bb6,3e06242fd8302a9098a30cfe457357ee3a1927c0,272417e60290f8ab6fc8d475e20b9a4635114c7e
b32573d1ebb4c7a33708efe3a6e275bf2fdbd4a1,2044868c10fa1a330c98b21af704abf5a6631816,d06dd2b0ea1487fd0cc91c5d489c843a2152a375
bac4ca19e7298e0395e7d3d7e7fc370fce1fe769,e79f5ef577edf1aa8899b32130931a41bc0df969,c3339e9a51ccf3f4e4a3e00f473d985f5ed2d902
2e1c7cbc10083a3e098b553f8adc1326fc349df0,031539dd691dc1efcabd08c952076aaafd417ebb,698d432ccea80b6740fc9b7980c19d973b03ab0a
de03a1b894799e2f9133cbbad05c3f6f46af1423,2055ef4e886888a361bc6fbdd90980a174d29d84,62495c964abcfcc8f12038bd90db3f66a60c15c0
1546c4a7947afcb45783b1251b01fd31016ef84d,2e6a31df8bc07129c1834d3698aef1dc8221dd11,57e74e0c8bc9e1785984b0473708def4707e21ed
529b64790bb5637ccedb0d10926f9827c905c007,f0703c4dacac7060ffd9cf3f556e78375534b290,d89851d094088a6b69224a516b7398ae39ec11ef
dc30431d89aead90e9d743c90af2446098da3e26,277a3be9b06258b5b439b4ad363d98786985e8d1,97f159e4b2c861df559966142a50682130e8a1f2
c9b7a3b3b5dddec9aa02cfdcb8737afddf6248c5,560d597c85da4521779cb2dde6d5ea344aaab412,122251f71d6bc2395be342a4f5b1df4353852991
b45aee980f15f4df903989529bd8c178ca1647ed,83b5047931866e5ea58811596b64a633dbed9480,5b27fa93753a42dccf78082c99c580952f87d728
8fa3c57c1bb005d27664e66544a4005758f43dfe,f4a413fabd3d86e26d86748d9f1a925c22992bda,3bee7636ddd6c3db41819f59f414ec608ff4bdf7
dd6efefdbfafcadd91ab132bffa199023387aa15,ff3b4adc2773934710b014df680d96897948118d,506634f261efed31de36b3766393d1386fe2bdd4
3f0853692c9397088fee4217a5d8466e3e24f6b4,178687531909624efa0328c8a2cd7ec87f5499e6,d575aa5240840b008186da794007e06097cd3850
2d5c1d43cff48050beccc906049cfb7ebac83c6c,4d5479741d6a7165b1592abe890330207dc4795a,064adbf3f8aa7e1f7f1f85b31d2eeb8988a481ac
18c6e13f45298162520fe8d20f3397b1037c35dc,4cc5cf4d0edcd8b18562af0d41b89b027b1bee74,4cb97dcdb34f5912ff29019b5c9b5ffc20b90db6
f3e667da42bc0994dc51aa92de55a70ca819ef09,24315a7f28237e3dacaa2e5352220fc15f260764,5e0dcfb49b7a970ce61b26ec468b662904218236
7b492b9975e71272eb4b0d363a4801dc5b21f368,4443e83b75b36946e8a35fd0dfebbb93c396c1fb,93ae6261ccaef7c84096785c28d5f2569c1ec60e
3ce07ef6fa90d13b7e6c965bfc489226575b548d,a81715d6ea0651bad3436d09effcd4471e8f2abb,d9317e5df522c6ff359c8650e7a2d542d306dd96
7cd044eae742f33e905dc01ced9a8cb1e31f0adb,ae465fa8dc85ea69180527c3fc1e03b25ecab082,e53620ebdb89140ee851e89d2f3fbdf9ca49a162
6f7481fd24bce9fb1d2481b5f7be3cbe11e0ce5e,1351746a46807cecd8064e873c41c615f9af6ec9,8aa9ac99a6a2796e77a5157aa45b327699eecd83
a5caf91f74d7eb8e4863d155887ae09f60e13c34,881eb0fab5bea2ca1cc283d2aa76d75a1904458e,5298e25c8420f43587d174c6d549f688f514a04a
f8dbb09a46c4b48d6ed0db3656aa6474a1ef2ada,b431d6203c682d1bc4e473192c0405ad95e8e259,ac4927aef713f02e9a802dd207ca0dd76e1f04a9
c3b2e35a8f99b67d97cb59ea5e28ef8f99321207,27a2a042799566a069ae6d4772ff77405491e794,2c527cfc01eb10f254fab67623eda3d8180b8fd4
d44cae14f597ddd55b803ca1f8591e816a655de8,9c9497375ee5d81ae7c3c9d463b897b681fc08bc,4f82fade82a92bb32768602a1098388bebb3b2dc
ac6dc582bed106bcdc44b5ebc16adfd17a6c67ba,54157a17c670544aa05a377a22a5c49f14aa0188,d56da2d93085d4d3c18a661709bf7216c59eaa08
abb5792aed050247263fe6765e7a5fee25371ffd,8c8b336914750c2808a2624f5be633ad93ec66e4,299c90b91dc4624b9ebb9f0c2b10fc3933863411
9ac0a54ad2d05ef79cb6cd3556d5b9a71a829a31,b6ccf369b97093839cdefcda2be4e46a65b27bc4,6e4318bdf51d78179abbb579ac17c7c9a40a74bc
99a16f3965c7b4bbe390fc60a40ab122195830dc,7ffbbdd50becaf2ea8eeb59f95b77564b479ca28,f80f1112d4faa565ac5a1266875bb9f22056f980
d7581aa1eefbbe22851baf8e9f8db92e4f99d085,28c4c58b345a72e85026f83d1e49b86a9ab18183,46508f6af16b7f676ca05bc9f84f904d3c2aac23
e4bd58d66abe436e1d660baeafcdea25c42c2c54,b4eabbe5ceef3ec4542f3654d7a8ee601200dc5a,cde58d66fc1df01c4f61bee5dab1ca082778a698
d7a486f225448fbaec7e31208a5ce66de71d8a62,3a5db26abf2ab5fbae9577928a42d78d122e0ae7,462c201ce6a4229e562a351da130491d53eddfc9
c98e160c197b9cc53c41ab131ee8bf5a80164e5b,546de9f7e74d80800d8c0641ab5865965c9bf87a,0bf0f26dd57a32756012e677279f53c7ce81a850
2ba04dbd137012def9d723e90cec51dae6788bee,e395166cb75a8fadd72ac24fa87c73edac0970a5,0b5998ee8bf31b127aa942905f6b8aee4e6edd03
12f18177ae17ec738eeb11d2bbd9fbeab7cf925b,7bf502ad40afd7b63b163f9d898442daac4cad08,e073d5f7f79db76d758b96927c9287868a14227d
26855a29c8d0a726653f455704fd2917e89876e2,4fd5237c0e22ce13bed0b7b6363670c79a8eb24f,75b5e8e63d0d3a358b8630ab1166b7f55a766117
244d3df869c4dcc379f4c56cc34de14b1c4ae340,ddc2259e5eb53d48375865a4ff2a442472a2c042,ed8a05d6979982855e04383141350e0e2068d711
43721f21c4f5da7f8b16745cc9ffbc49df070838,bc0d2293a1a89f2a352fafdb0924a30ede104322,8a48d1bbbcc9a5084d93333460fcddcb7871f69e
2575cbc439e7e7a047ef0eec5c5843988b3cdd0d,e7600ee24581a90fdf0c4f0a170428068a3a0320,629c87efc8c8ca951d624c5ae392348a2a93e6a1
53bf5dc6efa13c3b73e6645f4da47544898f1b0c,060a7185ab508b377b3d989768531e47e5187a71,eae74aaee07f8dc1ce1e2317bcfad967701ab218
63e8633262df27bbf20f1c164f2a5a8f5a9e9360,23ac6c3090c5225812370a66b90f0a13760b301a,3ed5a4a022db3e68b6c84c0f749dfd9971c70f79
cc195c649ac6cf3f453c138f6fdc6794cfd6e699,ef688a3785b8aea35961f537a9bdb2c38649ee29,a71cc7158570729c256fc7573b7d556ceada1843
c96ef4902bf78e208033b9226f2475bc97caef82,e5b47310c804353f6756d2643058c88c176da5dc,fe62b3ace8c237d8bd1800beb5969e5cb540723f
b7b665d2732461799b74505fb2a27e496b58c4bd,4af99236b0684fa965099c1409815a04b7c473e0,76648d40225e8f267ef7db6f88720696cf532dc1
02115833885e048304d5f3de15b2d04f434e1924,d1b7a49700eea1eafaa8ec37c1d8470b7f68ec39,2d9ef694dd57e49ccc2644e2c9d2ef9a328b59d2
2b0d98bf2ceb00ebe2b479f91a33bed106513791,3a1f180a56338505e6387a8cfd3dd56b2655134a,7506277dc1618bc9c1f1f6f5cb8a4cb56185f356
186f93a8c9dbe75bfe1d852f4aa262e799002657,6d49f7db7b65c5c561c6f99bd78d4adeada01b49,57f6ed804ea377783098a2ba25646fcc81c370db
ac3425a14d1cf2fd82482cf0d1118b6d4ce39bef,2d6294eb26af80ef9e82db6ef7b7b1c7817129e6,a3b730b0f1d3c10c65ca892c7baafc6acfda571b
aa4136ce5227d25398b339001d1945df089a37b2,58f9dc27ea17a2018e1835369bace38b2aa0bd6a,31654093377e7c7b7b69665ec0b19b212589eddb
7072813c86d57ea487db2c6945a47fb6b5c93a25,84e230f6e5d2d61acdedd57ee9f510894ba0481a,d45556666e82a1820828672e0d5754612e4042a6
2e9a84654368830ccbca0c687e248352e0e3fb70,1ee9a39fe2dbd16979b0ae54c6f5ae79f56af8b5,421d67556aae3632415b8d1d585a63be325ae0bb
e42209457e17148913fc706aa32b153ba7a9735e,56f8976c3dd212764b864d30acee9e35789db6d8,87a37e70ee894ed7575db525d4db496f83556d1a
a320464afed535d22686bf5831452fdb8b5b51d2,d51a0c6b3ca6064b71360a12e580bdb8afb22e49,689fae7dd902b1ab37b9c5a723ded2e5c75db90c
6edfaed0ac70bffcb02e7a9e7ca20fce0f6f4100,055740e2b33101b7dc647c7dbbc4fc7967d8033a,f011e80cb2488b822e57b885c5d72f7d126219e5
d9903e6e16852a5f4a21e4cd73fe1db2f71c65c1,cc81e183226bb1d36dd19b7755c51e2633be8f09,89f0e052dfea9624d184e717b519551c335e39b9
59d0af7f654e14101c3db04fd7f1f9d5baf29fca,b07818e51b638d29f4fb469aec8bd0a81c9d1b06,4f1329fb14a40a084391d3f9cdf10c1cf9941ddf
e406cbd9c8143219c368fe15a1b80b1338f16c5f,ae121a2d5ef9070d4e793f3edc2abd6f34485f7c,a736a4bba7c7151ad58edb776c51eca69e787cdd
ae927b06896c08a1df957e44e18e4a1da2bfc01b,afd63ef0ce5b1fd14d6c9e1e526223fd194dcabc,5305cd2734ac2e54157d3b6c828e9c1584fb7470
d3b8aa728e8f4eced69f95a500d8af091b9b43f2,7a29d8f54d45907913381878f0ee1d06bb1000bb,1e0f6f9f6465cf23899c470dd6d27aac003cdf55
068b8f9e9dece23fb647009a3318d4a635403d6c,8ee31342fe1b55eaf73d330aa8cf3dd153c7b4e1,3d2db25f167b31fe7a8dece2533dd65d237e920b
2584a271b54a5c783139c9439384abb2ea1616b8,2350b34d0f300558be2b9b5ce1b73114c5a7ac27,d1f06d45b9d7a1e2221ffbb72871d98b1e599920
4a1a81663a011018b6e784fae15e59c72cda17bd,81464433366a9557971399113c5a772f6639f650,f6ce76b638a08a19d58f35a0aeaeab0a6462e24a
4fcb9a4dafc50e5e340638eff6979a9534f4321f,489a2f042bee87240f2604e753ad74c30acdebe4,9000f8742dea9a147febb0095f938d8f3c28a96c
e9b12b41db860d1146273993b9f19a1c76aaf6d3,852aee489c39868fad7af9061eef8c2bdfe72c07,11200cfaf63413b745a7186718c42e90d9fc98df
1dbde8a79d846dad16169366a06a12dad949917c,ea102d792f2d757d78cb32c884fada058050b317,5e05630713d4bd9fb63ed493dcea80aa83027135
60c94c50ffb119b1c7286625b72adfac41efd45d,ae06528db4c33881ffab70da4ac8dfa8b4e05607,462d0eb07c1be2cad06675bad91e4acfece448e2
b7e8dd62682379c4c24b9d4731fca095aee40cd3,ca8d867d570f0a292fb8cb92e397926e34c9fac7,ccb1985953b0dc1af1ce31a48a12245e2f99fcf4
af482fde235da37ceec7c58bba42fdfa8c3d4be6,c9888f97747a56b67508a843dc4e9f4214dec56b,71a46465c8105ac3fa5f492d17ae73ac486b7060
30f514eb6bf1ef0acf5fd6f7fa0246671f5089fe,79ed0db6247eed326ea5193a073de03bc826f0c6,906571fa253d0571d779475a69ec3709d9e42f76
a512273976991cad7ad139a3c3ae49097704eb75,728fb7c58c0851de7ce64e7208d16081cb96ef45,a75e453c3081f6ba4318bca58806a1be48c924d7
bf57750436afbfbfb6d0ce08245b5bea0242af21,88c7954d9f85db24e61d9d6dad069bed663b00c4,eb6f29d084b741b0197b3c21672310530ff2f043
572a340a26455397917145eac6b147c0a7bdecc9,1e1b273c67e1e508ffd3065bf6d0f5f0d5213568,42c9eb4096ebaa8bd165e8cbdf55277939f418b8
6ac14de9864d08c047b77aadde576778d3803349,0790b98277f8d8b8fa55ddbecc0044cb3fe04c74,64e7dcbc8129b40cc0e1b18122248e7eac4ffe8f
6f25cccda9bb490f5edca535e104af1d85fb5cb0,8f8ce13b4173a670fb36a338dd479ba4f46b971d,ad93958e5bcf3dc799f9b324e859e93fa958d69f
852cd355e4c735a7f9f24a9513cb6448b1c325e3,bc714c0fd7d34e1d59b7a052c7e090702acbd9fc,30a20cc209e9d3f8ed93afd3880f42989fe6ec26
dfa22fb53ad7bfcdf8d2f4d51c11544be69fde19,476780df7710331877ee1c77af234dc75d13e8ba,31b978f3b72332560eade5abd34fc77177584470
9a344568df3991f403b67f41ad3a8483afa0fa82,b61a0fab97a47f5281778c6a8322f0eeb2747418,bccc0b195e3727c26db7b18e340896cea6ba82d9
b3e8d88f681879522c29a4b80e36a982b1d050e1,5c890b59e3d68fa8aaa90f826e3cc2fd105d5c94,97495e93b85abce67c50d097bc09e254bd3ab2d5
4e8b1cb97ace5bdfce5bc6db5d7b340456d0494d,91946b78d52af2f88709756ddd130f3b9a2ae851,9cc30829faae560f603a19065591176650a0babe
8baa4f41dbe67945a372587a7695d8e7221f2fd1,b8bf295cd18560aade6743aec14d308b1f09b096,cbc938900f236d05850fd70754c14dbe0d7b2f9e
9c5bfbeb780c296556b6317bdc517079c42e390a,3cf7890352fe2febc337c886d51ceb8129f3a92b,ddf0774575787508543d1474127c6f5ed1c91e31
a2939e4187f2bb18e00270d44d2977dfc86650b9,e1b2feac33844bdfa75cc45118b9f83df8bf2767,4c26e4f9894b85fe08694181a8b401a769863495
3447512e2941ed5504b3308e407a30011262bc90,37c3e86c7fb4ae0c78f63a70310b06b7ce0e39c3,e7f9626592d82d098c554806cdc5466535cb4d8d
7c5847bc70613f8a06bb4249e020bd259fef8c13,37ed03667fab8f0a6c2c4fd97b8bb879b6d787cf,2dcb15f88f6a7dbda19922411b12800bb7d27464
49b62b272cb6be08ae7601e6c684dbc33d14c017,f04e92db39a518802ea76ec4cc7427ece7e272be,d69f0f7110a3673bc8e111ef615c9eba9231440a
c9dc36dbc1235d462bf4b52096dd3fd07454e4d9,a72193b6fe115a0105812aaa6648a5845902819e,4ad0c88a738720702e9b5b2d61b490e9c0803acc
f75f688f8bc22d045d58a79513670b5232ef9c73,04844d548ba055efb94a61d66dcd7ae32a54f634,09b0ca01ccf02d311c1a2223ac8c1c80ea16e78d
b2dfcd6ee8d73c8ff58d439011ce8299be591c6c,b3800d38cbe140917d15416daf7c6489d97df25b,74e47ccff64df0487141c09e82b8d4020935e0f0
587af1c78eaac3dd94bea5850f1a6397728f9057,21cc89f1e337f55ddb48cae69c819de70f526e85,81d98f5ae246a64c8ca7ee47aeba1552f13c97d3
26a2ae92adc88bef97bfb9c05adf8ae53f470bbf,b367d7c905b476245094bb06bac226b4024e0bbf,f4b9d51aff032689bd9525366201b188b235f0b9
ab65c9889b567e6083596f60fedf5c4246d9e308,bd2b0c8dca2897736d1c265bc53d2f5ed5e5ba3a,91284ba543ef8cb265d1a80cb005f7afa63e0498
472f9be9a6ad0046b97b8d1b1ec9a59c5cf4f926,13f58fe3432a0605a046d37b1b1a32d4dcd79737,0ae014a98f254bbbdc2387d45ea061c553cd74e3
8527cb17f829b85a1ea2ec4a0c09bfdf35140f23,fb821b8c9b45626ac54b26b7a87a5bf176bc6b73,cad21584e5f2383d2f66318d9ef0bd3dfc783ac9
75ac01270269e877024ae590e13357cfa332804a,1bb452d1c745e381a342d37d988b474f628a4aa3,f2d739b93af80dcba155ca836196e626369fb0be
06601d5e6015fcde5118be97457897d7941aabc0,318e31487a1e0dbbe49120373fb643815e3d668f,ce702df5264de939853ee92ac13f605be4fb5c71
010127a622d3b3608c16cfeaed46a38d70f5826c,3f7cd9b8076ef8bb0f9fb3a1892d2beb944ccbdb,ba6696d9eda7872b99b9a3b3060545aa7e31051c
7589bb39b86dcb8ff1bd7a3bb4d836659062bf60,074cb3bcf4dd05140984e8f0ff1b42a2caed1ca3,54bb95da81571e745d02770318ceba5fecf4e0d2
d1432b73029b43b6f1a4746782e76c04ea75ac4a,c2176d27eaaeb68e6dc8c2a6a06cb76df6d91876,1966ce7c1c94595bf4c7e9c8db6c3c34098a8f17
8b40033964ca7c4008646fdf4471209fc9e814a5,492717a25c7f4dd0a1f4f7dc98fb2697a38e6b2f,9da276b352d8d942d6967b8c4867d149b9ac944d
6a28ac53da5123900e10c8c157f8daad01479f53,f9b98092c4c709e605d4d5100cc1a14fff785253,f77b9fa4efffc8983eb392f7ced90b47451cd30b
85494cdb1d831c5b0a3053bc4f9268d10ade1295,f1bc31b057fa8e0947554b76fb9b890193e1ffe9,3822465e2f8e8114f0aa46bf8acbfb3214803557
4769ed948ac11a609bda4c3d489f3b15c1adbace,d8a2f7f7148486f86250a0773503381e6b54f343,2463faf5c0b3a23d04d188e3f925960d1534d46b
0566580f1525d3b1de3531a8ab58743740d60325,11f076f0e7b29bc71e6ff5866a954315098d9142,9fe350bd91c0293c794a5c46e3211d29fb0e2727
2c9870f85ab1d9f90f06563d94bf15e32f7b7b55,ef6612170cbdd9794c3dee1bc5b10c22af57b7ff,92479574779ec3820fce0a6067a7a2bb17493d45
e107aa5b5e0ea1dffa18359075d7f0d50836edf8,1bba83cebbc3a6584a2727cc0d4320bd8ea774af,5ea60b97b1551ff26cf0876caff335c988c3fbce
b804fc5164ecb8c5640da684456c248905dca9b5,c21a0f065463d346c9f8e1e982d280da644d6425,0e5da37533baf174b7451e64a1f6ef7b3e982761
bc2d1cf51c4222b7cb18c93e990436df877a56b1,29b14fec57fafcb37cd622cc103451aaacaf52b5,6bdf9eb0960b13173d7b0c01da08288a17181aa2
4e1f854d49059d8eabd0e39d526a58dcdaec81b4,ecc16278f087d7266fa3eed85ae6ad24d727f7e6,179fc5848b01d230a25349d614bfc5487f740284
4736cc2360d401731a9fa615b3020a60e2f35c77,dba69917a9664913f85bf54386c1a59aa32c09cb,1ab46c909af6280b56ef3888a4b3e39754b756c7
05f0ceeb26fd3a32c375af1f536525859ef53d5d,b1b5c1367119cf30545271e226f014c4ba254c52,4103b3d180a332f4e7905aa72b48fb23103e3ae4
64141c8bddfbb818fe0083220649ff794a9a4639,2b7df4237b210644c13fdd56932dfdee62474cab,bcf320a76ea108831342ce607126ce8c57bebf9d
1dbcba47967b4e3b23476c9289018707f12a1325,48cb0eb5b1b8dce44306bcce541a6921c09558fe,325d29307f1ad7b476de9f1578bd73f471abd427
a15dfba97115ccde1cda3ad516a2bb64cbee3fa4,bf2a3566fa7e4c9ff400c9ded3cd83a61e4b6e3a,a907eb49c9c2961818bf610105c87c45cdec67cc
a35577593b7de8cf5e66919f9e40a9a0914ff377,083e85854444fda9a392a67536d25701081f481e,f7d6201946c569274544c37adbd84d3f5913bbb2
5a7d5367d23965468a4d9d22091f9748a2112556,1f2203c304dce7d446d067a138a59f50dd0e3d97,59c77a48b5d4533ab71b5baddfa203186f39b0c2
0fb4fca957e02129140e8303f85a75f8f2b87572,9db42f5e67f25cab39013bd51b0967df70fa108f,cc552c081501670addab1f8c70fdad49a42b0571
821f3e326fb00a4c75ff000852a5152b7dab918d,9918bb5619c218ea37a234ab93881a8c60e24b7f,76687a04e526f0e93ecd3acb819225080254f54d
2e6c3b060d2bc9d5eb14741b0f1f486a323cbff3,f41025f5dd7d1b7fb4367f0aceac021a7a1f8478,4c6abb38b1d686ebd728c31f2e02f22a071eb9a0
f4828950a2393d2466c5832f7742c4a8501daa9a,b2bc020fd7044c950fc707a16206aec2ec40033c,22de07446dc3b14f4dab989709912a20e7cc7110
a7fe49f38fd3378f24f326b91c90b460d98a4150,6c11f048d17747a59bb947d9cdbe73b7523fc034,f4e955d04fb051456624d46e27a7f4648ab8840e
755d22123009817a35066fc465a6db94d6f7b8f1,4c434ceb08fcfb00a2429559de39de58db0729c4,78c8ca57adc378a75621a9ea921917ab57eae898
5086cf7e7236e2abd8d613e4871916f6c60cd28a,594d4cc4f9cfd6c535c20be43f8ccd570a4d23b2,c47fc710baec550d5ac0997b0b986f55b99a4124
edaee6f392b10c593a274fd61e998e24df7967bc,e35403c3b8364f7efdc40ce0af00eefec0226e24,57a1b5a39b796d52f667690774f4fc166c0a1462
948766a37ad62ce222986c1ea3f474c39f4d41b7,f88622a799cceca94f910ea70d606d10e91c53f5,8665e038863650a6fd90ac1160d7ca1fa5011bbe
e75d97815d19b2540a5311eb0ac8f734765abfee,f0eb7e8807839c0b61ebc8294218ad63af1389b2,e67cccee374935361230e26d45ce42a01a5bfb8d
1230fc811add14ca7879a4cf737d03b2e26f654a,603dd63b396827f7a93327f60f34697803575cbe,4378319f874b31534ca92f3828aadecb463f7bb2
e1297e085928a274220a6d5d6da7d8e4f7a2dee2,a0a57868c04981150584e046e7d075a0f120af72,aed429201730ac92169075dbe23b8b899361052a
81b7b80749ce3f65fe899655de51362367b76f67,52d3a0d5e3befa86118c9dd762381cb2d20fcdea,18cf928ed6ca19f8a995602ea49dfd8ae37779b2
6e03b24701771b77c804e1ca774d61d05ac8136c,77c86cafd08020fed213b65882ea4fd3ed411650,e4a0ce2fb5ad8b60b74d98cc92763302517516c1
11b341cc97b521fce9a74405eed2718cbc226e00,ee1916e919ac94a84e35549a8448f61beaeec513,f1c4f0c879c0e9fb50a9af377d20e92f2fe314bb
2a46596eddd34d29d8d283a781c9e3f23e08c425,0ca608243c97c43738081c5b2863deb5fa5304cb,c79361c010621b76e379dfdd9a697f640aa70f85
2c15deb23741e580037f9b80de5a39851c9542b3,48d6f5e8a733c94399ce2629a20cf42f2bade46e,daf2dd869b5ace32867c08e89e901283ec3d6b42
c3b8b51cb5907c92fbd303d42e6c81e0f86afe91,7c95ff434bb2009f10c25b19e20eeee678291a5e,316e127948efac638f6aa77b282ceb1b5c454372
cba5e252d110a9f0a7c76ce851f8bf465c8d8ef9,5ea775dc58dfc9010ea008f6c1b89d79dcc41acd,2cec5996dfb5d06816c7ea91ac3dafdaa4f92cda
3f93fe07432b6e1780165eab912803b01f4302c3,91756b9e3e658799db1f34de15bfc0bd6267af3a,c5f2f79dbfa019b901b34e00e60df781c70609b4
c52794f94396901717f439233f6d3facc6c44e61,628e0cdbd16ce55994a413776e2e3752582c9b22,e7184f3126fe185c4b96edc5d8506fc08e2a97c1
36b511f0572408c1976d1a7ad89dbaa3e76039e7,1caa5dfde89e89fbf779a6867dc31784f5b50e45,d0f08ef25920b2cabe2d882f0a8291941e6cdd24
635b06d53c3566536930ab297cb2f2c2ee8ce69e,4680d41d673eadcaf6658afca2dd1040eeb47374,3fcd8915772aba0e373da0510368430086a6cf6f
77673c5e3779c75eb6daa9ab4c9c13f8053fa2dc,173233d78e39a87fc3e9908f1ca20fc1e02bdaed,5bcedcfe305d7d241df316cb99859e0c8984575e
8aca9104355b184c9d296c7a962471a196ef5630,06fc6f1e6bba325a60098343a3c950f225d0f495,4100f750569162909dbcfae5d3be786ef2d10cb5
6fadd49fb60a184f657724b34679c84bafad66e0,99851f22f543106be3cdda8bde9aa54d62ade4c0,367beaaef4ecf291a809c8da435a576143980276
b7322ae4c399b69dc11cf82aa76b96944cffde82,cf6b38c35fe0295adb97500fd3a17d693bac6dba,dd858f37aaae04757051ef92f915503935d1c779
1fccfd3ee1e48878337a4bf30351b4ae43b927c4,20f9b82543a0414c51c6cf1d57591ecb7d0bc67e,3327204ebd0185e03fefb7854bd0fe875e84d17b
12176d36839702ab84473655e663bf641f3c8d24,ac150e58c81540661ec65cc9dad7926362806b15,9056ab80257b71fb8bcdf90be2f71e2fbbf912b9
04e715445f143487075fd35afec46a0d1e4f7966,dcadafa1b87f80cf3b0feb110b5ba704ba17448a,7c609ee7c400fc257842d9b0742a8066070d2271
c68ddc5360cf4e1c7a543cfba9e469f21a434ec3,afea558fbe80b4b5688c38b85a622329df4b91eb,8971103a00e24b1f15333afa0e37c5db5415152b
14d4b0808bad1b1025b0820532ff35c0cc0dfc2d,564597a573d450d22cdf649e58e1e0cdcbaa0117,b1312ed3c6801ee5295b611cba303db80f03e91c
fb3c4ff75be75c367f4f4d505563475ef7accdb5,15398549a4db924a196c5b1405ab532a0e1f67f4,fea8050457728571c56dec8a1b651c0f45ea80ab
889c55ecaea38c2b630b143883979264d698b370,6c8acf28cd4726182ab940354e9c763441896b96,f28cbbf73baabc9c5a0f9e09f1b107e1815cc20c
0b38f99b47c80731cf5279e5606def0ea3919d38,22e9033076ff4d60135b90efcb35990a39260591,2641f65bb7cdd494eb8459daf45bc4f5b1e1e965
f0cc07fe68989577370032c06d9ab21c49158779,0efd3afb8c5e338a7d8c569fe834ed0a1acbd2f7,56d84c92833e87124fb24fe9f04a7a31a511997b
9a32c000702a4f98c27361a8516134deec36e6af,8132ccd42bdc21fd45a37e0e31742238b8085889,c87213085f5d1206bc0497aac77dea261d3be571
13e7f947ea8e1a03774318542f30a626b2795856,a8d496ade781502600a6bf75d509a202a8bd38a5,240739e71dc7f5b47073725d5981bcf757b8bed6
c17cbbe788c3aa7561bda9d1176d6e2ee511f41a,a90691435bbca123be9a9ce39c76bbccb7e70fcc,5c4f365be41ad3a92c8653ac7750cb42271d428b
bad42011abeef21e7b27f7fcda79f8e726029f79,33f6a9042d680c9e3c48672b3486e43cbaeaa692,6689e2fe213871a5fff84831b5a73f7c41028217
37f145707a63dd51e27022b10599537c3dd7c675,910a70ed0d62c54ccb98ee014950ca7d347763ab,bf1c674672a48c159fb936e3d20593b7a8c1b734
e88248d453bbaf80cc0e48440d397edb74dadca5,7dac620e2dacb09db273e9164ad35c15468f7da4,7c3ab69c5076e762120051d4717b9ada1f945b4f
3b8fcfc6ebcc03cb56958b7286f3bf5e7fa4c8d0,80e8dce98f51c58db7f82004e2eea5892e74e0b4,b00e9543a72263cd8542b4d138c850f08f78499f
e7716dc05f4099a6488d4e8b25c6e89685b67896,56eb1e03eeaac1b45be46caff7cb14104a9763db,8cdb3deebd6ca62a0fc5a543f62656202c8ca30e
8511b0fc7b82a9fc2919c9e8ba2c84f61190e225,f56587bddd2c7b983e9ead0a55dd74b4f8fef43a,9ee1821622f500efa9268ad130aeee8b08eecd3d
73bf0c82bb1cd913b8ebfd63e2bdf173bdc1c16f,ce6db34224fe9e3966bf8cc802541f3497337410,d7b8e1c3517bd3ffd3e032f237f2ce06ed29b0aa
af8f1167f062293965c8dd28f781c61c40b83afb,02c4ac974aa660b500d1a51fda7cc17095d06051,d12d82dab4759d18044acd66e11e1bde7b2dc269
bba4edb6d0b921d0a36fb08f3809f8085d589578,1ba93085f73c8635dfa403a5b98f558dd4247a4f,88ab9576b159dc778ac34423683e9ed432e90dbb
323adefec5c28f1a20c7a5478cd9315c53c78c92,1933127d41f4d6d68a6b6fa50c8e281a5e9baef6,afa3cc5439c5ed109e77c77e4c5c9270e277a05e
760484c7a4df1a0566f7bcc8db84dc13de28d37e,886f91dee3547953ffbb58c85f49f321306b805b,01f9053f3db6d430a4c34cbdd4ff0897681b2d8b
3cfec5e6a4e5c711dbea7bf001a1336faff1956b,139f2dfe84cf07d03e461e50097a426cd88a0797,2e65a5d458f7fc677442414dfee4058a39dd9b72
80750f7591998694e5849184ed63c17b6ea0bbdc,2703d9674164ad7612dbab782a58bf4ec87304f2,fd68d3bfbbf3ff8dd6f34287d18435578715883e
43487dac24ceb7191e915e631470cc92c685fa19,38dac868e0036555661c312f18a9854ef15aef1b,23bcb38138106a71c779bb862bb29adfde58d048
3075a820a1369fb7692bf6f76bcf1cb90150d2f8,513a461911bf98d9737de16f59576b8cfdb9b66a,9f72de4276195671ec102c3b33ec148dd3b5e985
41f2dd9c2621a816e68cec73e53408192bc80555,b40c20b53b8127dc611e69db4ecdf20f1a1ad728,0fe363304436afae572016840b2a9b592a44e923
a08b15831bc58a84fb2047224638b94b9055d6e2,05118c077f32d330e090d312639b535f3e909522,dc7130d0784d8b26f14cd9b82c181eb822a1e4a3
fc3d71bba38e2c91813b224501eef9966544e18c,74bed63e286bc510e45d07a44b9c2d822a168bf3,2a9eccec652354106b9e2e12abbf3f11cd899d5b
70b2f29b92fd2cb7595ca8890337d507beec77a1,c720e30fac719444d13d090092d198012dba8042,ea64142bac7926d753a7c7f877ab55e65cb97303
bd08aa6197289e84b982bbc697256cc47af00127,90cac5536fafc2aed60ef1b4187961100aabef07,5bc1cfa9bc09e0be6718082eb9d0b12510cde7f4
dfafb1f7776bc912e8fa4a582fd86af17dbc7979,388a55904ac1ea197d32c13245b089538e35be60,b87e22151a25cb17f44db5cf2bb6ea696ca6feee
51ffa2220e71725b3c691d34e34c74be15bc288b,e044aae4dc24c66880670a0a0b4a6e5331909098,550397b98218b7b6b8e1def5bea34175c483c971
eaf24269bc7a77efbdbd0eb0458dcebb77e25dd3,0e9efd07efacd7d4184d5271f6450946e746dfee,7a1ef994b4579a63d4b5cfd9228da6a5ce543d1e
e76c5d96d8446fbbd6c338bc38dea54a95b0f12f,326d92589a77ca44b33204ed543c44c2ab2524fa,b0d61558e38f7e9ceb3918dbbaab13bc49496320
4cdabbb4c6dd7fe2eb6c009a478ff6c80e41f5d9,799b90ca3fef074da4c675f1f88e5975007a2c76,3f8bbd3b00445b5cb4a5bd8a484ad0b1ac42e8e3
13fc4075f5a3ab3129f41f8812f0a7448bb2d4f6,1222456c13c21eaa8074279ce737b7e4992160fa,e9579fe2df24f5d5a2d6625824e7f52f658bef10
5c46b5116d5e75e4ef12a7ac325a331ace605b0b,0aa851b7f77dc9a0c4cbe808f6af11b4f8fbd56a,b3c1f294ba4b69f2d3bee53730c86af204e456b9
b0076a4709d9fdb67c46d94e1210af71d8528dea,2e9556f2eb28769f913c9b8edb19f58938fa9abd,48eeaf00a4f9beb8313ebbf396f402aec9ef9ca5
6dfe323e6fc26fa7cc35710bf3e369be33b4d025,65f2dd233745fdbafa615308de06b4ab1f2b2eb0,b1a76314ae95e9d2652754b6a7adc7d06bd0faad
f29ff58ab97e2dc4ab553f9d683a63fcb5d81c01,a4240a0c62243e757f56e3f13f19d7257ddf9333,e601156b8c379fce44d8c92e956b73d40806fcd6
e130557d9fce5ae426c040a72786012bfce407a1,f36fbd17b1b4fc327984460acec850a1df7a9de1,e187d49590068d74c6f3b4f09eb0de32e8ec7955
8b7dbb81b1a2a93f7f9368275d2055a28e986481,1bc0ae3d18d475d9a6b2033f7a4299bcfcb51a37,d0c7838eec3c0e3297b1c35fbbb065415bb0ad73
85ee93c2c5edae6f49450cc81fb57380966ee60c,80f1d558229e3533c3a732a19074395847d229d2,2f9ed0576ec93815ae07a0571c3e3ee799b5dd8e
484dab553bfb2287bf7cb4f4fb57356381a59bba,e412f6be55f9ba2b45c020a240ed467cce5ac28f,d5c6286852892f3cb1c9766a0837c4eed1d0f70a
902c93f3c3c213fd0600db49371e64e1f214766b,9409ec634186e7453346e17e55d4f3c4c657295a,c3a3cfe80fa1cff78441a38392700f034a70a3ac
2cf533c0ed00de71b2414155f4c27780b08b86c3,e0da2d0e46498f490bc923078a4d53adeb0bab4b,2e86cdb6209f56939ae97f8d0e9516e4b81abcf6
0a4f5558bee4442ef6a9cfe18572cc72e33f84b6,496a86501a454b46b1f9e16640de13ed4e072eba,55dee03ad0d0423ce31660f3e934d3b6574be8f7
17b7782929e4288a4dd67f644500347ec12ef6d5,9f812855bb90f11a56d22ba4d4e1682367a4616f,1b0a1254adb132a34946ee6bce5ba1fffbc5456d
328ff5f0c32b523d2dbc0206c139042c34c68495,2d1fba1fa15eda788f6d133aaca8804d4d28ab3d,61397d40ae0c43083844e850d87c60ba74b34d28
7f03fb696693a06f919965fffd2ad169cb60ee17,1da241c09cdd2e73286733fd00d39d8ba87cf9b5,d7eef9c3caf932b23da34110f093bc336e7d412d
4b5e5f0ddb3fa54303a63b7192c49c3c5c90a079,a5cb0b6179459c026ab26811b8a2bc97e7e73f19,0d375c638c3525021ac386e1985cbe35d14d85b4
51f5726343727453333843f8c3093e34bbbad678,ab66440e76ad5133aeedc48923df2b84285c6b51,fc6d6c123d5b76c26f8b0d6b984111ac7017d71b
5c9186a395b0fe1e118ec0122f468086d6107bcd,5dc62fae3b0cbe83c0208fcd4746a852b501b1b9,d74f81fda863cf65d6acccfd7e5120e646190c82
20c95f045560cf414e503856175f7705b2804935,0655b342d4d170bac9171fc74d3fe8754805f3d5,6a7524418a88fbcbba65b0172f047266eafead64
1de3aba4e3ad86ed2dc533a0042aa696c0805293,5a9d4d44faf1c8042d112e87bf3c60812d025cb7,c4165a67a743517bd5cc39708cd8745cd1b1298c
3ed000f801444cf2d6cff47e522eb705a0e67196,7629cdb4a5cfbbf09b521796a87b7ae829c1c3e4,6a109634b0062bf5033b8e1a3d4bcead449071e7
ffe97bb7d966363d3f58f7c8782d6ff9a26b87c9,c39a3c6473a967b0f8bda6dc4037a813847007af,ebe7bc8097db6017f0959564bec070c942e041be
cba0ca490e456ecfcff524476f6db0cce09a7d7b,c002ad35b6539bd1e836a483ab55a0f1deeaeb93,4b8808bfb2cdeb4fb62463c2c092644f847798d3
f89a2b8432635559e875e79d76d299e39e62f470,fed9c609e821b8d714d996f9bf76ab660f0a259b,7b0578dc173f3eb5029ed3dfef964dab2c6a83bf
3605b80f58356535fa9eb66045dfeb80b8e56245,b9d29d34202fd440844aa7f71a18a70efcdee18f,1ee8f039ffc3aa619773124df188fc134a70b2e0
9f580c71049c8b2a50c55ccef7f4500be42f86be,5c3763ffdf12f96cdea5ea2eb0c821a82b2c9e0b,cb926961ced4dff3c80e1c115553a7f899612b94
6489b6fc3662533e8785e06a3c1b8e22c6f46249,4f0f67d28e258309b8e9e301715f06e450259a13,9a1c3997aa7747a278bc3e109e4553cd1f43f995
00156573426312d417d654ef9426f169b62e1c8e,346962beaaa5e896c155680f220a57a2eee2e6fc,dd63ea1425ff3047126519bc8170843a9e08b156
27ab23681cb1bcf4829c99d54506b934333e3f5e,666de1e77c5b8ae629c7e0ee5f9afac036b3e18e,a0cae50af6831b5be48866bce27fffa3d1c4196f
d1510840d05eb7922ce569bd0927918680be3c9b,cb6fe28898d951afa14e282856dc4dc13366e328,f6a0da71fcd83a32037b6129fbd1f923804f58dc
801e14c33be6e586c49eb926de753a504ae2f512,b6da7a799a116154240ff0f11d94397fabaabc09,6cc391dfa13640cb6297e84de772cc06343beb01
b828529b24e149ed4129cbbf89b34d95f068b8de,41ae52dde1f6a3b213c49316921a2d8824d46077,edc1c79cbb2925e9f0d1b929d8da01348eeedc35
e60a7d01a45353fe263b3b5fc55e8904fdb00d69,a478a33c3262087cc9fe277372760244f1e558d7,1e9e533e6c27e8665aba11cdf6542798295025a7
e7145f5f7c677cc55f3e9208d08640db49a75e0b,312cf246adc4dcfa1a9aef3968e203660f94df40,3302dae600c38211c87ed5f2f3ec05755cda05aa
a888a141a2bdb99afdb4a0e9e83fc69613c796d6,008dc98c338fc54478d2e8565fb78146bfc84e53,4383aab15a238d013bfc9a98d7a09693c686b8e2
02704f85a925475c71663e5db5ddf1700c00ceef,a04d2b59f643d3fd329129fc373835a8261694a3,d6cf3c98d0e317aeecb5885ad59ea4b06e431a6e
8d12774d3b94b44fe1f7d87e5abd7c8f737a5dc2,70d2f81e5eceec3ac7ecfd0c188bb1a8adca6284,04631040b8a4eff865e06031d0b83e7b464c1480
bfe5733624f4e7c0a929ed684628b88908d6f72b,485b31de21583caf6165581588015e130425d445,11246aa5b4c2b72f50041d019165f6e3e48976ee
9b1861a1049aa0a646bbb2edbaa6280711bc31ab,5e00358f13ebdb36f70332431b8cbff7f6b04c0b,1e3865a187d8ef54d877185da306713640f935a1
a91c1ab6278349ddab8787751e4b561bdfd6cc2c,59ff8a0f654b5bca8a0cf32bb938256cfcb2d508,90779547622977b5aade4b06a2e0c131f9fed7c8
205e4f34212527488ea73f2fb4ff1a54f03db744,52849480878634dc1bc05288e780483d9cc9ebc8,fc1050a834eb612fd4333a1430fee1558a6c0556
94b77761701efecd23da055691ce7f6053b569bd,fadb324f7cfce4c816456895230a667b5e429b6f,1fa83a91abb262f6acfcef71e3976ac427dd830c
ecbebca07f6a6aec874ed2ac0d92612a152ccfb1,59e307ec2ea820e2683ec7d74682c279b2fbeaab,11942fcf012b1730c71263d4f16e86e48b4807b2
0248b9904c798e6d2032b78d77c7c1725e39c4ed,52c65e076f5cba913709bc8038f82ef9f1fd22d8,f7214e6ae8314d5dc35caff50dd7e27f99a27cc2
9f5a4205049c74cd503a2e921309acb80c6e5dc7,05a6a498c0ee55b5b1462d5d9d9ca036dc67505d,a9b8fb0f0517fe56f47e0ba5ae5c5a1cba264d86
f89cd88ce295649eb924b740249b9d9b187e1111,078e2eabf9d118854b09dbe32c4a0dc858bc81b3,b1a91501609c36a50532ecc324226085197acdaa
a9c88ace25531f56db09d2bb320b2dab6f6da153,096d5f50b21f8d4fab941c73982959109fb92631,291532e740b7187638d45538ecebe93a257b4d9c
4664b1408181ade714bb2bf11249dceb832fa994,5913c17805dcd685fb9270a581121a922546b9f0,259af2d25215b2ef1f58db9986b5d1f59b5f77ed
d809b4ba982e4ac905631054665ff5a973b4d491,4a4eadc60eede952c3d39eabec7fb5eb96a855eb,fc29d5ca7d7c66d5d1c5cfb6eb60e4f5fd5e428c
3d0cf17e5cfe45abe65b838ab223e289497b7098,ac8fefbc2bf6056c7a32f74a33e346899fa3428f,f49da0563310f72c509225c53a8cdcf01a92790e
e315a30ef4098784c515edc6a2628204a7a1f989,b826ad8b7ee25ad5e70f9fbbf6c9b789dba8e200,c42bf9cdf5ef417b76093b3e8fb344e54397e62b
2d8a50556cdf0d49cfab4226ce47960bc4c87f47,a27abdd62170b60d641b1c439876243c17e06b2e,c86e7b43b434407e08a4c722d32dabaa2cb19a78
e29d1ecda9162428b813c1478f2c22e6ff6a6485,9eb77599e18c89bbe426bf272233540206893271,7284e161a205e7bb47fe42dc35a696fea7579510
8e717f41426df720dc5211801441a6a7efc8c71a,424d3606d4123c068048144f4b3ac57a0216a70a,eff10ee9b7bb254c1a82c3e838eee6a20edcf3e8
8f106b616bf0ef62ea94601ddebc33b6c20ae6a2,e56052bb32d191e5de15645a38ac3071f12ace8d,10d740298d54b90f5dcfdfcf8db6af3250b5f5b5
cab3b8c06f91fbb847fca4234d776cdf4cbe0565,bba8558a1a22e5652cf76e5560445b9874d0d8a9,96b3462a5f9d2575432cdf02cb5c14cb20169a8c
3d2d27cf67cbc5dd12a0779e94adadb8e6ebc2c2,fafb2934260208b23ba6f7d0e3d21a68dab2c138,83abe1fb15e2ad290c9e0b0e484d49dbc123005b
3302adc31a551db2969ae8e71235e514886ec7c6,2519f4285484011cfaf1a7a8e49ac74914548c39,d729d5a5b13d11e75df3871ac62d9be7e64d2856
875e22f7d7c94cf40add10fd077bf605628285d4,b245f2deb18e846d47ce27374a5f715125f44732,40c386d6bc6652eac19501b920055aee37dc077a
fe41a51db3a4bdca4697c48c48c66c2b4e91d90f,ac0e641ce776cb13fc7e739ac9e2e2c2c4b32a21,ff9fe851fb11e76e35dfc22a72452c0e014d2221
ee9c54d51a0420d8ae47a05821d1ddc3fe6d86ff,b36c8199bd5d7d50a93fc48cf771873573cfa308,7fe602ebb0f7f0ea94c20c6f6969b8d1b14412ef
34a18adea603f378b4a59e057a1c82891b11c55a,9f69dd28b4fe82ac966aac8118dd4173ac93cfa5,c68788e03e2de71ea957e74374005d35c8abd8e4
2a4f4ef420dba8797a3de8ac86ea30ea80cd1404,2824f592a3eb5fc687aa7e67f12be07aa99a245c,53459fed2b18c72e64f4ad75949dff30338204f3
d9c786fee68349b4ffe3400cbde2de879d4747f1,627734e104652e6d10ae10e83815ded7f9daa71a,e507f612f5bee3e00effa488a48b0b1280add211
ceb4d6fe8f4ffc4ccac5e1e49e5f0c546a488066,14b3c11c0d94f4972db7a40d09bfca284a24eea9,fbf20eee31f00b6e9cbe53803adbf1b9096a374e
0a886833104abbbb3742c40aa8f965ab14547e12,39f7172ee89eac78c2c68e9c951fe82caacaebb5,5a59ffdca752bc664fbbbaaf6c79207e6b2a9af6
605b21af8c51d612fa54852d5545c5bdfd03164f,36112193dcf865b59f9115794a293ad9a76e5326,5bdef935f9b674313cf9ecae69696bbb9f9b88b9
b58f9bcfd08f1c9dcb58b4fbaaeea4005e2799b7,a6fe41f3f62424d39e1eaf75c53bfb6bcbdf9c32,2de19f9e6695fd26f9aafc2201c1c43ce9d7ec71
bf970b29f46aa39f8294308c8598ddd86bbdaf5b,e0229632fbd5324090e43252aae1e171e7e2b0db,f6651f8855ab01cb6f53d3f70791a8bf8fe01d7d
d5ab671ec33f975082ddf04589bdf9e05a92053c,4eb8f8e5659868077b481bcac9e658f4a6f33b34,d9e7f845c3bc33955a0a1dbd636190f8750dfebf
ba555ea68de61473e931e799e1c6887d0690a064,055681c8b4f5805b4eaa45e154fb88131c570827,8db51a367ec1b80b6cef6ad0c971df81eec52195
860c32f833d407ea1accb5e43fa81fa7b325c289,73a251410eee81a71e54b157a7ae12187485d353,60d81ed79b9cf5b94d98f9332ae4d5e82fc9aeac
38cfab3cbe342f71906354367188cb89138a8e0a,d02db5da41162fe1441a3f363e3abe0cd9121222,c64fae2f8963fed5028c4b57edb83acad854542b
953a4e1b6452936c7de86a0c7f14d17423628e20,8c2aca6ece8c58b3bcf46cf67bb0736079bc4ecd,f584c559fd036f07885f527485dd803d3cd239d7
50370ff56d2eec973fb17f253b0f39a47ba7a356,2daf7f984f24ce54492ff8e1364592d705b0abe9,cc1403e4db2a3024666b428456d0ea4138d3d916
105fae6d48fc3de538194ca1cd26d1a2ef500f26,aaeefacf85974e22a3b8f84333a5d98230ac1f27,dbc3d6b98f66afad36744c718f39155fdaff8b12
d1a5ecd87e83d12eea1fe732b56437bc59c770f6,15b3f1664629c860920f2be31edc10824a19c7dd,52c5a0932d2fd596c5872f4e668212233f08e93e
f5beaa80d810f8164f179c8165d8e7fd1d7b6003,c2664fdfa557b7f8e5f31590864b8a5237d8e989,5bf93d220f34a840bc676d012a75ce05703299f5
f2bcf407f3eb0c1a886ab4a5fae99c9e3b6eafa6,e2ed90d40f658b13c492c7191b71ce76e6da5bd4,bb078b07d1eccef19f16a8654fdaf79f3d9d2bb1
3d41e0923b5e93ff9f33034b465c8d4719580f1b,c7213e66294f194e4ada6da0bd64f7904c3fb2de,35510bd0cd9c8ff91d8b7137ba285bcfb0dd92e6
f7eaa6f3d6a32092a86cf746343d4d97f7f6ab85,bdb611c925aacdb6450dfc4e655f3f8e11d78f0a,d44a1c4100800fa59a5428c7c8db360d6766567d
a38effb29b4f0fc8ec503d9ff1e1cdbf146202cb,5fc78b223c11d08da3f9dea1be8bb59c2f2b4e79,2fe3955be93d40368dd6f1db2c4e49757e87ca00
2c66f30520dbaf0db225425c74908f6b4c18b993,0187580793af3512cb52831aede8af5dcb0a297d,3df063ad92962b0768b2dccb31457017390fdb3d
8d3a9c3ddacf577903186ad6f7572c982f84b4ed,83d3a3941715dfed0e09d9f8beb57e33c4c48229,c9260edb4fc5de04cc0ff8bdad2c1f6e3f7759f4
558704f91c3a44f678bcd933184b1689bfb38fc7,8b2ebd07bf1a6b9cd2440b5748f95afe55ca3efe,b8c695dad8da8ec37e9556c0b87f09c7900d3f3a
60190ff375b55092b925abe5868cc2382a550eb8,3ed60f6c2b8eb8c3e0229ad480a2a51ef67907e5,c069e9b1d20377560b1c971c4538e661b67a8db3
c60f233dc045ee64eabbf2c985924b43c24b3fbb,360ea0ec3d441d6cecbe27d3308611b9c8267f63,47cdbda029c12b37b6d9990681d8ceb6f8fa4d3b
f8da65f8e9a5fa02dadcd16ee19ce14c44133c85,ebf39d610951fc99278705d835e9a6ffc03a4f62,13de117b8e52f4d7c1c5e3a0ece89f380d36975b
4936ca80d1d52edb4b1cdf3baa92c27ed6def035,b98df20b4e881ac66d1f7b577460ee44d291fbb0,bd9ea37453c5413aba818a1d09751feaeca8ad1e
6a983e533ab832290f31faa6e97c45e4f478a080,10b7ad9d0cf758d2eb4cb9eee8312b2fef70c2a5,6c50c02f7c97118bdea91edd78085b47534f1261
ec2e645719b35b7098c759c496e0308f48b88ef5,e80ce5f61f3857db8956c81de525d41b86aa2ed0,54ee1d6824eca4d132e209c97d1f350f1ce02ed8
94912ab27474fef4d96349f091c504ad1e701531,7dcd89ede12e1d8f060ca5859a9c54de81ba7698,0e11fe0fc5f039939f2f85bc6896812fb1df0b83
ec21c75e05f33de9a5fbe7f7d1bab246f7a32dc0,c261d5fdeef1a8304f8de9cfefda31f9afca7af6,9e8f09b93f3844cc6f8f5ad9926b6eebcfc06342
9ea7aa74b541c85c3973d829b1ebb8c608e2a67d,4300e2cfcc1cf06f82bc5c76ae3418bce164ff10,abcced55af080fd4577f0a107ac1366b3d5d7f16
c8bb9083dcb72180e2c6ed61dc8af21d5efbaf9c,1c025291991bf31a6776c630847149ce5aed152f,d0a5b61b80a1c8ae6d8d0661833e9e1eb288244f
a49c0f6e0cc25a096b596e11ac5158b6a56bd96c,14f2d8ab08908ec60b283ff8ca78725a2567eab1,440a635bce6aa43e7b26611e4625e91f778dcf9a
0c745fb257e71111588ac54b0bb4bd383751e82c,60017c10345599516c295fb8b4ee2970db758ca4,8a3422478290827e9efb90b472ea33cc480adc9d
142c851b58d66ceffbeaebac4337201c3b3f5835,025282ccb90443098c381832c5482c4111140c53,c491856533b75b0cd2f58d17b766c24dce7bf575
55e55cf2475c30e1074b778e205aaff3678d7a55,73462ff8fe9fe321936b17850ef4fb6bd11cce99,868d5f29c9b72579a9060b80668e527007eedfdd
b28d49ced7660c2e8b2c1805702cacd211dcbe1a,866f3ffa2acbc006d1c7aea7191e3f8857680ac7,c771d772c4b897b43e2e65d22a51a9d65a874cf4
49c14164091e9376f8da8f98af46702c357b849e,63f6df2fbc25054afe7863ff17d2d1de6e4b5a60,8b356c7f604f2ef5e7c706daa2fd1427b6eae169
1073729336c5e9dca6bcbbfc5b0fc17ed6e916ef,f2717b8dc0dfe068383bf4086196277af3b7f9f5,f17e847e5b5d574166e4b1edd213ce335746ab8a
2e553ab0e8244e1e9e776315aefbbf213a101fb3,729840ca6f1f478ea2b63d9f5f3b32df5584a594,0e0c98f564ff46a6a3f7179463afb3185c89047a
f8559610e0b474c6945971804f4f38798ae15a69,9cc08d91240df8fdc1809e3e7ece0f02d3df0946,67a614e48ddce29273c68bcbba113b831b5e8240
0d71273adcf9880eee765ad2f73b35854f356371,97a5ec0ff4b7a625e8e63b732092f9f257a2c923,824658874d7aa322b257688869899f15e5444805
e17b6291f5c3fd88bc6ca2f73af68b1b80cd82f7,c4f046f1b8e9d71d894431c35d1a642d37f08a02,07da0058e3289ce240c7d80244ad6079ffa20d1a
28287525879799fc0bb5fd8b42976e5dc1079249,924d4b9b53b3066a6ac96ec304f7b104015e3f9c,6f8655ecc9c81617e3873674c4c509cd49fa73b5
a71995a521343e12b951ae07b0ff9d45f1f4c8ec,c88037b8a7e3682ddcf492d74a4322af7c5612cf,4c3af63fad394c8e415aa459ba3d8cd305c525e1
8884c1967d07d267f78d90dff1dc9778c797957a,38de35d518899dc5919d0f9aed58ad224f90f385,3c0cd691e857b3ab2631070fe40c1f9c1bf03db0
9ce7fbeef025dff2124bca6773d4c84b7b4f41b5,567187d4bac30ba7e2acd4e83ad014de60fddd67,c96b0f6ca58d899bee8682eccf5172107952d11a
ea271c1088641a3cc2ecf534fd92ade565d60d92,bdef7af09e23fd6033670380f1ea372791af087d,f60bed08231f593c5ace4377be7bf86c41b20aa0
8cd3e72b3668e51e9e1357199f254a2c6aaf31b1,c2bca23fd1efa73fe7a16b969ee53f1b4d21b24f,9209f55112348cadff86a64e2f3012bf3801b306
9d957cd6b393ce64e7ffced79af5d1c5d6edc30e,db5e821ead12339c031c5f9a3c208c509df8f9cf,10dd493057f2bd558b697bd88d5e5e9068eddd29
193f20b697ff022a0574b13efbcd01175332580e,3180c985ed30e6536cb7afebed99eba42d6a758d,6c656a39a4d001bd6aff530ac878d264a9c5d5b2
0c3cc7672e7caa741b9440ccd6e31411d8d722e3,f67165ae31509fa20275b3d3763874ad03b1234d,7f94fb2a65a1b9b68fa1be9ce53b2e28098ac270
3fac1e7d5beacea815a2dddbd4674b027affe7e8,e51fb8020c6f11bafcb575cb58a61d5ed40fa7a4,38ec27065b62932e0387ce4a7a998362a1f315b1
adc66b233d33e90bbbb1248887e30287b38b9003,816e3fc5385ceee26a8fc1df9789f5d2d39be68b,680c096ac51cccaac72cccfc2b7b9e75b6771b46
e1a34d3410e44b15e1a20fac41355b49ae2a824e,8cafafc3e670481482caec9e5318ea81a52cfe3f,0fadf3515e2cd9b53a99e21789e4b040a335b5d3
5b03123bd411c1455aa00f5ebb9ff3b185af087d,26c69d564f0d9b399c0bc3bdb08b84e05d87fb9f,35701f8fa2f826998b56f6a8a67de9e5a17a4174
fd74c26707e47ea8f1989941d05b02d92fd04598,b974e4a25f99f91d635d3023792a614f87d0125b,e87982e925720e0b29d7c097749802c99ed92125
326073512d9820751922b3efea9db6a2d2ed76bd,f84c2ed56b2d71dc783562f95b0d6854bb72de5e,ffaeec243a674a1fe4b447bdadd9d360dda314f5
9caabdc4e78ea95eba77a4ac9e17be420fbf4188,47d23951104be6402acb8ca5ef3c9b2a1ed175d3,d0dd4697fa435112d9e10152a94d015bd40f0189
b64701da1b8844dc50c51e453374a64967a9e1bc,aec4cb393db69ea269324db48f7157db0c9c7a6f,eb2e6b295136fcd9a294260b60c6fe173878f98e
b1f0c504cc58d9441af5dd81229d54c84e74b162,d851553f417233bb8cca6a0ec54f4be864d14056,fe80f43e4ee5fadcff6c5645436e6f18fa183f44
40c3dc5809eb9842bf7a283ec5655b60d0f0c557,a347e28dada3ec43978879e642479795415e6250,e225b41e3e6c33f333dbdd1009730f5a419bde14
8eb0d1eaed1b9322706cbb199c093005b1839d43,713c9eea6a8e91d8dbb8a408575f740bbc79f2c3,ab115180bf06334c3b895be4df0e00ff74a186fc
b30b01a212d45b22531a1f5481eaac37486200a1,617d56f23af75d9060a7ad70d95b812b334f99c2,691dc59a2a70b68d9e42a4c160d112630d824361
f6002d80781aed00cf9549647cae12f17b1ebf98,6d79054cff8fee91630149d9f439b22aa95b28c4,0b4d9a673293fd940fb90dd672014839542c72d5
cf4fc4e3855f24ecd16d75e7d2f172881956f5dc,14d65ced2eaa7747628d7f281f36ad2af56057b2,634e01d525c3ef31b11ce65aae600bb784b436f4
a816fc2114eed47eb4617e14a4aaf9109988a60f,fa1abfba92bbdcc4fd1dd584035466cd764cd695,43d84beb01096411ae1a94d6c323082e3ed1a414
4c787b4b9f79a958991f248ec2db7a8e6497492e,0c61c7057a91560772a884b44cdd841100105ec1,cdda954ea746dfcb6d9625d51095422b1bf0fc93
1743df7b80edf021173e1ed7e4fc24586cd58f95,569c3fb49feb3b4984814ecdde394dddeb58c74b,c6e715a54e9d058624b680c7d5c36511ac7982d5
4c3d8d016eff0753f2b6dad39a8aa08a087c0af7,748dbbcb20d662572667064bf4494f87fd8abc8d,1030f67fb4842fad0edc3d7ef2798ab0aedb7f08
a575a5c0fdd7fd6f9e45eecd2d76c045cf588a4a,e86882580d4ebcf6392ad27d18f2de1382656804,c1c1d46c1547cafe1e7b71864e100e82340b6dfd
8e79108e518ae31a8a354f26a998c84ff68f8455,02e90adfe1003b6ee2516023dc5e0c38c3ae019d,8bf2dc3f2b4b28a68dcfea9386f353ee8c14536a
09f2fa0daffcea9d44570641d341b4fd40346cf4,ea988e0b920bd55fd07baaeaede08ce82eeb45cb,95593f15ddee345e0ac36a25b4de904c1f8378f9
8ec86ad053ed6c0777e2f9d1842de7aba29a86b7,152bb316c37eef709e576061abb8aab413908526,061c8b5f25b97ff9ddb7c03d6de1a1ea899b128c
8032b65442c198b1cc1a14176190d41eea7c8ca0,fd1fb255a6d2a706041e19f41521fdb6afd20558,d9e3afcb1d3d8f981d1daa05934e893b19282b32
83a8d584e0bb7f5a7a2da71f14351634c6839afd,4adac78f85014ad8e52d0dbdad28478d54273283,65d4319dc2f9f4643f8fed2cb0cf038ee945d27f
7cbf18c6f395b2133ff1fd8c44cffbe4c7c8f28f,437e7fa75af92b1ebf2dc97084b019374481fddf,de1b3a982b28624802102ba9a3dcce7a71099af6
8cfc87ffdf1ec6325f11dcd1a4b2eff7ff776201,b0a82993e6f8d0920c2ee789e84d67951e84a334,fac7c21b9b95ef254c27c365ddb218817da8c777
b71b5b771f4304a82d79ba84647320755253a19f,9f6a3eebb78048432f2240922b18cec3ae80a686,be11d22c17e27d92da9cff57df4476baf16b2b79
9059ac067c160ff836e8dc7d75b3e03f22404f12,e4b88655af718a4854478ebe905218b7f391c642,e67094ec28727aa9f0df6f331e29179fddcfb623
6277c21261e0ed4116cf460ca08db26db2d99175,bbb159658a2265472a7a23571e6d2d439e409318,0a9169eb67beca37d9108bc9769011237c8a497b
258ad62c4d8562463516d40d5f4c5768b9f9ddeb,d8340641cc3c64d043524e8f52411e414440b4a2,b08b5bf136c80d80abdd52fa5295589aca38eff5
7f4f25488861aa4c70918b6a7bdae2db10909c15,a44cc738578ae778b00586fbdbbd6bfb25d575ec,37d699ed606c23139ae2aa501c2675ce8104ab05
2e8955b3c8e507b466265cb13402b09575ed5711,813427da845b4b7f768b7c3f3cbbaff503c44bf6,2a3ed89dbc752465462440985d7f31f46626812b
50c1eb408950a342e3d613ce107b8f4c89867ee1,027f7e1e0cc7944a445c040483416f507eb72a82,5cfd214b680339f496a630d8be236382ff5090fe
7d1999eedb23e0560ae2e2840ae52decbf733e73,c95dfe24e7203ebc73429d5bbb839d6aba1c8b67,fcfcdc2ccd310f211d4ffa4ba084f48ca9d57379
90e80fba4873bc01bd67046fbe7eaf1461783ca0,e0b8e2f5fe79d0d4f762e3be4c5d2e44da8dc0fb,3ee412a4a5468ca156f3a6dd4715fba1a43f98a5
8d7517b43014cb5c7936638480d5689415332746,e571bd869376b0cfac853f82a15513f86bf899ed,43229cdf2e5e0245921e5b5be3495aa3f1cbc907
ee3ff193120005677c4ef63c84ae91af57ff8c37,af01314799a90591cdd57796d2497c40325061d9,6a067b55d1523bd258aa3bc8ed2eaa2046892d7c
478a227aa4ca965b1af6badb27f3df4c01b78183,a4c03016fc73861bd514ca9a974de5ef990f5e95,73867e47f92660f175f5bd2fa65d90e59825616d
516e078fd923405faaff667b74036badb55ad4c1,331e851549f6438b21daa6ec12f431210c3347c2,91ee643d5f6cbbfd1c9117653419388e07aff583
fef7d7b6838c9f62f50a354cb74a3754fff5a951,342d3338e50110e9f77574571e5fdac29330046b,93937f99ae6cc39b0e11d625aa9a1da05a5c6d67
4016e1accafec4aab026a040ad4e3145895d43d7,28704b2976186d00132f872ada99234a80de9d7a,b530804eb6b28e9776875988cf3ea5dfbe7cc707
cb164667572a20b17818d90ea2279922404454f3,89cd72b71c8c567ef7f1f371860fc43faa7eb50b,0457690a8bc3590080fb5267e35311e8d19ca918
7fb83161b75365d9482736bc485e02f2cc5649c6,bf4d68f96d04b6d9a04fabf0c85f17c65da05e0f,a06a20f9c03dd42ba19457a8c0a4c570af5fd6cd
295364e95b7aad394ac3b596618913cf4ba134cb,6456ced31fdd2a9e505bd18d16cfa74d07a2e531,a57971204c103f738674e3af5fa72c940cef249f
b3b4343e6be782d5697807f5d03c054322d5c075,87137a4aaaf7a9a389c2c34d2eb96ee0e744faf4,963a55db527b89ce0d0a3d5d9229c533aeefc360
429d04089ed2b0e89cb34ffe0b3f87a265c4c372,bcdd29b556776ae1ec8d3b81d4d926d19140fefa,1737035501ddd392579f1da5974ecf778e9f1c9c
124480e73adff243d2cd0e2096db03a029f95fcb,c81f10bfbd5ab6ac67067933be7c9edccec95040,1c96bf5d30ea0c339ab5234b17cb6352676576d9
2536529bc01873d211a7309c76c0a2f758247bc6,e788fa7e3f7284a6516569ba282983e36ab12917,52651a7ede3b51d3305f84d5e1ffe90e6811683d
ec2f18f8befdc0423298f1a439278988c0d6e4f6,d270c2ccddda47397de4bcf4fbd791e7d4b675f5,9c81c4a5faa18681f921caa8ca5a7cbdade4044e
3ad7a0e716b497df356b2d8c6e799045c6aa7623,28a849a2931afcd495438a761dd63fab1615a6ba,396781408129dd8a31bd35df2e05e6807921d297
a1e4d5a51755c7e23d4f93515007afe7e46fe2c6,536b85021d2b19f24530f982d6dbddff0d0a3598,5043bdaf183c096f38d092f66dbb5207fedb85cf
c1d6cad44411473fe7c3b28e9da40f89889ba8eb,e48fdc5b0f6d6791f394510f678233d5eb9dafec,08bae9ee2ea79acb659e3bee1d46ad29d57121ba
08bf5f72013fc4a7136eb935473d5cc2f3d5945d,6d157b5bf0128f5aa9077daea7f66e89d8dd00f9,657e4bf838f850e1d209baafed59ad2ddcf5246a
2f5cbbacb714ef74a99c483f545d530a01d600ae,a4242e60b2b8dbb6bf5b03bf2665343d7441fb42,afd7d9965ab56f5432773a3f472f1663f243a73a
47e4eaf3923a93b7300a14d9e63e5e3292092ed5,c20178b6e1622a7da4abc72815c3b9882a9b16ca,951d2f394212678b0ec84648dcd2b57f3cca0b04
bcaf8d14095489a4420c09f9c81e61f941d4c1de,1cea95e8e0a2832325572daf6f47a7622ad91801,6f7d2136c6d60a501e9a30a90512d8cb6b37a1d4
f35a565f4eedb53ef47faf2bd12fabe9f02b848c,04a9cc3ed9c74b2674362eb1bee7a681cf438b3f,3160e45316babdd507b140acf2999fe102699377
303c0378e9dcd43ac922491017d1ab7c3f81ae13,3e098316fde811eaec9c9812f42a2dfd7f0015b0,e579da0844fc82f72b91622902c2671c7b7c831f
1a714d688a6365ae970c5b63d8ef74d7a9bb9e8d,2fb300c5c0ef04ab2832d7f6e32a5cd57811838b,038ecaef929dda1588b181c3058bad1ed56bb537
5de7084d35492e6ec6d4e3c4cf0cfac3d881195d,c6794dd7d73cd099ad0688483d8f215ba05c4821,8413c2b0732714300db387b1faacd8f1d9149fcc
b9a6b01c97afca09b44ebdf5bac8f91dfe7ff35e,1a93cad4f3db9fb747d23d9b16a75642c4ecc0ad,13dfd1cafd67261b0d44079a243186308553b6fc
04b9bc77024bdfb7da727fe7648b1a3534c34072,406d5f414736946762cbc3aab6db1903ff480498,80febbd8cf6cdf0dabb80612060d0eb36363a4cf
5b5a8b3387ed2ca1f590c323252575382ca8f2c9,8708144c509651ebe9e928c500883c4703dfffe6,6d45fd09a23252a391f48f1775747e0816e76674
a21dfc0245ff29ae5f23bc0a334c05aa43e9c4d3,a179ca8cf8c9e1a62bdff1e9693e55b9a1453ba3,692bd6235922a3c84f329e0fc8117d7e9b656151
41ead20bfb32f03c1b36bd4e98bdcb569345dba1,6a1eb520e961845b4a0e277fa57df4c6f138ea9d,e61240156247fac15c854294ec2a0d7dad1d2868
10ec49d75bf66731bda613fbad531fe49a8e3907,cc2406ad742a00b88568d4c2d9b64c562b42ccb2,c2fcb1a8336cb9b40a43667c6489ebca7081da14
694341aa789e1bc5d3653e5a816cf102179ab554,bb93b918a5bae47027d01ab5dcf79d01147835f0,31bb06ac876543a509dc04d7af53b55db145d84c
9cf31e2bb3a99a883fe22275f205a87c39412108,7681c192dbb6d74b6944061863445a55825506a1,aaf536ae109a4797c13d4c6a0655c3103596d5c8
801f902efed9527bcf5ee2cc44aa5d2262a9637d,a0c11becdedc48b6f278b8caee65f1430062306c,ea33fdcdf8541621e1f1778a551238607308a2b5
6be3a42a2f18a349402d18241c83d68c492c7bd5,74a4550ff01a1cee4fff5c5a5a7361729608613c,4afb07cc5ecfc9d3fd300b9672ee83fa3626d4c5
a417b0db9b9c8f19141be552e6e01da1e4057893,3c027b0ba03df25a95ff94cb18f15aa1dbac2272,ca0e04a346d37e96f7b6ec65dc678f9cfd03c8d2
3e6cd16bb56e5f468fecd2ab3250440cad90f7f2,23dec631f52229bc132d7050f4fa7e560de750e7,b340994e1b1f886bb660aed64e0981a954414d2b
60bb6c19d9a3fafd600b3f8de50fd2e9fc7c9184,68f41911192f5e8b63fbaf02badfdb5f85952df2,8bbb28ace8d4ebb6b051425761958e4b4d14d242
da597114427645ef37f4d1ad10c9c19d5d4ce23e,9d771396ff829f3fde3dae0ffb6ed5cef1064ddb,9e0b2869a3ecbb35eb9244db4352fe33a1513166
45ec51dc1f56e8511468583d99121cc942af05f3,25af7a4281eb9c7323320b0eaa5348a9daec39bf,d0b03c9c71369432011b0297674fd5bf0a5644df
e6ba09aedd16890cb76de875abb370512ec0aa01,22c978c33fead9764e6ed6b34ad271bd8740b2db,f23cc9ec6d5a89bc61619e53c9eac8a57ef1dfbe
77d592221ac120ece3ab60730de6a00eb826761d,e03389c6a85ad2aa2ae11be193f3a95e1483cc31,fcfce9f2d582c9adb1435161d27a73a86381a6ad
a0e1dce1fded5e40a6a060a5e946503c3eb11a18,5d058258fc3fb182a42e750ad8ab09962bd2f4c5,af5c2d66c2337316c85d8541149ce3baab650cd3
1ecc880fc813db7da9b55145e21cb6f62b45220e,37c32a9eb76ca90f6d984f52e0293cbd79cf6bfa,a81eac24838b7adaac46f50874b2a8c92aea593c
025ad39ef0fc0c1e7624a10fd4299f73f7f65750,594b96e305e14f029b70a1330c6a96ca6e930972,d4816d12f790f6fc56d492fb8eec520da62035b0
258211e0389cd78dfdafd9915f8c074ff5aa52b3,abf04f10869a9822d041f5c0814990d58fbcc4fd,8702fc416b4f857cd4a56df8c550f7bcce0b05b6
c53e1b20d774a75aca5a52624da2618edec29bf5,92f937c40eb8ebad413e8819de0474306755a1a5,780c1f9c494ab9df09fb95e381f33f56cffff740
73ee25071d4922d336dd4c1810d5415271b58729,34025aecac5ddc82c0b8fa17873849687aaaad5f,610f2bb3c9a50115f706a01488c2ab5942d3e395
961042356ccf45e7d6247aa334323c44230586f6,a87481cfa4c3e5de8c80387677c172cdf39029f8,0642f145520e2893519c967678575b6a2e3d2542
70ca28701b6fe30e3d0b8d81b02d5059eadbda85,44a5f6623bd8e58b80537eba80048ea01ed72df6,6ec1b7e1b55fb40c21c86eec260ebda0f5b1d1a4
db86dd07fb93ed5aa73827513dbe1483995d8a82,99b7b19f1743d796d9e5f78db2e64fb0c6afe8d4,f1a173bdf6ed78c5440ee794f8ec9bd6a9cf09b9
7e938ffafcff78037e849ef69727ae7fbdea395d,d1348d17bf8d5d81a03e2ea3c36d15add9a3150f,605ca8144f12c6f84cfd285925f91bd55a5f0926
cd8fda1c2887334eb49143c156536ea904f770f1,df4ef397624905f8ab0f9d7fd7673e36da1cb7f0,afbc36897debe5e933a07faf6f2daa961405f8d4
f38b12240d40e4684f7c7de354295812064b26e7,39ab212642b9c86dd002d39a9811d14785b885e1,334ef633a80967422b7c9a213da44731b47d1fea
0d5dd4196f9b83859a45cb62a1c2282a9df18f48,a441d8ff28f7e68a2801285bc58e8cb599602ef9,90a756931ed4e354ed958c55165b7fc31ce05d41
c9f6b93d226d8404f00dbe3786863340ef82806d,07b4ceac49abc1138ed4be662789a618c84c6824,3a473f9148adbe0219e6d11c634dce828571d12d
b6f60e33ca63f95d9c862edb186aadf20f266aa7,914b1fecebe3e44876dd69eba8a98a83501704d8,8648c0353aa73dc211796e0a0cfce6e5035c21cc
4d48e7e4d33604c67ad1c4f0e8192ae92dbbb28a,cfa7d6a0c61637941ed8ac693347bc52c112e3af,b985cd0ea55ca2b91e7b74bd58ccf9688f393bd1
dfe60b53d1a020908d0d585adf8f96d0282ccf86,4adb6b2beea805e62999fcde8f667313bf1a8d17,2e2281387cfe95db0175af1e145106d8f73a983b
f81485a9b10488eca3d521c79cbc15f9ca1ea59c,8833fabb4b16a4a492103636e9253241278f2966,7b05051fc16b5efe71e55dec68336ecf78d37e5a
3218f25d130f9e3989ee3a8c6e3079aacde55c8a,296a7923802d48155cd66417b7e15e1da0f29e20,0366df9fbdfc89a0ea03b7ff89abaa953b5be5e7
6ef37d999a126d73500bc57d6b07a76bcca94aec,276618563cb97f4689d2389b6b71b6bbecbc36b7,43660084b6d2e00a6d7785329d630604d7ad0331
2accac30ae2dd3758e48ebaa0818b62d2e3db842,68acd786405462b0f27d38cb7a125f9d5c4afb2f,15ba298bae67a66d12d78748e95874adf3568c9f
081af9a892a11c4ae29bfa932acc9b3ea8e96854,0533acdc27ea006838642e4377bc43ce2442e9fc,5186044e81c9ea6020bf3e0549b4148ef9f110a4
a53eb8b230b1783f11bc13898d2968521e3f97ae,bf78823e60877ba498c1297b560159de98cb9a01,c54d1d4b8938af969afa035435067ac224c8354d
159d97e86413c12d36e4c763e89a97c86931ae2c,7ec9d2bf9fb0b51a8962ae005eb30382ebcd64bb,167b5213d14e72cf0dc5ed04c8a6232ab22af047
b499e7593a593b86ee2f543ec1bee6efb0899b63,de5b2c519298a13ac253169ffcb6c42f99725dc9,a65fff24e938b9013076c5462e121f3f3b90d86b
711e412cb7682c3ef80b5e78038201c67f627b8a,07f9113a7cca3e21c285c53b048be5a31aadb322,8dcf4e62b753d35569f4e5d815ae45bb4f02c20d
88ca756f192f10de3e5393f15d051f29699be8d2,2dd610c140127d6d836b0020e33d3995fd1305b6,44f58c702fb70614cbbd3702228443212239b759
13fbc876e0b46bc7b4b6619b2f1b0ef82b981552,a4608bd008938e4e8853e5fffa1ca47c24abe4bb,02867fe9184d95890305bf5450d9b68171afd55d
4527365f0d0aa5e413c476bdaa5b1fb66941f044,0f39633acc39fd200a3c8cc29a5c5efd8ffdf762,aa658473861af6d1f96d68bde51dfa451fc2ae1e
200fbf64a11ef6df7276c50b9e7b3daa2dad87de,487afd243e55de56d45be70fbe7c9d7056d6b777,a521ed8c7667998de242d83adaabaa9626497c23
edf7b26f52d05ca09fb69043148acfa4785f4414,db1d903a119e29849948ba8cff90c6569ffe373b,c8eeb2ec547079cebf1ab60e48bd731287aeeb39
aaae62ea8860ca88b9965b157398375234f4c22f,ad34a8d5749f8e158e57a4e176f1182d2ec785bf,781560f3e01579422da5ac66c0d88fcc0fc3d4de
db05be80bdb6e831c819f3f746326aa89c77ea69,1210747f1d4354b8f00054fb3ee496462e5c4f11,ce04ce42eddf132f110173b5ba7e4f103e835d17
d3c902e5a1f2c996e7910ef534999f1c9b82c333,017b41de89da93c848470f2f2140b6df019ac1aa,7ca0ddc70ed45932763f739ea76150e4c744ebca
2f0cd77d862a9c6e48d68bb5c18660ed12d21800,8d5cf6ca5cb66568438788cc1196f0a03efdec85,4112318e2f22f8df913e17ef086c52a863505802
ccbec9ee7d6b1c7ccf6faad32b02e606fbcf50f2,edde858cfa47f5f1c09c319baae323b4071013a5,df26a02d9d6d3b000c185496259896d10835a3bf
1e630e8a17b58d3c6d4b6340321c2623429b25c9,c8b9eb3c5c693ab31bcd408f1015dbc14dbffbb0,4abbd82135800a4c79414bf252e153b76940b988
6dfd2de1882096019b27c144ffc2db2636b5d466,492e38069c9ca4eb6132fac300532840e4880a02,7fe6438d4483f66d347dbbe4205123743bd36ea1
a0ac317aae017c1bf828084410210324448661c9,42d8a29156066b390681f0cbdacb51fc41fc1a26,919f8f383d208f340520a34a8ef2ea958474d1ae
1e6061845ee7923d066cc24f650ae3ddb0044976,6128dcc73542350ce5496f6b56c47c43c0d89187,58560d333eaae261ed84ccdb8fb59166a922c5ce
f81d4550941206cf9269b4a2aabe2d9e42977113,d5613906873899884c47557ca7b064e7ab8eeb15,71ada8453a88ce899600a9de10210476e553f79e
7fc6d5aaa1ec5245f4c4522f896ec7dabfcfa40f,184c612f7865eccc53ad40f688d9ce5d9288f6c9,cad9cd22d36c362b4de12cc3a80e1b207d5ce6de
97ad8fafd8ede9df238e03bf8db06c7dea8bafac,0a6344270a4299f21101e0134ec8aa3c329c5e19,4b4e40dbc93c1a040d65a69cb014563ae29dd3a0
0735ac0d1f05e1a017dfe19f2ea607bbb1fd7113,4f42553cb3b884a0a62ca6a5dd7edf80c5c63220,d2785117df1711e874d39e68494c263862584274
d7352e7b663fb94b38ffba53adbb94db3e2799ba,7a1c50ff87ab6a9a29f41415655fe65e2969b5e7,58a3f2ef64ff6ed1eec0380ef829c93aa1ed7572
b6527c6c031f373876d81d57da3f2bdc3af25026,7ce2f95db0266716057528bd9fb9083bdaf32789,54d65ff75c15029c7420b5e52252dcc15703b127
37ad2c42efb5196359a31351441ee2afabcbab6b,8c3829e6981523efc6046c5aeea5426cf1b737fc,887826cd7c0407b7dfb46691fc5e0c20591392e9
00d5351b55bb27987494d07f39660522d235ca23,dd26c1502c8637ab6bc1741724fe876d66af1104,8139c0a8bd2470ef84212f1fef9ffce1290a3f97
97b61b64c33a9f1ef4495167004c69fb93adc9e9,6de766e40afdb32921fd875aa8e6f1cc36bd8873,f81ce16d2abe8f15cd4477cbafd27c048073a173
d40aac6cca99591f39af1d6bebc2ac557dc0d143,b8fdd7148b07ad5e34ba18c8d7112deec110d7ad,c88873cd46efcbc367c003cc2155e0ce63490a21
90cc6db5cb13a68b33e100eae48ebfbad4432815,7d1bb89455dc26b4eeb8da4b90ae9f70976b2e5d,94d7aeb9986412338dc62fde6603e2dd17edfe75
b40d312521043069d928494839eda85cfa4702a9,e60bf232b9bde0a79d705ec3cb0117d868897545,70998b6720c3a13933ec7639e5a5eeebe9309a83
7e07a36fe49239eb878e16fa050978721cac8b71,d8278b1699b7e4726a8c71a762417fed48aae7b6,3b0d2b329a8edcdfda5005bac6fcf1fbe2070ff5
2db7b8d565cfc0be90c369d503e77c755c5d2e37,26a49835b5043b671493833b0532732c6214189c,8a38755dab7d8d94266fcbe80eb14dc9e4be3d46
cd2c8a6539441e0917d3f4b30b4e28d2c701c674,4fea0e355ea297b6037c8452fbaeeb762402378c,9956cafa6519a5572256e4312b7d30f6a57652bf
ce5a632432ffcadaebbd5024637576561db422c5,d53a81e2d96bd580dcc90fe32fdf3d71cb412b9c,74405ab2e53c096d123dd96f15b5a64210480bcc
e4d7867e0e04f48b998087aa1a217b510bbe03d7,975ee9d9f03270f8c68056bc5a11e8302d705b2f,6993702192f6b4791b0940c9bd2d95a811e8ae49
5e327453a858f41964f6751c5ebf766681d414d3,2cc454da2619ac408e7c3f995c853a434324cc1a,a76ca8f60e8f91d9594f3e7ae208c6e38183ab97
ae81a69cb15a979a00afb3ed7a1bae5022d33bff,54afa37d4df90837c0cd4a7c1f9f674c86cc65bd,6ab6d613e0f272502306f306e05cf72af1904420
38e53727f0151fafbdf10bb3ea48249309ad60a8,ed07cd14b26cf82c09f481b7e0d9495f58b2443c,342ede81ee24eb90a1a31ffc63f226adbf443b0b
12bc43b7b67eaffe29cac3192927cc1346f80b27,660836e027ffc0940291abe39df6c5e9e30d3430,5ded9e3cb308a1c9ba7148ecabe6e8f0db5c9f13
28aaa672a1462d915f7212273805bc1eb0bad471,11d542cf8fe6ac00006c884429b3d4b53778a2c1,d43d58150736e4705ae6ac359df42f5cb484e453
293ddffebd9c09cb3327bb97ce03d0e81346275e,7949e53d8ac045552c53fb29d969246b8ae505b6,fd353ee62cd39073d5e9c67a42b6dcef4332a7e9
28b080d9bcc50c59ccdc9ca300e48a3c0d05ab04,38100cd50193384ec3f68514d15e32d4c47b68a8,437faaab1293556a232cecdb3a6c7e5eda70de95
649173001c2503161bd85280562dd9dc97ecf800,d786b639c016e22d09da7c59e5d62f4d3c4085ff,3e036e4ff83042e70c62561455fc5044991281cc
75e061e06f3dd6fcae380256b04c115f8c6e8296,3d204dd0daa2ebfa70d37916960c7c366317a6d4,6149fe394e66d4612026cfab03847dc79e600470
3d25e52b614f2fdfd0a8e29f6b16971c9eb9d727,266662971b00a6d943b63459b42384272ce3035a,1850eab89ad33a4291f4e431776c38ccd3aa64c7
0314ba9bfdcd7bd092506e692df7b84edfa9f648,ccbc28dd85650b3db35cd414fbcca3acc1331c1e,00e528996782c384b3a03cafbf18555420898147
aef32d5de98cdd07c1843ced826ed128b84a2ab3,2dd0b55d0429e5d52bf853e5622297b6c4ef5424,964aa8b71bfc312e004d7f41f0d0e04a12313de6
45374be28e8b735ab8244d1fdf567d2ea4574905,9146eaf0839015e323a616b828ad0452445daf8b,b3d44a9da2f83f263d3ec81f7c7fb1143c52a9ea
a1fad6bfc0008b96742d6af4ae4144de16ed76a6,cf81682bbb0e0d28332c8bf2371c538d7afa2477,dcdfad4dc21ab02bdc30d4e197fefb2798dd19c8
528ff51a8fdb9c064994cac9f77cdc08729a5e16,31bc7c40541a03452991263dc96dd08f30d0cf28,8b0ed99fbc0f72d4db1082d5b75f13eb04ad0b11
471a735fe61eac749ace9d95f990ec38f006c89c,91d9c3286a16c766e0b41e6d7ea2968b1b4f1e31,517123899ac290cf59b795867aff780e1bd8e139
cd13d5bb3a6930d0b5d41a6602e4d081e171cbcd,d4a2f67a6d619fcdb8130a618e86885aadc66725,b480979c538387c54a4651c3063f4eae96cc7ed2
81ffe0ed36003e5f7d0de9e7a0619bd1481efc98,5e996dc18f9969d3a691625a19ec1e0fa75786dd,a8675300565e967d717be4fde6b0207ffdf1f5b3
d79c549f039365c60123f239cd45149a037e731d,27fd290150dab0dc7c05989e8c93f3904987444a,51fdff0e7f8ab62b1f66450fa930af1d970118ab
2ba0f42508c179af0d79e41d711493b9eccd8197,a0cfed14fa4e9b0b7d6659043b60930e032092c3,424686ce34b2a84815ff79e6614b3bb2ece64d99
46a9fcc5f93074c9c37fc2539cc9b19d094286f6,c0d6efaada138f939f067562354f1dc483c5f353,9600b5276ab4e010dfe8a316557c6757515598b8
677fd4fb00c070eb2f5318589245c2ffda606898,a4ff1d185e956160be4d3c4ab96cf70ef7598a7b,adac1e6db211ade0b010590d5bce76ead3208f13
1a3d651cfb70a3bce17442b0cbabb3b66412655f,af206dfecdfff756a0c85a01ddc6b7c14a019492,1084346b005135274fdbd693dd1ff5b744e87707
cc15c3c2de57d0039fbdcad6632349c26e6c78c6,a20c83fdfb69413a5ef7587d6c29d491158f7487,97e5936f788017402d80384ae987ac55ee08d1c3
d60300e807e911efd4e903412082084b21db8e07,1ed9054bb9e2e228524c475cbf10d389e5d09967,ee98fa8e3f5f31ebbad70b1f2225d62157db2413
9799c6a5ecdbf7d46363a0bfbc8e0ab7b94cf565,60965cdb69c7c9f0142138ee3d112bc325488174,b7742def46354751a38bda786b6abc36be303246
06917784d033fcf9e4a1c59888ef5758971e8105,359d23e595e164d4e895f90425ab57d1829696d3,dbc3e71edac58d1896c0896e5d3ef211a0b471c5
f3eb7f8608597109a29b4ca566ec426d5da1ca5c,9c3a66930c7be316b97b9e932140a56cc0b35394,1ddf0149803ddccb0aad22d3e6545a04f17bbe89
bc7c288703013afe035f8d499c20a197bcb892c7,8ff73efe3253c3c5ad9606fa609a51bbdaf254e7,cc15a2dba7fc9ad98ecc335fcce6a0c994214a4b
d1e239f3c497ecaa770cc162b3a2c7668fa7aab6,e945c65255b470e02ae12db2ac32a684395325ec,f0760bacc08469ba2a50452fee96306668294a43
d2231e99e8cbdff20da1d4331fec565ecd3c6861,23debb77b39082f3c483337f10e4dd454952210c,d41d98b70baf95c1767395d713f1b10329c0da29
c8e4a52428e84c11e26493aec1952532e60fca1c,d81170ab23c3f1f76c69034f96d8b1e88a045978,99943610cbef38f25c7589329b5ef5b5532e5cc9
cfe85a036b812b0c167fb51e14300de975abd82e,5c91c89aea81931b071f69738752fe5056e16ea1,231bb3df8d25606f84aca047230a79ed363a6e9e
feb7d54553838a48873fc2a198e822740f2ed733,f5336f631141e3f43711928226a7eac5cc803991,3e2b0ac8b96d739b7f0b7f36d4ad432bd094a551
633f905b79f556c0782d6381294546ea61ecbe85,1ecd60e90dc478e04cf910ad9f6aefa035134b21,aec11012e81c937e0fc5ffd791e75a14dc518aa7
84da5e619c4adc3c72c5a6f2da80c56be2899a72,190b27ad45fd6e8dc45643da93fb09c8f85eacee,761b45196210d758fabb7f87573c2632f9dea107
a685e2aa5a9a37bc09efe484f9f2e2c825b46a3b,31839028686478d792e9d61b55e2435d85afcae8,05b67c740833c9bdd5dfb1e20e9302943b7edb91
b9ca30165cefbe0d857c4f2d32bbb6718b141bc5,80523e192a26f9918a7a942d0adffca8ed180f60,1a08d76ccb9422788daa011c3fed2d3f464f9638
562ca0ad801ea4d6015f8c9c971c8929b9c428cd,4914a5a31f907bdf8ec97ad9d9c5ca3ea52b716e,993db6cf32c96c03e2e339b4d30677211ea5052c
36ecb2b5daeaa10898b4d276cbd8c2ab33f545c8,aba44452f36284f757f4b8e899910b328864ce12,beee98e246d2684dc0d1fa42ef9c77c59a381733
0e0c4bd6210b11158e9ded139b9081858abab805,4f359533531f7348786202c51c0989a5d8697f32,ef4ad5d6699f16d81051d5c7c28054fc05bcd1f4
e4596d3db4cb1efd65e655046f9a4c396f8a0993,69e7ffadba6ea06c82ae706349b6e1e46ca072f5,ca03194927cb28f787c797149e92e6c219bc7b6c
dde4d515bf98419f0db3ea2b22dac6002637d57c,822a9e1bb1b1491013113a506176eeeeeb82afb3,400094921cc3714875282ba96219af966c842d70
69d552415a179d6b2aaaaf1fa93598d92650e0eb,016962261f1370a825a94be4e86b4ffde0662856,4ed3e6d00211429d7ef7064ac579e24c876c86e4
9d7ea2c069d125253462baabfeca9cc814701fcd,cf7d9fa4c5a22f6ee4b6ad563c54718107c168f1,29ee863e8faedc99e3b12b1e4d66b21bf51cddbb
b1a18f569018cac1082670353a18f8742b5731a7,76fc3275bce9cd593ff9841374ac4ef572336eb0,c883683b6af371a8e4f2c4f709729d4ac1766d64
334102e3915212911b03280d719e874a35e9ee2d,1f0c72b6c18aaa6e2aefa9b6a250ccb461837e62,5ac4fd0b133541f705dd3478fb90a6f8f75ce70e
b18e3810499b15d3f0d4dd4c5612471523c18e68,705b2cf62ab01655c2c7f3629feb386a3c86e703,ffd461860b9e36af008caada650839ab99845053
2ee8a59fbda3b2d7fbe3b160a644459cc8064f59,85143f515ddbb545e199b5f2b3725a774d4a65fc,7c545cfa8b3e4d6d9950cb61ab1fb52b9a3d7689
b5d0cd57edfb7390bba5b8fb7b617311774ad1c5,507e728ee87ac8f16aa143e58e7a584dc9551291,a46c6229c516a172c35f68e36b2d35f6713d93a6
8b48127b2c4640fc2199829158e31781082d5dfd,ae83472a06f37feefb22a7906389ebb8d94d65a0,083ac5c1142ce6040133ec4da1318626367db612
33a389dfb7dee9ccb787d70e6aa12cfe7a2ac330,44d9234f385531cd418214f6c14fff10712a14f1,1ea876b5173b6823a10898eb94acec7e7f3a2a3c
508e0dd01cf2d4a7511449e4e84eb5febdffb847,130d1e9d4050a29a8f2ee10261f59487402778f8,dba753eb8d899be32b91af258182243b109b74a4
a7be888255630421c404200098dfa23c4aeee5b0,3ae64e5e175d07677d9c367bd41a4edb101d2a16,5c94ccc4c214ddea0f81bbcc1561a0ec4f4dd07e
eb440e0ff132cf5854b326cb80c697d359e048a3,4cfe27bd3cb3d88560c8a9eb56f8ff88c6e3f04e,cbd4e681d0645c8f85c69ce0784c3589ef37935a
d247c30965fb9ced124b85502e7b1e7208a34da0,7d83cea8da7e877ae8f24395236e6628372aa830,8c73d0a0e2fa2d847cdfeafeba39203200fd7a94
4b4f9102898615dff742cb8bd575162c5eabd518,52211eb888bac6388323fd065939bd9ea68de8c3,86486f9c463ef9c377e294f3ab897bb5e71b0306
a348dfc8060bf369c7c2ff3c384a49e6ad67ed23,ede78f682bd58132356bc6a29cfcf70df0dfad70,a67c85cb89a556194d53dbf3e23c09750e4a16a2
818e3ae6e508788f628a7edc55782cef1da96d77,e1cb1881572cc0f36cc92b518b3f57ae9e20691f,17fc8249170e813e894645da3cbbed8044a62b4c
0396174bbf0e312992ac44f74140338c8af6bd11,696aaa4a4fb6e085af2d7e75b18f954c850ad7e3,b6390354150470f83457c679541360a9b387cef1
17c0765655f44cd0ac761df780f746f435c3aff7,d7e24e8708bba502dabde291f496b4e2feec3b0c,63d9c1f077fe89360a57f07c3fc5619f91f43090
368a77d75e78d0cae0c92ef4300117ed07afcc3d,10bbe83284ec6c42f13c8470ce95755401aeff9b,034c361804c13b896340761ec26f09b78cd5b1bf
9a8c6fe93d3ce3eda84042f2a3fd8b64c50e8f1c,7c023d33d0cd106ddda298cac1e340ebd5a098d2,2123c5994181a14cbd912c4064755da6ab0bdce1
b47687852e39a2925ca9e35f0b9657c00ada96bf,14ad18a82b20d0c9cf48bcdaa8cb0e03a066087d,530a962dfcddfc079343559a51c96f7ca855c906
e9d8bcf484ea417ab2d599700a8e8e5a5d019df2,d1438e0d3905fc5ba6315e4b4bb216b2d07746bb,3707000121d9a39ec876fd4ea90bef28a87eda0b
da0cefb36425f2bc70dcdb2ab8ed7a15ca1a14f3,5769d737d1849f01f27faa65218cbb55ef505e2a,77c51bf7e2ae535b273f6fa9d0f44e3ce6c682f5
6d03a2582e262a6845b3b436b02a4909ef3af7a3,f356d8cc5198111bcd53e61cbc6bebbe0fb16960,91d3746adfd29cbee1f14c8e0456f09a2228d947
1eff5ae28abf539fe25f11c8206d09388c5c75bd,fdae200281798334038bcda0cf43790d4ea6af03,8e6a8a36cd9dd38e516b9af63180cfb70851e5c8
a6eeaf2c72770f56ebe59005a0d2af0a62ac2d1f,be9bfbecc588b206ea124d7d2e27cbdcd8451e30,8cacfc3355fc5c82aaabcc191ae368b282d3d51c
b5a0c3b1b6be6538d7111f2863e4575cd32da662,4ff2b54f704618925c63c8f985a72eaa7c926922,66f73d466b16f14994b112cf6a6064fc271048e3
19658ea42b5f08f6511cf3594ac3c4fbf4eff318,213918037918f4bebdefed4074e5f71b72931dbb,2f5fe67e56fad1e8a05058fe3099774f5c26d19f
0dc2f78bc8c384579be8c13b271444eace7a04a3,abb5294b6e9a9caf553211a291f18266daa9d4b6,7e73ccf915eb7225b37b7e156d2985e29990fc45
d3b14eb1ba8dc3b5f2ca1dd47db1faf79cffd2c3,149db318a0c4a4acff4fe5a23d43dd66e7704017,b900e5f61157e6ce28832f003e342f2ce53274f7
66ffc986c02bc46b3abf1f9e6defc054c4d465b3,f4abc07748a03c44b43ad1e7655abfe0e3cf1db9,fc039aab28d32444a74aa0a9b3ceff02ef11fed1
00d86d24be1b301eb7cada055e591dfc180db86b,180c23b3956a04de88e75ff33bebceb6b5e0fd38,7b02331168b52fd8f59f9dbdff6cfb22ba3078dc
44c8193cfa93c9417b9f5fff5abdd56fd68e7145,b8154e387757772ddd003f29c78cc8e297a302ac,bf7bf44727c0f26577e093a9cccdcbe44f163171
b077d17cddf1140a5aff2f176e12990f41e00e07,23a66d21bdf93f93a84dccec9110ac1f3d725b31,3a9024f0b77a16b942c6b6afe42ab42ba859717b
4b4365a013af5f5de21d48622ecd6dba2b22c9e9,d3af1091b6f6947dd923fa2efc2602396323e1cb,f6c487dcd7cb1de2781348bf2bb32cd034078eca
cdbbbf036baf5ef43329fbdc85b7773052f52b68,dcabb0151fbbdd802b70cda739aa920ce91edd45,ed7da321f572d03da3bb3a89716cc51e5578eb85
b667be825ef6555eceb4cae7c2c372b514617dfd,a95cb9f35af90ed8f48c816e705deedbe3e09056,4c7dd0810fa8ceeedfe7645fb79d148798c92772
6ad30649add5a4b1e75191cd0583ae3dfa8ab572,aefca4c22b7142dfccf09a175500af0d988f3755,e8c627491557ec9da82e99d2c834db9d6f284e0d
23dd7a51731239e06e2e1bdbc966d240dc4d21fc,e9fa0510d0b589026a57cb027fa45030b91681dc,6ff63107a68f173d9c03e99c41ab9c40738b2ff0
3a98dfde1b41255001728ca5fd934c3768a880b9,3dc3d83757e70ce1aa6bbdfbb0726a7508d72d87,1e60810df9007fab73f2e5da4304655e95ad8995
584e49c6a20fe67d9b1ceee2ce99a0a3ec22d3d8,736edf6422e705c231b5fa076f16e1b671974a8d,5b46c44b7d47c686996b5576c5bbfa98fda6830c
9780607d0577980ea8d6dbc88ef74fd22be6e75a,b78679afa10ff51af3ae9ed5cefe3e64bcfe7be5,3431cf5bc032a23946e4e9964949648242836e8f
cd3a06f66e944656d87018cac9d45c542fbb3866,57eba4032c0e8569b40eea12123b3c77e31ee189,1b26f5c3a3acfb77403de38b8a5271bb03fb24ff
ce20ea80436b8dc97c226bbe6d7e3d18269268ef,42f15792ec8ed8752024b5b162aff2b3aa159022,a188322e76155477bc266b686db87c03f7f1f8d1
36293b8dcb54910a1783708ca0d897669f3dadb1,683b566cb7f30c643103d8f2d941c41f3be2e806,abdbe4065b8a62f30500c0f5d112b2ef33c98d56
3e7d58bce78e5d8c5dc6c1a2a6f34f910112a59b,0a23fc17cf11bf02b021e59ff2ba9755cc8b30b4,aeb17a48fc82636dc9e82da0ecb3bfa2c6b05b18
8fd249807e3d75c74c648b350256a5584ea1cf02,8b1824ab3413c13f054f7e73494ff0c6449679c5,2141465c58344f56fde321bda4d34c04f7d35946
bda49f7219492ee7a3969790839de81de513b3b8,a0fe88b60fb73ee24c27c214f55907722dcfdaf3,9073615dea4160ccd37bccaa0dfd78a1d1338c63
9fa091f8f5358d22d1d97cfbc257a9c655aed209,c24cae29d644cb68b0620fe1c576a2b2eeec5ef9,0c7aa1805d0f4e3574ac42cc7742007e625f570a
1850aa96b5e0afa40f5916a70921925268a3d0b1,477b9ad5568da3430987d95eb6ffec03b7e6ae50,322301ef0b108e3d567b014af89125157c7c0a52
47b45068026c90557ae7a99cf0ba1016782cd924,f9ffdeaf9e0066ba0d4c09e065e8200e570c35c5,6914d812fd90dd2ba82ca62ef8c4d4fd55642d74
9662462d10429c9a6cc7f17fcd5ea25af0e956a8,f3ffadb2173f7771cf81da3c17b93428ceb44f40,9eaf79d30c7edfb8dd0c7005f8c3a97dafbe4784
dacbca0379997c8615fe24c7ea70c6910d4e4ead,73aa2fd2661a9c3eb215c77ec503045891638e0a,94e399faf701699bf5b211ceb581ec4461377936
fe6e7430cebb9ae654c7a0351f453d9e1b6ed960,987d2174a392b313c304dcf70b1003c91c8d05d8,fe4f12172124b3a6fe604b20980c556e6361ced1
7b0cd590a60f1d3c5d836fd4d829cb1cf86c2527,28e1daa8e1e368a02e2f08a7fbc1b3275ad0d62b,e91c8040eaaf56e3e6e85edebba4cea98407289f
23bbf87c101945b090bf3ceb95a2ad72cac77c6d,a2deb9cbf119b89ef0a713519cef36882f3565ba,088f394440ca4f75a0aad1394bc6007814579711
ca0dad1ce1a2adacdd7bd4cc7f1678ffdeef785d,5c215cd5244cc844399e0fab09cd04f8f1f774a9,10d913624dd54fbe8fb3a55fc45c77fa6267c84a
e2be33b4bed12ead6e7659c999d5bbf4b8ae705b,f259ca5e40a5974443045759f7dd2a4cb380e38c,e7cf7538cdea0ac695ccfe3a1ab5fbee24231641
00f015f593865a453949e56db8edb499766de06a,8e1ecb6a67c48b8c31a5a31769af555f1fbbb87a,b5de5eed0e28f0d1fa3bad97af033a2038dd4bb2
855a1fa03e2a50624604526f6d4d8c4e57bc98c7,ef16a99c08ac8201c8264b9dce44ffab4c596af8,dcf6a97d64c9514cae9ea9866bbd954ca0e2521c
cc063e7a9c6ea5455b4afdc4d3507eafa45346c1,73420dcacedd0ea88ea26f3c9bbabf31903adc4d,c83a047dda5fdc5f6e5940ed6df0fba708931e05
210cb8cb74215c76bf1f3f9860d082e3139ec2f3,405484df910cbf30379d6b53d226d778b9d908f4,e6b95d37e63461443059439c72fee33e603b6349
297ed5cb0c86ad6283b5cd96201ed921da64a286,67bee1b652e6f0d2c01e70c7e3bbe0d5de10238a,2cfb790eb7560f8827f086bfa678e64888783957
1d629270cab501ebf0a2193b4637024c2a59607d,dc2261eff041fd500eb3d4df3cb1a7cbb1302af6,742158b678ba56230806c0c590c02602e528893c
46e5903792ac7bbf9c21910db01df1c41c0ad3bd,32d0531c7170455c208923ff1f47ed56344140cf,bdeb161d85e590f36fb0b5eb88c2cd1e3f1943ef
570fa22daaf0452dad786205b123fcbc10a8acc4,8e58bbea61d4288547dd5ef7aedc06b7651e0673,bb31f32941bf3e95b5f231d59df37d580aa6b676
3d0cea88e958ceec83fad9cc86247aa4ad7fcab8,4acf7d25a0312bd7dec9700c8e2cb1514d25d7da,ccc6fa0ec6d2d4efbdbff40232d50e2ec10866c6
7c56f544cfc01571446e611d151af597b03bc775,e048266473f06c7e74ffa726e126a1cb3e11612f,04b0dfc8122fb817789f221f7925d9a613302735
192b8a8bfffff7c10937a878d2ff280f346823ce,53df6927c5101107ea921e4a68dc36d535c9d57b,c1f9d4998b432d1587c0e89de8716daf24d465ea
c883760ae7b4469d893a1f8f094080d073010d47,46dcffed421e5f6093b65f17d6721c7cfc46a1b5,c82861588675daba0fdf004b5b471f314843ee13
6f17e9122991ff051faad0d348aada972cd7ec90,b1b623232aa0147f35d551617dd49e01bd29a740,dfcdb1e742d327840d87c5cb7bcba0a79e82a03e
b2892adebf22e769736c9191ff4a9b33885efd24,37b7835b12bfec0382b308575ea4742223c01cc6,d79c12ad5b7efafa4c8e8d7d3007d30b5794ca5a
431d4395eaf0c4e1e9cf4eadfb0f1de0dd4a1047,b8a4a72760b1db9dd3101da2dd82011f1c6666a4,bb218b2fb1265c5f413c76f3a8c7c7ad92d11071
00ae194e0a1ffe6705a6b990eb5b585284eca598,25c1112898f1582a967e784b111762808ace8a73,bb684c0bb310f38d34ad4b0b5bc5cc3d60bb32c0
9fc475923843d43e9fb47c4cb1bbc250cb936121,978b1212c5aeb6b033d786f9f198d87eee4dbd5c,dc843bf86c3380661c9092be452985dea9df5621
b201ab9d1dc597842b64a6970eeab0c964e26dc0,28831a7734810f0bff7cb0cb7c67fc4293ba7fb1,3d868d13491b82ff41be7246daccec8e330af3de
0b3f80d231e504a0d942ecb694e81dc3d0d15ca2,4e877c3c11da6a50e4a349398935fcaf779c56a3,481ef7273e0d4c245332785f44ab8debf5cec947
eb29d4fa95153879d9087c30f5381fc631da98be,22ec4a20332f8208273604b46e727e481f6502eb,cc0c46becec5ff1afd53093cb81583a19f7cf1af
5f7c9b17993b96112b4b2a971b02d5c82ad21206,9143abf069b233f8e1478150de2bd68d76f748cb,63d5c0078df75a9493867921dae6c9070dcc907c
ab9c4996508936b4f113a12220f68bd34c467ad9,f768ad909462fc45f70d81875597d5e85331d26f,44d8cb3ec1fe097e9f5d5a5390a10bf342947a1d
16e7b07f0fce34375fc5b498ab2a65b643570f30,8b19929ad9efa332268891a6bab296749df9aa9f,e55ff3763e0ae97e5107738d44fff2c4a7570d48
397293f09f7a3e116119ab629687c64aae507539,b693af69a65283bd65883d88be7cef1034eddb48,74d2d2f0d8281e0d4a293d5569c832f201bdc3ca
bbc74de2419404402536ec164293629266789f80,e035f673391be4cc075332455026f46d4ed28473,d01efd153c4e9fde82e66166bde3f3ccb1a1434c
a9f522c29df6c2ca2189c9b9582840d52924985b,5d4bb6db9be290e5316aefd9cd7cc18945b90307,2262d2050defed7a5df8aa6c70ad696603335d3d
4ef30edbd449910f1a5da609064eda65c184f820,2ef822e8e8545cf5335254ad8f7bcf4ae05ac77e,a1e9dc444781c99cbc28eee7b8b9fda291a662ed
3e8e02bede899086d07b0a34cf798b93e594f7b4,00fc962ca310f7bc56a3962918a83fb68a7f8459,2baee68fddd2b5270e6110c323bc436a36cb38c6
03689044d95ab61e8c9ebf99826c474bc5e42576,201d38d6fe1a8be5aa5237807103f49b4c8cb53c,4c97e43bcadf0f4e00341c08489fe412a62d006f
cbd641720132d798a81453f327b2f2cbb8293346,c333863330e56cc05d2d72d26a87dbe829e59e56,7c9506a62951e3a0c9d10812d9473b7d58861420
83807ba780f33ed79f97b458cb88c734033dc6cc,ef1ca55728d8c011a37796d2962613e3cd880eb5,220971289a712e00147411d9918ab8587247c4e4
6c0be9f534a2b1c82200e6aceaf751c20f111e9b,511beac49c57ef4c6791494a450cad1886a4fa9a,b416418134b84248bd3508e7dcf4aa08dfcdecb9
54dcfa78f88fa0e0bdc48642bd5ee3b27758f121,f6419874645e723d5e105c8f78530a31827ec9e6,06eaec4313692b4b7b56939b3e71d56715f79171
6e655eb5a3f59cf4a6e89c0d3e3061d092bae4a6,f626efef37d3377dacd1306709f7faed26a6d15b,b74411cf03d616201c8bd7a7370df77918d80735
75d7b66bdf066af9f3dbd899c5db07e37c183370,c08d73054a8e99c38a588df27c30115f298fcec8,bff561063fba763a9be03fa8b4d609040f849292
ba7a76bf37e402167f65e8a7a4ac97a0bf595da3,538670c5a23a14ca36ed47e3c6d46f51164b861e,9d283cd983406aa6a6017c0faba2ad4509385dda
b5ad06da4beb8f88a17320667578ed2d193ef7ce,7e36f16e87086d1059fbe9e628fcd161b12549e5,34b6d4f5723e2c1a7461b6b9b70f2de88a503ef8
7a963ac56a0921ec1b12701c6a4c02bcd9421154,d544313698982438389e638758c5e3799b876ba6,a99ddc37538bfc87e169fa5b65a2af1d999d7f0c
4f10c539baabb55ad648b1c23fa3edbe77295115,77cb7cd454d4c98a9ae46537654a63a67e3f0046,31448dcf03274e3760cf27ea838b56c86fa9591d
b28681e91d1fca8d60f7bf371468bd0f766d1d39,6618c0dbf7c282a58eb2f78c868f9ecdf96d70a1,1778fb6fe3f01f16c7de5270b19d3e2f15d941f5
b7edddf9d9274c827cfae90b610d84cd0f5ad7ba,51dcae0285b81ef36f481102046815e8163ccc36,ac4f90b4a7f61cb23772e38cbc613f72ebebecc0
a602ae8685b573ee8f04610b07e0e14f5511eec7,7a31353164ced364430e6c03c0b656e13360effc,59a1199110f4b4f9d937817994c2f369365ffbbe
63734fb7923dac12282e5dad47fa17737ccfac49,800fb6624e395cadc11b0a4ceea9e2ff014211b2,99a9cfbc718e5a4ceab0866b149d95bd7d39aee2
18e519963f6759ef68e90f6328e9a8902df63550,dfb401506707280f0b745e0c80891e68034e84b5,823b376a9d827cdff8fae34d8811d871a3e340dd
782b70776365c018c75f918ef8ca7606624fd6cc,5acf85a932b7afeed5d0c53e1160abaabe5115da,d790d7bf50c88da2c97be80caa978cf1bf27b1bd
9352e09849d4ecce1f1dfae8948e864638d70e96,f7b9eac5154cc1868d81a8431e99b9e117e8ea18,5d0e2993fa99cebdc739dcabd6c07ae3b906ac56
f8b454779fbc4d64a8f2434c905f6e5a380576c5,bea36238e7ed10caf56df832ed070f569d6892f3,b8cc7fb17591772e40cc2232acf85b386ffef5a4
05b73f1523b619c68e08f7a63f00c7211fb698b5,4cf202180e47ace9e3e796c3a1d556a931df1ab3,7343a129088752d50e578547bfc8996bedfb0780
183a10b2928f2e804dde61b04191af01c8d05d6a,cc0adf66d0491527fdad460db144f372f6437b62,f7bcabd9568c9c27b86b7e77fe6d01c1fc6f7d0e
2469fe8d700ebbfffa9d26b76f7c3607e9f2b15a,0b97f169b0eb951810216ef03a36200dad8ab8d9,8498eacdeb34d2b8cbffb24553914ac8af91912c
e2431d41ae1e88d795194838f8fa15a97d5b089a,cce871258e703b1305f77f2fbae347beab7a5f1e,f70a430b6f170703190d7d53da1706b607eaf1b0
d9ec917586b3d945bd4d79a857b165c3bb0aab81,bcdef8341e0216ed104673fb40c5d61189d3a4e4,4784c141e39633131ec89b42e7ef593370f2ae4c
6e575e753eecdb77597caed1a12f85ad37c63b28,8450d4f5e7e24485f41314364c1baabc88aff5e5,75987e9f0ab847cc0a27829cc5aeacd84c87ff72
2d40b7c463eb3c0b7eb698c3d506909e0fcb0103,091189a40c7de400cd14c694740904ae3032b47e,715e727dc3214650e106e4a9d63566449be54e33
4affa41a4347b8b8b57a3db26e53c3630e183f57,8486986ad7d9f85db741a0899e455e468a617b8d,f52350382817a9aac3bbab9b8e869332d209bcb6
2cefdd35b56c48ff4f48b119b9e13582e3940d2a,c2584561a1a567f0f84d41b4f30e2312af7fbba1,3f4298dbcaf7efb912eea9a81db216fef6345903
1ccc23fa7009aaa7d8ac756768e3d2712ae2be47,83cc5be95211d27dbd651920d938d77efd469669,208806f27f0bba55aea91961bbf1d1560cb48076
930596bd85d746a12bce9069159035d8bc9afcd3,22d7033d18ff3bad17d2f22331de5f47e296e0fe,f35384ba53ad9cef995d5ad0f13753835cdfc89a
bdb3d097b5572bc7742604e66b7d0be57e596b3e,6efe984a2da795b134cff8743964dbae083e7e63,57fd8f13c9c8368db8949d835dd7a81d32f8b109
0430e1bd1ae4c64aacb78fa6a8f08dacc108507f,bc03b48632954b3960c85c502deb2bdcc016bc32,b7afb6237fd0a50d85c54003ca5ee8fed8e03b05
465537583b5c51f1e8e0d2682c41335e26787ed2,552ba9353657a25e0457ae36842afb8a8bbe9113,f2d44148fbf28294f0dabc8ab4260889e2c7e070
b67415d1a82a54b96349e18acec88a3ebf680e3f,bb27442b1963ea767dbcd322ce8beeea7810474a,f6726b6a874fd6280cf343482c50168247088400
c3ad885277c002e7638959e14921f697fb00661e,dad75d44722010acf9c23518958d754a6e3702c8,6e73a3b0e1e2c813785f9e104f4230988f065a0b
fe6dd84d0172170daabe5c2f3baa3f7b1f5fe24c,d96448cfafabdc0116dbd1f7e7c983b2c48b5a3c,d486463bc1f0a9aaa782da93eda78a9be3c5b17e
12f0ccbb0191ae2658189b83d6ebfb655637a2cf,e2dd3a09dc4184a0debcc3d87cfa09806be7418a,42c5e368bde9ca694e9389c5c8d64e6fec8bfa8c
092ff254f15618cde13a6a741dc1a6f7b0135b45,ee6bfa357a056d26096ddc9064a85a45e84ce5d1,959804798cbfdae932b7ed962700ab26f1450975
43d1036b3a8ad931c8c7a2444b2daaf08c7e665c,1b44d17899751257fbc91703ccacb8290ede4ee3,ca92c49f8c8d1c226f2a3505181510ac4632a90b
fd64cb8c5a81b739a2d331235842ea431b47ad49,8b106370365f6ff8288671e867d95361253f874a,e221096a029195a0356eee8cf59f197fc0d327bd
a8520ad03e940aca0bb07733be738f19579f5848,530f08d9d385c84fc7fd653d1f91754474f2dee6,4c4388f830b5c8f02caf246248f0387eaec13204
b73bf4a811259248674251a03b8a87b94d7c7980,97b79b3d4e67126d1db9745e5d3d5be33fc3add9,8d7a6cc778f939ab48006fd2ffa2c71b13ffee22
1b4c2b055124e6ab99c3a1464f8d7ae0baa2c5a3,fb872569da337454566eee04a45f55c09e26aa02,899343f07c73046e6e1bfeebc830d17bee304a8b
f0257e8424bc88a93e3b082c6e733dfe28bf94a4,f419e9dfab8b6c21585edfcbd596cb42db9fa6e0,e9107bbf4fcd7547d5ad0ccd8a13350227884ddc
5a2b045388652a7640d3e8f3dfa0f69a9d7c15a5,64c27a86a8544dd6e0eb8ef0353afb4180b48c28,d0c33bfa5d29acf7caec944ef55cd8c04a7508ad
87cfd7dcaed01a183d42256822af192ebfc10790,0794b375dfb5133f130bf8459139946bf2caf1f3,204575594555ca74e78387772bf993852bf7b7ca
a0a17d5f07344cecd3087478f023b983b0cfb3fa,7ac4e38b71c5f98500978076280a56b14eea73d3,7e593750e8c57286c6a01977b6834401bb8f6391
ccae78f97a11267394bc62419c78e14f691fb069,2d0f8467fa235f102b3b7c2b39e5e00a243ab8cd,b95db4b610eec3bb298d1f85b30e36dcd799dae8
db9b2a6a9563f51f8980a265dc4d5366b92e996a,8c8bef492f7fd5916f2dc361d0a28022c6a06731,4b92df28cfeacf147b4a3b555a1123282a5bac08
89b1cdefbeff7a773a31187097218c3138e6fb74,0f591ee616b461321aa336f554285cb06094b12c,0b0193106fdde9c4cb466beb8af8136ed4fcbf41
b6af220f1a99d352a574b0dda714ae57e1cde29a,ff89a4815aebe723cf72d8154bd227a7d24a7db3,3936e35b73572f9ee52f66afbc962638fd07bac4
4a3b2c3c32a2fe99aaede77640799dfc8090d698,38b5a4cbb7546f1943ffbfbaef6124cbf178cdbc,4e4f1ec4de1153ed5aeb1d2732bc14d23d49c9f5
25954d39e4779f6b4a8a8e1c0b58ac5169eb1ee9,ede14da4d24932f581704fd74871b041c425ae8b,e4af0fc1e989534551aa5df34d8fced260bf2787
798d793cdcbc23dfd952e85bb386d7afc775e71e,6ec84417441cc7bbb04e0a6e8cd2bb2760dc01d0,c48d8e9708a7963865223814d4a4a7e5bc5422d7
ecbd0fc0da5fa688aa81a361f1519e42e3038e65,08762ab8f0ee1043f3ffd06f661a0def4fb4d7c5,0b49fba6371411abb804cae8ebca925b54ef468a
4267545c72371e41ccc9c039a52bdc9d1eefbe7b,36611e66e62becc8dd75bb7e42f87966bc65cba6,ddf56bee7a4a01e8d8b3429771e0af8baf16fccb
4888442fb425fc85437547d360ced84d6c65bad0,303834e2a20989011dd4910498bf4a0ba861a922,86da0baf02481d1afe25962bcd46f243edf3566a
89da1e07291a3c6ef97ac56791ab9d34683e18d4,d84731a07ec44969b92739a42c11d4d09a959c13,3855187038d5ed929224a2c9877dff21b3c0f349
bc7ed55aab86738d7974bde4c0ca30a22076800c,2301f09d7749d3de96f2b13c9f5c919d920c0213,f6402d6ff56ffbd048e1ca5505a55da833f1ecce
94a4a38ad68e81c676361c556e17d28ca140c5ab,40f90b60eb0e01dbd415feb19c18448ccf313547,1230e5a623c5c8e31a2c4f0e09f9f1e3fa89e28f
28e9ebc7da23e7afdef9b8849717f9084360fb3f,4d732b44d47e2f0bc6a5a1216bb6d353f465e013,03f98e749cebb73d0bb431a430c6280ea25a9888
3fbb5e3ecfcf6507793dccd5a39e79df574780a1,3c6f111209aae8754b50e18dc5f370bd0aac6215,09f3600cc4518e997ac7e517241c2dcd68a7f9d2
d1db5d21043516e6a04b651343d83e5d6bbd659f,0e393084165b9c57b308920039d1c09c1c1f94c9,ad4fe174b114c63c0fc006cdbc35a1075c3d178b
7b3efe6397630799bd023b6abd573a02018ef356,8f37905609f636b79f3c368b05c86727aceea058,0c83b3dc6cc74301efcbb6c83e28fd791fa6eb24
26b6d0223e08565cf3080313a5828462604660f2,b05e85dda988094245c818650f9b91f04a5bd3c2,c236ac5e97b01b1f2407957f9908c5ce99a47d00
e03e62f013cb259d43b056de85e8eba3fd61278b,ccf1bf8addbb8c16497a07c8014bef41a4108aee,cc7325e31624bdd2933bef0c72be6fbd45b982e9
e1e301dea8e7569a7d68160c6891681438057f8f,8ffbbe6a93786927117165a122720e792cea961c,e15f731a9b1ce32f5e44116362a457eb902499a2
8d24a28c56af4482982d8e44db12645baa59f37f,81d24975f0a5f7400bd3c3e7a2f10b34e9bebd24,ac4b089e14bcd6af507ab6e6f9962710968d6aae
0ca0990e8bda7df7971edf4e8d2ce35b56a1021a,8cedb10c3a01510b921bc918d674cfd94b04349c,7148866f8d87292705655f568a0616772f6de0b0
6f5f567087c78419d5c23de88e0618dddeb97ad7,1b8209fee4c887946c9c8c49db9a52c4a3302519,3206b2e0cddde24f0ef1ca944c9693b5082ce8cf
ae495ab8883eccd23f5b1c74023ee109ba26c447,a30222daeda1c37f41025d332d3245f78e3d11f9,246d7865c552f9000a3c1dbc2fa875f055776f42
7b4a5c97283d3f5ce15ea32950469c31eb2c3194,f1050aeb73100c28576e1a91915846e04fd8e053,74ea291454b64f8896d015fdc9bdaf6d5db18e7b
7b213bb4e6a3221062afc1b0d3c40580603f4b9d,fc0fb5968a98f3ba261cffbb679baa41eaf563c9,45f7be1b3c9485e7b3de3c5f48debca75b4bb559
798f2ba63272467b5c4d2e1d5362304c759ff720,9dfbc38a501c9d4585303853b763f72eb9dbafc9,9c4a354d7bf4eba9cd3453d780a55b6041836028
389c927061ea6b73bcef5f198fdf81fd73177821,3d6710c0e3cb9cf9e954a856b8b5c165cc5b65ed,c8b649186fe1bc92d15736ab58bbdaa8c2dbf6b7
04a56e2900f80fd62e34223b3b5bc72e74c77b7d,1cd1415df746ecaf9603bb0afb8660d3af3ea1f1,c45d03851afc8d46c3017888e688ef2426a7e3ca
27a0da5a20d1a1476678f715063450d57954d4b2,1f2ecc9a42d450f78b040978d020eec7ccae3b97,564d50ce8ec142bef993af8c4d0c7d0a4188951a
3a481d9590e9653882161d7696a4c36b82dc0afe,5887b1fee31b80c727a2360f7663bd452f6c5e7e,eb08fd88f25beea82dbfc6f4184b635fed39accc
7f682589c7a33e74208b71c5aad347baab8313d6,4ac0781dd8b0882f761b4887697b88e9ce903c90,8685ec918f949ecc76cd9af7dee43412edcfd858
e8144afb6b2622825a0b204c90d1d4c9225bb716,d775dadced3c86c4a530ab75a0bb13575f5cd4bd,7b3fcc2a2e42d81c8cf01fef3a22cfe164d154f8
a1a0c0e9bacff1c0893d0884ec39389b610ec1d5,072f1bfb29d954596ffa94d129cfd1c2b928f707,f72183eb3769dc2e52cc04b9d54014b3b1540d1a
474629788f91eae38e8f5a8f88d818cb74015123,f689746372a3889341136aeaa6b6ad852a8340f5,295d3f0969c886c51a99b6f6e05aa948063943a6
ba7e87aff39460175a57063e388219653dd45537,9f16b0a0f4f4d21f1e965246e3b2401e062713ca,4d67cd80fcd11e84ece296ef27a2b3de39e1c78a
73e96f8f1e80f882ec7e09ed5c7dedd22c828e32,e471c08cf84ba3451feaaabd837798d56c5f13bc,9d10123b0deb6214d2a16b7f6be098484ae49a0b
b9a198b1a8a1ad6cf66e788bbaf43eb8961e9c4b,1ce0204088233e082773a1d1c27cc2e5c2c3db8b,5d6c8130a0e503120a1fa13dcec305d2ce652e81
a815beea2c83055291685f9e331f7354f37cf9ae,60b8dd4276f5d0350fc869201f887a54bf7cc54b,5b54ab2040772b029046f130fb3c13066923d5d7
2e54ad65fbbc3e6bf100689e572a6b15bfbaf084,7be06582b243e0c500716e9b3478cf71a31dbf65,5a6f7b3e29a675feefb8fb987fa5559fab1b3d75
fdd0ebeed90b99e423335fed1e63e30976a96a6f,5346faa02c531c2f9439e173f02542e9985fe5c2,546c3093f7dcf4953f4d48c0d60c23286eefff29
573b82c67f58bda7f6cfb5cea54c49bbc4c962ed,20d9ddf5aef09214b613679820d325e35a619afa,19d908a964b40ea8494961c0b8b7823777c903d2
128a87a2dc61425e3fa6718be3774aec102d9f06,16f9ab3bdb11659a2ef1d15ed704cfccb17f7b10,9b302983b079c826aa39b405137b4dda20aad420
4c8f718a8b7e27c98cbee65db0b163b6613243ba,60690e379eed41b2e342446bfb3dd7254303c08d,2390e70a4e434e5567c0b4e319da670e932afda5
76a15dbd6cdf30319d964c9fcf22ec7aa96cd79a,0c5281343338d4963135c58f586d662b0219b445,63a2a4d9e7d9b725f75bfa80a4a0841863a07c6f
96cb3b01ded7fbe81f07c8a5269edcee205f6222,d3316831ca76b07f481fa4bca778b70d5bb232f8,77ff0bd111fdad400c0fecb6c7e0b8a4252ef695
9d94ccdc38542b77098666fc821a0e225196479d,f429dab7b3182a39c27df3fc7c9ede1c58a771ae,e94d02a06788c0953111efc08dd5a7c8da5789ee
fbd17b43ac6acd6222c8473f4af0104162b00e34,f38cfbb23f182406164c1622ef22659400e4d343,b4127651169ce143161923d74b03489c1fb13afe
c2ceb4bb9987b36d3d890631835eeedb84b065df,a8ccf71bd0ac5b1c231bfa3d65d900c2cc1f7053,c29fb28bdae22098524115e2d988281e52b6a2e7
6828da9c6c843ea5401d82e31a8b2a923f7dd778,311c023271a74374852431c0d9492cdf2749d4eb,5e53c7fd04135465103cbcdec36cad76635e9e41
b26c009d90049b91bebaca9616ae8e43add25d06,0265d5d0c968f5115b78438533a3c4b6f5e2296a,74bad92e4db4897b52b95d4e5f8a3626d03733a3
f32eaa1564e54eb793af9087a8c467681044c5ec,98b1aee2a515ed420dff3f94d424c625e85ee92a,5632af2afa36d8f178c916a355840d47fbf4f5a1
d33e7920a2eb99afdaf33173b41a0723efd72b7f,ae938e16a5fe5710124240accb3d0cb3420dbc80,bb43afd26d9fd96d9cefbdf658a73b566caa8b6b
94a1f33f6035c5475713f144bc3cf8f1ef01d716,6035058a215e9cc7e73644c0f422696e3753de89,bb2d12457cc0d860ddbbb857d9b867c3eb37fa40
1c816990c33b47ee7b6ea90a2909407295d40b11,59457228111983bfb67ccd8cfbd5953034107499,69140d22eb808fed7f93970102904da246991518
98a7fe6204d5d2a966ae5497b9ebf76325b82b06,5a6b4ed8e4200680ca5ce39d4fd67e0570cd2f8b,6c1c3e35ee99b3646a349e58243530625cd21d74
072cb55315f8c79baf9561cb6218f6fbb77e5057,fd10c8826473e4cf3f333d09dd39e0b218919778,cc6aabaf8b68bb0454c4c960d81ccf85d0e5bc95
4a596a2de30c4b63c7cb535ddb367d9d84bc2964,0acff7a7c15779641a79847fa0a204146e243824,8a92f5f01e6a0b31962e5e584b247c42ea9b309a
2deb5e655740b037102c4ce76c1c0799efb57190,a1892091ed23cc85175403ddf8ef2e5e7ae8bc3a,76e2ee99701b89837445a5b636d4507eb435f567
73287c1fa8d38d37faa60af49531ef75faff677c,060c06c0524b5f290d315b4d91d851fa4265e1ab,b8bf81bc65799e7ba1c7c3747effa274e7869098
cb072b6b8c4a228000f98307e63bb7744bf7287e,4bc9f64b7044a10050c32c7664213e60eaa83507,886c2ab7d173b61c48249bb12609667f47473cf6
81129445c3435abe6163da9b4ce53f4b878e8eed,a8345da53fe85245995fc4c41ec000a3ce04dfd1,493ad0aa73c2e935093b69d7ac211f5c2ea2ec80
8023fffd3ce6e6713f2b508fabc5cfae73cb9fcb,49aa14170341f23598bb18e720cc6cd033d4b921,24faf6e0f1d6bb857952f46728977cd828c3dc27
d14748813333c3e0826427bef025e3c3a5caeb7a,553a1b968d546f947f85acd344bf93a16a3a229c,c70e82bea6620979205e635e5cce6638d9cb10b1
dfd8f5c62b03b013a348f00dde06dd9f7a0ee0be,b447ab211f4af8a5868970fb4ce4143d7cbe9931,4afc656ac59f5c5f7a37fdefb51ccb93ad7c0173
2070a452178eeeba70327863539c0c1e98394b18,e552165b7a737e8a2860df87da2f53c1dae69395,1f19edef004bad0ea37aa0f7dfdef2139de19ab4
8834c109fa68e83bb3929bea9361f766ab3e1414,774e96f8a9ff472cc47bd1a6f2c25beda6665413,a6e7e3e74345e9d508d57eaf592885763bd57d2c
72459026608d111de2682076c3d2464d5df104f1,faae36afa16b19bdb89d63fef546e406dc1bbdc8,cdce37b8be185c37c4de44d1cd42f2e4ef29f212
0c749505eff609a619e6efe07840efa8ad078e41,2da48488d7075d84f0022cbaf0be8084482d4749,af233b8ef8b75f8f47ceadc5cefa95bcd76d1b0b
8d0bdf2f16632ca4385d7c95cabae36f2e7f299b,891e91590fb2ee43938d78065ca3cf1decee9207,d169225b8e9f0468cbe563997e7b1a7885865609
e7ae57b0cd6c880d5c201e1cbf11c9ad2f8e5278,57da25581e2e3b830a072358bf68765a28f9d98b,64ba751ef174c8c40fff1c88aac96ca7d09de115
065a81b72c3d2ff9ca6498c9a11cd2625590daf2,aa0ccd8b59475f48c55f58d837c1f9d32745caa1,b4a83e29a44254ff564c12278f172b2d05d16afd
9ba3b12eaa58fdb22ed90edbf421a33c171e4afc,310afcd78344b1dbe6455df06bf463c9b6029970,9de0025394fcf6d37f7726d17e208fed26a4f534
291d2e911a357f7e82428014d2a57d15410ec3dd,32b3477fe23c5f0639430f814c6cb8a64439c8c4,b7608b045b9fbc05d2ddfff1ad866d97cf493902
79ff74ac447bca6cb85d7b1ed2a01b433716a120,93d855b2ca1b285cf0288d9d0166bf274cfbda10,f7cbed1a72bdf83f88def30a963aa0baee4ab4d2
5d65194777d52c2e8b1d31a22950d4e0c1edfc4b,a7dab71da1074b50ffd81e593537072869031242,db83f9c696ca94eaee9d068bc255fdf719854e40
8f81b213dcc96104d0c3804ee544a80705004b7a,9b63123bf0535b0abb704b898c2e7f4f031c357f,1748f7d860a6110534a72248c1d894fd31d1dfc1
dedc018beb810b57caa9880741a92de64f8f1aec,a2826343bbda17b2063e06c511e83e36cd9cd3e8,3b7d9956ca19fa5b451c80cb8d1997e75185e465
64e87c87bcda295da38e615b64068e1f9eaba1fd,de8d54cfef354dc0dab00d3f19e7b463468276d7,e30ca2791434447e1e7df097cbcddd250428ca7f
4aed151833107e24c5256561422011dc5c786ed0,024d2bfd73f96ef948a502538e58879442c2fd4e,7fe7e266592d081419f56d47f54df38704e844ff
d335ce60dd4584a89ff9ca56ceba263b96aa585c,c3a6df26ee40a7acefb03c87eaa5d7ab62f52b6d,f2d41e680b765072e791c7f686637aca7b09ab95
70c153123b0cf8b8df0a22d8215bf02895eb8f2e,459e1901d237f54e533cb1c2dc1233a8e5dfecf2,4e5be1337c9ea590cb757ee9e1502ef0aa989981
80c59d24743da5d6d294c7aea24fb7fdf078d6fd,a16f2ae35dc914bcb8ce5c545bd9019dac1fd98f,40f9d006d6f931f07b2df21849bd8a96776110ea
52d1a5da946c8581bce5a406f9160a9ec8913a4e,498ff5c56c49f6fba330c221d08741e8c1f92da5,9a2d0e0692e726e018abdced722bdc9f7064a9c1
1388e2af5b82e388a14d7e255f4cfa5a0f32bf58,3ba27d3160fbe4b4600b85a4dae0869849598a46,2f086e1ec2f2233c092634854e674c1cdad283ea
e9eb8297bcea216c8cd2c4fe06e25a45f79805da,349003662c046a66c1ba05c14ec8973c3c082b55,417ba4cca8daea1e6bedc7305f6d95dca81bd270
2b56b2d725f713336880d44f8c73ae62d2e67655,abeccabdf16367f9e90f6e2108d4bc71186084df,df365a56cfa06d600aa5734401f8edfa54354587
b1791af0a3737f230436dc1103b1e94585a2b6b3,59be46a6fb02c4dfee8580b863b91e0327b709ab,faf085662d8c8250a63530ac784a8d59886e4461
558a7ef1edf41744d37c8a2da450bc4ea15fd347,5ec9386d27b93ea85844bcc56e7bde2f867be560,4f5b708d492c10de06fe7925340f240d029b8ef8
9627f98f7b1600f0c02b7d0ba172eb1d469d5313,72a3729ca09cb7d13025259cc8094f3d6686f694,2a6fb3297410fbd4ea149d863c6f783342e1309d
540807c5c8cc03b662c1a9e41e9b60f03869414b,2c9bbc932ac652a3f45b563bc30fa951775cf1ba,cffb0a08455210f43b940a989ce4b18b808fd02b
ceed183e334ef91b14950569717f21485843e0c8,5add7991935fe7ec87f5659b795593268d5736a3,f3b28369474a70f7464a6cc94999c57c1b1cec29
bc3b68ae7e42c9d62e0dbbd9309e5c7a925f1c0e,c40dd8bdc1e7116ed6f8a23a2b717e252d30ecab,ead882f58d4a99e73d6fe60ff0f4241fa9b685d9
4185e1dc671c371e5568b2bdd0f9d0ede480fa01,8674d45d7b6e407f09daeeb160747a27727a9926,83f1d1eefb7b819ba405346c73580e7c16d4c72f
3741d4443ff31951fa948ca5ada42a13c8ac8010,835c50d97c6fb3076d6012c997995854c3678ccd,9a7d1ad07cf35568b61952d9b725468b1119000e
8c28eb09353340bf68e7956ab0456e60bf5d7626,f7264d3f2918102993cc4b20570d7fadcfdf79fa,dc6057a112aa528100cab408b6be81162486f767
06f8ad2e3dfa87fb4c8b623a04820df85bbf65c5,ce72fbe54d0da5b50677c76d61e21226496036c2,d18a565e72aaee4b9a6679de12d8875158a230af
50b160651c091249c605731b5887d6430944a73f,7991eba0d1a6947e22cbd81ff30007ff76f04caa,bb8098adea72f6b87caa27895cdbe46d870363bf
2d46e35a455b447edd5d7076051be59af9744487,72daf3f556208778d53f644711db13c5b24b1e2a,69f0d251e9d5377c48ce1f25e9ac43f52b2af95f
863fe13bd11f982261f3a5b25f798c069d35672a,e0cce52aaa83a3ba99001e0eb0e3454177321919,90c03c7e702da5a5713c5e569da0f3e8be86fc01
ac510d391f9d784a00275836715a25a41331460f,c8052a3f1d18e4a5f151c6c525246b6e331a088a,5c4db7dbca8f5d751aff8796c06c47ca339f2675
846250b83102b907e9da078cddc1ca2dabbdee8b,decb6ab3c62d0105bfb7f7a434dd9a6bd73deb72,155756f668c3623565bf2f7cca2e61466e9912a6
91987f003742b490ad3087ff35ea8fe05b6b4d80,bdc926f4a2d3d45785070f07b1530ac35b542845,406318a299d727e696421774833fcb9dd4473f92
507b88ab6f554b08a0d7a6f45a01549f803e69e3,2a017b7f2b16b0254cdcfef72c1044ff7bf39219,cca6fe9f98b67d471d6e1b437068b6784734f8ff
ad3b32db69da4dc326bc2b2c2eb469807b4b5320,a2a513958f89a5c59ae7bf11b74ac91c68ddd931,94a102d5e78a778aec785b9485652ce006d2d16d
ec7e917b1a9279a5057bcaf4e90f9f24b8f9db9c,1ed23e54725eab96a37ee6bfc0b77bf8f7e1e380,14dbb7cb762f9329f122afaf3c6d91c1da49d881
b4d3468f684385086d1146a8f1218ac2d86b3698,2c5a070959e86b72c6e86ac78633a62a7f15b4fb,b5eaa8555aa8bca1977eb25cf3b60bcf2f062431
7aae7a8d51e763fd3c3fe3a17ce1c37ef58478b8,e082fe97528a712786b136263908e1eeeaa3cbef,af7e61603a4e61118ec1bf1126c1374c50b4aa72
5ec3e6fd14549e13e20a7f49c3935fa732bf0535,e73b47df2a180364b2ff6cdb13eab5cf45479987,6c7d2f6bace8232e7b1ea3127e66915225d0c145
3f0593b55489a7204ee246cc9ad57d3de5622135,f2f39d4aaadcefb1a20c4fe6d8202f82b58b1ba8,e9a49204ab06a3ecb28525e8323fc4c0cfa41b4c
1d4ab430f173b6fa48ee26d799d04d5de3098c36,3b83d06d16a9103b6af5fee3d5d8fa6a9a0f5c67,96144dad6dc92f5392f7c09c3d04baf2afb0d0d9
885e257c129c807385487627ead34402ec4b5d68,bd1942eb90d1537f38363accd5e22815496be248,d595976f4cfc6022036dba60a6dae42008220a7a
1a7d14c04ed9b63668fe000c967e93d48d6ac395,5e5751649822802142d3728e4749b78fe66c7910,46c2be7407ee11d4ece1f5c210ada2e813eb3aa9
a370b6ff1d4783db2208fc82f179e3de4e702b9b,3123101b0cf3c0f11fcda939e2a355069f58684b,29ad3f9ae5e0664c1cc28a002818055be0297d10
5d100fd2c6cb07a929d7b5ad9e59f7eccbdd9c97,8488c87b20efb6e3a934a9d71475ac3a24d9d6ef,d6efbfb2bbee4486913eafc26e8d0d67b4d8fae4
2c03eb2221adc3a8cf192bd4cfb28c86c476007e,e698a88b623cdd317eca50b4524c3ac5cfbc80df,5530e6626deac83c24bbe50773cc5387ece0ae52
40725146cc37345879b82d1edaba02fcf0687fff,f29fe358ad694e288b751a4632ffda7ed77305b8,5af16b3da3ade743edac011cc0f7d6e26817cfa3
0d11caa47d66c65444aec8a2588f45eaff310b65,904c25745c4442c973c36a28d8ed6602fdc5316d,86f61918b42cc04947b2c5f74a25f70247039cfa
fa9ebd2d4c38d79f5c871c200fe699ce24af94d3,2b356964002ce6be93ed83c8c6de05129dfe10be,7fc62dadfc6350a2f316c24b2fb7cd10f37df925
51055fa1968cb724c5bb64ecafa67e8669fb9775,83d045d1f1a95c017e5260e05b28bf119205fd46,30dcf0b61a13031a43252e9d727d9c692bef9adf
4e96751cb7ad933e3cdaf3b6418f75b71403f039,d2df6a630cce1a53c11eece1399fbf68e4472de3,24f498292a2db87acf24e023d6b5666da0de5e82
beb8e63075e5caeeb13b3b6b8c4de57bcaa7b103,aebc7458e1aba59154cb6a6b5c581bafad061e14,c464f4d58e91b3cdcd12303a95d6b1d2aa01eaa0
550fd24d29bf88e272bde50d2f530ed35f6e1a58,8e5f22383fd0dababd820b61265753a444efcfe4,c893233359603fe5e4db38afcee458a56922c357
12bc05d2b46d80da42ca8e322d92211d9414666f,c3110dfaa982648f79ffef8de1847cf6a07c619d,290e6311c66b54c46f0af53020a9e766281dcf96
87d4c189927636dd8bff5bb0275ff998347ab0fc,5e41a1417f13ed23b0b3407a6689eaeff739720f,c422c137f89fb79683924854f34161a2c1fae87e
a9ab15c60d1ebc2ce17a894b15c69c03d13ada74,a6b0e4badc1fccc6a702f6eac6e1ac0e184dfdfc,7fa6fa257b0db7472a5261721abff092ef59eb9b
cc0012f3dd7153aafd1e94f62c78ea95fb7b602a,bcbf5219224ec9eadda2151f5cda05c4756da211,366acce9ef86d9f3f572a7db3735d746de3942e3
fdd911c6fa7e6914ac88a26e9bc467f725f89a4d,63845c2be6555b0887c45570a62ea7636d3ef479,1202b2612fc2d80bd448c3ebbcab4101a60e1cc1
971d97c179dd4b81ba52910d708a6aa6336ddbc7,cfee7d07d8b3b18a40690d95a20db6318ec8f53d,dc2c6c8996617465b43e53f88ef0d7faf491305e
5bb4049737468baaf97a5a67bc86f01e496ebed9,f417c87ec8137080b45c58423ec6f7e502dfbdd1,c6c05f839595c5aff6f1cf930c2e0c8068b5caec
546d6235266c5e6804d9d493869ef8307067a4a9,1a130056f7ec23cd4d68cb2d954353d38fabadd1,d3c3b79e7914220f4a6ffe6843cd94f69137f280
9355e703d7fbe78c78eeae2708aec79637ca7b99,15f88d5e13bec007e13b061ce86b9323cda8fc7e,be117b33d33e303c4fd85a63a9d48f7d3052f749
9fccadc1f0fc6f76d73a191ff2e932bb2d803d17,fd677978e7661b22a15fb3a9bce3f5c4b2ae8134,a60b1f2bc7b535ff9ce187de9aa432c85a391093
5c6abd2e514df0c9810a62a8f6dbd29692e4abc3,599b187589b51f8d6e6cce36c25c72a87de5d3d5,7f77aada6b3960f2c346f7666674a78fba003e24
c229096983d325ab5ca2a077abc6ecdb167076cf,d18f31d156ee93f67962e4b053d2b0a7665bf241,d1c3ba96f24008fc4d400353d68a357e0a0ba363
33cb23e99b6820d41581925318e2c155d1ee3004,762d1d2f1e0d1229bdab3e970055cf140b2717ae,6da401b1c3dc466ac4e9eaf74a7c34f81fd7be12
0cca70151f3f56db2d4c49c1366cfb9d6f8db231,4385fb5884a7eb857ea1acb5c3cc4d1164678378,b1a47a5d7d2b7ebad337cc6d9b4fd099e4a7dcb9
a34b44b3b75b2766f5e2ee4b47f155705d7a500e,720b9cd1eff0cf5f7f26967c2397254e18396423,ea9e3e02bd1be61fe98ef28d9dc48270a74b7277
879e13d96a1893ee102a97d7862fca9528e1c7e0,38e2cea5336a5a17f741000a1eefab36dd0efafa,a4ca9f53572f88115aae5a7e6d84e0811e939c9e
b1c2023af1f7b395a9b204f3fd63a14ff48825bf,2b30f8b96ad15f51f0971bbb0ce827a4a808eb7e,687384f09123943a7d97082dff4de7315faaee90
61645321961f5c055ccbe4b9f8a401811e7a7b52,08f44aff2c7b35086d9987b855d5ab6260ada904,7e5d9680c2f4f18349bab94ee03fcb5205c29a41
cfc5f17b0dc3dd6ef2dcd5a94752a367c8c2c478,34902174892588a3dfd9b4761d6e90a3c5ce3f6f,02b31542f677b3f7cb6eacbf1b8f004d3aa86120
2f0e446c153eef6b211dfa68ab56e6bfeb64d8de,d2f5bbac508712e27069d377e0bb3c4bc56828a1,7cb2e5a180df00eb8b5b18fa24a12564ea1bfa09
bf41de879a50447193b8ac33bab610d3cf0ba381,9b2b1c12ff14617877a441d51ff27c01c196deb7,925091d0d14658a943ff204e7f6a39819b42bc0f
0914565a52c04d217598761129ba6f2a329c537a,d959e47c830cab1f9246e1d2291511c9cd7c4760,9cac8e61839f0426093b8d1974181f04ee1d7732
28fc3da2bda2cb959f61ce3405dddb246fa00e0d,223745f6b7bebee9efe845f390f8287bf8604305,28a9a448945b0ad5a917b1444ec5b87e830e90f5
5e813e62f24635c3947c5adb1efcf94dfedd2f0e,522612a632e38fb54d6f3099f80310832322d975,2e8b9e7e01ffbf180e5c0ac2a2a29d0e06b822a7
ca53c5e7d451643247a3b0544d4e99da5a00b6a5,c6a68abfb6a9bc4e660ac3ad63df9dd06489e83b,49183639e08d2fadc802ce5f3d2459d32e2ff701
0f9d21a098f2fb22b7033ceefba971f29b2cb4b2,709a95b9773a9a619b5453b3e70e56d2111af0a0,f8c09568d8011a9a9c4b40266e1611972e75d8c6
12db8a59b526a292182da0b43adb15e9e30b6c7c,6972d16c3ab08068898d123f5b677c6e56d96d1a,c3a9b671184e86219aff35da1497d49e95bb00aa
a3f4786b1dd2ddcc93a2267316addd1cd27de136,529091f62035efe1853c083f1d545f222af9ec11,923ad699a17547fc9b892b4e5a115c663021411e
cd7656233940e163fa50d2d0cbe2ab961b6a4d9f,95c2a5a2d796d208c5e7c86485940c7b566af69e,a6077103b2694880f2ab19610ed9265adb283e19
98b551d261663612e3af5016bb5b406b9a6a4e89,690ed25adf866074ed4a398bdad427ed97802c85,5f9ea00b38ce9de9c48f7fbd8c1dcea937f75753
74614c02c67ac3ef404458dc2c9ea93e60b79912,9602ec533622e9f565b89744d9272ecb02b0ac4c,c10e57f1d8cce6f00977245d184c3ab5c65c1260
c89b6a5908a1249edd80f59739fd7abf415290e4,cbd9f716c20f733f17a68c336d4ca4c9cd79291c,b97ace9168f2599a205548163728221910a49c73
5b3b041b96d45d737da34c03f1d2d51edc26782a,33c1e3e53715836b22d95702a7d1ece9d0c21c55,e86a4a9c1f6e4a406a8353d984c9f8f9b103af63
e17c5751234075579fdfd122ef5342b136ad0209,1e041077cc42b56ea2ae77075dadc8d3082532a6,2e9b644cebbb09a78a455e575c35a9154bb42c71
b2eb481780fb2489ff5377802d035e631ec0ac8c,0e3c9b9531d10efe478aa5d71847c7e49d9d9ecc,498408a376b74ab8d93a3d67dc0ea758d2786cef
53e4c5b5fbcfe0c0078591a736ecb8108a6a3309,370883c86a97a82b79d67c231b88ad7cd7144e6d,c3f80014b41db2cb4a6fa50a50c2548a03000124
6ccad3dc4e7ad93c39eeeeb2cd0f99775feb340a,f18d1deb083c56d8dadeb8e43f77c288e96bcfd0,212b0fb7a834df33f9192ad64dac8eebe35921ec
671079789c912a0fc31c164e309e3d7535437395,3e6ae3f887f9c69ccd23465b185b70fbe798acd1,d06dd9532c66a81d197ebfe12134a48e3d30102e
56fa196b03266a23c6446eef7d0ba4d48f3a5ad5,452c766f04347cb598a62e29ba6e1f6f24921f2f,2e77e1a47178ee197608c6841982a9c6a3c82f52
6ce57a16257939c96c97fd1af1d44bb98ea04c77,bd1a6a60e85a5524339f9e1bda0f534d6dbff914,9a77a855e48641858be539edf52ce48a44863871
f1725289e96b1d08d575685b0d7c5b5469f72006,ba8554fcf5edd85995295642fdd0f05a9f1c8866,f75de6c340ed47a8b0bb0ee2f54fc84391b1dd86
2b6c136d015aa909285454b8fdbec58b62516480,00ed18a61b18a83c4cd730aa44a20f69f5831199,3b5482b580e41bf79f53c1f61dd75402b1d471f2
83f9a9450375451d72b358cb1e611b0a7ef81231,125da5f10a8199ade31c07f5fd7103c214c25d3b,98a5072fbebceb0c99483d2ac6ea521bff420b10
f270543bf4537afa59149e4fabe9c5a9d094f068,7f4df82e7a81aa5a7887856f20d2cb2f0b0f1727,4d8c9c9d78172e8e7a3860b37cd97c0ecc187ad5
d0b4e8730a687d0bb85fafb773245d34728e5e56,1cfa628320f6a0b29a2436c18fd8b94a75004f86,814370b894f989fa5c83ac4684e6e0f5465e6227
b935cc7f93a6e72051d1f8f09bff8dc457bf1134,44282acecb50c64e9507abc318cd280266e93a25,0b3d0594582bf3e2a12f56310f1e5fe5b8ad532d
6631f83ccf244b4f7c2eb777cbe57459d7bee2c3,66d7408b3d62414553485a33a8ef42fa38ffd6e6,10e6a54b59b5d62dfe232c84a1b0159c6c73239c
b5254fbeb460d4fa435e53cbcc64bc7b477f0489,b2f6214b33f66b5d50dfe8e7aa59ade2fd76758b,f7f8c9a615e9fb06080fc3903aa43de3e71c4ad0
b3d555c2584b513c07ec64abed99423fc5e4d41e,ac98583fb4db6cdc82b5dbc0c7739886f2a6b5f6,92b3e6a7d77bd3f5bde9d2e116b37d912380bc2f
9cb6497faeadf07c48657a342bbbe675107502f4,d1ba97d46248d4061e2e13d55953b1ea5b40324b,bcaa58db019ac175d6857db93693133e0912ebd4
09be204011872adcc3fbc1ffd3a2d33bed479ed2,6cd75b75c3001e2125bbc687b59d878b90a26165,ec76f13bd7d4f2fdf2484e3f5388bbd385f499f7
1802a8c4936be2572af60b0b9d58d19c61ab03c2,7b67378206eb56e738cc2be5110c259d43255854,f3ded5e82eb74efd6c9d0464381b3643ceaa8f72
8790c4303a6836ed7f21d0fa71c2111a9e6f8599,55aa5ac129fb44d38a1164f4917dcb3182fb8256,840df7e243f922a34113b23ec3b68c41e854a88f
99b71eafdad72910e6be2f5a9838470f47350924,637fa74c5c305cadcb0aad0c43b0f6a9a3c30888,1a07e13c023a6ef423917c4500086f242fe056a3
29b3b092518ddd6ea3525fdfc1cfa1d7b512e824,6ab6be4793f300ac18d0b03f44b20c0d2128b2f1,490c431bf99b5ddeae2d13ecc5d75f08d0033430
c04024506bd2231d49b371e9814907de5dc01d58,008397cb492610afc8cce7a3d4b416daf4c60af0,708a479fdd177f27565d1c740c62266c590ab94b
27e17e318610b2ac62a0b35b83228fefa164d64f,21668148d853092dbb56bf5f8160f2eff0c0a1fc,d88aad944eb20e217c1a8d7cd47bd9e7d7e7549a
6852903b57f2738defb66bf245441b986ad13844,4e3fc8290a13cfb748416758caf51e840fa060e1,d71f8233735c29084123bcba463b9e955982410c
de51e6a32abe540960354cc1411b7a4f70a00d6d,900b1fc4eccfb1bf16723d2747107c02f8135c5f,9a223100d1c5604e4e3be573d93953073051bbc3
5a07867d202654130e326b89c2c6acdf0bce7f8c,d87ba066083c2b7ef48a3ace83745ce65b460632,847ae42cc11fa393a13977cbb810d58b81e60f2f
3a714774ffec45484fce4547c7b2fa72a6ddc789,ef7f2ab5a7aa65dbac4cfd06192faf5594c59b52,326356e8e9000eec4b8c1a24ca3db8515c57f80b
c005544f3dd010457719f39c8f6082172c3e7d61,eb38ba60c4b0efb9b5a6fe99cb7b7825a244062c,39fb7618e4d4e5e088f1381dc1b9e3fb933f6d79
9432af9ec67bd69d61b9e3458f8da00ef1e8bc22,2d7a8d4440577d2d04593b76a60e8b49e6f2509b,3be1c08516c65233c133eb0c405c04a59d1b5237
3c7a114c0beb32894bac1d8da85d895d84e97edb,ed4544ce7a61aa113be28e9cf46f18674bc5cc1d,96b8a79563068bfac42a7dd5a4089f14104ea4e5
1fae85a1c61d4943e768f280eea380d85d3b89ff,300d4f26177342d908d8fb859ced9e21f2ab12e9,89af29c27f121fd1327795b5dc781bb0a2fce5a6
4b271d8e0eadb801ccd5047bf2ac433c2cbd9f08,12599706e51c6898342cefc2296dd325a4be3702,e920651b4d01ae157a684ff41934ba27e3b987cd
3dd4b7afbf7b2702e5befb411ceef644949a6dbd,0ce984580945702cb50f17cc7a4cfeeb99ce109f,7c01edf8314c9321857c76ec02e6833139c68f85
e09304f67163e4419ecee27440712da5e09e8451,0730e86c9db81917c48711b7f00c1dd503d1ac91,4427392d56d0cc33d961a9af0df1454d9d95e6be
545db4a070c00a0a1e60d295c83a824e0c2bde1b,e062a5471663d71d47b16008021fd206877c9f7e,35a21de57cb403eb05e48fd6e65e77eb3019f405
d842d822ff3679bb77dac51e9f147d85a25ef5cf,8e45bb133dda3e4417c9427f1cc2c11739447b38,4664e510e64bd76fa3700d739204e12a72bf5f5e
fecd25bac187d7df0846f58ab719fa2aafede2bd,899916d76a68988cbd0a2f95c2a519c7b4bb80f2,11076f084c5f4c2c536b07761c93b37c362cac83
665b019ef3b1f43c4bef68237a604e2af1487317,da6c0e919b9846586a59ccfb77a698b2093b3b80,e749c81040070d3e8cb0c070e6e63f2f9b54fef4
e219b24aec902218ad27678a06d18359f10889c5,4648f967bdb769a954cdce0cf995a45d9aafdc55,eb74850d7c8705c4e7f24618fa82e8b1073a9a45
7c443001362afde8da7686d318ff4d96c945394c,79b240ec8165084058d553693e696819c7732f1a,b2f5f6ac7d3527806868807d95621861b3a0247d
e237da95d2b16fe25ef196674215cb341b983188,4b757dd360796cdfd6ee412ddca5e806ef4159ee,eef5001455990d30981fbee37135829f97ecd77c
671a36c823fcc87d2bd867a644bb50aeac68dcb2,0c939ac6c6e5ec83962f636cec7c98ab93199759,d35a2f53e770df0a1b7a5c5dc07264997e7a4f35
9b2726fe316a385ee349cdec688b79771f252f21,76d155d87265167c96216ae0de03eeb4bf71e336,d322143566f8177ff5a4c15f13c81b5f14dcb67e
7e89495a0950add0013733eb631483aa9ebf24e7,6286ff38cca83503949d91e60edd03639dd6056d,fa384956d60c96d19c3c6ef891f3ce0936b491f6
1ae6f4ab97137547f5cbc9093588be63a08c79b3,3b8a4137a5504cb04cb1b4be5b36c1139f91243a,a0a453f8903b9e9a261b5e6b74ae0b560301b4e4
c40cb181fec5fca3abb35c59d87e9b60d03d1612,e2c96612344ee6ecdb8abd1e977fb99a7d993526,7f9def422f1d4e7b8eb5a85a1b45c044024975f8
b2dd980329175ae2c9a308034893c06d6b9592cd,831a46eb2f20a1649fc30fe31bd5eb0a0b8998e6,f29f794543d5e05480925957d88fc72f78ccbd98
f85aa24ad0f75a4a32c03ea62503d4cf2901ac2c,a70e4ed9be34661a2ac97994e99899fea47da7e7,610972b26cd6e8847e6fb31370fde0839ec81cc9
553681007535fa3d8397aaa9c296f087808d69c6,fd72ed8c5691877125886042ad5da7e9cd33f9f6,83c9b17ec5aa3644201b414cf72c3166fd2f1930
d9e97e3f0fff5d6cef6a083b20bd7c2674131cbf,22345e4a281c0d754644682eea303b87fad04fdf,e20466ffd120ca16ddecada5f822b25f0f206b6c
2bc965ee280146dd77ef7a968776c8759a0f7bc3,5a32b7159e3110c291c8ebeaaa641d3c61bce92a,59ab80bbb06eada221101354f6572aaa6dac8fa9
995a5431c3f4ac89744634ad0ea2cc00b269f852,ce8643a2bca9163f2530f802e9c47adbad804c0f,12c494cc0f58f6ff7034778860954a5a90d07758
1f965d262dc09aa2de789e20fa23163280a5b9c7,4423989868609ff712c6b7357cb6c26e0623d15b,251ca6b6582660db76aa087a996020bef7bafd5c
32c1f78dc194610895ea173ae48fc2d96192f44e,4340d03ba9284c1388dbbd6bebe9284bb9f5ef4c,92de1a6fbed74d0f06cb7d1739dd341f60c4c976
cf0f3374472a21aac94daeee98d1fa7ef1d77028,924c917276b094964f31f72a3a9cd01d38c7255c,ab3a10eaedf10ff086f89f5e7c940b86a93e130f
b8007e33e350ed1f071ea4f2ba3a6e779c231322,bf0c724d802e013daaf93789f1a43dc51118943f,55d3d1447cbc07c98dedeff63d44ce1e4364abb6
b9098d8c5fb0762955acee79c0348d375558d44d,d86e726e87e279ea5c73e9c8d04c5f16e509f99a,698e16a12d13e20f468ad022453b708f4bfeeb78
1d85913234850c31b1d68bce91b27d964faf5cb9,890512cae2c6362d8c7bb3465c07a0932d087341,70591f6449a75f084d5ebe630e4597495abe31d6
0d069b160f12ba276f17c0802797899a64b7678e,e958ad51263c1ba5e33ea772b18bafda989b6db7,51035eb0f48892838ab40705676d4cefbb0336db
d1dbbc0a35aca0bcf45bdac1727808f2341b4775,4ac20ba523b5d11826b0f2c5d9e77861d2e63d27,ac669830a292d279bebc8bd0dde963a38157f0ff
31644454d01f6e1b5bd739be288254dee6b024db,40e41a846fd3dd360d94e1f16ee0af0ffaafc96c,7703ff9b34ee48665b37f418b699a3229c0bcaf5
0977f0ac0d1ecf3284554b2613bbdd1bb03359a8,2ef405b3e577461668de1e776cb07aba7ee5342f,0df9da502b666cddf8e5a4a8762202f777b20eec
2679972f3822ad5301d73f20c9da79ad0b27e208,b4b4896f7fc2b0f61a920dbfe3e220d8358a1a6e,dd2e8c8d3eb4e9b6232633d43f9e21adbfcd1f4c
28233953c1a73a1be5f6a9094e2be04f1f612ee0,af52e8ce9adf61172df5c65a26c972bf130b5006,86765fa5a63e390b4486e25febc1b3550eaae558
716aeb47835782a38be7c830f245edb1bb089060,a341661f989730931d5914fdbc55b67344146360,1034d4d9a5d6bb8d38866cab4f96ce362f72a1e6
ec788a84fd0ca7f86a7718c35b4b4308f48fc819,13ea45d243369b38bcfe8347d7b2ed6eda41cecf,59ed4c9228e3a2f4c164f35d548999092c914404
e7ae1f9152a492f43193e216db44334dad54d5f5,b40450d6874e220e23c9b2abaf15fa475ac6d89e,3677680c08bec7ec537c111027b3cc37ebdb19c8
cf632954d41b5471ff3fc6c73b96126a450c725d,90faca9e69eefca34849ab5b290b1a1361e9689b,9328dd648970778be0ecc10f575d6038d6278937
4200ebd748aaf9bf82357212f6c2286649298509,a43f1bc1d0fcc3518412feb61019d124ff170f58,c89153242da64ff6ade4a10334979d26fe5ab6dd
7878a7b390e07d0ea5000510a9634181afbed6cb,b0003f71dda8388ad74292edb82ba401296fc106,aaf0bf7e191b8abfe6cbf4540de096d4e5234b7b
aeef060a0ba3bdbad60f1597f66358de1591e03d,0ebb98da7bc60af4daaec6fcf08d6cf7eaee6620,b4af922d15099962539df9c06d15068ad9ee09cd
bd5aaf041fd4d5ef0cbefe8be2a99639236e3477,c433b740e445095ee93b3c8cda5eb494755df256,2484efc2e7a75c34c905d179a7aa636114c105e0
1a32b53f2c98b680f35a05633e64064a12a74849,1199bb3eb537733408433e76a356dfadd11b71fd,d34d5c545944537cf458f5d388205cb88f3ee24a
783436f2a12e9860c28c5f5ca2f76182bfcfee29,39ac8a79233b885785148b3f4a2fcc1547dcf599,2b9455e262e7e7f7333180268dac1cb0263b4143
a90e4358c022b52ecabd4bccdd106c7b8e049a87,ce134abe46a0a22a91dceee69f6b2996a3959bde,8093b1ba0c8c9bb4a8054a1107c20b2efa368ba6
7a19bc012a29b05540b958e90bf387c21c143397,ff2492edf5cf467ac35494e0c2087d51ee30151d,373ebbcf41478383382db9db4b0fee61d649db9a
7210366766d36d906073b8bf16d8ace84e7d4cf0,6215d7e8d2e2c26ffd8e59cfe00b0e0a6025b8a4,d91be468dadc5cf2c66efb2596ba4f45d31dc80b
ed82c8325bbaae6303186b5bdc892275d980c907,e6d140df80b76227f76f632da148795fb696753f,df42ee55d4a655e754a53ca4a52a9ae07a79c858
984a468997fb1fbe5a38fdf44e1f386fe7c272a3,74180145d722a89f6b0807b2229d99fbe6e3f638,117aa5c883af61007a35940a6e2c049dbe8a85b0
17ed4b4d6c25c3a29da880701a6f4e20c5f4da05,efe885c4467c369f5c4aa634fb472f4f649f6019,393fc1cea27033cce6e7d7b832a1c900c66eb555
2ff7f45a362c7fd592206c17ba5a789c5353cb22,523c4486aa382ce7e9c975434c0bc76c319397d7,a05f52dfedcda219d999d0bfe19f4410d0283bfc
a412bc39cd389f7a82306219d9c8bb98a9ce5ac3,cb237c9008979583822e67d2ff7ffaacb7b8cdfb,1f6ac0609e416b083e8e3431263501dd729434fa
0d5dddfcb5deb648397d38ed618c4c49911f6b03,09417140dee6b84871b1d193457613b8258aad68,c515d4502644f9aeafd447169e848196a17f9083
263e7e1de1f5b93c9b06ae448faba3e32fcc4f6d,f0b2d4a4cab1f52c8d03cec742da524be80ebd6e,57fb0bfa3559093d29a53d216c029b662587c71a
97fde501012bb27041b27a7153b4381a0784552d,9ddf46bfdcd87420f79130d49c835f1eb183fff3,c7290bfb78ae1802361d1efd937fbed9d4f4cf82
1d22802ba97ac135714c8f6944c745517c3ad3c2,42b466015d8d342c42d03884c94d4620381ffa0d,a150115ed2bd5fc2f1c6d3f913ef42a233117496
b50d6ff99c013253bccb5c23de6c8c0d7482e2db,b5bccf7a77fa90e095eedb24b57b9ef1af768c45,922457e5b58d76a13ff706f9220d9d6350631930
ad50adf5f329454329b5bac372c7b5091c620edf,860a2d01455925f60eb3f14a0289f2d47a22f72d,4f92679625e2e03c9eb08b7bb50ddcd19e056949
b5e20033924651f3481c3c223409af31a68e751b,d48e984ba029142af8abeabcec98e6e22608e22a,8870c72d91842c08da7d51ad432a86ccf4b5136c
39a3f5a67817cbb4e1d267775cfc752b21158b7a,28c14ff345a75d5408d41ff6032d6250c2aa8474,ddd846ede494e86e85832d1bb3a1043c4196bea2
3874fb77255a6670241ea519f4cd94c416c8b096,edf4f0b416f6e4d4f2fa0b57f30998ec72eafef3,bf510fbd62d3d3df146c684d9465e5d9c85ed64c
2ee0138591fd6498d78377291da7a91d79c5861f,2256593e92fa68236a3e5adafa321787e9ddfd12,35047acebdb22864f7a7b659bb28a83dcfb54db6
b58469a7bd20259b4e6ecbded940cc3a4593bee7,07a2c6b37e194371572172e72e821163a0266447,e33f720fa5dc519ca19b936aaae9578cec74187c
c74c4ad9ada5fd217f40663fe65820b3136e6c4f,58df41dcf09036df5e244a2781b93f1529c20bd8,5e641960ac0ee1946d419175aa4594d68b0a66fb
98f6c64f826f0cacbd817d84e920c194a33ffcfb,b3a8fd009a8653c759f57549db0926e5b6af0c8c,b67e6ed75e558f7e7fa90b74c0ea7b2130ab3e07
be1fedb2ec90082a6393c6ee2998ea3a8db4ac28,1547f28a4001e3d405294bee87be5c889c87b1de,ef5c0a4ba85c12edfdfcf395c7317c85d34e6d4e
2f3c0bc8bf96ab70c031af16754bbdfff8fef1f0,bfcdd919504f75c3ad4634ff1a70e1589ecf815f,25e955b6e4d407fbd87c0c743fb6201997643455
b09cdf35a55c30a7b4174868f2145eb4fe54b8d0,1068015c4da99af9466ccf7c4db1d5c8b8bc2780,480200a708885c2d63270a1314808ca0668a65e1
0f2248f923dc1cd790a9588b64d0a2dcffcf3560,21276413ea4f5044fb183efee1b78e303fbc0715,8b816782c3a6a06e4c30b61f89c618fbf384e5ca
859b100da682797de580abc1988b3103751a0a10,4652593a8c13f551efd3313da8616d7ca996d3a8,2cd92ee792e46297dc982a8990638cfcf0244bd1
328e60c15536be8fe559c9bf4b8f3eaea1370f38,e05a618483e8111d531a8f8dbe71988754c5d143,30c06d66c3c30adfee4d061a0902dc79924cd7c0
5aeaf398cd6ca30c3a0ea01fb78632eebc6dbe81,16d8d466919c531acaca0afaf1bab803cbf64c88,db7abc11d679d11bc1dab883a4b21b4c023be2ab
ec3ed04b73a1a8999a5683ad708f92cc823cd33b,36e9e39bcaa5c5175d96b4e7141126b9ec75384c,166a24ae7748c6a5f724325950c7533a25597b1f
f7edf0355ae2f2c1c538c24082048ff5afb5e574,61bf79c0ace37a74fa7ef47ed95577184175f9dd,8c5a48da2bb48162c53380d92d3cc192ee3271da
9792ef566ffa8fd34a18ad56b82176bb9c59c9f2,e0aed719edc7d2c7bcdea2dc35b1d978093d4e63,310069221a259dcc21e1ed90a58193716b8e39c3
e1478e27b3474c802494c2260b82c63b7376c115,04a31f8be27c7136b81319e0f2c3b4fc170bd3b7,36e65b34645b0b06770d401fb047cc5cd169b78e
d3a0a2dddfcbe3d8036e6f3f32e79488af221363,6ba102ee575ca97764117d05c580e30385438b52,1ef148148845ac920b73d8c32d836ca2130a4595
b20f968454f2c803485916fec7d5b4df4d52064d,4b5c6ba3fc0a23b340efae4ac53bccb72c26da92,1a57a65c5fe1a17f8b1d447051ff18559fdefb93
eb5c61281cbbee572ce4fbc0f4ad7adbf678dc78,91667644f4680967908c455496ac2b2e70832a5a,f0cecf536700060b56eb12c7c8db20ec6e839428
dc5c99be6db706536ef07f18a4d06da831b6e2f5,cafaa9f5b805627f3ccd22ae9fd5202625152f8d,6314d69c400ff08dfe231a1a67e85e9185e2e819
8bd781aa4adc3244b2233348db919484cb38ee8f,bfc11728449074b822b73e8354d0828214076fb1,547fa426c7f399f60cc70a06c7f4d1449c6a9634
754c40cdb0175f35f8e1b61472c14d424188918d,0785652b55ab72528d0514b2cf569be75fe641a0,a74a4aca030af59d0e76d8b0455916bbc1917e99
065ddfd8d434ff901b14c71b1ba5eaf095473a3b,f65994ddcb5ebe7e5d9122477ea2cd1e6cfc2cb8,f8f54dcbcfa27eafd4fa8593601c692e1bb1a13e
a093c6e59a2c70fa8f7ef2ba002000e5b967aaf7,0d988f2c9632a5e8643f86931757f984ed24472f,ec5b4d458eb30432becb64bd3c0dcd8a9aebd055
6debe90b072d33ed5c3dad5c075a1668579f1fd3,548e91f104a22e37552632fcfb43a612e50fe18b,c07da2a6546c72cda73c151a064e7508c47a63a6
84a852bc1368345c77cd1804aa60a630af3a27fc,b1151ef4ead1548855dbbcdb65bbd2c5c1250e40,282f4aa06022f30f1347f161ac44f13a0162f178
425ef662cc54e3293ef63bab37cdff44b29a23a6,62236ec2bb058143ae3465884cb20f0856482f76,736fc12e55ab4872f92d85a6d45f038bd658f94f
43538416e37d26d8bea7b2fb2bada8c52b24b236,9e9153b2d30c088de589ccfe57351a14d902c4a1,b611c0011d4b874fa5cabb48799ac4a879d66e62
7719a5a5a7332b087701a6a99cd418273ec9ec8a,fb126e32f966918932da974d7f566443ff80c74d,1f01ba4bc0bd8dd7ae41932bc21e7a94fba24c0c
a7978286190c9223ee9565ba4a7e577c2e81e2cf,3bf5c67485347d1168a9abd0f09e97b98b64aba3,1a21ea41b8cc67d92edd4e1ecfe05f9caf27052c
fc43e66f05361eae720d140f9b5613f431aa1967,1a65b058b3845a129bd6c35a047e94218b5a0f0a,c6d3e42129e424c1cef6cfcfcd337cd422aa05d8
6c4d218b8d1c00cec55f889ab5fab9639a8159fe,b0852b70c613024ba1558036b3fc50fa8012fe04,bd1da8ffb7240bee2f5ab4055c94dffc48c30290
1d01a5fb3524fc396fac87660bf8156dc96fe8c2,da65fc54a62b73a8f937fdb1036d2cc736982fbd,9bc294a5ed2ba951f6cc331ec28932c76355a44c
32a9dab401b50a69bf4068eab7c07e396b454a48,5b661bcaaac203046c81c47ee002684190884ac7,0d63a5fdda7e4f1b121b4825147e82d20514cf44
2406b203bef98955ed957d2e5999a42b4c287758,4b04608a4465649d7d4e7e09a4611342cc50a3aa,cbbba251989de12376a7f1af5b79427575042c54
6e964d153eb3cddd861b302d68e6052cd1f80f00,5130e82af06ae6ab03291e495eeead1649e07a57,22c91ec12426e383ebba173bd7e870db19a14017
637513ce942c8b8fd1a9b2ac42f9fbcc1c848641,275027c1621f9ad174685599132cd23bf40ca5ac,055bd2c653a62ea69911fb05fe5747e01a36f88a
c8d86b3fdad87a7dca5ed48fd65285ea70c27655,d789128ec5cabbd92a4a18afd357ab1d28596ea0,e60cce05ee268a85063ca3271f31b638249c3a57
9cbc8f67f00864d1adb4b80bb1db77f2968f2ebd,293ddd6eb4dfa5d5ee7652ced7aa57059ec37f0c,5b651bafd961c123262bf209e6f3328b2bb32194
e0ac77bb33af7f098f34499940015827d0caa975,460c86e78a6c0d6933918645efc7139b8955389d,6e9e1fb370d8e384b2d78935e2839dbbe6bcfe64
21e13f0c2c71f896dabfb3190144e10146e281eb,7b11f25a2693d4bcd299bd5d3510ad4f2f288565,f86068b0e177b4d14dfdf8adbaab5964bb04d258
2d6a0d59f0ab6965600f49ceba3c9f3c97b88234,d6825a35612f7df856097fc778a74d3cbd88a729,4cae231a521302a6356875b1d2268323067a321d
cc20d1fe0657ea4a149e8eee6082e159d62c35a0,f672d4cccf83d80351f5353a80270b55b6d74eb4,bbecb015c9c841c77d38d8499d26f4fa6a2a27b1
cc81e56eb22b94c0525dcd745aacc42b7f04ae55,f6f150f857c46a09447f5b451ec9a32491677cbf,5952c5452b2a8db9b25083b7d9a88e6a6148d56a
472afce137c3a03b9111c8975db2c28b609052bb,835375e7e06ad42a02640b6a48a1bcc86c4e39bb,23875bd8c47e3cfcd9fc287781c9ff95870c7fbd
7afde9fe77b9f63131f5bc9ddfe1eec55416031d,eba0624535cc504fcaf367055cd3adeab56097a4,baa6f2a1ef98019e5db9b34a4d04976fea804799
51b9f31f7cecef028afa71252926888ca9ea42b7,dc0e6f4aa83c8ee516b6b27104947a23fc834f48,2a30ef7acac482f88402f7ebfbc582f6edfb2393
06aff099c163330f64f6a871ebe4ede1fabe7286,c8bf474d6d0fd0aab4399033d42c643c9264a3d4,1f3cdf10b70bb83e82dc8ae3f3061a46814577a7
2de241b9ac50be94703ea3d7956cf27e3244a685,dfbd4eac2a81a88c0e11367d0159781c2e254821,1ae6ea8f88bb85e469d4f3bc2672859c3147c94c
198abf11102dffe016017ab966dd97741ce0a93f,927020d981031267e392273cf672c1bca8b5f6fd,e7b6a08eae73effb64efa5cae6025a72d01d7026
67ea121250f8d89f5d26c26088554cf4c9ca4e6a,13678a80841e0872040beffa03935098db3b3c4c,71bd5f56ef2930ec473222717bcc5fbb4dd47a77
d520f1df0baa2a96adb5f4506ff855419529ca82,413586c041bb77d4ff76143d5d272e3e5033865d,569cceb2a0d5aade804041c283cba334d9faa762
14dc707042622bdae6651a1202572d0fd9682c5d,e5996bcf5faae0790e80fa60212ea9a13fa69a1c,c3f6db6a9505fd86e1b6624aceaa629ea05fbd35
32a19eb5b358499282ab50300ebee96114a613ac,f579f6dba5525abfbe88101f52bdf676d5b3a32c,818fc4244b1573e67294f31793e4e73b7d7d986d
f971398f4700e3847a500805ade5b34e4027882d,6906c2c3a79e39f517d43333674d6d62348a92a2,571088ff80cc883c5a26840a9fc41445b25af0ae
24ff6f76ab3b7ce7dcac2763f4c374c7df1a29e6,ec0ac70df3feca81b4a36bd6416eaee1467539c1,aabd2c50671dd79c8e52514483cf8cce63e71499
b1be21fab7c5cfdfc556cbac93abb2d443012b48,7dfc45cfeab2cde98e23e10733a7f623a23ffd01,48fe8e6208ac91446b65d3a4260413eeccf7cc90
ddfd3f747a27322a537e48d7aa5fab6a71d90d01,5e7bc906e5b4ca4e4ea05ea8add74e756de40ab8,ee5903fe3e57b68e4ceb3462eab02b31eb0d1fb7
91cf939ca056fd3ea4df101440a21ad00326b272,97ca4d019a8a3ec7aa582be9c99fc953c313b8ae,0da9caa6f589d015ee4d72f6c5d47ab1d141bf21
f33cfbc2d86d9046102e6620d32a4c81c0f65e95,9849de984bb974c4e253f134410fe5b52c28e1fd,afe6f1270b536e57afef32df55f7d91cc852a598
d79db82ca2ebdf6a89396c6f73efb39f566ed83b,317b01db6528a6e0e2cff27caca9688a4ddc9373,9d85249ee5454a2dfa037edfab9e9ea29fa135e1
bd97e48790c0b28076098d0cafef4efea3b02d57,1844b2a918359886bf3bf646be0b851295047b52,be82caf5a00d34ec3a61d095aa8392d95a18c5fd
6008dba0f71e1e690c10751794dd442136996143,9cb7e6353567937a0b50661173ace82cd9e6a204,bfefdb67c3be4318ba52be7e603c8dea90299da2
d2926867d688aec3b5fba8df1dfc09e64610bc3c,ffc7a00b98cfafb3a3f2e4fae954a7f80067d414,5646d14a3c5b7161d4d1c47f45d3ec2f2a8fc854
4e1c9aa1dffeb368e82d0376eeadc3c7e7630956,34ca0cca57d8c1eb39023417086688d40895a04e,3ccf5ad111c4018c3d6506fa092fb84d1475a13e
065a52992a876ca0f5c36e37809c42c98b667602,f372eb8a33e269d3ebb857703c4861bc7e62a1ab,cf73409470dd3688b070bc658b0f72c1621797ef
266a0af993498604899b2dd3586b7bd8ccbfaf8e,628d035b503dabec85b2b227db116a3563d6f568,5cf2fac78cfccd72dd2ed6f6dbcf480edc680f46
e867b540344e13681b040b234101f282f30cbe60,dd3a4de61929dede65845430d526e0d850db2e6c,79708f45ab0e6a7f4c09ecec4da87a06c15b8b9c
e2e1fcfe63d185ffc3bd7097344a814ccd01dcca,105382b8a17691d31c3991ec127fb2ac391e305a,fb04659eb956e92b7f0d722c3f3c4403c4cc99df
0632cb548a40409e884a0e424c295ac4cc2790f5,f2e4227fc22d243103a455e8cfda0bd8563fc799
Clicking a revision will expand files
+ add a comment to the destructor of tsymtable so that others (and maybe me a well) will hopefully see that the destructor of that class is not completely trivial!
* fix test 26481: it tests for something different than the incorrect type parameters and in fact the need to fix this highlights the need for the previous changes
* fixed some issues to get correct values of section_count, works better than before but it is still not perfect for unknown reasons
+ based on a patch by Laksen, optimize (v>=x) and (v<=y) into (v-x)<(y-x)
* support aitconst_*bit_unaligned in the intel assembler writer, resolves
0034222
* relax formula for max. nodes to inline
Merge: 7082b6e34a 88f83280dc
Merged riscv_new branch
* fixes broken compilation after merging
Add missing TFenceFlags and TRoundingMode for riscv32
Fix default CPUs for riscv32
Fix PACKAGE_VERSION, restore 3.3.1 value
cleanup: remove ARMHF-related comments from RISC-V only codepath. no functional change.
* addendum for Mantis
0034333: also complain about number of arguments with the maximum number of arguments for Copy ( = 3 ) is exceeded
* is_range_test returns false if "lower" bound is greater than "upper" bound
* additional tests added similarly to tfexpand.pp to test modified behaviour discussed in bug
0034166
* fix building with LLVM=1, thanks to Karl-Michael Schindler for the hint
* Regenerated makefiles to support aarch64-android.
* Modified test to not create sub-dirs outside the test's directory.
* Define slowcpu for android.
+ lazarus project files for the avx assembler test generators
* fix to write correct output file name
+ patch by J. Gareth Moreton to support BMI2 instructions
+ extended avx test generator with the newly added BMI2 instructions
+ support fpc include output in avx test generation code
* fix tests now that the RTTI of method pointer variables also contains the hidden parameters
* Fixed overflow error when calling align() with corner case values such as align($7FFFFFFC, 4) for the longint variant.
* Delete temp files after test.
Fix riscv64 compiler compilation with -dEXTDEBUG
Fix compilation with -dEXTDEBUG
Add -Tlinux and -Tembedded help lines for riscv32 and riscv64 compilers
* Fixed writing of method's RTTI for aarch64 by explicitly writing the $self parameter first.
* Reverted
0039947. According to Sven, the $self parameters is not required to be first parameter in RTTI. Appropriate tests will be fixed.
* Fixed overflow error for the qword version of align() when i=0.
* Regenerated makefiles to support x86_64-android.
* Undef FPC_HAS_TYPE_EXTENDED for x86_64-android.
* fix tests as depending on the platform the first parameter in the RTTI data might *not* be $self
* tests: On x86_64-android long double is 128-bit. There is no support for 128-bit floats in FPC yet. So disable long double tests for x86_64-android for now.
* Disabled some tests for android since they turn PIC off.
* Disabled some tests for android.
* avoid range check errors
* remove .NOTPARALLEL: from compiler Makefile, accelerates make fullcycle with -j a lot
* few cleanups
* fullinstall builds (and installs) utils now only once
* use the built compiler to install files, so the version is set correctly
* make install shall not make assumptions about FPC, if one was provided
* moved align helper so it actually gets inlined
+ make use of the BFI instruction in tcgaarch64.a_load_ref_reg_unaligned
+ implement assembler optimization Str/LdrAdd/Sub2Str/Ldr Postindex done
* avoid to create a stack frame on aarch64 if possible
* take care of the fact that x and w registers overlap when carrying out the Str/LdrAdd/Sub2Str/Ldr Postindex optimization
* Optimized generic implementations of tcg.a_op_const_ref() and tcg.a_op_reg_ref() for PIC and CPUs which need 2 or more instructions to load a symbol's value by reference.
First the symbol's address is taken and then it is used to load the value and also store the result. It eliminates extra calculation of the symbol's address needed to store the result.
x86 and other CPUs which can handle refs ops directly or more efficiently already have overloaded versions of these methods and are not affected by this change.
* SetExecutionWeight(): Set execution weight also for nodes with special handling. Minor code cleanup/improvements.
* Restore previous execution weight before exiting secondpass().
* It all improves register allocation for variables inside loops in some cases.
+ created branch for keyboard/video/mouse unit unicode support development
+ introduced the TEnhancedKeyEvent record
+ added GetEnhancedKeyEvent and PollEnhancedKeyEvent to TKeyboardDriver
+ added functions GetEnhancedKeyEvent and PollEnhancedKeyEvent and implemented
default fallbacks, which revert to calling GetKeyEvent and PollKeyEvent for
drivers that don't support the enhanced functions
+ added an interactive keyboard unit test
+ slight fixes and improvements to the test
* print ASCII characters better
* write physical key numbers both in decimal and hex
+ also invoke TranslateKey to get more data (either Ascii or virtual key translation)
when converting a TKeyEvent to TExtendedKeyEvent
+ also fill UnicodeChar from AsciiChar if AsciiChar is in the standard Ascii range
(#0..#127)
* show all details about the key event, without using KeyEventToString (because it
sometimes outputs control (<#32) ASCII characters)
+ added a keyboard dump test tool
* replaced "is" test with faster field value test
- x86 align does not use a register anymore, code removed
+ introduce tai_align_abstract.create_max which limits the maximal number of bytes being inserted for alignment
+ new fields for more precise control of alignment
+ support of new alignment control values for GNU AS writer
+ support of new alignment control values for binary writer
* better alignment settings on i386-win32
* improved inserted align directives for if nodes
* skip align directives after unconditional jumps
* number of cycles slightly increased for better measurements
+ factored out TX86AsmOptimizer.PrePeepholeOptIMUL, used now by x86-64 and i386
* generalized and simplified the code
Disable three operand overload of MatchOpType for avr and jvm targets, which only have 2 operands max
* Removed 'inline' from public methods of TFPObjectList and TFPHashObjectList since they use private fields and can not be inlined when called from other units.
* Reverted
0040181 because the "not inlined" notes are issued not due to access to private fields, but due to string conversion. It need to be fixed by overloaded versions of some methods.
* Removed unused local vars.
* Commented out unused "size" local var.
* Removed unused local vars.
- get rid of MaxOps, it is redundant with max_operands
* MatchOpType with three operands is only available of max_operands>2
Fix 3 operand version of MatchOpType
* Moved inline methods to the beginning in order to allow them to be actually inlined in this unit.
* Rearranged the code to place implementation of inline methods before their usage within this unit.
+ Added overloaded version of stringdup() for ansistring to allow stringdup to be inlined.
* moved some drawing routines to a new unit 'vidutil'
* If a function can't be inline (contains an assembler block, etc) remove the po_inline flag from its procoptions.
* Removed inline for methods which are too big.
* Removed inline for functions which access private variables and can't be inlined from outside.
* Removed inline for Unix2AmigaPath since it is not necessary and can't be inlined anyway due to ansistring conversion.
* Addition to
0040225: Forgot to remove inline in the implementation.
+ added an interactive keyboard test
+ added keyboard dumps, obtained with FPC 3.0.4 under Windows, using the US keyboard locale
+ added kbd dump file with num lock on
+ added a keyboard dump using the Bulgarian Phonetic Traditional keyboard layout and code page 866
* switch to using ReadConsoleInputW instead of ReadConsoleInputA in the windows
keyboard unit. This way the console input is read using Unicode and is later
translated to the OEM character set via WideCharToMultiByte. This is will
allow returning Unicode character codes once enhanced key events are
implemented.
- removed redundant setting of result in TranslateKey
+ initial implementation of a windows key event to TEnhancedKeyEvent conversion function
+ added a keyboard BIOS dump tool
* po_inline can't be removed from procoptions when the interface part is already parsed. It changes the interface's CRC and causes other units to recompile.
+ added BIOS int 16h keycode dumps
+ added a LibreOffice spreadsheet with the BIOS key codes, as dumped in the .bdf files
- removed the executable flag from the *.bdf files
+ added bios key dump with the left alt and left shift combination pressed
* the 'left ctrl + left shift' column moved to the right of 'right ctrl'
* .bdf files renamed .bios.txt
+ added the lalt+lshift bios keycode dump to the spreadsheet
* right justify text columns in spreadsheet
+ Added the pio_inline_not_possible flag to timplprocoption. It is set if a function can't be inline (contains an assembler block, etc). When calling such functions, no note "Call to subroutine "?" marked as inline is not inlined" is emitted.
* Changed verbosity of ""???" not yet supported inside inline procedure/function" to note to be consistent with note "Call to subroutine "?" marked as inline is not inlined".
+ added color codes for the keys
+ add svn:needs-lock to kbd_us.ods, because it's a binary file (and therefore,
unmerge-able)
+ added the NilEnhancedKeyEvent const (equivalent to the value 0 of TKeyEvent)
* use x:=NilEnhancedKeyEvent instead of FillChar for setting an enhanced key
event variable to 0
+ overloaded the = operator for pairs of TEnhancedKeyEvent
+ implemented SysGetEnhancedKeyEvent and SysPollEnhancedKeyEvent for win32/win64
+ initial work for tls-based threadvar support on arm-linux
* basic implementation for pure pascal programs to allocate tls space
+ check if initialization/finalization code uses implicitly thread vars
* disable generic threadvar handling if section thread vars are available
+ i386-linux support for tls-based threadvars
* define renamed into tls_threadvars
* compilation on x86-64 and i8086 fixed
* non-linux arm targets fixed
+ support for tlsm_general on i386-linux
* redundant code removed, work is meanwhile done by aasmcpu.optimize_ref
* use :=NilEnhancedKeyEvent instead of FillChar to clear the result of ConvertToEnhancedKeyEvent
+ implemented generic conversion from enhanced to legacy key events as well
* handle nil key events properly in ConvertToLegacyKeyEvent
+ switch the win32/win64 keyboard unit to use enhanced key events (they are
converted to legacy key events by the generic converter in keyboard.inc)
+ introduced TEnhancedShiftState. Not used yet, but will eventually be used inside TEnhancedKeyEvent.
+ added the 102-th key on international keyboards (outputs "<" or ">" with the US layout)
Fix arm-android compilation by prepending syscall_nr_ prefix also to __ARM_NR_XXX arm specific linux syscalls
+ added generic Shift, Ctrl and Alt values to TEnhancedShiftState
* TEnhancedKeyEvent.ShiftState changed to TEnhancedShiftState
* i8086 compiler fixed, resolves
0034552
+ detect and return the state of num lock, caps lock and scroll lock in the enhanced shift state on win32/win64
Avoid overflow error in riscv code generator
+ introduce TFPKeyEventRecord - a wrapper record around TKeyEventRecord, so it
can store additional data (not added yet) to our keyboard events; this way we
can later add extended shift state (e.g. distinguishing between left and right
shift), etc.
* do not re-used gottpoff symbols as they are PC-relative
Fix riscv32 compilation error introduced in last commit
Use same parameter type for update_reference_offset override
+ add enhanced shift state to the TFPKeyEventRecord object and call
transEnhShiftState only in HandleKeyboard, when the new key event is added to
the queue. This way we can use GetKeyState to determine the parts of the shift
state that are not in dwControlKeyState.
* transEnhShiftState moved to be a local function inside HandleKeyboard to
ensure it's not called outside this procedure.
+ introduced TEnhancedShiftStateElement - an enum type, containing the elements of TEnhancedShiftState set
+ added test, that reads enhanced keyboard events
+ distinguish between left and right shift and detect num/caps/lock key down using GetKeyState
- get rid of the ss:TEnhancedShiftState local variable in TranslateEnhancedKeyEvent
* three operand shl for shifting by 2, 4 or 8 can be simulated by lea
* better alignment on 386-linux
* set nf_write flag properly for vec. nodes of types with implicit dereferencing
* better alignment of while loop heads
* fixed adjustments of lower/upper bounds in range test optimization in case
of strictly smaller/greater comparisons (mantis
0034385)
* moved finalization of code generator temps to a node, so it can be getcopy'd
(needed for LLVM, where we need two copies of the finally code: one in case
an exception occurs, and one in case none is raised)
o also first finalize parameters and only then code generator temps, since
in theory the former could create more of the latter
+ new spilling heuristics which takes care of the usage weigth of a register,
not yet activated, can be selected by passing SPILLING_NEW when compiling the compiler
* finalizetemps nodes should never be considered equal and have side effects
* don't generate tempsfinalize nodes in except filter procdefs, as that would
finalize the parent's temps twice (fix for
0040345, mantis
0034574)
+ MovOpMov2MovOp optimization
* building on i386-linux fixed
* disable MovOpMov2MovOp optimization on x86-64 for now as it seems to break
* pass volatility information to llvm.memcpy
* thlcgobj.g_unreachable() dummy implementation + llvm override
* fixed dynamic array constants for llvm
- reverted
0039188, as this hack removes the type correctness of the
instructions, which breaks the llvm code generator. Put such hacks
in CPU-specific overrides
+ customint torddef type to create arbitraty bit-width integers
o use this to handle non-power-of-two-sized parameters for llvm
o no general support in the parser/code generator, so don't expose
* systematically capitalize first word of errormsg/sentence, patch by J. Gareth Moreton, mantis 34618
Regenerate msgid and msgtxt include files after commit 40422
* properly initialize phdr and phnum
m68k: reinstate the inc/dec tempregister type hack again in an isolated way (it was removed in
0040385, as it was breaking llvm target)
+ abi tag for i386
* arm abi tag moved into pascal file
- disable cs_opt_use_load_modify_store because for llvm because it is
apparently buggy as far as type information is concerned, and it also
results in tons of spilling
* ensure the generic version of tcgshlshrnode gets used for llvm
+ volatile() expression that marks an expression as volatile
* disable matching volatile references in the assembler optimisers, so they
can't be removed (more conservative than needed, but better than removing
too many)
o the CSE optimiser will ignore them by default, because they're an unknown
inline node for it
* also removed no longer used fpc_in_move_x and fpc_in_fillchar_x inline node
identifiers from rtl/inc/innr.inc, and placed fpc_in_unaligned_x at the
right place
* use volatile() to prevent wrong optimizations by llvm
* do not call InitTLS when a compiler is used which does not include the abi tag section
tosunits: added a few more VDI functions
+ llvm_lifetime_start/llvm_lifetime_end intrinsic declarations
* only free the temp holding the function result after we've loaded it into
the function return register (so we won't load from an already freed
temp once we emit lifetime info for temps on LLVM)
* emit temp lifetime information for llvm
o also allow freeing temps in the middle of a routine for llvm (we won't
reuse them, but it results in better lifetime information)
* add nocapture and dereferenceable/dereferenceable_or_null decorators to
parameters for llvm where appropriate
+ added all the missing test/units/* subdirectories: classes character dateutil fpcunit softfpu variants
* fixed bug that caused the "sret" argument attribute to never be used (and
a guaranteed internalerror on AArch64/llvm)
* fixed paraloc def when changing the size to OS_32
* fixed shifval for big endian (bits instead of bytes)
* set paralocations correctly for LLVM/AArch (must be register-type instead
of parameter-type based)
* only coerce the type of the leftover bytes of a record if the location
size doesn't match the number of remaining bytes
o prevents a second "single" field of a record getting interpreted as a
"cardinal"
* support OS_32/OS_64 in AArch64 cgsize2subreg() for MM registers (can happen
for records with floating point fields with the LLVM code generator)
* initialise cgpara with valid data for the C-style "array of const" para
(necessary for the LLVM backend)
* replaced some stray cpointerdef.create() calls with cpointerdef.getreusable()
* pass dynamic array parameters of cdecl routines by value on AArch64
(like on onther platforms)
o it was passed by reference as a side effect of the fact arrays in C are
pointers, but a dynamic array already is a pointer
* fixed type consistency in handler for array parameters on platforms where
these have to be passed on the caller side (i.e., AArch64)
+ internal sqrt support for LLVM (faster on all platforms, necessary on
platforms that don't have RTL support for it, as the the generic
fpc_sqrt_real just calls runerror)
* fixed dynamic array constants for non-Darwin LLVM platforms
* support for compiling the objects unit methods that expect local procedure/
function pointers using {$modeswitch nestedprocvars} functionality, activate
this for LLVM and also activate that modeswitch for a test that uses this
o also convert the IDE units to use this functionality
o requires extra typecasts because implicit type conversions from
procvar(p: psometype) to procvar(p: pointer) are not supported; on the
plus side, even those type conversions are checked for validity
o note: requires {$modeswitch nestedprocvars} in all programs/units
that rely on this functionality
* cleaned up blockaddress instruction (add type rather than hardcoding it
in the assembler writer)
* fixed taking the address of a label in a typed const for llvm (fixes
tbs/tb0468a)
* fixed <> comparisons with NaNs (use LLVM "unordered" comparison: succeed
if either operand is a NaN)
* use ccallnode.createintern() instead of
ccallcnode.createinternfromunit('SYSTEM')
+ LLVM support for the FMA intrinsics
* fixed LLVM code generator not taking into account constalignmin/max
settings for typed constants
* fixed used resulttype of char-to-shortstring typeconversion in case the
shortstring type is smaler than 255 chars
* simplify all type conversions for formal constants even for LLVM and JVM
(since these happen at compile time and don't result in generated code,
they never need extra type conversions in the code)
* force pointer-based self parameters of inlined routines in temps for LLVM
to ensure that their type gets updated
* fixed result cgsize of LLVM's second_nothing type conversion node (new
size instead of original size, which can be different in case of going
from void to something else)
* in constructors, free the temp holding self only after loading the function
result, as self is the function result there (follow up to 40501)
* fixed string constant length when going from utf-8 to single-byte code page
(mantis
0033666, patch by engkin)
* handle constructor function results that have been migrated to the
parentfpstruct the same as regular function results (see
0032687)
* addition to
0040631: also force inline self parameters that are already in
a temp into a new temp for LLVM, so their type gets updated
+ test for previous commit
* (modified) patch by Gareth Moreton: Speed improvement in case blocks, resolves
000034762
This patch improves the compiler where "case" statements are concerned, using jump tables more often and creating more efficient machine code in some situations:
* If a case block only contains one branch (not including the else block), the initial range check is removed, since this becomes wasted effort.
* If the else block is empty, the else label is set to the end label - though this doesn't decrease the code size, it takes a bit of strain off the peephole optimizer.
* On -O2 and above, some node analysis is now done on the branch labels. Most of the time this just redirects it to the end
label for empty blocks, but if the block contains a goto statement, it will redirect it to its destination instead,
thus increasing performance by not having multiple jumps (this won't get picked up by the peephole optimiser if the label addresses are in a jump table).
* Some checks now use what I call the 'true count' rather than the 'label count'. The true count includes each
individual value in a range - for example, 0..2 counts as 3. This increases the chance that a jump table will be
utilised in situations where it is more efficient than a linear list.
* For jump tables, if the case block almost covers the entire range (32 entries or fewer from full coverage),
the initial range check is removed and the gaps included in the jump table (pointing to the else label).
* pass used tls model to the assembler
* better code alignment for x86_64-win64 and x86_64-linux
* not all targets support the tls-model switch, use it only if section thread vars are used
* changed maxjumpalign:10 to 16
* changed (max)jumalign for Darwin/x86_64 from 0 to 16
* fixed wrong change of jumpalignmax from 10 to 16 in previous commit
o renamed jumpalignmax and coalescealignmax to jumpalignskipmax/
coalescealignskipmax to better reflex the meaning of these setting
(and the difference in meaning to e.g. constalignmax)
* update alignment values for Darwin
* (modified) path by Gareth Moreton to fix case handling
* updated bcase.pp benchmark by Gareth Moreton, now used also as test
* when optimizing range checks in case nodes, unsigned comparisions must be used, resolves
0034782
+ test for
0027543 which is fixed meanwhile
* fixed LLVM memory leaks
* don't emit 0-sized parameters for LLVM: clang doesn't either, and some
LLVM backends (like the AArch64 one) trigger internal errors when
encountering them
* patch by Simon Ameis: adds mcu STM32F091* to compiler unit t_embed.pas; thus internal error 200902011 is not raised anymore, resolves
0034570
* improved explanation for warning 9034
* set default abi to eabi5 on arm
tabs to spaces cleanup. no functional change
haiku-x86_64: regenerated all Makefiles
haiku-x86_64: regenerated all Makefiles, take 2
tarray15: no rodata support on a bunch of m68k platforms
tarray15: the conditions added in
0040779 should be or, instead of and (thanks Pierre)
* fixed several places where the interface crc could change:
o unsetting po_inline while parsing the implementation for various reasons
(interprocedural goto/label, accessing a local in a parent frame,
having nested procedures)
o instead handle this via the pio_inline_not_possible flag
o noreturn can no longer be specified only in the implementation
Add FPC_SYSTEM_EXIT_NO_RETURN macro for embedded target
Add x86_64-haiku target to some Makefile's
Change default debugging format for x86_64-haiku to dwarf-2, as stabs is normally disabled on 64-bit systems
* modified patch by Gareth Moreton to make ie unique, resolves
0034849
* when deciding about the case code generation in case of size optimization, the number of labels is relevant, not the covered range, resolves
0034818
morphos: add a custom lineinfo unit, prepared to parse stabs relocations in ELF relocatable objects, also featuring stronger address validation, and showing offsets in the executable instead of absolute addresses
morphos: include the new lineinfo in the build
heaptrc: empty the array for the call trace, otherwise the trace dump code will just dump the rest of the array as well, on systems where the heap is not initialized to zero, or if the memory area has been re-used
morphos: fixed stabs line number parsing, and off-by-one line issue with backtraces. i think this should be a generic fix and can be backported to the global lineinfo
morphos/lineinfo: updated the address adjustment comment added in
0040857, no functional change
* -tls-dialect is not a as option, removed it, resolves
0034901
* constrained generics are also compatible with formaldefs, resolves
0034893
* modified patch by Gareth Moreton to pool TmpUsedRegs in the assembler optimizers, resolves
0034679
* fix and enable MovOpMov2MovOp optimization on x86-64
* usage example for linux
+ support for 16 bit registers
+ patch by Marģers to support the x86 assembler instructions blsi, blsr, blsmsk, adcx, adox, movbe, pclmulqdq, resolves
0034815 and
0034799
+ avxopcodes tests also movbe and pclmulqdq
* fix MovOpMov2MovOp optimization if no -Cpcoreavx2 is used
* open arrays and arrays of consts might be only stack tainting if they are passed by value
* avoid assembler errors for the MovOpMov2MovOp optimziation in case the size of the instruction
gets changed and the first one contains a constant, resolves
0034933
* factored out OptPass1FSTP, used by x86-64 now as well
* better recognization of procedure exit code
* factored out OptPass1FLD, used bx x86-64 now as well
- removed unused function
+ tls support for x86_64-linux (not yet enabled by default)
aros/amigaos4: enabled ELF32/64 and GetModuleAddr() in exeinfo, based on the MorphOS versionexeinfo.pp
reverted accidental commit to text.inc
morphos: do not read beyond end of the .rela.stabs section. do not try to relocate stabs entries, if opening the stabs was unsuccessful
amicommon: moved MorphOS-specific lineinfo to amicommon, for upcoming AROS and OS4 support
amicommon/lineinfo: added support for i386 relocatable binaries with .rel.stab section, as used on AROS-i386 for example
aros: fixed lineinfo to build from amicommon
amicommon/lineinfo: fixed copy-paste error in PowerPC codepath
aros: only build lineinfo for i386 for now. FPC on x86_64 doesn't support stabs at all and the Amiga-specific lineinfo unit has no ARM support
amiga: enable building of heaptrc unit, enable building lineinfo and exeinfo for OS4/PowerPC
morphos: support section GC with GNU LD as well
* do not call the internal assembler if -s is passed
+ support msr regf,reg32 on arm in the internal assembler
* do not load always the references into a register in g_concatcopy
* correctly handle LDRD in TAoptBaseCpu.RegModifiedByInstruction
* first step towards supporting 32 bit targets with the LLVM code generator:
use the generic code in more cases when cpuhighleveltarget is defined
* perform extension of parameters to 32 bit for Darwin in the paraloc instead
of in the cgpara (cgpara should always correspond to the real parameter)
* fixed type correctness of and simplified the threadvar loading size
optimisation
* initialse the cgpara for the C-style varargs on ARM (needed for LLVM)
* fix loading of constants in registers in the LLVM CG if the constant
does not fit in ptrsinttype
atari: fpc now searches for the compiler with .ttp extension, as that's the default on Atari
+ introduced unit SortBase, which implements the foundation for pluggable
sorting algorithms. A default QuickSort implementation is provided by the
unit. Other units can be added, to provide other sorting algorithms (e.g.
HeapSort, MergeSort, IntroSort, etc.)
* TList and TFPList updated to use the current default sorting algorithm defined
in SortBase for their .Sort method.
* compilation fixes for many platforms after
0041167
+ added TList.Sort overload with a sorting algorithm parameter
* added PtrList to the names of the current sort algorithm callback functions and
types, to indicate they sort a list of pointers
+ added the TItemListSorter_NoContext and TItemListSorter_Context procedure
types to sortbase. No implementation for them yet. They will allow sorting
an array with elements of arbitrary size (e.g. array of records).
* the type of the ItemCount parameter changed from PtrUInt to SizeUInt
* the first parameter of QuickSort_PtrList_NoContext renamed ItemPtrs for
consistency with the other similar procedures
* the Compare parameter renamed Comparer for consistency
+ added and implemented QuickSort_ItemList_Context
* use the sortbase sorting algorithm in fgl as well
* fixed TFPList.Sort. Scary news: turns out we don't have any tests for
TFPList.Sort or TList.Sort... :(
* use Inc() and Dec() instead of v:=v+1
* hook TFPSList.QuickSort to also call the default sorting algorithm from sortbase
+ added sortbase as a dependency to unit fgl in the makefiles
+ added a simple test that tests TList.Sort
+ added a sort algorithm interface that accepts a custom callback function for
exchanging two elements. This is required for TStringList.Sort (and is the
most generic form for a sort algorithm interface that I can think of).
build/install fixes for the new sortbase unit for amiga, atari, aros and morphos
* fixed bug in QuickSort_ItemList_CustomItemExchanger_Context and
QuickSort_ItemList_Context and which can cause wrong sort results, due to not
taking into account that the pivot can be moved by the swap operation
* use the sort algorithm from sortbase for TStringList
+ added test for the sortbase unit
+ added .Sort() overloads with a SortingAlgorithm parameter to TFPGList,
TFPGObjectList, TFPGInterfacedObjectList and TFPSMap
+ nolinline modifier to specify that a routine must never be inlined
* let de LLVM parameter manager merge multiple paralocs used to represent a
single ordinal, as such splitting is handled by LLVM itself (and handling
such split locations is currently not supported by our LLVM code generator)
* set default Mac OS X target version to 10.6 for LLVM (earlier versions did
not include libunwind in libSystem, causing linking errors when compiling
on later versions)
* always emit UAL when using LLVM (clang does not and will not support
pre-UAL)
* removed unnecessary replacements of the paraloc def with arraydefs on ARM
* fixed ARM paraloc defs (for LLVM)
* update the stack alignment field of parameters when doing so for paralocs
* LLVM does not support 128 bits arithmetic on 32 bit platforms, which we
need for overflow checking -> use RTL built-ins
* fixed thlcgobj.g_rangecheck() for cpuhighleveltarget when targetting a
cpu32bitalu
* fixed the default external assembler for llvm when using -s
+ added unit SortAlgs to rtl-extra. It implements extra sorting algorithms
that can be used in place of the default QuickSort implementation from unit
SortBase. Currently, only HeapSort is implemented, but others will be added
in the future.
+ keep track of the pivot index in all quicksort implementations. No functional changes,
but will be used to prevent overlap in the divided subregions and also infinite loops
in case of an incorrect compare function.
* use a try..finally block to protect against memory leaks if the comparison
callback function raises an exception in QuickSort_ItemList_Context
* use a more robust QuickSort implementation, that is guaranteed to never loop
forever and never access index out of bounds elements from the array when
being passed an incorrect comparison function. The resulting sort order is
still undefined in this case, though.
* use SizeUInt instead of longint for the array indices in the quicksort
implementations. This:
1) allows sorting arrays with >4G elements on 64-bit systems
2) allows sorting arrays with up to 4G (>2G) elements on 32-bit systems
3) uses 16-bit instead of the less efficient 32-bit indices on 16-bit and
8-bit platforms
* partition elements equal to the pivot on both sides of the pivot, since that
leads to much better performance when sorting lots of repeating elements
+ added comment with information about QuickSort and its specific implementation in unit SortBase
+ added additional notes in the comments for HeapSort
* fixed quicksort comment about memory use - our implementation uses O(log n) stack, not O(n log n)
+ added randomized quicksort to unit sortalgs
Add sortbase unit to global units list, as it can be compiled for all CPUs
* select the middle element in the default quicksort implementation in a way
that doesn't generate arithmetic overflow for very large arrays
* some formatting changes to avoid very large lines in the source code
Fix compilation on targets without Random: add $ifdef FPC_HAS_FEATURE_RANDOM
+ added test for unit sortalgs, that tests the heapsort and randomized quicksort algorithms
+ added .Sort overloads, that specify an algorithm and use the sortbase defined
algorithms for sorting TList, TFPList and TStringList when FPC_TESTGENERICS is
defined as well. Unfortunately, I couldn't test it, because the RTL doesn't
compile with FPC_TESTGENERICS, due to errors, completely unrelated to the
sortbase changes.
+ implemented IntroSort (hybrid between QuickSort and HeapSort) in unit SortAlgs
Fix bug report
0035065 using provided patch by J. Gareth Moreton
* access the Default8087CW global variable directly from within inline asm,
instead of copying it to a local var first, since the concern about PIC code
(this asm code started out as a copy of the i386 rtl code) doesn't exist on
the i8086, since there's no such thing as PIC code on the i8086
* optimize the i8086 backwards move by using movsw instead of movsb in the Move
and MoveData procedures
+ added asm optimized version of fpc_pwidechar_length for i8086
* updated fpcm revision.inc
* properly quote pathes for objcopy calls, resolves
0035072
+ introduced unit UnixKvmBase, which is going to contain miscellaneous routines,
commonly used by the unix keyboard, video and mouse units. Currently, it only
contains the UTF8Enabled function, which was moved away from the video unit
and which will also be used by the keyboard unit in the future, as soon as
that unit also gets UTF-8 input support.
+ added a global variable Utf8KeyboardInputEnabled in the implementation of the
unix keyboard unit. Initialize it in SysInitKeyboard with the value, returned
by UnixKvmBase.UTF8Enabled (the same function that checks whether UTF-8 output
should be enabled in the video unit).
+ return enhanced key events in the unix keyboard driver; unicode not supported yet
* ppudump: Use buffered write when outputting to json or xml. It improves the output speed a lot.
* ppudump: Fixed warnings with -O3.
+ handled the 'center' (numpad 5) key properly in linux, xterm and gnome
* gnome3 (clarifies gnome version tested)
* fixed Shift-F1..F8 on the Linux console
+ added shift state to the escape sequence structure
+ add shift state to TTreeElement and DoAddSequence
* arm: Fixed crash while loading double constants with PIC enabled. This is the regression after
0041129. The crash has occurred due to usage of a rare code path. It will be fixed in the next commit.
* arm: Include pi_needs_got to current_procinfo.flags when the GOT register is accessed. It forces proper initialization of the GOT register at the beginning of a procedure. This fixes storing of a double constant to a field in a packed record and other rare copy operations when PIC is enabled.
* aarch64: According to ARM64 ABI, function's arguments and the result are not required to be sign/zero extended to a full register size. Obey this rule for all targets except iOS where sign/zero extension is required.
* don't use cg64.a_load64_loc_cgpara() for 64 bit records passed in
non-integer registers
Add testing of use of variable of class
* move the homogenous float aggregate determination function to a common
unit for ARM and AArch64
* keep track of whether a routine has a C-style variadic parameter in the
procoptions even when it's through an array-of-const parameter
* always call create_varargs_paraloc_info() instead of create_paraloc_info()
in the former case, even when no varargs parameters are specified (because
on some platforms even some non-variadic parameters need to be passed
differently, such as on ARM with gnueabihf)
* add support for HFA parameter passing for ARM hardfloat
(fixes test/cg/tcalext6)
* place the "external" directives in the interface instead of in the
implementation, because we don't support "external" in the implementation
for C varargs functions for LLVM (can't generate a stub for them)
o having "external" in the implementation also causes useless overhead
with code generators that do support this
* give an error when trying to call through to a C varargs routine with a
high level code generator
o we cannot create a high-level stub in that case
* type left-over parts of parameters as arrays of "stack slot alignment" if
they're an exact multiple of the ialignment size on LLVM. This prevents
both overalignment (e.g. remainder of 8 individual bytes on ARM
would be aligned to 8 bytes instead of 4 if typed as int64) and
underalignment (e.g. 32 bytes remainder of a record that needs to be
aligned to 8 bytes would be aligned to 1 or 4 bytes if types as
array of resp. bytes or longints)
* remove double "nocapture" attributes
* also add "noalias nocapture" to sret parameters
* use ` instead of ^ as replacement character in LLVM asmnodes, as ^ can
appear in ARM inline assembly
* properly set 8 byte parameter alignment for first parameter on ARM if
applicable
* also specify the byval alignment at the callee side
* support OS_32/OS_64 in cgsize2subreg for ARM MM registers to handle
records passed in MM registers
Fix fullcycle/fullinstall by adding missing armgen directory -Fu option if PPC_TARGET is armeb
* Removed unused local vars.
* Removed inline, since inherited is not supported.
* Do not set pi_needs_got in current_procinfo.flags at the node level, since the GOT usage can only be estimated there. Instead set the pi_needs_got flag at places where the GOT register is accessed during the code generation. This eliminates generation of the unneeded initialization of the GOT register and fixes linker errors when the _GLOBAL_OFFSET_TABLE_ symbol is referenced but no actual GOT references are present.
* i386: Minor PIC initialization improvement if the GOT register is forced to EBX.
* i386 PIC: Do not force EBX as a GOT register if tf_section_threadvars is not set. Actually forcing EBX here is a bad idea anyway.
* i386: Do not request GOT for every function call. GOT is requested only for external calls in thlcgcpu.a_call_name(). Local calls are always PC relative.
* track va_uses_float_reg also for varargs functions without varargs
parameters (see e.g. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=23070 )
* modified ReadKey to return TEnhancedKeyEvent (partially constructed - contains only asciichar and virtualscancode)
* moved ReadKey after GetEnhShiftState, so it can be used to return the shift state
* return the shiftstate in ReadKey
* the variables only used by ReadKey made local, and not visible in its nested routines
* simplify an 'if A' followed by an 'if not A' sequence to 'if A then...else...'
* fixed off-by-one error when putting a character back into the input buffer
+ introduced PutBackIntoInBuf - procedure that returns a key back into InBuf
- removed the IsAlt parameter from ReadKey, because it is not used
- removed the IsAlt local variable, because it is not used
- removed some no longer used commented out code
- removed FAltKey, because it is not used
* set char to 27 for the Esc key (for the linux patched console) in the sequence table
* handle sequences that return both char and scan code
* the type of key_sequence.char changed from byte to 0..127 to enforce ASCII only use
- removed check for the kbEsc scan code, since this is now made redundant,
thanks to the fact that the sequence can return both non-zero AsciiChar
and ScanCode at the same time.
- removed commented out code
- removed commented out code
* simplified the initialization of MyScan, since ReadKey now returns a record, that contains both AsciiChar and ScanCode
* initialize SState from the shift state, returned by ReadKey
* moved the 'if not again' part after the repeat..until loop; it behaves the same, but improves code readability
* better alignment values
+ added UTF-8 keyboard input support
* reject surrogate characters when decoding UTF-8 keyboard input
* preserve the unicode keycode returned from ReadKey in the result of SysGetEnhancedKeyEvent
* fix for
0041416: 64 bit values on 32 bit platforms can of course also be
passed in memory
+ add ConvertEnhancedToLegacyShiftState to the interface of unit keyboard
* switch to using enhanced key events in the drivers unit
+ add TEvent.UnicodeChar to the drivers unit
* fixed the linux keyboard patching table for handling F11 and F12 properly
+ also patch Ctrl+F1..Ctrl+F12 when running as root on the linux console, so they can also be read properly
* initialize function result for variadic functions (fixup for
0041420)
Commit patch submitted by J. Gareth Moreton in bug report 35180
+ added essAltGr to TEnhancedShiftState and added proper AltGr handling for the Linux console
+ added proper Windows AltGr support for the enhanced shift state
+ enable the enhanced key events permanently on windows
- removed the no-longer-used code for dealing with the legacy key events
* CheckAltGr moved above HandleKeyboard, because it will be invoked from there also
* update the keyboard layout info before every keystroke, since Windows can
change between multiple layouts, while the program is running
* optimized UpdateKeyboardLayoutInfo, so it only calls GetKeyboardLayout once
and only performs the HasAltGr check in case the keyboard layout has actually
changed
+ added comments, explaining the enhanced shift states in detail
+ added comment about a Windows bug, which causes the keyboard layout change
detection code to not work
Fix tmoddiv4.pp test failure with -O1 option for powerpc64 as suggested by Jonas
* ppudump: Fixed a warning regarding text clipping.
* patch by J. Gareth Moreton which avoids that the optimizer causes reads of invalid memory, resolves
0035187
* only add hidden parameters for objectdef methods after generating the vmt,
so that they take into account inherited calling conventions (mantis
0035233)
o don't needlessly calculate the paraloc info when generating a JVM mangled
name
* only enable tw35187 for Windows and Linux, since it uses syscalls under unix
(which are not supported on all unix targets; feel free to re-enable for
specific unix targets if the test has been verified to compile there)
o also fixed placement of dotest directives: they have to come before any
part of the program code
+ test from mantis
0035224 (already works)
Regenerate Makefile's after fpcmake change in commit
0041721
* also accept {$elsif} after {$if(n)def} (mantis
0034858)
* fix msgtxt array size if the text size is an exact multiple of 240
* clean up some things regarding explicit paraloc handling. this should fix m68k-amiga and powerpc-morphos builds after
0041716
* reinstate the internalerror removed in
0041730 for i386, as that was a valid condition to verify
* Patch from Bart Broersma to implement Int64 support in xmlreg (bug
Mantis 0035227)
* Added unicode sample using unicodestring
* Patch from Bart Broersma to fix deleting non-empty key (bug ID
000035132)
+ Add variables to use gppc386 utils more easily:
Use DEBUG_CYCLE=1 to generate cycle using gppcXX at each stage,
i.e. running ppcXX through gdbpas, using utils/gppc386.pp source,
compiled and copied to gppcXX.
+ Add other DEBUG_XXX varialbes, allowing to use gppcXX binary
at a specific level in cycle.
if DEBUG_PPXX is set, PPXXPREFIX variable will be set to 'g'
leading to the use of g$(PPXX) compiler, which will run $(ppXX)
compiler through gdbpas.
* added extra header to ppu inside a subsection, so we won't run into
trouble when the ppu version hits 255
* also moved several ppu flags to a set inside that section
* hopefully fix fpu emulation ppu header flag check after
0041846
* Patch from Serge Anvarov to use local time for keyinfo (bug
Mantis 0035100)
+ added the initial implementation of my C structure checker code generator
tool, named h2paschk. This is currently a separate tool, that requires a
manually crafted input file with a special syntax (example is included as a
comment in the source code), that contains descriptions of all the records
that need to be checked, but it is planned to add support to h2pas to generate
these files automatically, since this would be very useful.
+ added h2paschk.pas to the makefiles
* documented usage of ppuversion and ppulongversion
* check CurrentPPULongVersion in ppumove
- Add support for .option directive in riscv assembler.
- Use addiw when adjusting U32 to S32
- Port RISC-V64 startup code to native inline routines.
+ added OpenBSD RTL structure checker description file for use with the h2paschk
tool. Currently only checks the stat and dirent structures, but more will be
added in the future.
+ added pollfd to the openbsd structure checker file
+ more structures added to the openbsd structure checker file: utimbuf, flock,
tms, timezone, rusage, TRLimit and iovec
- Fix UTX* optimizations that didn't consider the optional ROR parameter.
Move update of fields counting allocated memory to after SysGetMem call
Avoid arithmetic overflow inside heaptrc unit on this test
* insert the hidden parameters for objectdef methods after resolving
overrides but before generating the VMT, so that these hidden parameters
are part of the procdefs stored in the VMT (fixes some LLVM type errors
after
0041716)
* use ".set" for aliasing global symbols on Darwin, instead of declaring
symbols after each other
o removed the .reference hack that was used previously
+ added h2paschk structure checker files for the DirectDraw and DirectInput
header translations, used by PTCPas.
Avoid C 64-bit compiler warnings by using %lu instead of %u for sizeof and offsetof
* replaced TCmdStrListItem getter function with a property
* moved sleb/uleb128 helpers to cutils and use SarInt64() intrinsic (based on
patch by J. Gareth Moreton, mantis
0035327)
* micro-optimization for tentryfile.getbyte() (based on patch by
J. Gareth Moreton, mantis
0035406)
Improve syscall number testing script:
+ Add support for parameters:
-v sets verbose variable to 1
VAR=value gets evaluated.
* moves to rtl/$os if called at diferent level.
+ check if there is a incude directive in sysnr.inc file.
+ Add compilation of C source code with the C variant of the syscall number.
+ Support 32 and 64-bit version of C compilation for systems
allowing 32 and 64-bit executable (like x86_64-linux).
+ Add 'preprocessing' using AWK to test {$ifdef CPUXXX} macro.
+ Add summary at end of script.
* Rename check_syscall_number to check_c_syscall_from_fpc_rtl
* Rename check_syscall_number_reverse to check_c_syscall_in_fpc_rtl
* Try to remove most intermediate files.
+ Generate add_missing_syscalls.inc file if numbers are missing.
Eliminate wrong line (bug report 35441)
* Patch from Serge Anvarov (bug
Mantis 0035102) to reduce code duplication
Fix compilation of testsuite program
Avoid warnings when -v0 is used by using $push/$pop
* optimized and simplified tai_aggregatetypedconst destruction
+ Add handling of simple types and constants
+ Add ReadID helper procedure inside ProcessH2PasChk method
Add simple types and some constants
* freebsd and openbsd also use sys/syscall.h header
+ Add AWK parser to removed parts of source not concerning current CPU
(only handles CPUXXX like CPUI386)
More improvements to script testing syscall numbers
- removed ttypedconstkind parameter from tai_simpletypedconst constructor,
as it always has to be tck_simple anyway
* fixed double free in LLVM code generator after
0041963
Link against libc to avoid __guard_local not found symbol failure at link time for OpenBSD target
Link against libstdc++ and libc to avoid linking error for openbsd OS
Use %X instead of %x for C hexadecimal constants as Free Pascal hexstr uses uppercase characters A to F for values 10 to 15
Add more system header constants
* Also allow '-' in include file names
+ Add os_cpu and cpu_source variables
* Cope with aarch64 GNU C compiler that does not support -m64 option
+ Add support for arm test on aarch64 machine
* Better accept expressions instead of constants in C #define
Add script to use h2paschk on t_OS.h2paschk file for rtl tests for system header compliance
Add first linux RTL compliance test file t_linux.h2paschk
Also remove -m32 option for arm native GNU C compiler
* Improve handling of command line args setting variables (did not work if it contained spaces)
+ Group all recognized macros into list_defines in preproc.awk file
+ Convert Pascal style hexadecimal constants into C style
+ add support for MultiHelpers modeswitch by Ryan Joseph for Mantis
0035159
+ added tests
* Add Read/Write(Buffer) TBytes, ReadData/WriteData, ReadBufferData/WriteBufferData to be Delphi compatible
* set correct fileinfo for statements_til_end() block
* fixed floating point div-by-zero RTE code on Darwin (208 instead of 200,
fixes webtbs/tw32671)
* fix case completeness and unreachable code warnings in compiler that would
be introduced by the next commit
+ support for verifying whether a case statements handles all possibilities
(based on patch by Martok)
o enabled by default in ISO and Extended Pascal: compile-time error if not
the case in ISO mode, warning and run-time error in Extended Pascal mode
o warning enabled by default in all other modes for boolean, enumeration and
subrange integer types with ranges different from the default ones
(i.e., different from 0..255, -128..127, 0..65536, etc)
o warnings for all ordinal types can be enabled in all modes with
-CC
* FIx compilation for platforms that do not have extended
* FIx compilation with 3.0.4
- removed explicit linking of ptest.o, as that happens already automatically
due to the "uses ptest" and breaks LTO (then both ptest.o and ptest.bc
get linked, resulting in duplicate symbols)
- removed test that shortstring is aligned to a multiple of pointer size,
as the compiler does not guarantee any such thing
* Make explicit that Integer is 32-bit
* fix overflow errors in case coverage code
* fixed crashes on platforms using parentfpstructs with generic routines
that contain nested functions (when specialised, procedures don't have
the main function of the unit/program as parent procinfo)
* fixed Darwin/AArch64 flt/int-div-by-zero error codes (fix for 42045, as
noted by AlexeyT)
Disable 64-bit version of CPU_SOURCE is 32-bit
Allways use local pt variable to ameliorate readability of code
Remove two warnings about missing case (others are still present in ppudump.pp source)
Fix arm-aros rtl compilation
* DFA now takes case-completeness into account (mantis
0035598)
* updated German message files (patch by Karl-Michael Schindler,
mantis
0035559)
* replaced fpcunit custom code to obtaining a caller site with a call to
CaptureBacktrace (prevents crashes when compiled with LLVM backend,
and is generally more robust)
* append rather than insert the alias symbols for the program/procedure
initialisation/finalisation routines
o this ensures the procdef's mangled name and its first symbol match,
which is required for Darwin when generating debug information and
using ".set" directives to define alias symbols, because a symbol
defined via ".set" cannot be used in a data relocations (and the DWARF
debug generator uses the default mangled name, which used to correspond
to the alias symbol due to the "insert" instead of "append")
* don't double-define function aliases for Darwin defined via ".set" directive
* fixed loading parent frame pointer for nested procvars on targets that
that use explicit parentfp structs (fixes webtbs/tw17379 for llvm)
* disabled low-level hack test for LLVM
* made the fields array parameter of llvmgettemprecorddef "const", as it
doesn't get modified and hence doesn't need to be copied
* abstracted registration of library init/fini routines (to be able to add
LLVM support)
* replaced non-breaking space with space (patch by J. Gareth Moreton,
mantis
0035602)
Change lib_exit to fpc_lib_exit in missed sources (to fix breakages after commit
0042104)
Add DEBUG_PPU conditional code to be able to debug ppu changes (only useful for debugging purposes)
* more fpc_lib_exit change compilation fixes
* disable regular array -> dynamic array type coversion support unless
{$modeswitch arraytodynarray} is active (mantis
0035576)
o changed compiler to compile without this modeswitch
o added the modeswitch to a test that depends on it
+ Added test object files for x86_64-haiku.
Fix division of constants on ARM thumb without long multiplication.
* support for handling subsetrefs with bitlen > AIntBits in a_load_subsetref_reg() and
a_load_const/reg_subsetref() (needed for handling 32 bit platforms using a purely
high level code generator like LLVM's, and may also improve the situation for
16 bit platforms)
o can probably be optimized to split them into parts that cover partial word loads
and complete word loads (to reduce useless merging)
* properly return from the signal handler on ARM/Linux instead of calling
HandleErrorAddrFrame directly (fixes psabieh exception handling, and
generally is cleaner)
* fixed cbool "and" with full boolean evaluation, and cbool "xor"
(mantis
0035272)
Added T2 form of LDR/STR for SP relative forms.
Fix compilation with release 3.0.4 ppcarm
+ added TNewExeHeaderFlags type, describing the flags in the header of win16 executables
+ added enum TNewExeTargetOS
+ added type TNewExeAdditionalHeaderFlags
- removed "cmp 0/1, pasbool1" optimization for llvm because this discards
the upper 7 bits of the boolean, while other platforms take it into
account (even though they're technically always required to be 0, and
the value is undefined if they're not)
* fix bootstrapping with 3.0.x and -O3
* Nintendo DS port updated to libnds ver.1.7.3
+ added set TNewExeSegmentFlags
* prettify the "Use of +offset(%ebp) is not compatible with regcall convention"
and "Use of +offset(%ebp) for parameters invalid here" warning messages by
showing the exact register used (bp, ebp or rbp) and using the original asm
syntax (Intel: [EBP+offset]; AT&T: +offset(%ebp) )
* prettify the "Use of -offset(%ebp) is not recommended for local variable
access" warning by showing the exact register used (bp, ebp or rbp) and using
the original asm syntax
+ introduced the asmmodes_x86_intel constant set
+ add asmmode_standard to the asmmodes_x86_intel set on i8086, because i8086 defaults to intel syntax
* prettify the "Use of -offset(%esp), access may cause a crash or value may be
lost" warning by showing the exact register used (esp or rsp) and using the
asm syntax (Intel or AT&T) used originally in the code
+ added the asmmodes_x86_att set constant - similar to asmmode_x86_intel, but for AT&T asm syntax
* suppress warning for targets without MM registers
* Updated Wii port to libogc 1.8.22
+ added class TNewExeHeader that encapsulates a NewExe header and allows writing it to a file
+ initialize some defaults in the TNewExeHeader constructor
+ added class TNewExeOutput. Not functional yet.
+ added a win16 internal linker class. Not functional yet.
+ implement TInternalLinkerWin16.DefaultLinkScript by copying the MS-DOS
implementation (not correct, but a good starting point)
- remove the tiny memory model code from TInternalLinkerWin16.DefaultLinkScript,
because the Win16 target doesn't support the tiny memory model
+ register a win16 dll scanner. Not functional yet.
+ added constants for the known CC_OmfExtension record subtypes (IMPDEF and
EXPDEF are the ones we care about - they are used in win16 dll import and
export libraries)
+ dispatch the IMPDEF and EXPDEF records to the newly introduced ReadImpDef and
ReadExpDef methods (not implemented yet)
+ use the new CC_OmfExtension_EXPDEF constant instead of the direct magic value
when writing export libraries
+ use the new CC_OmfExtension_IMPDEF constant instead of the direct magic value
when writing IMPDEF records
+ introduced the TOmfRecord_COMENT_Subtype abstract class
+ introduced the TOmfRecord_COMENT_IMPDEF class. Use it to encode the IMPDEF
records instead of encoding them directly.
+ introduced the TOmfRecord_COMENT_EXPDEF class. Use that to generate export
libraries instead of generating the magic string directly.
+ Implemented TOmfRecord_COMENT_EXPDEF.DecodeFrom
+ keep (certain) arrays in registers if they are used with constants indices only
* building on powerpc and arm fixed
+ implemented TOmfRecord_COMENT_IMPDEF.DecodeFrom
put #ifdef TARGETOS / #endif around the gcclib section, otherwise the various host paths can cause a hard to debug mess during crosscompiling in some cases
* disable array and record regvars for all cpuhighleveltarget platforms
Merge: b9c16b98d1 b08b6a17bd
* reintegrated debug_eh branch
o the LLVM compiler is now functional for Darwin/x86-64, and also (but less
tested) for Linux/x86-64, Linux/AArch64 and Linux/ARMHF. See
https://wiki.freepascal.org/LLVM for details and the current state
o Dwarf-eh-based "zero-cost" exceptions are available with the regular
code generators for Linux/x86-64 and Linux/i386 if the compiler is
compiled with -dpsabieh
* use variables of correct size with movd (test checks whether movd only
reads 32 bit even when destination is xmm register) (mantis
0035701,
as noted by J. Gareth Moreton)
Commit of new debug feature implemented by J. Gareth Moreton
Allows compilation of compiler using -dDEBUG_NODE_XML
which will generate a NAME-node-dump.xml file for each
unit, program or library compiled,
containing a XML description of the nodes handled during
compilation of the unit, program or library.
* one more disable location of DoPipe in case not on a Unix platform
(mantis
0035743)
* partial fix for Mantis
0035346: more "inline" directives for TCStream and TCMemoryStream methods
* remaining fix for Mantis
0035346: add "inline" directives to various methods of tentryfile
* simplify and optimize generated LLVM code for case statements
* also register symbols referenced from assembler via asolutevarsyms
* volatile syms should never be regable
* LLVM-specific support for bsr*/bsf*
* LLVM-specific support for popcnt
* record in ppu flag whether or not symbols are ansistrings, and use that
flag in ppudump rather than hardcoding targets (it's also the case for
LLVM)
- removed remnants of old ppu file support (ppudump does not support any
other ppu version than the current one anyway)
* fixed compilation with -dTest_Double_checksum_write
Commit modified file after commit
0042260
Commit patch submitted in bug report
0035787 by Gareth Moreton
* refactored slightly the BEOS ifdef in unixkvmbase.utf8enabled
* check the LC_CTYPE env var instead of LANG on OpenBSD to check whether UTF-8
is enabled
* forgot to commit tests in
0042329
* fixed range test optimization for signed types and enabled it for them
Add support for softfloat in RISCV RTL.
- Fix bug in 64bit softfloat double negation.
- Clean up handling of CPU/FPU type handling in RISCV.
- Do more fixes to get RISCV32 working.
- Fix most soft multiplication handling for generic RISCV code. Still missing a few.
- Add RISCV embedded targets.
* maybereplacewithtemp/maybereplacewithtempref: also create a temp in case
of possible side effects
- disabled ogmacho, as it can no longer deal with the assembly we generate
* on Mach-O, PECOFF and ELF platforms, write local symbols as hidden/
private_extern (or plain global in case of PECOFF, as the effect is
the same there): visible across object files, but they become local
when linked into a binary/library. This enables cross-unit inlining
of functions accessig implementation-only symbols.
* factored out checks whether a procdef's symbol needs to be global, and
the generation of the procdef's asmsymbols
o also removed unnecessary definition of procdef alias symbols for Darwin
(they are already defined in ncgutil.alloc_proc_symbol)
* fix tobjectdef.vmt_def to search in the correct symtable
* always register vmt defs (so they get written to the ppu) in case of llvm,
because it may need this def in case a method from a class defined in the
implementation of unit gets called from an inlined routine that gets
inlined in another unit (normally that vmt def would not get written to
the ppu file, as it can't be referenced from the interface and it's also
not necessarily directly referenced from the inline routine's nodes)
(fixes sdo_dataobject compilation with LLVM after enabling cross-unit
inlining of methods accessing static symbol table symbols)
+ parse the IMPDEF record in TOmfObjInput.ReadImpDef
Reintegration of Custom Attributes branch by Joost van der Sluis with patches reworked by Svetozar Belic [patch 1/3]
Implemented attributes for class types and properties (based on work by Joost van der Sluis). Added TCustomAttribute - a base class for attributes. Added TUnitInfo record to RTTI. It contains the unit name and unit options (for now only a flag which specifies if the unit contains attributes). Added several tests for attributes.
Reintegration of Custom Attributes branch by Joost van der Sluis with patches reworked by Svetozar Belic [patch 2/3]
Regenerated compiler/msgidx.inc and compiler/msgtxt.inc.
Reintegration of Custom Attributes branch by Joost van der Sluis with patches reworked by Svetozar Belic [patch 3/3]
Added FPC_REQUIRES_PROPER_ALIGNMENT to TUnitInfo definition. Added FPC_HAS_EXTENDED_RTTI define.
* rename trtti_attributesdef to trtti_attributes_list
* change boolean parameters for try_consume_unitsym to a set
* rename custom attributes related tests to something more sensible
* instead of declaring another type with a 'attribute' suffix, *search* for another type with a 'ATTRIBUTE' suffix (Delphi allows declaring both a TFoo and TFooAttribute in the same unit)
+ added test
* also check for invalid attribute data in tests
* instead of embedding the attributes inside the class' and property's type data only store a reference to a table of attributes
* it's more correct for GetPropAttribute to return a TCustomAttribute instead of a TObject
* use a Word instead of a Byte for the attribute index (after all the compiler writes a Word to the count field)
* always write a class' reference to the attribute table, even if the unit does not have attributes
- remove unit info and related code again as that will be handled similar, but differently with dynamic packages
* fix TClassData by including the AttributeTable at the right location
* rename TAttributeData to the more appropriate TAttributeTable
* streamline retrieval of attributes (both in TypInfo and RTTI units)
* considering that at least in theory every symbol and every def can carry RTTI attributes (Delphi only supports property and field symbols), move the rtti_attribute_list to tstoredsym/tstoreddef
* as attributes can be part of any type they are best suited in a common part of TTypeData
* fix code formatting (no code changes)
* check that we indeed have a type node and nothing else
* with a type node it's not necessary to check whether it's typedef is assigned
* fix code formatting (no code changes)
* rework code for parsing attributes to only allow constant expressions; Delphi only allows those as well and better we don't open *that* pandora's box just yet
+ add a test for overloaded attribute constructors
* fix code formatting (no code changes)
* store the parameter nodes in the attribute object as well (we need to write them to the RTTI as well as store them in the PPU)
* ensure that any potentially created constructor call is freed if the attribute is not bound to a def or sym
* instead of collecting the raw parameters we need to collect the parameters as passed to the call as there might be type conversions involved
* to be on the safe side: don't include AttributeTable fields when cycling
- remove unneeded local variable
* better check for a valid call node
* take a copy of the constructor assignment node (and free it together with the attribute)
+ add methods for the const nodes to directly emit their constant data to a constant builder
Note: reduce code duplication, especially for the tsetconstnode (with its descendant tcgsetconstnode)
* the RTTI of an attribute not only consists of the creation function, but also of the attribute's type, a pointer to the constructor and a data blob containing the constant parameters
+ added test
* add a remark that's going to be important once extended RTTI is supported (Delphi programs crash if an attribute's constructor is used that does not have any extended RTTI)
* move binding of a dangling attribute list to a sym's/def's attribute list to a class procedure of trtti_attribute_list
* make the reference to the TCustomAttribute type global
* generate construction function for the attributes used in a unit using a more straight forward approach
ToDo: "collect" attributes of same type and same argument list and generate constructor only once for them
* trtti_attribute_list.bind already checks whether the dangling attribute list is assigned or not
- remove code to create an attribute using a synthetic function
- remove functionality to get the code block when parsing again (let's open this pandora's box only when really needed...)
- symbolname field is no longer required
+ add functions for syms and defs and write sub entries of the sym/def to PPU and loads them again
* explicitely store the procdef of the picked constructor of the attribute
* store attribute information in PPU; this is less important for the compiler, but more for e.g. Lazarus when dealing with binary only units
* increase ppu version
+ added test
* adjust ppudump to handle attributes as well
ToDo: output parameter nodes as well
* disable [...] syntax for procedure directives if modeswitch "prefixed attributes" is enabled; they conflict otherwise and it's not easily resolveable
+ added test
* use two empty lines between method definitions (no code changes)
* correct identation (no code changes)
* allow custom attributes for all type declarations that are not a simple alias
+ added tests
* don't free the constructor call in trtti_attribute_list as that is already freed in the destructor of trtti_attribute
* free unbound attributes
* check for unbound attributes inside classes (currently they are only allowed for published properties)
Note: no tests yet as sooner or later most will be dropped once extended RTTI is added
* allow use of multiple, comma separated attributes as Delphi allows that as well
+ added test
* adjust error message when attributes are unbound
* regenerate msg*.inc files
fixed the messy state of messages after recent custom attributes merge. fixed a typo, fixed double definition of message 3350, restored a message that was removed but still used, so the build passes at least.
* get rid of the scanner message for attributes for real this time (sometimes I *really* hate Git -.-)
* TRttiDataCommon is required outside of the RTTI and DynArray include files as well
* Tenum_typedata needs to include the Common record as well
* first bunch of fixes for rtti for arm after attribute commits, fixes mostly alignment issues
- removed maxcrecordalign parameter/field from recordsymtables, as this value
cannot be modified in the settings (so we can directly use the one from
current_settings)
* properly align rtti for orddefs
* disable UCS4String if dynamic arrays are disabled
* fix test on systems where Currency is calculated using floating point types
* fix for Mantis
0023071: also store local symtable in the PPU if the procdef is generic as we need it to resolve genericdefs to nested types
* increase PPU version now that all generic procdefs store their local symtables
* don't reuse defs for attribute lists or individual attributes with parameters, as
they don't have a constant size
o fixes LLVM internalerror 2015122402 for test/tcustomattr{12,13,19}
* search dynamic string data record in correct symtable in
tllvmtai_typedconstbuilder.emit_string_offset
o fixes LLVM internalerror 2014080406 for test/tcustomattr14
* fix for Mantis
0035866: parse_paras does not check whether the expressions are really constant, so check that manually
+ added test
* don't bother finding the correct constructor if the attribute isn't a TCustomAttribute descendant anyway; simply skip the parameters in that case
+ added tests
* tests with Delphi showed that an attribute class must explicitely declare a parameterless constructor if it should be used, cause TCustomAttribute.Create is private
Note: this also means that TCustomAttribute itself can not be used as an attribute
* adjusted existing tests
+ added test
* more fixes to rtti after attribute branch merging
* fixed field alignment when reusing an anonymous recorddef for LLVM and
the LLVM layout of an instance does not match the original one
(e.g. because it contains procdefs of procedures with different
signatures)
* reverted
0042463, the internalerrors were caused by a bug in the LLVM typed
constant builder
* some runtime errors fixed, if compiled with -CrR
* handle records with managed fields correctly after attribute merge fixes
* don't apply user-specified constant alignments to RTTI data
- fixed check for determining whether requesting the size of an array is
an invalid operation after
0042479, as regular arrays can have high=-1
(mantis
0035874, already checked by trange3)
* i8086 compilation fix after changeset 42390
* fixes TInterfaceRawData to match TTypeData
* we halt if the currency values are *not* equal, not if they're equal... m(
* generate correctly aligned string RTTI, fixes trtti7 on ARM
* fix writing of floating point attribute parameters
* fix Currency comparison... again...
- Fix overflow checking in software multiplication routines. Overflow checking should also be enabled for the unsigned multiplications.
- Call FPC_Overflow instead of multiple calls to save on size.
+ enable the win16 internal linker if the compiler is compiled with the
WIN16_INTERNAL_LINKER define. Since the win16 internal linker isn't completed
yet, this define is not enabled by default.
* (non-ancient) Delphi versions that accept explicit ordinal -> floating
point typecasts behave the same as FPC (convert the value) rather than
as Turbo Pascal (reinterpret the bit pattern) (mantis
0035886)
* fixed distribution of random(int64) based on patch by Pangea
(mantis
0035878)
- removed tests as modern Delphi versions behave differently (mantis
0035886)
* simplified random(int64) code
* fix alignment of ParamList
* fix test for architectures using aligned rtti
* fix compilation of tests on 32-bit systems (doesn't (shouldn't?) change their behavior)
* use the size of the generated anonymous record instead of the manual tracked size so that any padding is picked up as well
* correctly align the stream on targets that require proper alignment
* compilation of tests on 32 bit targets fixed, using while loops so keeping the type sizes
* set sharedlibext for win16 to '.dll'
+ implemented TNewExeOutput.GenerateLibraryImports, based on the ogcoff implementation
+ fpu_capabilities for arm
* some code converted to use fpu_capabilities
* test needs exception checking
* make stack non executable on arm-linux
* insert FPC_THROWFPUEXCEPTION call into the correct assembler list
+ added an ImportLibraryList property to TOmfObjData
+ added method TOmfObjData.AddImportSymbol, which adds symbols, imported from an
external dll to TOmfObjData.ImportLibraryList (similar to
TInternalLinker.AddImportSymbol)
+ call TOmfObjData.AddImportSymbol for every ImpDef record read from an object file
+ also add and resolve import symbols coming from OMF object modules
+ create a TNewExeSection class
+ split the win16 executable into sections
Try to fix alignment issues in RTTI code for 64-bit targets which require proper alignment
Also recompile rtl using FPCFPMAKE before bootstrapping in fpmkunit directory (helps for cross-compilation)
+ added an TNewExeOutput.Order_ObjSectionList override and sort obj sections by
class name first, then by name, then by initial order
+ write the NewExe header in TNewExeOutput.writeData
* don't crash in TOmfObjSection.MemPosStr if MZExeUnifiedLogicalSegment isn't set
+ added dummy overrides for TInternalLinkerWin16.GetCodeSize, .GetDataSize and
.GetBssSize, because the default ones crash
* fix for Mantis
0035903: apply patch by J. Gareth Moreton to update the copyright year to 2019
* fix for Mantis
0035918: don't set the mangledname for the attribute's constructor function; let the compiler do its job instead
* create NewExe sections, corresponding to 64kb segments
* override MemPos_Start for the NewExe exe output and perform the whole MemPos
stage inside of it, because the linker script contains only dummy section
names and thus none of the sections get their MemPos set, while using the
default implementation
+ add a segment number (MemBasePos) to TNewExeSection
+ introduced TExeSection.MemPosStr - a virtual method for converting the
section's memory position to string for the linker map file. This can be
overriden e.g. for segmented exe formats.
+ added an TNewExeSection.MemPosStr override that outputs a segment:offset string
* combine the data, bss, stack and heap into the same NewExe segment
+ adapted TOmfObjSymbol.AddressStr to show correct segment:offset for NewExe files as well
+ adapted TOmfObjSection.MemPosStr to output segment:offset for NewExe executables
* reset CurrMemPos after each NewExeSection to ensure each segment starts at 0 offset
+ fill the auto data segment number in the NewExe header
+ fill the program entry point address in the NewExe header
+ set the initial SS:SP in the NewExe header
* factored out the conditions under which add nodes need to perform
overflow checks
o in particular ensure that cpu-specific overrides don't perform overflow
checks when nf_internal is set
* an incomplete case statement is not an error in ISO Pascal (mantis
0035910)
* give a compile-time error in ISO/Extended Pascal if the compiler can prove
the case selector value is not handled, and a warning in other modes
(mantis
0035915)
o trigger the case node simplification at the end of the case node typecheck
pass, like for other nodes
* test from mantis
0035897, already fixed
Avoid range check error when compiled -Criot option
Fix internal error by using same code to set checkoverflow variable as in powerpc/nppcadd unit
+ fill the segment table start offset in the NewExe header
+ added the missing NewExe segment attributes as properties to the
TNewExeSection class and create the NewExe segment table into the .exe file.
Not all of the properties are initialized yet, though.
+ initialize the flags for the code and data segments in the NewExe header
+ recognize stack segments and fill the total stack size in the NewExe header
* convert the internal name from IMPDEF records to upper case if the
CaseSensitiveSymbols option is off
+ detect heap sections and fill the local heap size in the NewExe header
m68k/vasm: remove bits of Linux support. this combination has never really been tested or supported, and got broken recently. m68k-elf-linux has good enough GNU binutils anyway
Fix change_endian code to read double and single float data
* Issue file change before line and column change in token writes to allow for better display in ppudump utility
Fix bug report 35937 by simple assembly code change and add test
+ write the resource table (empty for now) to NewExe files
+ create the resident name table in the NewExe file writer
+ added constructor to TNewExeResidentNameTableEntry that allows you to
initialize this entry's ordinal number
+ added property that determines the resident name table size in bytes and use
it to fill the offset to the start of the module reference table in NewExe
files
+ fill and write the NewExe imported name table
* small optimization in TNewExeOutput.FillImportedNameTable - only add the
library name once, instead of trying to add it (which causes a look up) for
every imported symbol
+ calculate the table offset of each string in the NewExe imported name table
* strip the '.dll' extension from the library names before adding them to the
NewExe imported name table
* when reading ImpDef records, add '.dll' to the libname if it has no extension,
in order to be consistent with externals, declared in pascal files. The '.dll'
extension will be stripped later, when generating the NewExe file.
+ fill the NewExe module reference table
* fixed wrong typecast in TNewExeImportedNameTable.GetSize
* strip the '.dll' extension from the library name when creating import
libraries as well. This ensures that NewExe binaries, created by the external
linker don't have the '.dll' extension in them.
+ fill the NewExe entry table offset
+ added class for writing the NewExe entry table - not fully implemented yet
+ parse ExpDef OMF records and delegate them to a new method
TOmfObjData.AddExportSymbol (not implemented yet)
+ implemented TOmfObjData.AddExportSymbol - the exported symbols are recorded in
the newly introduced TOmfObjData.ExportedSymbolList
+ assign ordinals to all exported symbols
+ added class TNewExeEntryPoint and methods/properties to TNewExeEntryTable to
make it hold a list of entry points
+ add entry points to the entry table for all exported NewExe symbols
+ write the entry table to the NewExe file
* the resident table entry/table classes renamed "export table", because the
same classes can be used both for the resident and nonresident tables (they
share the same structure)
+ also write the nonresident name table
+ write the module description as the first entry to the nonresident names table
- suppress the warning that the $D directive is not supported on i8086-win16
+ pass the description option to wlink to set the module description string when
using the external linker on the win16 target
+ add all exported by name symbols to the resident or the nonresident name table
+ also copy ResidentName in TOmfObjData.AddExportSymbol
+ enable the ISSHAREDLIBRARY option for the win16 internal linker when creating a dll
+ enable the IsDll flag in the NewExe header when creating dlls with the
internal linker. Also make a SINGLEDATA (instead of MULTIPLEDATA) executable
and entry points in this case.
+ allow creating win16 dlls with the wlink external linker as well
+ added system_i8086_win16 to the supported targets of the i8086 omf internal
assembler/object writer
+ pass the ParmCount parameter from the ExpDef OMF record to the NewExe entry
point
* applied patch by Blaise.ru to reduce code duplication in trecorddef.create_global_internal()
* apply patch by Blaise.ru to pass the record name for an internal record more efficiently
Merge: fc46b6c57c 70a2b0b260
-- Zusammenführen der Unterschiede zwischen Projektarchiv-URLs in ».«:
U compiler/i8086/
008086int.inc
U compiler/i8086/
008086nor.inc
U compiler/i8086/
008086rni.inc
U compiler/i8086/
008086std.inc
U compiler/i386/i386prop.inc
U compiler/i386/i386att.inc
U compiler/i386/i386atts.inc
U compiler/i386/i386int.inc
U compiler/i8086/i8086int.inc
U compiler/i8086/i8086op.inc
U compiler/i8086/
008086dwrf.inc
U compiler/i8086/
008086ari.inc
U compiler/i8086/
008086con.inc
U compiler/i8086/
008086nasm.inc
U compiler/i8086/
008086num.inc
U compiler/i8086/
008086stab.inc
U compiler/i386/i386nop.inc
U compiler/i386/i386op.inc
U compiler/i386/i386tab.inc
U compiler/i386/r386ot.inc
U compiler/i386/r386ari.inc
U compiler/i386/r386att.inc
U compiler/i386/r386con.inc
U compiler/i386/r386dwrf.inc
U compiler/i386/r386int.inc
U compiler/i386/r386iri.inc
U compiler/i386/r386nasm.inc
U compiler/i386/r386nor.inc
U compiler/i386/r386nri.inc
U compiler/i386/r386num.inc
U compiler/i386/r386rni.inc
U compiler/i386/r386sri.inc
U compiler/i386/r386stab.inc
U compiler/i386/r386std.inc
U compiler/i8086/i8086prop.inc
U compiler/i8086/i8086att.inc
U compiler/i8086/i8086atts.inc
U compiler/i8086/i8086nop.inc
U compiler/i8086/i8086tab.inc
U compiler/i8086/
008086ot.inc
U compiler/i8086/
008086att.inc
U compiler/i8086/
008086iri.inc
U compiler/i8086/
008086nri.inc
U compiler/i8086/
008086sri.inc
U compiler/x86/agx86int.pas
U compiler/x86/rax86int.pas
U compiler/x86/aasmcpu.pas
U compiler/x86/rax86.pas
U compiler/x86/x86ins.dat
U compiler/x86/agx86att.pas
U compiler/x86/cpubase.pas
U packages/rtl-objpas/src/inc/rtti.pp
U packages/rtl-objpas/tests/tests.rtti.pas
U rtl
U compiler/x86_64/x8664att.inc
U compiler/x86_64/x8664tab.inc
U compiler/x86_64/
008664con.inc
U compiler/x86_64/
008664nasm.inc
U compiler/x86_64/
008664sri.inc
U compiler/aasmtai.pas
U compiler/scanner.pas
U tests/utils/avx/readme.txt
U compiler/x86_64/x8664ats.inc
U compiler/x86_64/x8664op.inc
U compiler/x86_64/
008664att.inc
U compiler/x86_64/
008664iri.inc
U compiler/x86_64/
008664rni.inc
U compiler/pp.lpi
U compiler/msgtxt.inc
U compiler/ppcx64.lpi
U compiler/x86_64/x8664pro.inc
U compiler/x86_64/x8664nop.inc
U compiler/x86_64/
008664ari.inc
U compiler/x86_64/
008664int.inc
U compiler/x86_64/
008664num.inc
U compiler/x86_64/
008664std.inc
U compiler/msgidx.inc
U compiler/utils/mkx86ins.pp
U compiler/x86/x86reg.dat
D compiler/x86/cx86innr.inc
U compiler/x86_64/x8664int.inc
U compiler/x86_64/
008664ot.inc
U compiler/x86_64/
008664dwrf.inc
U compiler/x86_64/
008664nor.inc
U compiler/x86_64/
008664stab.inc
U compiler/msg/errore.msg
U compiler/utils/mkx86reg.pp
U tests/utils/avx/asmtestgenerator.pas
U tests/utils/avx/options.pas
U tests/utils/avx/avxtestgenerator.pp
U tests/test/units/character/tissurrogatepair2.pp
U tests/test/units/character/tissurrogatepair.pp
U tests/utils/avx/avxopcodes.pas
U .
-- Aufzeichnung der Informationen für Zusammenführung zwischen Projektarchiv-URLs in ».«:
U .
U packages/rtl-objpas/src/inc/rtti.pp
U packages/rtl-objpas/tests/tests.rtti.pas
U rtl
* compilation on i386 fixed
* intel asm reader: try to read avx512 extensions only if the instruction supports them
* cleanup
Fix arm specific failure in tw12048
- don't create a heap segment for win16
* fixed quoting of the "description" wlink option on Windows
* limit the heapsize to 65520 bytes on win16 (the $M directive in win16 only
sets the size of the "local heap", which is limited to a single segment. The
actual heap in the large memory model is the "global heap", which doesn't have
a set limit, but grows with the memory allocated)
+ fill MinAllocSize in the NewExe segment table
+ fill SizeInFile properly in the NewExe segment table
* fix detection of floating point constants for arm
* fix return registers for hfa's containing singles
* enable TCpuAsmOptimizer.RemoveSuperfluousVMov for VLDR
* fixed TCpuAsmOptimizer.RemoveSuperfluousVMov to be actually applied
Merge: 416c974d3f ad791e8e34
-- Zusammenführen von
0042652 bis
0042673 in ».«:
U compiler/x86/aasmcpu.pas
-- Aufzeichnung der Informationen für Zusammenführung von
0042652 bis
0042673 in ».«:
U .
* compilation on i386-linux fixed
* fix BccB2Cond optimization on arm
+ added class, representing a NewExe relocation entry
* reworked arm vfp capability handling to use fpu_capabilites
+ create defines with FPU capabilites
+ make use of FPU capability defines in the rtl
+ basic Neon support in the assembler writer
+ make use of VEOR if possible to clear VFP registers
* building with -Cfvfpv2 hopefully fixed
* forgotten part of previous commit: fix BccB2Cond optimization on arm
* fix tarminlinenode.first_sqrt_real
+ added and implemented method TNewExeRelocation.EncodeTo
* fixed compilation with -Sew
+ added constant NewExeRelocationRecordSize
Check that inserttypeconv really change node type to ttypeconvnode before setting convtype field (should fix taddbool.pp bytebool failure on powerpc)
* fix building for targets with no vfp support
* change result of pi function from ansistring into dynamic array, so we
generate unique calls every time we write to it
* replace calls to high(ansistring/dynarray) in the inner body of the pi
function with a variable that gets assigned once
-> the FPC version is now just as fast as the C version
* fix for Mantis
0035965: correct alignment also for the class info used to retrieve the unit name
+ added test
* ensure that aprocdef is initialized to Nil to catch problems with compare_defs_ext() easier
+ add a test that ensures that the introduction of fullscale array constructors didn't mess with array constructors passed to an open array of Variant
+ x86 makes use of fpu_capabilities
* moved CPUX86_HAS_AVXUNIT to FPUX86_HAS_AVXUNIT
+ mm register allocator can be initialized with 32 mm registers of AVX512
Avoid error with -CR option in tobjectdef.vmt_def method
+ make use of the mremap syscall of linux to re-allocate large memory blocks faster
o overhaul-base.patch by J. Gareth Moreton, base for further patches
+ some inline directives added
+ some functions exported from units
Merge: 9230ae5aab a5e158f8d6
-- Zusammenführen von
0042706 bis
0042724 in ».«:
U tests/utils/avx/avxopcodes.pas
U compiler/x86/aasmcpu.pas
U compiler/x86/rax86.pas
-- Aufzeichnung der Informationen für Zusammenführung von
0042706 bis
0042724 in ».«:
U .
* fix RemoveSuperfluousVMov if the VMov destination reg is an integer register, resolved
0035978
+ VMovVMov2VMov optimization
* factored out inlinenode check whether it may have a side effect
o also added register assert as having a side-effect (if asserts are
enabled)
* Darwin now uses Mach VM calls for memory allocation instead of mmap/munmap
+ added sysrealloc support for Darwin (Darwin does not have mremap)
* added error checking to the test
m68k: fpu capabilities support
Avoid range check error for avr/i8086 CPU by changing local variable dist type to asizeuint
Avoid range check error for functions returning THandle type by using unusedhandle system constant
+ added and implemented the TNewExeRelocationList class
+ added a getter for the NewExeSegmentFlags property, that returns the
nesfHasRelocationData flag according to whether the Relocations list is
non-empty
Move test for read-only data to new separate test source treadonlydata.pp
sparc32 bit needs SA_SIGINFO
Adapt fpc_clean and fpc_cleanall targets
to handle link.res ans script.res vairants with ProcessID.
Also remove *$(FULL_TARGET).fpm file for fpc_clean
and *.fpm for fpc_cleanall target.
Update all trunk/fpcsrc Makefile's after commit 42749
Add generated Makefile which was not on svn yet
* Revert changes to tarray15.pp
* Modify treadonlydata.pp to not use dynamic array.
+ Add test treadonlydata2.pp that should fail at compile time.
Update after commit 42749
m68k: added more cpu capabilities. changed the CG at a few places to actually use them
* m68k has slightly different alignment requirements, so that aligntoptr might result in incorrect addresses for a record's element entries, thus we introduce a separate AlignTypeData function that handles this correctly
* check for CPUM68k instead of M68K; the latter should only be defined when building the compiler, so I wonder how that ever worked...
* fix for Mantis
0035982: free created attributes once the type is freed
+ added test
Add package desciption and remove limitation to darwin and iphonesim systems only
Disable explicit list of supported OSes
Ensure that fpmake_proc.inc and fpmake_add.inc source files are integrated into source zips for packages and utils
* also correctly align the pointer for the record elements inside FPC_COPY
* Allow context when sorting lists (patch from Ondrej Pokorny, bug ID
000035962)
* TClassData also needs alignment dummies
* correct alignment for the property table
m68k: rework of the inline nodes to use fpu_capabilities. added fast path for round/trunc (enabled for fastmath only)
* support unique copies of currencies which are handles by torddef, resolves
0036013
Remove useless code (P.OSes was set again below)
Cope in TGDBInterface.WaitForProgramStop with absent frame
TGDBMI_TupleOrListValue: exdend to parse a Tuple or List
+ FMA support for aaarch64
+ AArch64: support for vX.8b/vX.16b register names
+ support for more than 256 registers in the register dat files
- removed totherregisterset
+ AArch64: use vmov to load immediates if possible
+ AArch64: use eor to clear mm registers
+ small command line tool for quick creating of vfp register list in a64reg.dat
somehow committing went wrong, second part of last commit:
+ AArch64: support for vX.8b/vX.16b register names
+ support for more than 256 registers in the register dat files
- removed totherregisterset
+ AArch64: use vmov to load immediates if possible
+ AArch64: use eor to clear mm registers
* another missing part of
0042916 ...
* remove packed from tdynarray, it is not needed and especially 64 bit CPUs which require proper aligment, suffer from it
* avoid that -0.0 is handled by the eor optimization
m68k: try to optimize realconst operands into B/W/L sized integer operands. these are shorter to encode - which almost always means faster on m68k
+ AArch64: FoldShiftProcess optimization
m68k: refactoring to use fpu_capabilities at more places instead of hardwiring certain fpu types
m68k: refactor some code to not fail when the tasmop set will be bigger than 256 elements
m68k: added the most important FPU instructions with explicit rounding precision (eg. FSADD/FDADD)
m68k: added the remaining instructions with explicit rounding precision. fixed fsflmul to be fsglmul (this is also typo in the original 68k PRM)
m68k: more refactoring for fpu_capabilities instead of hardwired fpu types. 68040 and 68060 fpu types should now work
Suppress range check/invalid typecast errors when compiling with -CriotR option
m68k: added some handling for the explicit precision FPU instructions in the spilling and optimizer. fixed a_fsabs and a_fdabs names
m68k: make sure we're not trying to allocate a subregister for float paras when R_SUBWHOLE <> R_SUBNONE
m68k: use cpu_capabilities when deciding to inject scaling into a ref. also allow scaling in more cases.
m68k: cleanup of the ancient mess from cgsize2subreg
+ AArch64: CMPB.E/NE2CBNZ/CBZ optimization
+ AArch64: FoldShiftProcess fixed
+ AArch64: implemented TCpuAsmOptimizer.OptPass1Data
m68k: added CPUM68K_HAS_BYTEWORDMATH and CPUM68K_HAS_INDEXWORD capabilities
m68k: build fix (premature commits are the root of all evil too)
* support taking the address of labels defined in assembler blocks in the
LLVM code genrator (for the rtti unit's thunk hacking)
* different definitions for the same Objective-C class (can happen with
external class declarations) need a type conversion in LLVM (because
they're represented by different LLVM types)
+ AAarch64: TCpuAsmOptimizer.OptPass1Shift makes use of RemoveSuperfluousMove
+ AArch64: implementation of taarch64casenode.genlinearlist
* document how tgotonode/tlabelnode copying works
* fixed loading the address of a copied labelnode in a loadnode
(mantis
0035877)
* initialise local variable to prevent random failures
* fix potential crash with copied goto nodes on nestedparentfp platforms
o as described in the comment for the tgotonode.labsym field, it will
be null for copied gotonodes
* call DoUnhandledException instead of RunError(217) when the the psabi eh
unwinder returns an error (this is usually because there is no outer
exception catching frame anymore -> unhandled exception) (based on patch by
Cyrax, mantis
0035751)
* changed resulttype and firstpass processing from recursion into loop, based
on patch/idea by J. Gareth Moreton (as part of his patch in
0035857)
* fixed compilation for __ARM_EABI_UNWINDER__ with -dexcdebug
* fixed occasional rounding error with currency constants on the LLVM targets
(fixes test/tcustomattr13.pp)
+ add "thunk" attribute for stubs/thunks and emit it for LLVM
- also removed wrong "noreturn" attribute for interface thunks generated
for high level code generator targets
* cutils.pas (size_2_align): Move to..
globals.pas (size_2_align): ...here.
Change parameter type to asizeuint to avoid overflows.
(var_align_size, const_align_size): Also change parameter type to asizeuint.
i386/cpupara.pas, i8086/cpupara.pas, x86_64/cpupara.pas: Add globals
to implementation uses clause because of size_2_align move.
* assemble.pas (TInternalAssembler.TreePass0): Avoid range/overflow check error.
(TInternalAssembler.TreePass2): Check that objsymend and objsym are in same section
and avoid range/overflow check error.
m68k: add subregisters. on 68k, these are not as universal as on x86 and work differently, but the compiler needs this infrastructure to do 16bit math (which is a massive improvement on '000) or word-size indexes on CPUs which support it
m68k: allow vecnode to use word size index registers
m68k: also handle OS_64 register sizes in cgsize2subreg
* extend test so that it also covers the SetToString/StringToSet variants take/return Integer arguments
* try to avoid to use pic based calls
* if we load a got depends only if one is needed, not if PIC is generated as this could be also caused by tls support
Handle change of memory base address after call to SysTryResizeMem
+ x86-64: implemented support for relocation needed by tls threadvars in the binary elf writer
* InitThread variant without parameters as user threads normally cannot know the max. stack size
* we have to use __tls_get_addr from the dyn. linker lib else tls on programs with pure pascal dyn. libraries fail
+ support tls threadvars with the internal assembler
* the final build of packages and rtl are compiled with the general tls model on i386 as they could be used in dyn. libraries.
This does not hurt much as the linker optimized the threadvar access if possible
+ command line switch -CV to select the threadvar model for section threadvars
* section thread vars need to be access with the symbol type AT_TLS
* loading a got depends only on the fact if a got is needed and not if pic shall be generated
* the general section threadvar model needs a got but pic is not required
* be able to set an AT_* for datablocks
* set AT_TLS if needed
+ extra test to test remap functionality with -gh
* test properly (with fno-exceptions) compiled
* fix LLVM compilation after
0043076
* add "readonly" attribute for constant pointer parameters on LLVM
* finally implement tdynamicarray.equal so that exact match comdat sections work as well
* disable the use of C-operators inside the compiler's sources
* renamed tls model switches and symbols to match gcc
+ new relocations for arm tls
* it must be decided in g_maybe_tls_init if a tls is loaded
+ tls models tlsm_general_dynamic and tlsm_local_exec for arm
* arm uses the same approach as i386: during the final build of the rtl and the packages, the general dynamic tls model is selected
+ support for the gnu2 general-dynamic tls model on arm, use it instead of the gnu one as the gnu2 one can be relaxed (access optimizations by the linker)
+ support pic relocations in the internal assembler writer
* with section threadvars, heap relocation is not needed
* it must be decided in allocate_tls_register if a tls register is allocated
* general-dynamic -> global-dynamic
* arm-linux uses dwarf debug info by default
+ dwarf support for tls threadvars
* several linux targets switches from stabs to dwarf
* Patch from Serge Anvarov with some optimizations (bug
Mantis 0036143)
+ support for arm attributes
* abi notes fixed
* compilation of x86 and PowerPC fixed
* reduce amount of software floating point exception checking, VSTR, VMOV, VLDR do not raise those
* improved software floating point exception handling in the rtl
* moved array stride back to array entry (mantis
0036144)
* fixed peephole opitimizer removing some infinite loops (mantis
0036139)
+ x86: LeaLea2Lea optimization
+ LeaCallLeaRet2Jmp optimization
+ makefiles use -Sew, so added to the project as well
* updated for new format
* fix Dwarf 3 array location broken in
0043171 (fix by Martin Friebe,
mantis
0036144)
* don't try to bitpack arrays of non-ordinals (mantis
0036157)
* give an error if an explicit enumeration valid exceeds the valid range, resolves
0034633
* fix random() for 32 Bit CPUs
Fix parsing error in GNU linker script, KEEP needs braces
Define FPC_IS_SYSTEM at start of all system.pp source
* i386: with a fixed stack, exception handling does not need a frame pointer
* change TObjData.sectiontype2options to a class function so that it can be called without an instance of TObjData
+ add a method to TObjData to retrieve the TSectionProcBits and TSectionFlags values for a given section type
* fix for Mantis
0036174: correctly initialize secprocbits and secflags given the section type
* generate better code for length(
)=0, resolves 0036060
* fixed compilation for Darwin and AIX after addition of section attributes
* optimizing length()=0 is not possible for jvm
* fixed i8086 compilation after
0043265
* fix memory leak of tcustomattr13
* fix for Mantis
0036196: free a property's attributes when the property is destroyed
+ added test
Merge: 5bfebeea4e 99d44ce40e
-- Zusammenführen von
0042725 bis
0043306 in ».«:
A tests/webtbs/tw32219.pp
U tests/utils/avx/avxopcodes.pas
U tests/utils/avx/asmtestgenerator.pas
U compiler/i386/i386tab.inc
U compiler/i386/i386nop.inc
U compiler/i8086/i8086tab.inc
U compiler/i8086/i8086nop.inc
U compiler/x86_64/x8664tab.inc
U compiler/x86_64/x8664nop.inc
U compiler/x86/aasmcpu.pas
U compiler/x86/x86ins.dat
U compiler/x86/rax86.pas
-- Aufzeichnung der Informationen für Zusammenführung von
0042706 bis
0043306 in ».«:
U .
Fix compilation error for i8086 cpu target
Change parent class of trv32aatreader to trvattreader
+ include -Avasm into the help screen
morphos: in SDK 3.14, the binutils is finally upgraded to 2.32 (from 2.9.1), which makes section smartlinking working with binutils, and also has finally properly working stabs relocations for lineinfo, etc. so it's the default again both cross and native compilations
* more precise estimation of subscript node complexity
* load nodes for variables in registers do not generated instructions, so their complexity is zero
* clean up TX86AsmOptimizer.OptPass1MOV
* optimize TAOptBase.SuperRegistersEqual
* fptime works now usefully on unix systems
+ support -n to run the command times
+ display average runtime when -n is passed
+ MovMov2Mov 6 and MovMov2Mov 7 optimization
* fix length(
)=0 optimization, resolves 0036215
* also type casts to booleans benefit if unneeded type widenings are removed
* fix compilation on PE/COFF based systems with GNU AS as there the progbits are not supported
* fix for Mantis
0036223: when parsing a helper type its extendeddef might be Nil
+ added test
* remove unused constants
* avr: apply LdiOp2Opi optimization also to and and sub
+ add a Flush method to TExeMap which is useful when debugging internal errors or crashes where the exemap instance has not yet been destroyed
* more overloads for Math.Min/Max, resolves
0036161
* allow cmov with memory reference if it is a pure symbol or a rip relative symbol: as the symbol is
allocated within the image of the program, this should never cause a seg. fault, so it is save
to use cmov with it
* unified TX86AsmOptimizer.OptPass1MOVAP and TX86AsmOptimizer.OptPass1VMOVAP
* CallRet2Jmp works with PIC
* more aggressive LeaCallLeaRet2Jmp
Avoid warnings for m68k compiler
Remove ALLOW_WARNINGS=1 for m68k compiler
* replaced tentryfile.get/putsmall/normalset() with a common tget/putset
that expects an open array of byte, and use it for all sets
o since all sets need to be typecasted to an array type of the appropriate
size, we'll get a compilation error in case this needs to be done and
that also tells us at the same time that the ppu version will need to
be increased
* enabled {$packset 1} for the compiler, as this is now safe with the above
changes
* replaced the arrays in the generic set helpers with arrays of 32 bytes
instead of high(cardinal), so LLVM doesn't get tricked into massively
unrolling and parallelising those loops
* do not allocate an extra register for some integer operations if not needed
* removed accidently committed debug statement
TInterfacedObject.Destroy: fix case for correct auto-completion
* also advance the error code in the case of success
* Testsuite in punit format
* update generic linker script
* do not write section flags/progbits for .data, .rodata .data.norel as the compiler will ignore them anyways and warn about it
* parameters declared as out must be initialized
* fixed default value for progbits
+ MIPS: take care of setnoat
* read more types of references properly
* patch by J. Gareth Moreton, issue
0036271, part 1: general rework of the jump optimizer
* patch by J. Gareth Moreton, issue
0036271, part 2: x86 specific rework of the jump optimizer
* patch by J. Gareth Moreton, issue
0036271, part 3: support for the other architectures
Merge: e1e8986462 47bb71efc4
-- Zusammenführen von
0043307 bis
0043443 in ».«:
D tests/webtbs/tw32219.pp
U compiler/i386/i386att.inc
U compiler/i386/i386atts.inc
U compiler/i386/i386int.inc
U compiler/i386/i386nop.inc
U compiler/i386/i386op.inc
U compiler/i386/i386prop.inc
U compiler/i386/i386tab.inc
U compiler/i8086/i8086att.inc
U compiler/i8086/i8086atts.inc
U compiler/i8086/i8086int.inc
U compiler/i8086/i8086nop.inc
U compiler/i8086/i8086op.inc
U compiler/i8086/i8086prop.inc
U compiler/i8086/i8086tab.inc
U compiler/x86/x86ins.dat
U compiler/x86_64/x8664ats.inc
U compiler/x86_64/x8664att.inc
U compiler/x86_64/x8664int.inc
U compiler/x86_64/x8664nop.inc
U compiler/x86_64/x8664op.inc
U compiler/x86_64/x8664pro.inc
U compiler/x86_64/x8664tab.inc
U tests/utils/avx/avxopcodes.pas
-- Aufzeichnung der Informationen für Zusammenführung von
0042706 bis
0043443 in ».«:
U .
* swapped decrefs and StripLabelFast as proposed by Gareth on the mailing list
* fix and improve MovImul2Imul: we cannot insert the move target into imul if the imul is 64 bit and the mov 32 bit as
we cannot ensure that the upper 32 bits of the move target are really clear
+ readded accidently deleted file
* load left properly into a register in tx86addnode.second_addordinal, resolves
0036287
* packed tabstractvarsym.addr_taken/different_scope fields into a set
* patch by J. Gareth Moreton to clean up TX86AsmOptimizer.OptPass2Jcc, resolves
0036295
* improve ShlAddLeaSubIncDec2Lea to take care of foldable LEAs
* patch by J. Gareth Moreton: fix compilation with debug info after
0043441 and friends, resolves
0036299
+ LeaOp2Op optimization
* replaced some manual removels of p by RemoveCurrentP calls
+ added comments for LeaOp2Op
* be carefully with references using RIP when doing LeaOp2Op optimizations
* check in the internal assembler for references with incorrect use of RIP
+ test
* do not remove cfi_endproc after jmps
+ separate JUMP_DEBUG define
* i386 does not use anymore its own assembler optimizer loops
* i386: more clean up of TCPUAsmOPtimizer.PeepHoleOptPass1Cpu
* patch by J. Gareth Moreton: fix building for armv6m after
0043441
Use delayed rules variables containing lists of files when the list can be modified by other Makefile targets generated in between
Regenerated after commit 43472
Updated after commit 43472
Regenerate all Makefile's after commit
0043472
* disable condition jump optimization on MIPS for now for the time being
* update sharedlibs variable
* optimization Move removed 4 fixed
* fix usage of ppumove generated shared libraries
* values passed to const parameters are not limited to registers and constants
* relax conditions in tcallnode.optimize_funcret_assignment, resolves
0036279
* MM registers which might not be changed can be still used in 3 op mathematical operations as source
Fix invalid typecast revealed by -CriotR by changing order of terms in boolean expression
o patch by J. Gareth Moreton:
* fix jump optimizer for MIPS(EL).
+ New method called "MakeUnconditional" introduced that can do platform-specific changes
* do not generate conditional jump with full references
+ more assembler optimizer output
+ patch by J. Gareth Moreton: new method TAOptObj.CanDoJumpOpts and arm specific implementation
* write assembler optimizer messages into output file if DEBUG_AOPTOBJ is set
Use same entered_paren local variable as 64-bit counterpart and fix register names
prepare source to also support riscv32 code
Replace obsolete scall by ecall instruction
Add missing and needed syscall_nr_XXX
Add si_XXX.inc files, pointing to riscv64 counterparts
+ riscv32 cpu: Use SYSINIT_UNITS instead of LOADERS
* mips/mipsel cpus: pass -xgot on to AS call for LOADERS,
if OPT contains -ao-xgot.
Also use syscall_nr_fstatat for FpStat function for riscv32 cpu
Fixes by Gareth Moreton for problems exposed by use of -CriotR option
Add riscv32 mathu inculde file, redirecting to ../riscv64/mathu.inc file (this file seems to have no 64-bit specific code)
* make use of RemoveCurrentP
* also generate indirect symbols for AB_PRIVATE_EXTERN symbols as these might be used from a unit in another package due to inlining
* ensure that nothing assembly related is generated for generics when a typed constant (this also includes local variable initializations) are parsed
* restore localswitch settings after the initialization and finalization code was generated
* reference FPC_ABSMASK_SINGLE/-DOUBLE using the indirect symbol if required for dynamic packages
* register constant symbols
* symbols called by g_call might need to be imported from dynamic packages as well
* check the localswitches of the node instead of the global ones
* correctly check for the system unit
* ensure that generic symbols are not tried to be exported
* when creating the static field of a generic, insert it into the generic instead of the global symtable as it isn't really used anyway
* the VMT of the exception class needs to be referenced indirectly
* keep track of static symbols that a global function references, as those must now be exported from a dynamic package as well if the function can potentially be inlined
* the symbol of the interface wrapper function needs to be considered as referenced as well
+ add a description for the link_e_comdat_selection_differs message
+ add error messages for undefined symbols (both with a known object file and without)
* regenerate msg*.inc files after adding new error messages for undefined symbols
* use translateable error messages for undefined symbols and also report in which object file the symbol was first found
* fix condition for including a unit's object files or not when compiling with packages
* use a different name for the packages' entry point and use _DLLMainCRTStartup as an alias to avoid problems with the C-prefix
* ensure that the required functions are referenced for Win32 SEH for packages as well
Patch by Gareth Moreton.
* TAOptObj.CollapseZeroDistJump: Change hp1 to local variable,
initialized as p.next, to avoid problems of dangling pointers
revealed by use of "-CriotR -O2" compilation arguments.
* fixed (harmless) range error when expanding ~
Use correct macro to for 64-bit riscv CPU
Minimalist change to avoid Invalid Typecast error on class when compiled with '-CriotR -O2' for i386-go32v2 target
+ add test for a problem reported by Michael van Canneyt which is fixed by the previous revision
o patch by J. Gareth Moreton, resolves
0036352:
* The supplied patch cleans up some vestigial code from the i386 peephole
optimizer that has since been superseded by the jump optimisations over
at
0036271.
* The PrePeepholeOptsCPU method has had a minor restructuring to better
handle the rare case where InsContainsSegRef() returns True and
p becomes something that is no longer an instruction (it ultimately
removes a conditonal check and some overhead from repeated function calls).
* factored out TX86AsmOptimizer.OptPass1Cmp
* fixed it
* activated it for x86-64
- removed code not used for years
* more RemoveCurrentP usage
+ optimize integer expressions like 2*x*4; which were not found by the node simplifier yet
* cleaned up safecall support: use a hidden localvarsym instead of result
register hacking
o this also allowed fixing/adding safecall support for LLVM
o patch by J. Gareth Moreton:
* adds an extra optimisation to "PostPeepholeOptMov" in compiler/x86/aoptx86.pas:
If the instruction "MOV REG, -1" (Intel notation) is found, where REG is either
a 32- or 64-bit register, it is changed to "OR REG, -1" instead.
The effect is the same and takes exactly the same speed to execute, but the encoding is much smaller.
As it cause false data dependencies, it is only applied in -Os mode
For 16-bit registers, only AX is optimised this way because it has its own encoding for OR that takes fewer bytes.
* fixed safecall for non-LLVM after
0043578
* fix Linux/i386 and Win32 after
0043578
* treat a missing genericdef with no symname set as an internal error
- the error recovery handling is no longer required
* warn only in delphi mode if an explicit enumeration value exceeds the range, relaxes
0043191
o patch by J. Gareth Moreton, resolves
0036355
+ This patch serves to extend the JMP -> RET optimisation in OptPass2JMP by also doing the same
for JMP -> MOV/RET, since there are often cases where the result (e.g. EAX) is set just
prior to the function exiting.
* RemoveDeadCodeAfterJump will now drop out if it detects SEH information -
this stops exception information from being stripped if it is called on the final RET instruction.
o patch by J. Gareth Moreton, seeks to improve maintainability, safety and efficiency
in the peephole optimizer by slightly modifying some function headers based
on their intended purpose, resolves
0036353
* Non-virtual methods and class methods that don't need to access any fields from
the current object are now static methods, thus removing the hidden "Self"
parameter and reducing overhead. This includes a large number of
frequently-used functions such as SkipEntryExitMarker and SuperRegistersEqual.
* GetNextInstruction, GetLastInstruction, SkipEntryExitMarker and
SkipLabels have had their 'var' parameter changed to an 'out' parameter because
they shouldn't depend on its input value. This will cause the compiler to throw warnings
if you start using the value without initialising it first, and may open up optimisation
opportunities in the future (e.g. storing written values in a temporary register
and only writing it to the actual variable when the routine exits).
* do not convert cmp 0,... into test ...,... before the post pass of the peephole optimizer
as this conversion might result in missing further optimizer opportunities
Also accept -a5 for older binutils for mips and mpisel cpus
Add '.module nomips16' at assembly entry for mips/mipsel unless -a5 option is used
Fix trv32notnode, by using same code as for riscv64 CPU
Change parameter type to tcgint for is_imm12 and is_lui_imm functions to avoid range check errors
* unified internalerror, resolves
0036378
* patch by J. Gareth Moreton: x86 implementation of RegModifiedByInstruction, resolves
0036376
* better error recovery, resolves
0036377
Add explicit smallint typecast to first marameter of SarSmallint call to avoid range check errors
Comparison nodes are always in LOC_REGISTER, never in LOC_JUMP for riscv32 or riscv64 CPUs
* use tdef.unique_id_str to generate the unique internal name for anonymous record defs as using the count of the deflist is no longer correct
* adapt register if the size of the paraloc and the register differ, resolves
0034409
* simplified and improved TX86AsmOptimizer.RegModifiedByInstruction
+ add a method to tdef to initialize the defid from within a constructor
* initialize the defid in trecorddef.create_global_internal as unique_id_str needs it
* apply (adjusted) patch by Blaise.ru: vmtentries is always created since 2008, so treat it as such (also fixes a memory leak in tobjectdef.getcopy)
* apply patch by Blaise.ru to remove last remnants of VMT regeneration which is no longer needed/used
* better error recovery, resolves
0036397
* check in CheckLive* if a register allocator is initialized for a certain register type
o patch by J. Gareth Moreton, resolves
0036371:
* This patch makes some minor improvements to the cross-platform code that deals with jump optimisations.
More specifically, it attempts to do more in a single pass which has the nice side-effect of
fixing a couple of minor mistakes (in some situations, it would erroneously remove an alignment entry).
- Most improvements are with dealing with Jcc/JMP pairs and their equivalents on other platforms, by
collapsing label clusters and stripping dead code as soon as it has enough information to do so, and being
more intelligent before calling Continue to see if another optimisation can be performed in the same sitting.
- RemoveDeadCodeAfterJump is now a function that returns True if a jump was found among the dead code,
thus allowing the ability to flag the peephole optimizer for another iteration of Pass 1 - the
destination label may have appeared earlier in the code and become dead as a result of the removal
of the jump, thus opening up new optimisations with instructions that sat either side of the label.
- Preliminary tests show that it does sometimes reduce the number of passes required to optimise a subroutine
under -O3.
* fix J. Gareth Moreton to resolve
0036389
* patch by J. Gareth Moreton: improve test and benchmark, resolves
0035633
* Remove duplicate ibextraheader handling.
* Move SymAnsiStr boolean setting inside parseextraheader function.
* Only accept same CurrentPPULongVersion in parseextraheader function.
* TVMTBuilder.build_interface_mappings does not need to be public (based on patch by Blaise.ru)
* move the common sequence to build a VMT for an objectdef into a separate procedure (based on a patch by Blaise.ru)
* clear up file comment (based on patch by Blaise.ru)
* more correct method names (based on patch by Blaise.ru)
* fix number of last parser_* message entry
* use value_real rather than value_curency when writing currency
realconstnodes (fixes tcurrency1, tw33439 and tw36179 with LLVM)
o we need to load the fpu representation of the currency values,
not the scaled currency value
- removed LLVM support for clang < 7.0 and Xcode < 10.0: those versions
contain various bugs and can't even complete "make all", so there is no
point in keeping them
o changed default LLVM target version to 7.0
* regenerate msg*.inc files after adding a new error message related to C blocks
+ recognise LLVM 9.0 (no changes needed compared to LLVM 8.0)
* patch by J. Gareth Moreton to fix an ie 2018061400 on darwin
+ x86-64: assembler implementation for u128_div_u64_to_u64 for SysV ABI
* reminder => remainder (thanks to Stefan Kanthak for pointing it out)
* in PeepHoleOptPass1Cpu when an instruction contains a segment, don't replace the current instruction with the next, cause then we get an infinite loop when compiling on Win32 with -dTEST_WIN32_SEH -O4
+ MULX instruction
* change information for RORX corrected
+ make use of mulx instruction, if available
* patch by Bart Broersma to allow to declare "LongInt = AnsiString" comparison
operator in non-macpas modes, resolves
0029460
* patch by Anton Kavalenka: heaptrc: Improve tracing by printing actual
module name (ether EXE or DLL), resolves
0036130
* fix building on non-unix/windows targets
* last fix was most likely not complete
* do not crash when an unsupported code page is encountered, resolves
0035581
* optimize case statements with a single branch into if statements (ord const only)
* last commit was not complete/earlier version committed
* common naming for fpu_none string
+ tf_init_final_units_by_calls
* arm-embedded generates direct calls for unit init/final now as well
* some inconsistency regarding FPC_NONE usage fixed
* renamed getintparaloc to getcgtempparaloc
o it can be used for more than integer parameters
* support for marking arraydefs as vectors
* LLVM support for writing vector types
* fix paraloc def for vectors with vectorcall calling convention (was a single
element instead of a vector)
* fixed writing of calling convention for function declarations/definitions
in LLVM
* added is_normal_fieldvarsym() helper and use it
o fixes several places where there was a check whether something is a
fieldvarsym, but not whether it's an instance rather than a class field
* increase support for multilib binutils for RISC V by passing the ABI to the assembler
* increase support for multilib binutils for RISC V by passing the correct ABI to the linker
* correctly handle local reference in the RISC V assembler readers (both 32 and 64 bit)
* when copying goto nodes take care if the label node is part of the copied tree
or not, resolves
0035820
* write a proper error message if
/ is encountered while no
floating point support is available, resolves 0032006
* use 64 bit code page in tppcshlshrnode.pass_generate_code for all 64 bit types,
resolves
0033582
+ test for
0026791, meanwhile fixed
* correctly handle reading of class/object pointers in combination with @, resolves
0026326
+ support for LLVM metadata constant string parameters
o they are implemented as a new metadata register class, whereby the
subregister indicates the metadata type (currently always a string)
and the superregister is an index in the metadata array (which
contains the strings). LLVM metadata can only be passed as parameters
to intrinsics in bitcode, so moves of metadata into other registers
triggers internal errors and when moving them into parameters, we
replace the parameter's register with the metadata register (and look
up the corresponding string when writing out the bitcode)
* support nf_internal to ignore currency conversion adjustments also on
platforms that implement currency using a floating point type
* record whether a function uses fastmath, and define the function as
strictfp if it doesn't (so LLVM doesn't perform transformations that can
change the fp/exception behaviour)
* use constrained LLVM fp intrinsics for add/sub/mul/slash/fma/sqrt
operations when fastmath is not enabled
* use LLVM constrained fpext/fptrunc intrinsics when fastmath is not enabled
for accurate exception behaviour
* fix LLVM code generator after
0043808
o share the high/length code for LLVM rather than duplicating it, since
LLVM will optimize away the minor inefficiencies
o removed temp reference in the old code, as it was useless (it doesn't
prevent spilling to get to an SSA representation since the same
register is written at least twice in all cases)
* set default target iOS/iPhoneSim version to 9.0 so we no longer depend
on crt.o existing, which is not shipped with the current SDKs anymore
* unified loadnf_load_self_pointer into loadnf_load_addr
+ var parameters are now allowed when doing tail recursion optimziation, resolves
0032811
-- Zusammenführen von
0031198 in ».«:
C compiler/arm/aasmcpu.pas
U compiler/arm/aoptcpu.pas
-- Aufzeichnung der Informationen für Zusammenführung von
0031198 in ».«:
U .
* the llvm.experimental.constrained.fpext intrinsic doesn't have a rounding
mode parameter
* support for constrained sitofp/uitofp with (the upcoming) LLVM 10.0
(fixes most of test/units/math/troundm, although there's still an LLVM
optimizer/code generation bug that breaks some qword -> double
conversions)
* use maytrap instead of strict FP exception behaviour in LLVM, so constant
propagation is still allowed
* fixed missing sign extension when adding a signed integer variable with
size < sizeof(pointer) to a pointer for LLVM (fixes tfmtbcd)
* fixed (harmless) wrong typecast
* fixed TAOptBase.SkipEntryExitMarker() not initialising out parameter in
all cases (patch by J. Gareth Moreton, mantis
0036372)
* Add riscv-embedded to targets that don't support non-constant leb128's.
* triggered by
0036505, removed CmpJxxDecJmp2SubJcc optimization as it was wrong anyways
* look further forward in TX86AsmOptimizer.OptPass1_V_MOVAP
* x86: avoid to put variables into registers if they are handled by the x87-FPU
+ MovMovMov2XChg optimization by J. Gareth Moreton
* copy fpu parameters using fld/fst onto the stack
* fixes TX86AsmOptimizer.OptPass1_V_MOVAP after
0043855
* avoid invalid type cast
* let the operation do the type conversion for x87 floating point operations
* Fixed safecall on win32 with -Ooregvar by making sure that $safecallresult
is never stored in a register.
+ infrastructure to profile different stages of the compiler
* missing part of last commit
* fix X86AsmOptimizer.RegModifiedByInstruction for VMOVSS/VMOVSD/IMUL
o patch by J. Gareth Moreton:
* applies some optimisations to OptPass1MOV. Repeated checks to the "GetNextInstruction_p Boolean"
variable are factored out, since all of the optimisations bar the first one require a
succeeding instruction.
* add forgotten exits, fixes
0043874
* do prefetching correctly
* more prefetching inserted
* unnecessary/wrong UpdateUsedRegs removed
* fixed for targets where currency is implemented via int64 after
0043829
* AArch64: fixed parameter defs for smallsets passed in registers whose size
is not a power of two
* handle non-smallset sets in registers in LLVM like arrays and records
* constrained sitofp is not yet supported in LLVM for all targets
* LLVM/AArch64: don't perform the parameter location extension workarounds
for LLVM, as that results in LLVM assuming exactly the opposite of
what's intended (namely that the extended locations contain valid
rather than invalid bits)
* accept locals replaced by symbols in inline assembly by the LLVM code
generator in the AArch64 assembler writer
* explicitly emit a sub instruction in tx86inlinenode.second_high, resolves
0036530
Try to correctly handle m68k exceptions bits inside SetExceptionMask function
+ Enable FPU exception handling for m68k processor
Avoid using <> for floating point values, check that abs of difference is small instead (fixes m68k 'pseudo-failure')
* get paramstr(0) only if really needed
+ CalcUseSum: calculates a sum of all use sets of the current node and its children
* renamed sum -> defsum to avoid confusion with usesum
* factored out tcgprocinfo.OptimizeNodeTree
Wipe out any pre-existing exception on SetExceptionMask call for m68k cpu
Examine all exception bits in m68k fpsr register to decide which into which run time error it is converted
* moved conversion of for into while loops in a separate pass, so node optimizations on the node tree can be
carried out without losing information from for loops
* some fixes to loop strength reduction
* more fixes for loop strength reduction
* patch by J. Gareth Moreton: EAX -> EDX:EAX sign extension shortcuts, and MOVSX shortcuts for AX register, part 1 of
0036551
* patch by J. Gareth Moreton: EAX -> EDX:EAX sign extension shortcuts, and MOVSX shortcuts for AX register, part 2 of
0036551
* patch by J. Gareth Moreton: Some cleaning up of OptPass2JMP and OptPass2MOV, resolves
0036553
* compilation on i386 fixed
SysUtils: add ExpandFileName with a BasePath overload
* ensure the rtl and the packages for embedded compile with features exceptions and classes disabled
- Handle jump optimizations on RISC-V
- RISC-V: Share optimizations between 32 and 64-bit.
- RISC-V: Add controller types for common RV32 MCUs.
- Adds initial controller units for these MCUs.
Code contributed by Michael Ring
* first part of merging parts of Jeppe's intrinsics patch, mainly
0031135
is merged by this commit with a lot of adaptions
* ensure that the includes for the new mm related files are indeed enabled
* ensure that the new mm related procs are only used for 3.3.1 and newer as 3.2 and older don't support the corresponding SSE types
* disabled mm procs again, they are not usable yet neither supposed to be
used
* voidcodepointertype => voidpointertype as suggested by Pierre
* AVR: due to recent fixes, EXCLUDE_COMPLEX_PROCS is not needed anymore
* do for-loop unrolling after for-loop simplification, resolves
0036589
* patch by J. Gareth Moreton: get rid of another pass through the assembler list by integrating OptReferences
into the post optimizer pass
+ insert alignments after break/goto/exit/continue jmp instructions, if it is
superfluous, the assembler optimizer will take care of it
* enable tail recursion optimization also for const and constref open arrays
+ added test
* also allow by-value open array parameters for the tail recursion optimization
* adjusted test
Pass old value of OPT to FPCMAKEOPT
* fix for
0032352: a unit does not need to be re-deref'ed if it just had been recompiled
* patch by Robert Roland to support the RaspberryPi 2 as a bare metal embedded target, resolves
0035236
* take care of m_duplicate_names when checking for duplicate locals, resolves
0033221
* patch by J. Gareth Moreton: x86 CMP/TEST/Jcc optimisations, resolves
0036624
* patch by J. Gareth Moreton: x86 SUB and LEA optimisations, resolves
0036622
* avoid internalerror for dec/inc(...,v) with v>high(int64), resolves
0035298
* do_loopvar_at_end is not possible if the loop counter would overflow with
the last iteration
* last commit fixing calculation of do_loopvar_at_end was not complete,
hopefully finally fixed
+ in some language modes the loop counter is undefined after the loop by language definition
* take care of for loop counter read after loop
* tests: When cross-testing, if possible, use the "ppc" native compiler to build fpmake. It solves PPU incompatibility errors.
* Skip the test for aarch64.
* Skip the test for android.
* do not throw a warning about unreachable code if the responsible node was generated internally
*
0042239 broke the tw13948b test for aarch64. Fixed this and improved the test.
* Removed lot of unused local vars. It is useful to turn on the notes in options. :)
* Removed inline since it is not supported with open array parameters.
* first couple of improvements propose by Stefan Kanthak at https://skanthak.homepage.t-online.de/division.html#fpc
* improve LeaLea2Lea optimization
* fix internalerror if adding the object info for LLVM requires creating new defs
* disable cs_opt_regvar on all platforms when compiled for LLVM (LLVM does
that itself, our LLVM code generator can't handle it, and if it did then
afterwards we would have to spill 90% of those register variables again
to make them SSA)
* use same Windows platform name as clang
* never inline routines that call get_frame (otherwise get_frame would return
the frame of the caller rather than of the current routine, which could
cause e.g. stackframes to be missed in RTL helpers that are known to be
only called from run time error routines)
+ new pio_inline_forbidden flag to indicate that while parsing the
implementation the compiler determined the routine must never be
inlined
o difference with po_noinline: can also be set in the implementation
o difference with pio_inline_not_possible: it indicates that e.g.
LLVM must not inline the routine either
* implement interface thunk for RISC V 32- and 64-bit
* safecall support is meanwhile generic, so enabled for all linux targets
* might_have_sideeffects takes care of absolute
* when optimizing boolean expressions, might_have_sideeffects is only relevant if the expression would be optimized away
+ might_have_sideeffects takes care of vo_volatile now (it is not exposed yet)
* patch by J. Gareth Moreton: x86 "OptPass1MOV" improvements - Part 2, resolves
0036608
* armhf/armel aligns sections to 16 byte, so allow a maximum c alignment of 16
* Avoid doing a syscall with a nil parameter in fileexists
* fixes copying of tcgpara
* fix PowerPC compilation
* patch by J. Gareth Moreton, avoid illegal MovAdd2Lea and MovSub2Lea optimziations, resolves
0036630
- test removed as it cannot work on all variants of currency support
* added information about -M allowing to specify modeswitches
Add '.built.on.$(SOURCESUFFIX)' for snapshots generated on another target using singlezipinstall
* patch by J. Gareth Moreton: CMOV extensions: frame/stack pointer relative references are always valid, resolves
0036675
* patch by J. Gareth Moreton: conditional Jump Inversion stoploop variable, resolves
0036680
Modify code to avoid error when compiling with -CriotR option
* patch by J. Gareth Moreton: deadstore removal improvement, resolves
0036669
* Fixed
0043577 for cases when the size of the new result of a simplified node after typecheckpass is smaller than the size of the original node's result. This caused internal errors or invalid assembly in some cases. Issue
0036587.
* FPMake-option NoIDE added
* patch by J. Gareth Moreton: processor-aware MOVZX optimisation cleanup, part one of
0036687
* Disable building the IDE on Darwin by default
* fixed Mov2Movz optimization
* simplified TX86AsmOptimizer.OptPass1Movx
* patch by J. Gareth Moreton: cleanup TX86AsmOptimizer.OptPass1MOV after DeepMov changes, first part of
0036670
* do not fold constants if the resulttypes do not match, improved fix for #tw26587
* patch by J. Gareth Moreton: cleanup TX86AsmOptimizer.OptPass2MOV after DeepMov changes, second part of
0036670
* Disabled range and overflow checks for the tw36587 test, since overflows are intended there.
* fix for Mantis
0036652: gracefully handle the error if one tries to implement a method of a type from another unit
+ added test
* regenerate msg*.inc after last commit
* do not allow constraints in headers of procedure implementations in delphi mode, resolves
0036584
* better error message if a constraint is found at a wrong location
* make maxpushedparasize a SizeInt: it must store an address size and not an alu value
* set nf_* correctly when an inc/dec node is converted into an add/sub node
* do not firstpass during dead store removal as it disturbes the for each calls
* Fixed the assignment of licenses of packages
+ propagate constants across call nodes
* patch by J. Gareth Moreton: optimize MOVSXD as well, resolves
0036700
* fix global generic functions with constraints in mode Delphi by handling implementations with defines outside of parse_generic_parameters
+ added tests
* there is no exit stackframe needed if a subroutine never returns
+ CallRet2Call optimization
* (V)MOVA*(V)MOVS*2(V)MOVS* 1 optimization
* fixed tdel1/2 tests again for AArch64/LLVM
* AArch64 and i386: omit exit stackframe, same as
0044191 for x86-64
* in case a 32x32 -> 64 multiplication is converted into shl, the type casts need to be restored
* fold also pointer additions/subtractions
+ AAarch64: optimize divisions by constant
* revert accidently committed code
* aarch64 suffers also from the limited tan precision of the softfpu
Fix linking error, in which libc.so.6 is not found on aarch64-linux when libdl.so is loaded, by adding appropriate directory
+ AArch64: profiler support for aarch64-linux
* AArch64: the PIC code needs also more registers, so use the same ifdefs as arm and sparc
* reverted accidently committed changes again
* throw an error if the forward interface type and the actual interface type do not match, resolves
0036720
* (modified) patch by J. Gareth Moreton: processor-aware MOVZX optimisation cleanup, resolves
0036687
* debug statement removed
* fixed generic round(...) for large values based on a comment by Alexander Hofmann on fpc-devel
* extended test
* track used register better: if a deallocation is moved/removed, the used register may not be removed from the current register used register set
* LeaCallLeaRet2Jmp is done in TX86AsmOptimizer.PostPeepholeOptLea
+ GetNextInstructionUsingRegTrackingUse
* better MovAnd2Mov optimization
+ TOptsToCheck to track expensive optimizations, needs more work
* ARM: optimize mov rX,#0 .... mul/mla/umull ...,rX,...
+ ARM: MovMLA2MUL optimization
* ARM: look further ahead when optimizing mov rX, yyyy
* ARM: fix Mov0 and MovMLA2MUL optimizations
* several fixes to get better reg. allocations in the arm assembler optimizer
+ add test for already fixed Mantis
0024283
+ take care of addn and subn in is_loop_invariant
* improve is_loop_invariant for load nodes
* CallRet2* optimization may not misalign the stack, reported by C Western on fpc-devel
* fixed JccAdd/Inc/Dec2*Adc/Sbb optimizations
* calculate complexity of an rtti node correctly
* more use of RemoveCurrentP(p)
* fix precedence of IS operator, resolves
0035909
+ JccAdd2SetccAdd optimization
* take care of C_C/C_NC in JccAdd/Inc/Dec2(Cmc)Adc/Sbb
* simple record accesses have not side effects
* do not do full boolean evaluation on LOC_FLAGS
* fix Peephole Optimization: Cmpcc2Testcc - condition AE/NB/NC/NO --> Always optimization
movhlps/movlhps only take xmm registers.
Handle spilling of SSE registers.
Add most SSE instructions as intrinsics.
* Show message about creating fppkg/conf.d directory
* add FreebSD to weaklinking targets.
* Allow to get/set config items
+ OptimizeForLoop: convert for-loops into zero-based backward for-loops if possible, for most architectures, this results in simpler code
* Parse the keywords in fppkg-repositories
* attempt at crt1 translation to get freebsd 12 running.
amiga-likes: add fpwidestring unit to the RTL build
atari: added the fpwidestring unit to the RTL build
+ Xtensa: register information
+ Xtensa: lazarus project
+ Xtensa: initial skeleton completed
+ xtensa-embedded support in the compiler
+ Xtensa: support in the build utilities
Update revision.inc after commit
0044319
+ Xtensa: completed rtl skeleton
* Xtensa: completed compiler skeleton
+ Xtensa: basic operations for Xtensa implemented
* Xtensa: initial controller types
+ Xtensa: a_loadaddr_ref_reg implemented
+ Xtensa: CALL0 abi started
cgcpu: Implement a_cmp_reg_reg_label
xtensa: Add preliminary support for comparisons
tgobj: Change direction of stack.
makefiles: Add support for xtensa-embedded target.
+ Xtensa: tcgcpu.a_load_ref_reg
+ Xtensa: tcgcpu.a_load_reg_ref
+ Xtensa: tcgcpu.a_op_reg_reg
esp8266: Make startup code compile.
ncpuadd: Fix handling of signs in comparisons
+ Xtensa: tcgcpu.a_op_const_reg
+ Xtensa: tcgcpu.a_op_const_reg_reg
amiga: remove packed from RTL OS record/structure definitions, use PACKRECORDS 2 instead. this allows much better code to be generated for a plain 68000 RTL
amicommon: make sure to reset packrecords to default after OS structure inclusion
amicommon: cleaned up the voodoo padding magic and packed record from the DOS unit SearchRec. This structure is entirely platform specific, ancient code might have accessed it from assembly, but it's no longer the case.
+ Xtensa: tcgcpu.a_op_const_reg_reg
+ Xtensa: mathu.inc using only the softfloat unit provided mechanisms
+ Xtensa: make use of ADDI
+ Xtensa: tcgcpu.g_concatcopy
* Xtensa: cleanup unused stuff
+ Xtense: updated conditions
* Xtense: prettify assembler output
+ Xtensa: implemented tcg64fxtensa.a_op64_reg_reg
+ Xtensa: initial tcg64fxtensa.a_op64_reg_reg_reg
Add immediate/zero comparisons.
+ Xtensa: make use of slli and srli
xtensa: Add 64bit arithmetic operations.
* Xtensa: cleanup dummy code
+ Xtensa: initial tcg64fxtensa.a_op64_const_reg_reg, still room for improvements
+ Xtensa: tcgcpu.maybeadjustresult
+ Xtensa: initial implementation of tcgcpu.g_proc_entry
+ Xtensa: tcg64fxtensa.a_op64_const_reg
+ Xtensa: tcpuinlinenode.second_abs_long
* Xtensa: set correct frame pointer register
* Xtensa: fix load_reg/ref_reg/ref
* Xtensa: more fixes for load_reg/ref_reg/ref
* Xtensa: improve tcgcpu.fixref
* Xtensa: generate long calls
+ Xtensa: initial support of the windowed abi
m68k-amiga: add some defines, to disable part of OS headersin the RTL when compiling for OS1.x. this is to aid the implementation of future AmigaOS 1.x support
* fix LLVM backend compilation (mantis
0036833)
* Xtensa: no scheduler yet but loops can be unrolled
* Xtensa: fix txtensanodeutils.insert_init_final_table for the windowed abi
* Xtensa: improved handling of calling conventions
* Xtensa: parameter passing for the windowed abi
Fix handling of parameters with size below the size of a full register
* Xtensa: proper code generation for unit initialization
* Xtensa: align literals properly
* Xtensa: system_xtensa_embedded is an embedded system
+ Xtensa: implemented tcputypeconvnode.second_int_to_bool
* Xtensa: fix tcpunotnode.second_boolean
+ add FreeRTOS as new OS target
* use getpagesize function instead of reading external variables to restore
ability to compile against SDKs < OS X 10.9 (mantis
0036653)
+ initial FreeRTOS RTL support, largely based on the Embedded target, limited to Xtensa so far
* Xtensa: fix tcgcpu.a_cmp_reg_reg_label
* Xtensa: tcgcpu.g_concatcopy fixed: keep registers alive
* Xtensa: fix TCPUAddNode.second_cmp
* Xtensa: use generic tcpuparamanager.getcgtempparaloc
* fix ppudump after addition of freertos-xtensa
* allow FPC 3.2.0 as bootstrap version
amiga-m68k: minimal tweaks and formatting to the dos unit
amiga: no packed records in doslibd.inc and timerd.inc, use packrecords 2 insead, this improves code generated for plain 68000
m68k-amiga: initial work on some support functions to allow the RTL to be compiled for AmigaOS 1.x
* Missing include-file added to fpmake-archive
+ -XlS option to specify a suffix for externally called LLVM utilities,
e.g. -XlS-7 to call clang-7 instead of clang)
* IMPORTANT: changed the -CL llvm code generation options to -Cl, for
consistency with the new -Xl option (-XL was already taken)
* Xtensa: returning of 32 Bit values fixes
* Xtensa: shift operations fixed
* make TLinkerInfo fields ansistrings as xtensa-freertos needs long command lines
+ Xtensa: add linklib statements, better _halt procedure
* Missing include-file added to fpmake-archive
+ Xtensa: generate all helper files to fpc can successfully compile a single program
* xtensa-freertos: enable softfloat for now
* ESP32: set flash size to a resonable value (assumes external flash for now)
* Xtensa: spilling for bigger offsets fixed
* Do not try to resolve dependencies for packages that not meet the target
Try to fix problems for more recent GDB versions.
Move GDB_NEW_UI macro def. to GDB_VER_GE_712
Add GDB_INTERP_LOOKUP_HAS_UI and GDB_HAS_SAVED_COMMAND_LINE_BUT_NO_SIZE
to same GDB_VER_GE_712.
Use stdio_filopen to create gdb_stdout and gdb_stderr
if GDB_HAS_GET_STDIN macro is set.
* Xtensa: reduce stack usage
* Xtensa: FreeRTOS uses windowed calling convention
+ Xtensa: boolean registers * Xtensa: register numbers of floating point registers corrected
* Xtensa: set fpu type dependending on the controller
* add support for creating non-address-only procvars to
cprocvar.getreusableprocaddr()
* use tprocvardef.getreusableprocaddr also for non-address-only copies of
proc(var)defs
* use typenames in more cases in the generated LLVM IR (results in smaller
IR in textual form)
+ Xtensa: the boolean extension is used as flags
+ Xtensa: hard float support, i.e. make use of floating point extension if available
* Xtensa: fix passing of floating point parameters
* factor out first_addfloat_soft
* compilation for non-Xtensa targets fixed
* building on non-x86/non-xtensa fixed
m68k-amiga: implemented StackSwap and DeletePool in legacyexec support, also declare public name for a few functions, so the startup code can hook into them
m68k-amiga: implemented functions required for basic parameter handling in legacydos
m68k-amiga: prepare the startup code and system unit for legacy support
m68k-amiga: make all legacy support functions have a public name, and supply headers for them (will be utilized by athreads, dos, and sysutils units)
m68k-amiga: startup code now uses legacyexech, instead of explicitly declaring legacy support functions it needs
amicommon: m68k-amiga legacy support
+ xtensa-linux support for the rtl makefile
+ with the randseed set as in the test, the test fails on x86_64-linux, added so it won't be forgotten
+ basic xtensa-linux support in the compiler
+ xtensa-linux: OS specific system unit header files
+ xtensa-linux added to systems_linux
Fix ppudump after addition of system_xtensa_linux target
Update revision.inc after commit
0044544
* better setting of expectloc
+ optimize SUB for small constants using ADDI
* improve assembler reader
+ initial thlcgxtensa.g_intf_wrapper
m68k-amiga: create the heap memory pool with MEMF_ANY, rather than MEMF_FAST. this will finally allow FPC compiled executables to start on chipmem-only machines.
+ initial xtensa-linux rtl
amunits: add amicube to the examples to compile
* fix taicpu.is_same_reg_move
* Xtensa: properly align maxpushedparasize
* Xtensa: register numbers fixed
* FreeRTOS: adapated packages to build
* Xtensa: fix expectloc of taddnode
* Xtensa: fix flag handling: B0 is considered as default flags
* Xtensa: patch by Christo Crause to handle the sign extension architecture option, resolves
0036885
* Add FPCBINDIR macro for paths
* Do not expand FPCBINDIR on darwin
* Use exepath on all platforms
* Use exepath on all platforms
+ fpu_fpv4_sp_d32
* some fixes to make fpv4-sp-d32 work
* reorganized arm cpu flags
Amiga: Implementation of Amiga2Date and Date2Amiga for older Amiga Versions
Amiga: very basic first implementation of MatchFirst/Next/End for old Amiga Versions
* arm: more fixes for fpu_fpv4_sp_d16
* take care of FPUARM_HAS_VFP_DOUBLE
* use FPUARM_HAS_VFP_EXTENSION instead of checking fpu_vfp_first and ...last
Amiga: simple SystemTagList() implementation for old Amigas including basic tag list handling (GetEnv works now)
Amiga: do not try to read pr_LocalVars when running on 1.x
Morphos: Fixed compilation after
0044709
+ arm: optimize sxth/sxtb
* fixes compilation on WinCE
* get rid of fpu_vfp_first/last hack
* load 0 into unaligned memory in a simpler way
* Aarch64: UTX/STX instructions include now the postfix, so it is the same as for ARM
Handle all existing possible values for init_settings.fputype to set Tag_FP_Arch .eabi_attribute
+ common assembler optimizer base class for arm and aarch64
* check for stup instead of stp
* factored out TARMAsmOptimizer.OptPass1UXTB
* several other routines being very similar for ARM and AAarch64 moved to aoptarm
Avoid invalid typecast in tarmunaryminusnode.pass_1 method
m68k-amiga: make it possible to disable functions newer than OS 2.0 (v37+)
m68k-amiga: have an AMIGA prefix in OS_MINVERSION public constant, add OS 2.0 support, make sure we open v39 by default as it is needed by memory pool functions
m68k-amiga: enable certain legacy exec support functions only when compiling for OS v2.0
m68k-amiga: startup code to print a console message and quit, when the OS is known to be too old for the RTL
* factored out TARMAsmOptimizer.OptPass1UXTH
* AArch64: use TARMAsmOptimizer.OptPass1UXTH
* factored out TARMAsmOptimizer.OptPass1SXTB
* AArch64: use TARMAsmOptimizer.OptPass1SXTB
* factored out TARMAsmOptimizer.OptPass1SXTH
* AArch64: use TARMAsmOptimizer.OptPass1SXTH
amicommon: only include exec extensions when complied for v2.0
amicommon: instead of a runtime check, check for OS2.0+ features at compile time in DOS
amicommon: only include exec helpers when compiling for v2.0 in athreads
m68k-amiga: implemented CreateNewProc for legacy support, means AThreads now works on OS v1.2+
* re-added assembler optimization accidently removed in
0044738 as noted by margers on the mailing list
m68k-amiga: hack to avoid a linker (vlink) warning about merging sections with different flags together. Amiga doesn't support true read only sections anyway
+ AAarch64: FOpFMov2FOp assembler optimization
* Fix compilation of gdbint unit for go32v2, should resolve bug report 36923.
Replace cint type by longint (as gdbint unit does not use ctypes unit).
+ AAarch64: assembler optimization Bl2B
* always add the libgcc search directory under Linux, as it is required for
both the LLVM code generator and SEH support (it does _not_ force linking
libgcc, just adds the search directory so it can be found in case it's
required)
* support building the IDE with the LLVM code generator
* updated after changes to fpcmake.ini/inc
* bail out early if possible
+ AArch64: TCpuAsmOptimizer.OptPass1Mov
* FreeRTOS: try not to build native binaries
* Xtensa: dummy overflow checking
* FreeRTOS: do not try to build native utils
* factored out and improved TARMAsmOptimizer.RedundantMovProcess
+ AArch64: use TARMAsmOptimizer.RedundantMovProcess
* go through cg to generate jumps, so the right jump is generated always
* use j.l in external wrappers, this is not save yet as A15 might contain
an argument: externals need to be called with call4 if they use all
parameter registers, this needs to be implemented
* build more units for FreeRTOS
* Xtensa: generate better code for adding/subtracting 16 bit constants
* Xtensa: handle localsize > 32760
* TARMAsmOptimizer.RemoveSuperfluousMove should not mess with PC
+ xtensa-embedded: patch by Christo Crause to check and support SUBARCH
* adapted xtensa-freertos to work with the currently stable ESP-IDF 4.0, partially based on a patch by Michael Ring
* Xtensa: make use of extui for shifting with constant values >=16
Set 'default' target to freertos in rtl/freertos directory
- remove ld.so.conf parsing from makefiles: this was probably done because we
used to completely replace the default linker script under Linux (which
also includes search directories), and it's wrong in case of
cross-compiling
+ take care of OPTNEW when building utils
* xtensa-freertos requires also SUBARCH being set
+ initial support for arm-freertos largely based on patch by Michael Ring
Update after commit 44790
Add several missing -T options in help
Correctly update after commit 44871
Use same field type and name as in /ust/include/sys/stat.h
* Use off_t type for l_start and l_end fields instead of kernel_off_t
+ Distinguish rlim_t type depending on fs32bit macro being set or not.
Add handling of sparc64-linux and pass -m32/-m64 to $CROSSGCC call
* fix for Mantis
0036935: apply patch by J. Gareth Moreton to fix a typo in cs_opt_remove_empty_proc
m68k-amiga: implemented LockDosList, UnlockDosList, and NextDosEntry helpers for legacy support
* for PE+ specific checks use a constant in systems.pas instead of an explicit list (easier to extend this way)
+ implement relocations for Aarch64 for the internal COFF linker
+ implement initial compiler support for Win64 on Aarch64
+ add a GAS compatible variant of the Clang assembler (currently used for Aarch64-Win64 as no GNU AS exists for that target, yet)
* Windows does not support a GOT, so rely on page relative addressing
* Windows on AArch64 does not support ProgBits either
* Windows on Aarch64 requires a relocation section
* Windows on AArch64 requires some DllCharacteristics in the header to be always set
* enable AArch64 for Win64 in fpmkunit and fpcmake
* disable some x86_64 specific assembly routines
* disable CPU and Signals units for Windows on AArch64 for now
+ add functionality to store a node tree's required temp nodes and their flag upon entering the tree
- remove sectiontype2options overload for mach-O, because the relevant sections have the correct flags in the base method already
* it's rather useless that sectiontype2options is virtual as we can't use a class type, not to mention that the classes doing the overriding are for the internal assemblers/linkers, but we need it also for external
Thus we move the functionality of the overloads to the basemethod and remove the virtual directive; maybe we'll find a better solution in the future...
* rename the local sectionflags and sectionprogbits variables to the more clear usesectionflags and usesectionprogbits
+ introduce a virtual method for writing the section flags
* the clang assembler for COFF requires at least an "r" to generate a readonly section
* use COFF sectionattrs for aarch64-win64 as well
* at least clang can savely generate relocatable readonly sections, so use "r" for aarch64-win64
* as a variant for SEH exception filters we allow them to be *duplicated* instead of being extracted; this can be done unconditionally as for extracted ones their code is set to Nil after they're done and thus won't be picked up by generate_code_exceptionfilters
* use accessor functions to work with the TContext record
* the prefetch bug handling is specific to x86_64
* rename RunErrorCodex64 to a more appropriate RunErrorCodeSEH
* enable is_prefetch only for x86 code
* inside the Win64 system unit convert FPC_USE_WIN64_SEH to a SYSTEM_USE_WIN_SEH
+ implement RTL functionality for SEH for aarch64-win64
+ implement compiler support for SEH on Win64
Note: due to the way we access variables in a nested function (which in this case includes exception filters) we can not extract the finally handlers and call them (like we do on i386 and x86_64, but instead we duplicate the finally code)
+ implement a main_wrapper for the default exception handler for aarch64-win64
* the .pdata section currently only needs to be always included for arm-wince (at least until we have full SEH support there as well)
+ add an error message if the size of a function is invalid (in case of aarch64-win64: not a multiple of 4, the instruction size)
+ add Win64 target to help text
* regenerate msg{idx,txt}.inc
* the clang assembler does not provide support for the SEH directives we need (only the LLVM backend would be able to use them), thus we need to manually convert them to data sections
* due to an apparent bug in the clang assembler for COFF when assembling ADRP instructions we can't use symbols that are offset into their section
* generate jump tables into the same section as the code as otherwise we'll get bogus relocations (in case of clang.exe) or a future support for armasm64.exe will reject the relative symbols outright
* register the DLL scanner for aarch64-win64
* set implicitframe for copied tryfinally nodes as well
* implement dogetcopy for the Aarch64 variant of the tryfinally node
m68k-amiga: document which legacy support functions are unimplemented and why, and where are they used in the RTL code
* Minor improvement. No need to move the terminating null char, since it is written later anyway. Remove a local var.
* Fixed
0044960. Also copy a trailing implicit #0 of the original string to the new larger string.
* patch by Michael Ring: adds license headers to th FreeRTOS files and some renames to make the interrupts cmsis compatible.
* Do not report about unimplemented unicodestring manager when HAS_WIDESTRINGMANAGER is defined (on Windows). In such case unimplemented parts are never executed unless you call them directly.
* Do not assign DefaultGetStandardCodePage when HAS_WIDESTRINGMANAGER is defined (on Windows).
* Xtensa: do SAR by a constant using SRAI
+ Xtensa: make use of ADDX*
* Windows: Reworked handling of command line arguments to properly support Unicode:
- Use the CommandLineToArgvW API function to parse the Unicode command line (we can use it since Win9x is not supported anymore).
- Implemented non-public functions ParamStrA and ParamStrU which are exposed in the objpas and uuchar units to provide correct AnsiString and UnicodeString versions of ParamStr().
- The cleanup code is moved from InternalExit to the finalization section of the System unit.
+ Xtensa: enable jump optimizer
+ assembler optimization MovxMov2Movx
Update revision.inc after commit 44920
* correctly set register size
* fix for Mantis
0035140: apply patch by Ryan Joseph together with some further changes by me to add support for constant parameters in generics
+ added tests
* fix tc_bool_2_int simplification in case pass typecheck runs again, e.g.
after getting a copy of the node during CSE (fixes taddset4 compilation
with LLVM after
0044712)
* destroying constnone constsyms can occur when parsing a generic with a constant parameter that results in an error (e.g. unsupported type)
* fix for Mantis
0036975: arraydefs are not allowed for generic types (this is only used for type declarations; for specializing constant strings which are char arrays are still allowed)
+ added test
+ add an explicit error message if a type is not supported for a generic constant parameter
* regenerate msg{txt,idx}.inc
* use a more detailed error message if a type is not allowed for a generic constant parameter
amiga: Crt, fixed cursor x and y position
* Xtensa: set source_cpu_string
* Xtensa: fpc_setjmp dummy
+ xtensa-linux support for several packages
* simplify xtensa-linux building
+ initialize variables, so compilation with -O3 works
* patch by J. Gareth Moreton: refactor RemoveCurrentP
Merge: a084c8829f a857e60dc1
* merged the z80 branch
+ implemented get_caller_addr and get_caller_frame for the Z80
- removed GetHigh, GetNextReg, GetLastReg, GetOffsetReg and GetOffsetReg64 from cpubase. The methods
in cg should be used instead, because they do better error checking on the register used.
+ added empty strings.inc and stringss.inc files
+ added Z80 helper functions is_regpair and split_regpair
+ added another helper for register pairs: register_in
z80: sdasz80 won't do section smartlinking for us, but it's used for the zx spectrum target
z80: added quick & dirty vasm assembler support to the target
* unfortunately tf_smartlink_sections is mutually exclusive with
tf_smartlink_library, and defining both breaks sdasz80, so put this behind
ifdef Z80_SMARTLINK_SECTIONS
Fix cross-compilation on aarch64-linux using -dFPC_SOFT_FPUX80 option
Fixed LLVM compilation after
0045143
+ z80: added range checking for d in the (IX+d) and (IY+d) addressing modes in
the sdasz80 assembler writer, because sdasz80 silently truncates d to shortint
which produces broken code and hides bugs in the z80 code generator. The check
is behind ifdef, because the system unit doesn't compile, when this check is
enabled, due to bugs that were previously unnoticed. When these bugs are
fixed, the ifdef will be removed.
+ z80: generate correct code in do_spill_read and do_spill_written for spilling to temp offsets outside the range -128..127
+ enable the sdasz80 lameness check permanently, because the system unit now
compiles, and it's important to catch other similar errors also
Amiga: Video unit, do not draw Cursor if outside the window (would write over the window border)
* do not generate moves unncesssarily in tcgloadparentfpnode.pass_generate_code
z80: fix global symbols and section attributes in the vasm writer
z80: fix typo in the previous commit
zxspectrum: pascal startup code. this allows the RTL to be built with any assembler
+ initialize StackBottom and StackLength in the startup of the ZX Spectrum system unit
zxspectrum: in the pascal startup code, match start symbol name with the asm startup code
* reduced the stack margin for stack checking to 64 bytes on the Z80
zxspectrum: added support for linking via vlink, and for pascal sysinit code. also some cleanup in the linker code
* fixed compilation with sdld
* fixed bug, causing the global variable stacksize to be destroyed
* added comment, stating that Z80 has no condition subsets
+ build an instruction table cache for the Z80
+ partial implementation of taicpu.Matches
* Z80: fixed code generation for pure assembler routines, that have no parameters, no local variables
and no 'nostackframe'
* do not use an extra register in tcginlinenode.second_IncDec if not needed
+ z80: added condition checking in taicpu.Matches
- z80: oops, forgot to delete some code from taicpu.Matches
+ z80: implemented taicpu.FindInsentry
+ z80: implemented taicpu.CheckIfValid
+ handle OT_IMM_PORT in taicpu.Matches
+ handle OT_REG8_C_PORT in taicpu.Matches
+ handle OT_RELJMP8 in taicpu.Matches
+ handle OT_IMM8 and OT_IMM16 for getting symbol addresses in taicpu.Matches
+ added Z80 inline asm instruction validation
+ z80: add operand info to the result of taicpu.GetString, this makes the
compiler produce nicer error messages, when it encounters an invalid
instruction in inline asm code
+ started work on the Z80 internal assembler
+ added class TRelObjOutput
Amiga: keyboard prevent double keys on GetKeyEvent, if called without PollKeyEvent
Amiga: special CRT unit (named vidcrt) based on video unit
m68k: have an arch-specific second_length implementation, to make sure length() doesn't return its result in an address register
* fix for Mantis
0036895: the new epoll_pwait was missing the size parameter for the sigmask parameter
* increase PPU version so that 3.2.0 correctly ignores 3.3.1 PPUs instead of fatally failing on the extended header entry
* GetCopyAndTypeCheck forces correct type
* propagate forinline flag through simplify
* allow recursive inlines, meanwhile, there are other means to avoid too deep recursion of inlining
+ enable the Z80 internal asm (which doesn't work, yet) if the compiler is compiled with -dZ80_INTERNAL_ASM
+ added an override of the abstract method TRelObjOutput.writeData (not implemented, yet)
* remove tempref mess for simple inlined functions
* compilation with -Oodfa fixed
ppudump: catch exception on illegal datetime (mainly cross compiled units)
* properly force the result type after
0045217
* Windows: Do not use CommandLineToArgvW for parsing command line parameters, because it treats \" as an escape sequence for the double quote.
- Implemented parsing of the command line which is backward compatible.
- Do not use GetCommandLineA.
* correctly handle result type of string constant nodes for internally created
nodes
* handle generic parameters in Ord()
+ added test
* compilation with -Oodfa fixed
+ added build mode that enables the Z80 internal assembler
+ added class TRelObjData
+ override the abstract methods from TObjData.sectionname() and .writereloc(). Only sectionname() is implemented for now.
+ write the .rel file header and the list of external symbols
* the areas global symbols count must be in hex in the .rel format
+ write the areas (sections) in the .rel output
+ added the global symbols to the .rel output file
+ implemented pass1 (calcsize) of the instruction encoding for the Z80 internal asm
* Z80: match both signed and unsigned 16-bit constants as OT_IMM16 in the asm instab lookup
+ partial implementation of pass2 asm opcode generation for the Z80 internal asm writer
+ Z80 internal asm: produce correct opcodes for register operands
+ actually produce relocations in TRelObjData.writeReloc
* Xtensa: patch by Christo Crause: fix addmi/addi handling, resolves
0037015
+ write the section data in the .rel internal object writer (relocations aren't written, yet)
+ introduced the TRelRelocation class
+ added TRelRelocationFlags
+ initialize size and relflags in TRelRelocation
+ added method TRelRelocation.EncodeFlags that encodes the flags to string that can be included in the .rel file
* Put all code adding cs_fp_emulation by default inside one big
{$ifdef cpufpemu}
* Add system_arm_freertos and system_xtena_linux to the list
of systems that automatically add cs_fp_emulation to
init_settings.moduleswitches.
+ Do not use controller specfic default fputype for xtensa-linux
target that does not support use of -Wp option to set controller type.
Add -Wp option description for riscv32 and xtensa compiler
Do not use inherited first_int_to_real when arm FPU_HAS_FPA is in fpu_capabilities
+ also write the relocations in the .rel internal obj writer
* the parameter of WriteWord should be word, not byte :)
* xtensa-embedded: fix setting of the fpu and abi
* Release registers which have been used for a function call before adjusting the stack pointer. On i386 this allows to use eax,ecx,edx in POP instructions for stack adjustment.
+ lots of fixes to the Z80 internal asm writer
+ Z80 internal asm: support OT_REF_ADDR16 in taicpu.gencode.WrinteNN
+ support conditional operations in the Z80 internal asm
+ fix for conditional JP in the Z80 internal asm writer
+ support creating ar files in the Z80 internal obj writer
+ align files in generated .a files not by #0, but by #10 (Line Feed). This is
compatible with GNU ar and others, and fixes linking with sdcc-sdld.
* preserve the actual file size (before aligning it to even bytes), when adding files to .a archives
+ support the RST instruction in the Z80 internal asm writer
+ support relative jumps in the Z80 internal asm writer
+ Z80: support conditional JR
+ support the 'in A,(n)' and 'out (n),A' instrunction in the Z80 internal asm writer
+ support instructions like BIT, SET and RES in the Z80 internal asm writer
+ support signed 8-bit immediate constants in the Z80 internal asm writer as well
+ call ApplyAsmSymbolRestrictions for symbols that should be exported from ar files
+ added internal error in taicpu.gencode.WriteNN to catch unhandled asm instructions
- reverted previous commit, since it was incorrect
+ fix for writing absolute relocations in the .rel format
* fixed the TRelocDataInt to avoid truncating 16-bit addresses to 8-bit on 8-bit CPUs
- removed commented out writeln
* x86: Fixed peephole optimization introduced in
0044233. tb0219 and tb0548 tests have failed with -O2 since then.
* Added variants of the tb0219 and tb0548 tests with forced -O2.
* If a nested procedure does not access its parent's frame pointer, optimize it by removing the hidden $parentfp parameter.
* Improved the tisogoto1.pp test.
* fixed fpmake invokation when building an i386-linux snapshot on a x86_64-linux host
* only call cg64.a_XXX_loc for LOC_(C)REFERENCE and LOC_(C)REGISTER locations in
tcginlinenode.second_AndOrXorShiftRot_assign
* i8086 compilation fixed after
0045302
+ generate more optimal code for OP_NOT and OP_NEG in tcg64f8086.a_op64_ref
* call inherited in tcg64f8086.a_op64_reg_ref for OP_NEG and OP_NOT, because it is handled differently after
0045302
- remove unused files, resolves
0037032
m68k: preparations for upcoming full instruction tables, mostly converting code away from using sets of opcodes
+ use ApplyAsmSymbolRestrictions on all symbols in the NASM writer
m68k: added a full instruction table (minus CF MAC/EMAC instructions for now), based on vasm, and the required tool to process it
m68k: add the converted includes, based on m68kins.dat
m68k: migrate the compiler to the new instruction tables and drop the old ones
m68k: fixed instruction code formatting in the generated include
* fixed -Cl options now showing in the help of an LLVM compiler (and fixed
them to read -Cl rather than -CL)
rtl-console: fixed keypressed implementation in the Amiga VidCRT unit
* Always use parentfp for forward-declared nested procedures.
* Do not perform optimization of nested procedures for:
- targets which use a special struct to access parent's variables;
- pure assembler procedures (for compatibility with old code).
* fixed test for 32 Bit targets
* avoid unncessary conversions of constants in 64 bit ints when doing constant folding
* improved heuristics for auto-inlining
* generate CFI data only if we're either using it for exception handling or if debug output is enabled (or should this only be generated for targets that in theory support DWARF exception handling?). This removes unnecessary bloat from e.g. Windows binaries
- cleaned up some x86-specific code from the Z80 inline asm reader
+ also recognize alternate registers in the Z80 inline asm scanner. This allows
the "EX AF,AF'" instruction to be accepted and assembled as well.
+ added the alternate Z80 register pairs BC', DE' and HL'
+ added a correct implementation of TAOptBase.SuperRegistersEqual for the Z80
+ Z80: added a registers_interfere helper function
+ introduced TAOptBase.RegistersInterfere (which might not always be equivalent to SuperRegistersEqual)
* use RegistersInterfere instead of SuperRegistersEqual in TAoptBase.RegInOp and TAoptBase.RegInRef
+ added subregisters for the Z80 flags
+ added the Z80 individual flag bits as subregisters
+ MovAndTest2Test optimization
+ Z80: implemented TCpuAsmOptimizer.InstructionLoadsFromReg
+ support the LD instruction in TCpuAsmOptimizer.RegLoadedWithNewValue
+ Z80: support all the flags subregisters in super_registers_equal
+ Z80: support the flags subregisters in the registers_interfere function
* handle OP_XOR for a full mm register correctly in tcgx86.opmm_loc_reg
Allow system unit to be compiled without RTTI feature
Use GCCLIBDIR variable for FPCMAKEGCCLIBDIR if FPCFPMAKE has same target cpu as CPU_TARGET
Update fpcmake.inc and revision.inc after previous commit
0045352
Do not add -Fl$GCCLIBDIR to FPCMAKEOPT as this is now handled by fpcmake
Regenerate all Makefile's after change in utils/fpcm/fpcmake.ini to better support use of i386 compiler on x86_64 machines
Use 0 instead of 0xffffffff to disable page width
Use 0 instead of 0xffffffff to disable page width
* simplify constant expressions after re-ordering, resolves
0037062
- removed tabstractrecorddef.get_unit_symtable, which did not always return the unit
symtable (when you had a local recorddef in a procdef)
* modified tdef.get_top_level_symtable() so you can specify whether you want to
skip procdefs or not
* changed tobjectdef.vmt_def() to no longer require a typesym for the tobjectdef
(based on patch by Blaise)
* fix a typo in a comment. no functional change
* patch by Reynaldo to generate kernel image for the raspi2 embedded port, resolves
0027052
+ handle the flags register bits for many Z80 instructions in TCpuAsmOptimizer.RegLoadedWithNewValue
+ Z80: report flags register information in TCpuAsmOptimizer.RegLoadedWithNewValue for 16-bit ADD,ADC,SBC,INC and DEC
* fixed tests
o fixed use of loop counter after end of loop
o fixed reliance on old behaviour for int -> real typecasts
m68k: add support for bitfield instructions as CPU capability
* fix spilling for PAND, POR and PXOR, resolves
0037084
m68k: tabs to spaces and indentation fix, no functional change
+ Z80: report the flags usage for all the remaining instructions in TCpuAsmOptimizer.RegLoadedWithNewValue
+ z80: handle all instructions in TCpuAsmOptimizer.RegLoadedWithNewValue
* fixed IsJumpToLabelUncond for the Z80
- removed old float-to-string and string-to-float conversion code
- z80: disable regvars, because they don't work
* boolean or/and nodes might be swapped when they have no side effect, in case
of short boolean evaluation, firstcomplex is not called so this does not
hurt short boolean evaluation
* call x86 addordinal for non short boolean evaluated boolean nodes
as this results in better code
* when auto-inlining is used, do not require that inlining is explicitly turned on
* Z80: JR can be both conditional and uncoditional jump, just like JP
+ PXorPXor2PXor optimization
* Reworked the optimization of unused $parentfp for nested routines.
- Do not remove the $parentfp parameter as was done in the previous optimization approach. Instead when $parentfp is unused to the following:
- On the caller side: Omit passing the value for $parentfp for targets where tcgcallparanode.push_zero_sized_value_para=false (classic CPU targets).
Pass 0/nil as $parentfp for targets where tcgcallparanode.push_zero_sized_value_para=true;
- On the callee side: Prevent allocation of registers/resources for $parentfp.
- When possible keep $parentfp in a register.
- Set the pio_nested_access flag in tprocinfo.set_needs_parentfp() to properly handle deep nesting levels;
* Fixed the jvm target after
0045436.
* It is needed to mark $parentfp as used for all targets.
* Added the thlcgobj.a_load_undefined_cgpara() method to pass an undefined value as a parameter to a routine. The generic version passes the 0/nil value if the parameter's location is not a register.
* Use a_load_undefined_cgpara() to load values for unused parameters.
* exceptions are side effects which must be considered in boolean expressions
* patch by Karl-Michael Schindler to update the German help files, resolves
0037122
* Reg1ReadDependsOnReg2 moved to TAoptBaseCpu
* use Reg1ReadDependsOnReg2 in TAoptBaseCpu.RegModifiedByInstruction to handle properly Z80 subregisters
+ Z80: handle all instructions that modify registers, that are not an operand in TAoptBaseCpu.RegModifiedByInstruction
+ Z80: handle the flags register in TAoptBaseCpu.RegModifiedByInstruction
* Do not use the LOC_VOID location to indicate unused parameters.
* Added the tprocdef.parentfpsym property. Set parentfpsym.varstate to vs_read instead of using the pio_needs_parentfp flag.
* Replaced tcgcallparanode.push_zero_sized_value_para by tparamanager.has_strict_proc_signature.
Amiga: optimized video unit drawing
* implemented a_load_undefined_cgpara for LLVM, fixes LLVM code generator
after the changes to optimize unused parentfp parameters
* add tests\test\unit\types directory to list of tested directories
* replaced custom packed record with tmethod
* added missing method declarations for AOPowerManager.InnerWakeLock class
* patch by Christo Crause: fix register search on xtensa, resolves
0037121
tosunits: added some more xbios calls
m68k: atari syscalls might also destroy D2 and A2
m68k: avoid more vlink warnings regarding changed section attributes, when the target system has no write-protected sections
tosunits: added another example which shows a DEGAS format picture
tosunits: fixed the palette to be ST only (9 bits) in the example picture, this is a bug in GraphX2 which was used to convert the picture to DEGAS format
* x86-64: adjust stack by push/pop if possible
* adapt optimizer to handle push/pop for stack alignment
* adapt test
* do not load unused parameters, as their localloc has not been set (and
there is no point in doing so if it were)
o fixes compilation of RTL with LLVM/AArch64
* compilation on i386 fixed
* re-activate copy_mm: using it instead of movs might reduce register pressure
* x86 has to use newalignment as well
+ x86: track use of full ymm registers and generate vzeroupper if needed
* create vpxor instead of pxor in avx mode
* factored out OptPass1VPXor
* improve copy_avx gencopy mode
* always use 1-byte section alignment for the rel internal obj writer
* the len parameter of TObjData.alloc changed to TObjSectionOfs
+ also write sections with no data in the .rel internal obj writer
+ enable the Z80 internal assembler
Disable cpu and signals unit for aarch64 CPU
+ Z80: added the JRJP pseudo instruction
+ added JRJP to various instruction lists
* translate jrjp to jp in the sdcc-sdasz80 asm writer
* CPU_UNITS needs to be referenced
* insert fwait after fcompp, resolves
0037136
Reorder and complete list of supported CPUs
+ Z80: implemented the JRJP pseudo instruction in the Z80 internal asm writer
* z80: use the JRJP pseudo instruction to generate shorter code (it is
translated to JR wherever possible, otherwise to JP)
* use const_align(sizeof(pint)) alignment instead of sizeof(pint) for various
compiler-generated structures, so they don't waste any extra alignment space
on 8-bit CPUs like the Z80 and the AVR
* ARM: (V)LDM do not load from the registers in the reg. set
* enable tests for the Nullable unit
+ started work on the Z80 internal linker
* ARM: get rid of more unneeded sxtb/h uxtb/h instructions
* ARM: factor out TARMAsmOptimizer.OptPass1And
+ implemented TRelObjInput.CanReadObjData
- removed the z80_internal_asm build mode, since it's now a feature enabled by default, not hidden behind an ifdef
* enable the Z80 internal linker (not working yet) if the compiler is compiled with the Z80_INTERNAL_LINKER define
+ added 'z80_internal_linker' build mode to the z80 lazarus project
* AArch64: enable TARMAsmOptimizer.OptPass1And
+ override TInternalLinkerZXSpectrum.InitSysInitUnitName
+ set cobjdata in TRelObjInput.create
+ set cobjdata in TIntelHexExeOutput.create;
+ create a linker script for the ZX Spectrum internal linker
+ override TInternalLinkerZXSpectrum.GetCode/Data/BssSize to avoid access violation error
* buffered text reading functions moved from being local to TRelObjInput.CanReadObjData
to being class members, so they can be used by ReadObjData as well
+ partial implementation of TRelObjInput.ReadObjData
+ parse the area records of REL files
* a nil node is also a constant pointer node
+ convert (v1=const1) and (v2=const2) into ((v1 xor const1) or (v2 xor const2))=0 if the expressions have no side effects
+ parse the REL symbol records
* TRelObjInput.ReadObjData: return success, if file was read correctly
* return the correct size for files in ar archive. This is required by the REL
reader, which reads files until the end of file
* set MaxMemPos to $FFFF in the Z80 internal linker
+ add .text, .data and .bss exe sections and define the entry point in the ZX Spectrum internal linker script
* group T and R records together and call a function (not implemented yet) to handle them in pairs
+ implemented reading of T and R records
* extended
0045555 to take care of chars as well
* renamed some REL sections to follow a similar naming convention
* avoid setting the oso_Data flag on bss sections
+ set IMAGEBASE in the Z80 internal linker script
* ImageBase changed to qword (same type as CurrMemPos) to avoid truncating to 8-bit on Z80
* ImageBase changed to qword to avoid 8-bit truncation in the internal linker map file
* avoid 8-bit truncation of the sizes in the internal linker map
+ implemented IHX writing in the Z80 internal linker
- removed the GetCode/Data/BssSize overrides in the ZX Spectrum internal linker,
since the default implementation, inherited from parent now works
+ implemented TIntelHexExeOutput.DoRelocationFixup
+ ZX Spectrum internal linker: invoke the ihx2tzx to postprocess the ihx file,
produced by the internal linker (in the future, the code of this utility may
be integrated into the compiler)
* changed the exe extension of ZX Spectrum to '.tzx'
+ enabled the ZX Spectrum internal linker
- removed the z80_internal_linker build mode from the lazarus project
+ allow specifying the program load address for the ZX Spectrum target via the -WB option
+ x86: optimziation MovMov2MovMov 2
Amiga: make the fullscreen video draggable, map Help Key to F20
+ add support for DEFB and DEFW directives to the internal assembler reader
* also handle single character register names (needed on Z80 for example)
+ add ability to generate a flat binary file instead of a tape file
* with ihx2tzx now also supporting binary output it makes sense to rename it to something more generic
* simplify code: simply raising an exception is enough, it's not necessary to call ShowException and Terminate
+ add compiler support for the Z80 MSX-DOS target
+ add support for Z80 MSX-DOS to fpcmake
+ add support for Z80 MSX-DOS to fpmake
* allow executable/library name to be changed for an intermediate file
+ add initial RTL for MSX DOS. Simple programs are already working, but there are apparantly some code generation problems that lead to I/O as well as parameters not working correctly
* change exe extension for MSX-DOS from exe to com
+ add MSX-DOS to help text for -T
* regenerate msg{txt,idx}.inc after adding MSX-DOS to help text
* better rules if a 3 op mul operation is tried
+ add intrinsics for Z80 port IN/OUT
+ add support for port object on Z80 using the new IN/OUT intrinsics
* forgot to commit the generated Makefile
* include the Z80 specific intrinsic values
* fix O_LARGEFILE for Aarch64, RISC-V 32-bit and RISC-V 64-bit
+ some basic stuff for mips64el
+ added the 'AREA' directive support to the Z80 inline assembler, that allows
you to define custom sections
+ support the OFFSET directive in the Z80 inline assembler reader
+ add the _BSSEND section after the _BSS section
* the len parameter of TObjData.writebytes changed to TObjSectionOfs to avoid 8-bit truncation on Z80
* use qword instead of aword for bsssize to avoid 8-bit truncation on Z80
* fixed a bug in the Z80 internal linker when reading symbol offsets from .rel files
* fixed stack initialization in the ZX Spectrum startup code
+ clear the .bss section on startup in the ZX Spectrum RTL
+ optimize real operations with 0 and 1 if fast math is turned on
* optimize a/a and a-a if fast math is on
* patch by Christo Crause: FreeRTOS: heap manager doesn't free small blocks, resolves
0037195
* fix compilation for non 64 Bit targets
* swap fpu stack correctly when moving data into xmm registers
* patch by Christo Crause: embedded heap manager: free small blocks, resolves
0037204
* ensure that the BSS section for MSX-DOS is correctly initialized to 0
* fix typo (no code changes)
* for adding procdefs to forwarddefs check for the specialization flag instead of whether it's a full specialization; fixes implicit finalization handlers on x86_64-win64 not being found
+ added tests
* Aarch: handle 0 in AndAnd2And and check if the resulting constant
is really a shifter constant, resolves
0037203
* slash and divn might have an exception as side effect
* write length/code page when writing the string type
* temporarily fix
0037034 by disabling the problematic optimization until the real cause is fixed
+ might_have_sideeffects checks also if the tempinitcode of a tempref node might have side effects
* better check for short boolean evaluation in firstcomplex
* fixed copy&paste error of
0045658
* Optimize parentfp when optimization level 1 and higher to be debugger friendly.
z80: vasm doesn't support the JRJP pseudo instruction, so change it to JP during write
* Fixed the parentfp optimization for some cases when nested procvars are used.
* Improved the parentfp optimization to properly handle cases when a nested routine calls other nested routines.
* Added optimization option cs_opt_unused_para. It is enabled for -O2 and higher. The parentfp optimization is tied to cs_opt_unused_para.
+ support z80 in the fpc launcher utility
* fix -Agas-darwin to say Aas-darwin for x86-64, and also add it for i386
(mantis
0037230)
* regenerated message files
o patch for Xtensa by Christo Crause, resolves
0037099
+ Added postfix parsing in tattreader.GetToken
- Removed all postfixed versions of OpCodes from the instruction list
+ Added all missing OpCodes from Xtensa ISA
* Changed branch OpCode to A_B, similar to ARM
+ Added missing branch condition flags BCI and BSI
* Updated existing compiler code that referred to the old postfixed instructions
+ Added prefix and postfix handling in TxtensaInstrWriter.WriteInstruction
* Updated TCPUAddNode.second_addfloat to specify .S postfix
* Updated tcpuunaryminusnode.second_float to specify .S postfix
+ Implemented prefix and postfix identification in txtensaattreader.is_asmopcode
* Adapted branch condition extraction to respect postfixes
* Changed itcpugas to call findreg_by_name_table from raatt.pas (same as issue
000037121, difficult to test these changes without including a fix for the register name search problem)
* Xtensa: MatchInstruction requires a postfix parameter
* Reworked tprocdef.is_implemented to fix a bug with the parentfp optimization. The bug was detected when using the llvm backend.
+ Added a test.
* switch to interrupt mode 2 and install a custom maskable interrupt handler in
the ZX Spectrum startup code, because the ROM handler requires the IY register
to always have a specific value, but the FPC code generator uses the IY
register for various purposes, which causes random crashes and glitches when
the timer interrupt occurs.
* limit the ZX Spectrum programs address space up to $FDFC, because the RTL now
installs an interrupt handler at $FDFD
+ Xtensa: patch by Christo Crause to add optional MAC16 registers, resolves
0037130
* fix typo (no code changes)
+ Xtensa: patch by Christo Crause: support call0 abi in init final code part of
0037242
* patch by Christo Crause: support call0 abi in entry/exit code, part of
0037242
+ Xtensa: patch by Christo Crause: support subarch lx106 in freertos Makefile, part of
0037242
* fix for Mantis
0037251: apply patches by Bi0T1N to implement the IsConstValue() intrinsic
+ added tests
* Xtensa: patch by Christo Crause: fix controller date for esp8266, part of
0037242
* Xtensa: patch by Christo Crause: add IDF_PATH variable, read from the appropriate environment variable, part of
0037242
* fix for Mantis
0037272: also allow the empty set for dynamic array parameters; Delphi probably started to allow that together with array constructors.
+ added tests
* reverted some stuff accidently committed in
0045704
m68k-amiga: added four new exec legacy support functions, these exec calls will be used in some DOS and AThreads rework
amiga-likes: add headers for timer.device/GetSysTime()
* correctly handle sign/zero extensions for optimization "var3", resolves
0037254
* delay setting of pd_body and pd_implement till the header of a generic
procedure is parsed, resolves
0037261
* use the fpu on suitable x86 targets to copy extended values
* set mm register subreg properly when cleaning them with xor
* fix compilation with newer FPC
+ handle OS_128 in mm code
bump ppudump copyright year
* (modified) patch by Michael Ring from the mailing list to fix linking for arm-freertos
+ Xtensa: more cpu capabilites
+ Xtensa: set cpu for xtensa-linux as call window support is required
* fix abs() intrinsic optimisation, resolves
0037301
Fix overflow when value is high(int64) in OptPass1And method
* fix test to check result properly as pointed out by Bi0T1N in the bug tracker
* AAarch64: handle initializations of vector registers with zero properly
Fix ShowHistory, by avoiding ordering by TR_ID which is not monotoneous anymore
* properly calc new src register for OP_XOR
Add softfpu feature for z80 cpu
* patch by Christo Crause: fix volatile registers for call0 abi, resolves
0037317
Try to fix tarmunaryminusnode.pass_1
Only try to use softfpu functions when fputype is fpu_soft
Disable bzip2 package for msxdos (Data element tool large error)
Disable all utils for zxspectrum and msxdos
Add z80 to PPC_TARGETS to reove ppcz80 on clean
tarmunaryminusnode.pass_1 must call inherited method for system_arm_wince
Do not use .hidden for systems_wince, as is done for systems_windows
* regenerated Makefiles again
* scalar operations should take single/double values and not full registers
Also use union with double field to ensure correct alignment for float64 type from genmath.inc source
Put floating point type as first variant of floatXX definitions, to ensure correct alignment
Fix conversion between TFPURoundMode and bits of get_fsr according to SPARC-V8 specifications
* TAOptObj.MakeUnconditional: Set as internal error for MIPS cpu:
MIPS conditional instructions conntain the
computation of the condition itself, so
changing the instruction to unconditional
should never be done.
* TAOptObj.OptimizeConditionalJump: Return false early if
the conditional instruction has more than one operand.
* tcg.a_load_cgparaloc_ref: Always enable SHR instruction for mips/mipsel CPUs
This is normally only used on big-endian targets, to re-convert records
of size < OS_INT into values fitting inside the byte size of the record,
after it was left-shifted to comply with ABI stipulating it but be
writable as a full-size register into a OS_INT size memory.
+ patch by Christo Crause: ESP8266 controller unit for freertos, resolves
0037336
Do not set value of stoploop to avoid infinite loop
Also check that HP1 is a jump instruction with more than one operand to exit early
Fix several warnings about uninitialized local variables
* Handle R_SUBMMWHOLE in reg_cgsize for R_MMREGISTER type
* Disable range and overflow checking inside is_continuous_mask function.
* generate soft float code for arm vfp units which have no double operation support
* completely disable records containing float fields in registers again, as
the code generator does not support subsetreg loads of floats
* enable putting records that contain a single field into records on all
targets (patch by J. Gareth Moreton, mantis
0037343)
* properly handle boolean64 xor boolean64 on i386
* revert part of
0044879: flock must use kernel_off_t: off_t breaks e.g. i386
+ patch by J. Gareth Moreton: SHL-centric peephole optimisations, resolves
0037389
Try to fix mipsel-android by making sure P does not point to a freed instruction
* revert part of
0045810 which was accidently committed
Avoid wrong overflow error when using -Criot options
Avoid overflow errors on z80 CPU by changing local variable type from aint to tcgint
Add missing CPUs for linux libgcc directory retrieval
Update svn:ignore porperties
Add list of generated executable to svn:ignore
New: rtl/inc/genmathh.inc source file, to provide a unique position
for the interface definition of float64 and float32 records,
available to all systems if FPUNONE is not defined.
rtl/inc/genmath.inc: Remove float64/float32, as they are now in rtl/inc/genmathh.inc
rtl/inc/softfpu.pp: Use provided definitions of float32 and float64
if available (by checking presence of FPC_SYSTEM_HAS_floatXX macro)
rtl/inc/systemh.inc: include genmathh.inc if FPUNONE is not defined.
rtl/java/jsystemh_types.inc: Likewise.
* float operations can have an exception as a side effect, resolves
0037398
* Fixed the peephole optimization of conditional movs for mips.
F_GetLk/SetLk have different values for sparc/sparc64
z80: preserve system ID and linker ID for the Amstrad CPC
* Fixed indentations of the interference graph.
* Added register names to the interference graph.
* To check the size of a register(s) corresponding to a variable it is needed to use localloc.size instead of def_cgsize(vardef).
+ Add a new parameter to GetCompilerInfo function,
called EmptyIfStdErr, which resets the returned string to
an empty string if the call generated output to stderr stream.
* Adapt calls to GetCompilerInfo to change above.
+ Add support for other CPUs for linux OS target.
* Try to avoid spilling of an imm register if it contains a value loaded from an already spilled imm register. It likely leads to an endless loop and the register allocation fails.
This fixes the register allocation for i8086 when handling registers for very constrained instructions such as "mov ireg1,[ireg2+ireg3]".
Here ireg2 can be only BX or BP. So in most cases only BX is available. When ireg2 is spilled, its value must be loaded to BX only.
Coloring of the ireg which holds the spilled value must be as early as possible to be able to assign BX to this ireg.
This fix should also help register allocation for other constrained/old CPUs.
* tinyheap: Early check for very big requested mem sizes in order to prevent overflows and properly report the out of memory error.
* i8086: Removed internal error, since global vars can be in registers if used only in pascalmain.
* i8086: Fixed referencing using BP and SP as base when FAR or HUGE memory model is used.
* i8086: Enabled the cs_opt_regvar optimization. It works fine now.
- removed no longer used -target $TARGET parameter (triplet is used instead)
+ optimize
mod for x86-64 as well
* In Delphi mode throw a conversion error when trying to typecast a pointer to a procdef when they use different memory models.
* Changed tsuperregisterworklist.get() to always return the last item from the list.
* Reversed sort order of simplifyworklist so nodes with most interferences will get their colors first.
Since degree of nodes in simplifyworklist before sorting is always
less than the number of usable registers this should not trigger spilling
and should lead to a better register allocation in some cases.
After these changes sysutils.o for i386-win32 is 80 bytes less. :)
+ add test for
0031714 which is already fixed
* patch by J. Gareth Moreton: fix for incorrect alignment removal, resolves
0037420
* modified patch by J. Gareth Moreton: MovOpMov2Op/Lea2Add/Lea2Sub consolidation, resolves
0037422
* mips: Added support for unaligned load/store. It greatly improves performance and prevents bus errors on systems which do not emulate unaligned memory access.
* Aarch64: set register size correctly for AndStrb2Strb optimization, resolves
0037427
* Re-enabled safe generic jump optimizations for mips.
* Fixed TAOptObj.CollapseZeroDistJump to properly handle delay slots.
* patch by J. Gareth Moreton: Minor oversight in MovAnd2Mov 3 optimisation, resolves
0037442
Add -SfPROCESSES for arm cpu, to be able to compile fcl-base package as for xtensa
+ simplify "x mod -1", resolves
0037449
* reject overloads if they only differ in the result types (as long as they aren't operator overloads)
+ added tests
* do not throw an internal error later on in case of a recursive call, if the declaration of the function was faulty, resolves
0037460
* rename local import of fpc_geteipasebx
* fpc_geteipasebx and fpc_geteipasecx are used as procedures, not functions, so declare them as such
- remove local Random() implementations that weren't exported anyway (LongInt <> Integer inside the System unit)
Add -marm option to gcc call fot arm target to be sure that aarch64 version of gcc complains to stderr if it does not support 32-bit
* do not throw an internal error if an errorneous type is passed to str, resolves
0037462
+ readd Randomize with parameter
* import library function with a name that does not conflict with the functions exported in the interface
* Count the number of interferences with real registers.
* Do not coalesce registers 'u' and 'v' if 'u' is the last usable real register available for imaginary register 'n' which also interferences with 'v'.
This prevents endless spilling in some cases for constrained CPUs such as AVR. Resolves issue
0037421.
Also this reduces the number of spilled registers in some cases and even eliminates spilling completely for some simple routines for i386 and AVR.
* Added a debug output of the number of spilled registers for each routine. This allows to easily compare results after changes in spilling algorithms.
* allow overloads with same result type for external Java classes due to Java supporting covariant return types for interfaces
* replace explicit (sometimes incomplete) tests with calls to doshortbooleval()
* the c-style boolean evaluation of "and" is independent of short-circuit evaluation
(you always have to consider the complete values in case the first one is <> 0)
* Enhanced the debug output of spilling statistics. Now it includes efficiency of the spilling which is based on
weight and usage count of registers. Range 0-100%. Such statistics are very handy when you modify the register allocator.
* Count only usable real registers.
* Early during register allocation, spill registers which interfere with all usable real registers.
It is pointless to keep them for further processing. Also it may
cause endless spilling.
This can happen when compiling for very constrained CPUs such as
i8086 where indexed memory access instructions allow only
few registers as arguments and additionally the calling convention
provides no general purpose volatile registers.
* Removed the i8086 specific hack. Since
0046199 the register allocator is able to handle the problem code.
* For 8 and 16 bit CPUs preload the ref base and index to a separate temp register in the generic implementation of a_load64_reg_ref() and a_load64_ref_reg().
This reduces spilling and produces a better code.
* i8086: When a ref points to the 32-bit data, preload the ref base to a temp register to reduce spilling.
* fixed LLVM register allocator after
0046199
* fixed peephole optimizer replace lea by add even if the flags were in use
(patch by J. Gareth Moreton)
* added test for Mantis
0036014 which is already fixed (also in 3.2.0)
* fix for Mantis
0036775: apply patch by J. Gareth Moreton
+ added tests
Disable limitation of handling of negative shift values, can be enalbed again by setting LIMIT_NEG_SHIFTVALUES macro
Add powerpc specific call to gcc to get the correct libgcc directory for linux
Regenerated all Makefile's
* For 8/16 bit CPUs and TP mode, disable expansion to a larger integer type for subtract operations on unsigned integers. This is TP7 compatible.
* patch by J. Gareth Moreton: unifies internalerrors, resolves
0037471
* made internalerror unique
Add amstradcpc OS support for fpcmake and fpmkunit
Change list of supported OSes
Add zxspectrum, msxdos and amstradcpc list of unsupported OSes for most utils packages
Add amstradcpc to the list of unsupported OSes base utils
Disable native compilation of ihcutil for zxspectrum, msxdos and amstadcpc as it requires fcl-base package
Disable compilation of most packages for msxdos and amstadcpc OS
* Added a simple implementation of random. It is TP/Delphi compatible. Enabled it for 8/16 bit CPUs by default.
* Improved generic implementations of fpc_mul_dword, fpc_mul_word, fpc_mul_byte to use less iterations and registers.
* reworked usage of tcgnotnode.handle_locjump
* reverted
0046220 as it is fixed now properly
- do not call firstpass in tinnode.pass_typecheck as it prevents further optimizations
* In assembly comments include all used registers by a variable for 8/16 bit CPUs.
* Do not add comments about unused varlocs.
* msdos: Include debug info only when it is enabled by options.
* Added virtual function TObjSection.GetAltName to be able to specify additional section name by descendants.
* OMF: Use the name of the first global symbol as an addition section name. This name is visible in the linker map file and helps tracking of section references.
* setelementn cannot be the root node of a cse domain, resolves
0037477
m68k: fixed a long standing issue, where FPU registers would be clamped to single precision during spilling
* insert type casts when creating new unaryminus nodes during simplification, resolves
0037508
* do not spill_replace if the register is used another time in the instruction
- no need to call add_move_instruction if data is moved between different register classes
* added test for bug that's already fixed (mantis
0037423)
* Optimized Handle_I8086_Error by using smaller int types.
* update version
- -Oodfa removed
* patch by J. Gareth Moreton: Long-range MOV + MOVS/Z optimisation, resolves
0037390
* attempt to correct bitpacked arrays on big-endian systems after
0043186. this fixed tparray13 test on m68k at least
* patch by Kai Burghardt to use https urls, resolves
0037522
FExpand: always uppercase drive letter also in BasePath
* better complexity handling of mul, slash, div, mod
+ add option -FF to force the use of fpcres as RC compiler
Note: if we merge this to 3.2.x then we can switch to this by default once 3.2.2 is released
* make sure that the resource compiler related globals are reset
* regenerate msg*.inc files
* it's usefull to enable the test for all platforms
+ add test for already fixed Mantis
0037286
+ add a constant that describes all internal COFF writers (be it PE/COFF or not)
* fix for Mantis
0037559: the adjustment of the section type should only be done for internal COFF writers
* Reverted accidentally committed files.
* patch by Christo Crause to make nostackframe with the windowed xtensa abi working, resolves
0037550
* Fixed nasm writer by adding a new line after the GLOBAL directive.
* 8086: Fixed calling of local routines with the near attribute in the 'far code' memory models.
* msdos: By default external routine names with the pascal calling convention must be all upper case. This is TP and TASM compatible.
* 8086: Do not force far calls in the TP mode by default. This is TP compatible. Other modes need forced far calls by default in order to compile non-TP code.
* do not try to unroll a loop if previously an error was thrown, resolves
0037475
* linux-m68k: depend on FPU defines to compile FPU code, instead of CPU68020. also, minor cosmetics
* don't convert lea to add/inc/dec/sub if there's a symbol in the reference
o fixes make cycle on Darwin/i386
* when a function returns a value in a register, but normally that type
would never be put in that kind of register by the compiler, store
it to memory to avoid issues down the line
o fixes tcalext6 on darwin/i386
* do not apply range test optimization if the variable is a string being compared against a char constants, resolves
0037476
* 8086: enable cs_force_far_calls when m_nested_procvars is enabled.
* 8086: when the compiler mode switches to a non-TP mode, enable cs_force_far_calls.
* msdos: Force names of external routines to be all uppercase only in TP mode.
* Added the $F+ switch (forced far calls) for some TP mode tests.
* execute the tempinitcode whent the tempcreate node gets processed rather
than when the first temprefnode to it gets processed. Solves the issue
the foreachnodestatic processes the tempinitcode when seeing the
tempcreatenode and ignores it when seeing temprefnodes, even though
it may actually be executed/generated for the temprefnode. It's
impossible to easily process it for the "correct" temprefnode
(since there may be multiple temprefnodes for the same tempcreatenode)
o fixes tarray12 for Darwin/i386 and Linux/i386
- disable {$optimization on} setting so the (fp)make settings are used
- reverted
0046457, accidentally committed (breaks -Oooptcse)
* RTTI: Offset of record fields is defined as SizeInt not ptruint.
+ AAarch64: FMovFMov2FMov optimization
* wlib: Explicitly specify the smallest possible record align to reduce the size of .a files.
* Xtensa: patch by Christo Crause: add support for windowed ABI stack dump, resolves
0037583
+ Xtensa: L32IMov2L32I optimization
+ Xtensa: consider also floating point stores in TCpuAsmOptimizer.RegLoadedWithNewValue
* In the TP mode for 16-bit CPUs uint8+uint8 is extended to sint16+sint16. This is TP compatible.
* 8086: Fixed Ofs() for far routines.
resultdef of typeconvnode.typecheck_proc_to_procvar() is reused every time you get an address of a proc. So it is forbidden to change the far/near attribute of resultdef - it leads to mess during code generation.
Instead it is needed to use separate reusable resultdefs with new flags pc_far_address and pc_offset.
* StackTop must be OS specific (and not CPU specific)
* fix for Mantis
0037579: mark the 'German' tokens with the characters they represent
* 8086: Fixed an internal error for cases like FarPtr2 := FarPointer($12345678) + int16;
* 8086: More fixes for Ofs() handling.
* Added on option to implement library based smartlinking of the dead stripable vectorized lists (e.g. resource strings index). By default smartlinking of such lists only supported when the section based smartlinking (tf_smartlink_sections) is enabled for a target.
* msdos: Implemented library based smartlinking of the dead stripable vectorized lists. It is enabled for the internal linker and wlink. These linkers sort sections by name by default.
* Allow library based smartlinking of indirect symbol entries.
* Corrected
0046481. Use both tcalo_new_section and tcalo_make_dead_strippable flags since only the default implementation implies a new section creation when tcalo_make_dead_strippable is specified.
* wlib: calculate the record size according to the number of files in the library.
* Xtensa: set abi correctly
* 8086: Fixed loading a 32-bit ref to a register in case the target register is used as the ref base or index.
* 8086: Also fixed loading a register to a 32-bit ref in case the source register is used as the ref base or index.
* tinyheap: Disable inline when FPC_TINYHEAP_HUGE is defined to prevent code bloat.
* Fixed tests for 16-bit CPUs.
* do not throw an internal error on illegal assembler expressions, resolves
0037439
* Changed Integer to Longint in definitions of RTTI structures. It fixes typinfo for 16-bit CPUs.
* msdos: Fixed section based smartlinking after my recent changes.
* Fix bug
0037601: add some attribte definitions
* Add StoredAttribute class, bug ID
0037602
Do not set EXCLUDE_80BIT_TARGETS to 1 if OPT variable contains -dFPC_SOFT_FPUX80
Fix error in previous commit
Try to avoid unneeded steps for fullinstallsymlink
* 8086: Fixed very long section names when $HUGECODE is ON and section based smartlinking is used.
* Added a utility function TrimStrCRC32().
* When optimization is off always load unused parentfp to a local location to be debugger friendly.
* msdos: Fixed AV in the internal linker in some cases when code or data exceeds 64k.
* If parentfp is passed in the stack it can be skipped only if po_delphi_nested_cc is set for the routine.
x86: It is more optimal to push some register (NR_FRAME_POINTER_REG) instead of a constant value in a_load_undefined_cgpara().
* Added assembler comments about unused parameters.
* reduce number of default libs
* patch by Christo Crause, resolves
0037335
* ESP8266 support for t_freertos.pas
+ -Ff switch to be able to pass the IDF_PATH without using an evironment variable
* insert literals after the section start which belongs to the current procedure
* Remove debug ECHO lines
* Fix detection of -dFPC_SOFT_FPUX80, as OPT is reset after
being copied over to LOCALOPT.
+ Add FULL_TARGETS that list all targets concerned by fullcyle and associated targets.
* reset idfpath when globals are initialized (needed for the textmode IDE)
* cleanup ARM remainders
* locals can have 0 as offset, force a reference in this case
+ initial implementation of setjmp/longjmp
* Xtensa: needs no mul helper, all variants have the MULL instruction
* ait_varloc instructions are handled and removed by Trgobj.translate_registers() and never left for an assembler.
* fix for Mantis
0037616: apply patch by Kai Burghardt to complain about the correct type used by setjmp/longjmp
* TThread.Terminate does not have any platform specific behavior (it should only set FTerminated to true and call TerminatedSet), thus move it to the platform independant part
Notes:
- Netware had a ThreadSwitch in there, but that is not really required
- some platform were missing the setting of FTerminated to True, thus they'll now do that as well
+ Xtensa: make use of muluh/mulsh instructions
* Xtensa: make use of divide extension if available
+ Xtensa: implemented TCPUAddNode.second_cmp64bit properly
* Xtensa: fixed tcg64fxtensa.a_op64_reg_reg_reg for unsigned operations
* ait_comment,ait_regalloc,ait_tempalloc,ait_varloc instructions produce only comments in the external assembler output. Moved handling of these instructions to TExternalAssembler.WriteComments().
This eliminates code duplication and improves maintainability.
* Xtensa: more fixes to tcg64fxtensa.a_op64_const_reg_reg and tcg64fxtensa.a_op64_reg_reg_reg
* Xtensa: disable simple random again, committed by accident
* Use TExternalAssembler.WriteComments() also by nasm and intel assembler writers.
* 8086: Use CX as a scratch register instead of BX.
* Xtensa: optimize some shifts by constants
* 8086: If a far procvar is called, it must be in a memory location. This fixes a hack to emulate CALL reg1:reg2.
* 8086: Fixed using far procvars in a near code memory model and vice versa.
* 8086: Do not destroy contents of the BX parameter when calling a procvar by ref with a base.
* 8086: Fixed register allocation failure after
0046559.
* 8086: Reverted
0046557. It must be implemented differently.
* 8086: Proper implementation of: If a far procvar is called, it must be in a memory location. This fixes a hack to emulate CALL reg1:reg2.
* never create a regular temp for inline parameters that can be modified by
the caller (mantis
0037465)a
o in theory, the regular checks for doing so should never trigger, but due
to compiler-generated nodes (such as calls to fpc_ansistr_unique), they
could. Internal address nodes can deal with taking the address of the
function result in this case.
* non-zero exit code on failure
+ Xtensa: use extui for and with constants
* Xtensa: tcpunotnode.second_boolean fixed
* emit the correct declaration for procdefs used to force a procname in LLVM
o fixes lazarus startup on macOS/AArch64 when compiled with the LLVM cg
* add Xcode-11.0 as LLVM target version versin
* Xtensa: fixed TCPUAddNode.second_cmpsmallset
* Xtensa FreeRTOS: unified haltproc
Fix EXTDEBUG code: tai_comment requires use of strpnew function with constant string
Replace outdated cgop2string function by tcgsize2str function from cgbase unit to fix EXTDEBUG cycle on powerpc64le-linux
Move z80 specific -Sf options from rtl.cfg to system.cfg, as -Sf options are only accepted when compiliing system unit
* fix test for targets with little memory
* Xtensa-FreeRTOS: use setjmp/longjmp provided by the Xtensa libraries, we
have to link against them anyways
* Xtensa: force correct location into a register in tcpunotnode.second_boolean
* reverted 46417: if a assembler subroutine needs an entry instruction, it should be added explicitly
* Xtensa: several issues with parameter passing of the windowed api fixed
Move dbugsrv.pp example program from fcl-base/fpmake.pp to fcl-process/fpmake.pp where the source really is
* Xtensa: some issues with large parameters fixed
+ created xtensa-freertos object files using gcc xtensa-esp32-elf-gcc (crosstool-NG esp-2019r2) 8.2.0 with:
make TEST_CCOMPILER=xtensa-esp32-elf-gcc create_c_objects TEST_FPC=fpc TEST_ABI=windowed TEST_OS_TARGET=freertos TEST_CPU_TARGET=xtensa TEST_SUBARCH=lx6 TEST_CFLAGS=-mlongcalls
* Xtensa: record alignment is upto 8 bytes done
* Xtensa: fix single<>single
+ Xtensa: implemented tcpuparamanager.ret_in_param according to API
* fixed passing of variant parameters
+ common include file for tcal*.pp tests to define cpusmall
+ Xtensa: reused constant pool entries if possible
* Xtensa: various stack handling fixes
* better calculation of estimated stack frame size
* Xtensa: rewrote parameter handling
* Xtensa: aggregate types up to 16 bytes are returned in registers
* Xtensa: fix operand size and location handling in TCPUAddNode.second_cmp
* stack size estimation again improved
+ dummy implementation for FreeRTOS threading support
* enable initialization of exceptions and threading on FreeRTOS
* Xtensa: set expectloc of not nodes correctly
* unified settings for CPU "size"
* replace tcaldefs.inc by cpudefs.inc
* fix for Mantis
0037650: apply adjusted patch by Ryan Joseph do not range check the length of ShortStrings if their length parameter is based on a generic constant
+ added test
* Xtensa: arrays are always passed as by reference but still returned in up to 4 registers
* fix tw3930 after
0037927
o "unique" class (and interface) type aliases should actually not exist at
all except for overload resolution. All the rest (VMT, UUID, RTTI, ...)
should be taken from the aliased class/interface
o there is one Delphi-incompatibily left after this change, but it shouldn't
matter: tw8180 does not compile if you change the declaration to
"tcl=class(TInterfacedObject,XStr,iinterface)", while Kylix does compile
that. It doesn't really matter though, because in Kylix this actually
adds iinterface twice as implemented interface, so there is no point
in accepting this.
* prevent quadratic complexity in the size of the inheritance chain when
comparing objectdefs for equality
* Improved output of spilling statistics:
- Do not use count_uses, since weight already represents a usage count of a register.
- Do not count spills of registers with weight less than 100.
* Use the initial location of stack parameters as a spilling location if spilling is needed. This leads to the following optimizations:
- no spill temp is allocated;
- no load of a stack parameter to a spill temp;
- if a stack parameter is used only once do not preload it to a register. The parameter can be accessed directly in the stack if the target CPU supports this.
* Fixed
0046776: With -O3 do not "coalesce" spilled nodes if the initial location is set.
* Xtensa: tcgcpu.g_concatcopy uses OC_NE so the branch requires one instruction less
* Xtensa: tcpuunaryminusnode.second_float fixed for double
* Xtensa: tcgcpu.g_concatcopy makes use of loop extensions if available
* Xtensa-freeRTOS: fix linking against libc
* more ABI compliant parameter passing
* Xtensa: handle references with offset only properly
+ C objects for for xtensa-freertos with call0 abi, build with:
make create_c_objects TEST_CCOMPILER=xtensa-lx106-elf-gcc TEST_ABI=call0 TEST_FPC=fpc TEST_CPU_TARGET=xtensa TEST_OS_TARGET=freertos "TEST_CFLAGS=-O3 -mlongcalls"
using xtensa-lx106-elf-gcc (crosstool-NG crosstool-ng-1.22.0-100-ge567ec7) 5.2.0
* Fixed the stack parameters optimization (
0046776) for big endian CPUs.
* improve call0 calling conventions
* Do not use stack parameter location for spilling if its size is less than the register size for all CPU targets except x86.
* Fixed
0046801 for the case of int64 params with a single paralocation.
* RiscV32: corrected tcpuparamanager.getcgtempparaloc, resolves
0037709
* cleanup
* linux: fix some formatting in ostypes.inc, no functional change
* linux: use ugetrlimit syscall on m68k for rlimits retrieval. this fixes fpgetrlimit() call, and stack checking on Linux/m68k (tstack.pp test), at least on anything newer than kernel 2.4+ (2001)
* Xtensa: taicpu.spilling_get_operation_type improved
* Xtensa: trgcpu.do_spill_op fixed
* cleanup
* Xtensa: stack size calculation for the call0 abi fixed
* Include stack location of spilled variables in the assembler output.
* Moved spilling of registers which have the initial memory location and are used only once to a stage after coalescing is done. This produces a better code.
* a classrefdef might also be created with a forwarddef, so handle that correctly
+ Xtensa: make use of ABS.S
+ extended test for abs(...) with single tests
* Reverted
0046836, since it does not work as expected for yet unknown reason.
+ introduce tcgobj.a_loadfpu_reg_intreg
+ make use of it in tcgtypeconvnode.second_nothing
+ Xtensa: implementation of a_tcgcpu.a_loadfpu_intreg_reg and tcgcpu.a_loadfpu_reg_intreg
* RiscV32 correctly set operands of div/mod operations, resolves
0037743
* patch by J. Gareth Moreton: introduce RemoveInstruction and make as much as possible use of RemoveCurrentP, resolves
0037399
* Do_IsDevice treats pipes and sockets the same way as character devices
* fix for broken wince compilation after
0046863
Add gcc specific options -mabi=32/-mabi=64 for mips CPU
Update revision.inc after commit
0046877
Do not set __USE_LARGEFILE64 macro for sparc CPU, as it does not seem to be used for regular linux kernels
Add handling of extra parameters, using eval if equal sign is found.
+ Add TMP_DIR variable and use it.
* Only remove temp files if verbose is not set.
* write a proper error message if types are read/written which are not supported in iso mode, resolves
0037763
* m68k: fix index register usage in memory references, when the index is 8 or 16 bit wide and unsigned
* fix for Mantis
0037221: apply adjusted patch by Ondrej Pokorny to allow the use of Copy() on open array parameters (the result will be a dynamic array)
+ added test
* fix for Mantis
0036909: apply patch by Ryan Joseph so that array constructors can be used for static arrays as well.
+ added test
* small formatting adjustments for the sake of consistency
* restore ability to cycle with 3.0.4 (at least until 3.2.2 is released) after
0046890
* make use of AllocMem in fpc_dynarray_setlength
* correctly handle static arrays with a lower index <> 0
+ added test
+ allow in ISO mode that { ... } and (* ... *) comments are paired, resolves at least partly
0037428
* don't print range check warnings when evaluating inlined explicit typecasts
* don't perform "(x=y) or (z=u)" -> "(x xor y) or (z xor u)" optimization
if z or u may raise exceptions (mantis
0037780)
* added missing "end." (fixup for
0046904)
* do not set nonlocal for inter-procedural labels, this is not needed, they use
the jmpbuf to reach the target
Disable ucomplex and matrix units for z80-embedded target
* MovzAnd2Movz* optimization improved
+ MovzAnd2And optimization introduced
* extended AndMovzToAnd to support more variants
* compilation on i386 fixed
* fix for Mantis
0037779: use init RTTI instead of full RTTI when copying an array
+ added test
Disable af_smartlink_sections option for Z80 vasm and z80asm assemblers, as it leads to errors
+ modified patch by J. Gareth Moreton: Aarch64: LDR/STR pairing optimisation, resolves
0037580
Fix problems in xtensa fpc_setjmp/fpc_longjmp for linux
* better error message in case of illegal nodes for string constants, resolves
0034054
msxdos target uses same __fpc_envp symbol as msdos
Change list of compiled units for msxdos
Use sdasz80 instead of sdcc-sdasz80 to assemble prt0.asm, as sdasz80 is used by ppcz80
Add missing svn:ignore in some directories
Set FBuildEngine.Verbose also for -d option
Avoid range check error in a_op_const_reg_reg method when compiled with -CriotR
* another error message changed into a better one
z80-zxspectrum: delete and remove the prt0.asm file. it's not used any more, as it doesn't contain the interrupt code required for stable operation of the target, and this removes sdasz80 dependency from the RTL build process, if another assembler is used by the compiler
* do not copy unused paravarsyms
* x86: ImulMov2Imul optimization
* x86: apply OptPass1VOP also to vsqrts*
* xtensa-freertos: patch by Alfred for better tool search, resolves
0037308
* Xtensa: set is_jmp flag so branch optimization works
* xtensa-freertos: run python helpers only on non unix by directly calling python
+ xtensa: make use of float.s instruction
+ xtensa: make use of nsau to implement Bsr*
* patch (with little modification) by J. Gareth Moreton: refactor ARM/Aarch64 peephole optimizer, first part of
0037526
patch by J. Gareth Moreton: GetNextInstructionUsingReg drops out earlier, second part of
0037526
z80: cleaned up some tabs vs. spaces indentation mess in the vasm writer. no functional change.
z80: re-enabled af_smartlink_sections for vasm which is required for the vasm + vlink combo, partially reverting
0046916
z80: added handling of sections provided by the startup code to the vlink linker script. this fixes executable building, but the resulting executables still don't work at this point
* test for mantis
0034543 (already fixed)
* regenerated after adding unixtype dependencies
+ evaluate typeinfo(
)=/<>typeinfo() at compile time, resolves 0030260
* use fld/fst on i386 to copy doubles
Add conversion from "$" to "." for i386-watcom target and avoid iteration if no char modification is wanted in ApplyAsmSymbolRestrictions function
Use ApplyAsmSymbolRestrictions function and limit label sie to 247 for watcom assembler
Rename pvmt internal type to lower_pvmt for i386-watcom as watcom assembler is not case sensitive
Fix compilation for watcom RTL
* Fix NaN for watcom assembler (C000h is considered as a label, use 0xC000 instead)
* Also use ApplyAsmSymbolRestrictions for label names (required for units using embedded '.'
* Add ':' after a label if there is hp^.next is not assigned
Add character, fpwidestring, unicodedata and unicodenumtable units to watcom RTL
Various Watcom changes to enable compilation of packages and utils
+ x86: FstpFld2Fst optimization (re-enabled for safe cases)
* inlinable frame handling dummies for avr
* inline frame handler if possible
Fix NDS RTL compilation for default armv4 CPU, which does not have CLZ instruction
* make framecount and framebufsize dependent on the pointer size
+ optimize comparisons of constant pointers
* set default processor for i386 to Pentium2
* AVR: MovMov2Mov 2 optimization
z80-zxspectrum: fix the the linking order in the bss section, so the startup code doesn't crash when linked with vlink
Treat metadata as data in agppcmpw.pas
+ support all XSAVE instructions, resolves
0037864
Refactor setting of NoNativeBinaries:
Added NO_NATIVE_COMPILER_CPU_LIST and NO_NATIVE_COMPILER_OS_LIST
Set NoNativeBinaries if target CPU is different from source CPU
and target CPU is in NO_NATIVE_COMPILER_CPU_LIST.
Set NoNativeBinaries if target OS is different from source OS
and target CPU is in NO_NATIVE_COMPILER_CPU_LIST.
Add FORCE_NATIVE_BINARIES variable to be able to overrule
default behavior of NoNativeBinaries=1
* replace some longint by ObjpasInt
+ use pxor/vpxor to load 0.0
+ more pxor/vpxor optimizations
* inline more aggressively, if the ie for the initial change re-appears, it must be fixed differently
* enable the compiler to optimize away parts of System.PushExceptObject, if System.get_frame is not implemented, i.e. returning nil
* don't do illegal type conversions on GetNextInstructionUsingReg results
* test for new split option
* avx-512 has 32 mm registers
* load 0.0 by (V)XORPS/D instead of (V)PXOR in mm registers
* use (V)XORPS/D for unary minus
* use V* instructions if possible
* fix i386 compilation
* test needs delphi mode apparently
* mm registers 16-31 are also volatile during a call
+ make use of avx-512 instructions vcvtuis2s* if possible
* improved (V)MOVA*(V)MOVA*2(V)MOVA* 2 optimization
* proper change information for avx-512 vcvt* instructions
* copy only the instruction table related inc files during make insdat
* generate simplified code for unary minus when sse/avx is used
* is_signed does not check the ordtype but the ranges, so it cannot be used to
check for valid types for cvtsi2sd/s
* patch by Marģers to unify internal error numbers, resolves
0037888
powerpc: added support for 64bit explicit locations in legacy MorphOS syscalls. improved error handling of various corner cases or explicit paraloc handling
* turn the recently added 3357 warning into an error, to avoid another compiler IE later
* when setting up the symbol for the SEH data don't check whether it is global, instead check whether it's a function
* reset the stored symbol for SEH data once a new section is encountered
* use the name of the symbol instead of the name of the section as the later is always lowercased
* (slightly) modified (formatting, warning) patch by Jan Bruns to speed up overloading search, resolves
0036666
* naturally align threadvar lists/tables
o required for (future) Darwin arm64e target, and a good idea elsewhere too
(on constrained targets, it won't make a difference because the alignment
of pointers won't be > sizeof(longint))
* AArch64: added SIMD instructions (only plain ARMv8-A for now)
o added AArch64 regset parsing support in assembler reader, means that "{"
no longer starts comments there (like in the ARM assembler reader)
o added AArch64 indexed SIMD register support and removed old cg hacks
that worked around its absence
+ Add new LastCommonAsmOp constant to arm and aarch64 CPU targets.
* Uses this new constant to define TCommonAsmOps set type.
+ Use this constant in armgen/aoptarm MatchInstruction function,
to avoid a range check error when compiling with -CriotR with optimization.
* fix try_make_mul32to64() if it's called with a constant node on the
left (mantis
0037878)
o can happen if use_generic_mul32to64 returns false
* patch by J. Gareth Moreton to improve LEA/SHL -> LEA optimisation, resolves
0037954
* (slight modified) patch by J. Gareth Moreton to reduce number of assembler optimizer passes, resolves
0037959
* better complexity calculation of tvecnodes
* explicitly convert array indicies to pointer sized integers, so cse
can handle the conversion
* simplify tcgunaryminusnode.second_integer
+ remove type conversions also for unary operations if possible
* try_make_mul32to64: restore original node order if transformation failed
o this gets called by taddnode.pass_1, which caches the left/right
node types/resultdefs
* LLVM: ensure that the parameter types are processed of procdefs that are
declared when they get first called
o fixes compilation of several tests/test/tobjc* tests after
0046675
+ x86: MovxMov2Mov optimization
* patch by J. Gareth Moreton: minor refactor of reduced iterations of pass 1 of the assembler optimizer, resolves
0037972
Use // comments as curly brackets not recognized as comment start inside aarch64 assembly blocks
* simplify rules for softfpu units
* regenerate Makefiles after adding the softfpu units
* fix buildrtl units on Amiga-likes
* explicit build rules are not required for the softfpu units that are build with a buildrtl
* adjust softfpu unit so that it can be really used as a standalone unit instead of mainly as part of the System unit
* the define to check for inclusion in the System unit is FPC_IS_SYSTEM, *not* FPC_IN_SYSTEM
* colored message output as requested in
0037331, so far linux only
Also look for function name of 'result' is not found in load_result_node
+ Added a test for: When {$mode delphi} and {$modeswitch nestedprocvars} it is allowed to assign a nested routine which does not use parentfp to a regular procvar. And then call this procvar without any side effects.
* patch by Jan Bruns to solve an issue with the new overloading selection code, resolves
0037969
+ inline subroutines with formal parameters as well
* directly copy the result of set set into the left side of an assignment
Use RTE 207 for FPU_Invalid and FPU_Denormal exceptions on i386/x86_64 beos/haiku/*bsd as for Linux
Fix typo in script comment
Fix compilation failure of i386-netbsd target after last commit
Add explicit longint typecast to avoid range check errors with unwindrec longword variable
Display xtensa specific options for ppcxtensa -h
* delphi has excessprecision turned on by default
* excess precision should not be applied to comp or currency
i386-go32v2 also does not support progbits, as other COFF targets
Disable use of cmov instructions in alignment patterns for some i386 targets (it prevents use of some emulators)
- remove unused trimbspace
+ added ansistring variants for some helpers
+ initial implementation of a FullName field in file records to overcome length limitions of the name field
* use AnsiString for file names to overcome length limitations
m68k: add missing FINT and FINTRZ instructions to spilling_get_operation_type()
Fix compilation of RTL when USE_FILEREC_FULLNAME is not defined
* reverted accidental change
m68k: change the stack push order in the register calling convention to left-to-right. This should fix parameter handling in nested procedures (tnest5)
* bump ppu version after
0047279. it changes the ABI (m68k only), so units are incompatible even if the format didn't change
Add m68k specific option to gcc call to be sure to generate an error if the gcc does not target m68k CPU
+ patch by Anton Kavalenka to support coloured output on windows, resolves
0038025
Put GetFullName functions inside $ifdef FPC_WIDESTRING_EQUAL_UNICODESTRING
* protect GetFullName with FPC_HAS_FEATURE_UNICODESTRINGS instead of _WIDESTRINGS
Unix LocalToEpoch: fix typo
* sysutils depends on initc
* added "const" to some string parameters
* give an error when trying to define a macro/compiler variable with
an empty name
* changed TIDString and tsymentry.realname to TSymStr
o for TIDString: prevents shortstring -> ansistring conversions with
-dsymansistr when looking up symbols
o for realname: consistency with name
* remove the BaseUnix dependency added by mistake
m68k: initial commit to add the Sinclair QL as a compiler target
+ RTL skeleton for the Sinclair QL
* m68k: enabled vasm assembler support for the Sinclair QL, and added linking
* using ymm registers for copying data is always useful, regardless of alignment
* fix tcgx86.a_loadmm_reg_ref and tcgx86.a_loadmm_ref_reg for 64 OS_M512
* allow var alignment up to 64 bytes
+ i386 supports also avx-512
* i386 can use only 8 mm registers with avx-512
* also use avx copying for mod 4=0 memory blocks
* android: In some android versions time zone names are available only after first call of localtime().
* patch by J. Gareth Moreton: MOV/LDR/STR/MOV optimisations for ARM/AArch64, resolves
0037638
+ completed Ch_* information for VMOVD*
+ take care of vzeroupper in exit code optimizations
+ test for mantis
0036381 (seems already fixed)
+ tx86addnode.second_opvector makes use of AVX instructions
* moved UseAVX from cgx86 to cpubase
+ UseAVX512
sinclairql: when linking with vlink, generate an unrelocated binary with appended relocation info, so the startup code can relocate it
sinclairql: implemented some OS trap wrappers, to be used by the RTL
sinclairql: implemented startup code, including binary relocation and stack allocation
sinclairql: initial heap allocation code, and minor system unit bits
* fix for Mantis
0038051: make Chr() a real intrinsics so that it can be used in type declarations as well
+ added test
* increase PPU version so that the change of Chr() to a full intrinsic will not lead to problems
* fixed type of size parameter passed to fpc_getmem() when translating
new(pointer) (mantis
0038054)
m68k: fix references like (An) to parse properly in the assembler reader
sinclairql: added support to fpcmake
* make sure things still build with 3.0 after
0047353
sinclairql: make sure the default CPU target is 68000 for the QL. also, some cleanups
sinclairql: disabled a bunch of things in RTL until they're implemented
sinclairql: added to fpmkunit
Adapt to change of chr function in commit 47353, to change chr() a real intrinsics
Move explicit typecast to after check to avoid RTE when compiled with -CR
* use VPXORD in avx-512 mode as VPXOR does not work for the upper 16 registers
* compilation on i386 fixed
sinclairql: disable most packages for the QL
sinclairql: also disable fcl-stl which was missed in
0047370
Regenerated automatically after commit
0047358
sinclairql: now the target short name is also sinclairql as proposed by Pierre, so it's unified everywhere
* regenerated msgidx/msgtxt after
0047376
* fixed the packages build after
0047376
* Arm Thumb does not support complex references including SP, resolves
0038056
Add sysutils, typinfo, and math to explicit units list for macosclassic target OS
Remove setting of USE_FAKE_SYSUTILS macro for MacOSClassic, as sysutils is now compiled for that OS
Use MPW linker variant also for m68k-macosclassic target
Avoid uninitialized variable warning with -O4 option
qlunits: package skeleton to support the Sinclair QL
* fix copy-paste mistake from Mantis (due to replacement of '#' with links...)
* Fix bug ID
0038008: allow UTF8 to unicode conversion to react on/ignore invalid input
Merge: 06f5e293df 897322868b
-- Zusammenführen von
0047033 bis
0047401 in ».«:
C compiler/i386/i386nop.inc
U compiler/i386/i386tab.inc
U compiler/i386/i386atts.inc
U compiler/i386/i386att.inc
C compiler/i8086/i8086nop.inc
U compiler/i8086/i8086tab.inc
U compiler/i8086/i8086atts.inc
U compiler/i8086/i8086att.inc
U compiler/x86/x86ins.dat
C compiler/x86/rax86.pas
U compiler/x86/aasmcpu.pas
U compiler/x86/cpubase.pas
U compiler/x86/agx86att.pas
U compiler/x86/itcpugas.pas
U compiler/x86/rax86att.pas
C compiler/x86_64/x8664nop.inc
U compiler/x86_64/x8664tab.inc
U compiler/x86_64/x8664ats.inc
U compiler/x86_64/x8664att.inc
U compiler/utils/mkx86ins.pp
U tests/utils/avx/asmtestgenerator.pas
U tests/utils/avx/avxopcodes.pas
-- Aufzeichnung der Informationen für Zusammenführung von
0047033 bis
0047401 in ».«:
U .
Konfliktübersicht:
Textkonflikte: 4
Konfliktübersicht:
Textkonflikte: 4
* fixes for nasm writer, resolves
0038074
+ test
sinclairql: reduce default stack size to 8K
sinclairql: add a note about .bss sections and the binary size, no functional change
m68k: fixed parsing of absolute addresses in the assembler reader
m68k: fixed parsing of constants to absolute addresses
sinclairql: add a few more QDOS function wrappers which are useful at early stage
* simplified and fixed code of (v1=const1) and (v2=const2) optimization, resolves
0038066
sinclairql: the newline on this system is LF, not CRLF
sinclairql: following Frank Wille's advices, reworked the linker script to omit .bss section from the binary. this reduces a simple 'hello, world' size by ~5K. needs matching startup code.
sinclairql: startup code fixes. set the top of the new stack as stack pointer, not the bottom of it. initialize the .bss section following the new linker script. better protection against re-relocation.
sinclairql: fixed the relocation marker comment in the startup code. no functional change
Revert commit
0047257, Disable use of cmov instructions in alignment patterns for some i386 targets (it prevents use of some emulators)
Replace it by a new set of i386 targets, for which the default cpu is set to i80486 instead of pentium2
to avoid (for default configuration) use of CMOVxx or PREFETCHyyy instructions, not supported by some emulators.
Update after commit 47376
Register sinclairql target directory
* better writing of ordinal const. nodes
* correctly simplify tree transforms of (a+c1+c2) if a is a pointer, resolves
0037671
* Give access to CPU specific fields of tsettings record
in GENERIC_CPU mode, to be used by ppudump utility.
generic/cpuinfo.pas: Add tinstructionset, used for ARM cpu.
globals.pas: Put all CPU specific fields of tsettings record
inside a variant part when GENERIC_CPU is defined.
Also import llvm unit when GENERIC_CPU is defined.
+ utils/Makefile.fpc: Add -Fu../llvm option to compile ppudump,
as it now also needs llvm specific code decause of globals unit change.
Add some types and records to rtl/linux/t_linux.h2paschk and set macro _LARGEFILE64_SOURCE for __i386__ C code
bugfix gnu-assembler platform i386 vcvtsi2sd,vcvtsi2ss,vcvtusi2sd,vcvtusi2ss
bugfix gnu-assembler platform i386 vcvtsi2sd,vcvtsi2ss,vcvtusi2sd,vcvtusi2ss
* do not run the test, it is only about a compilation issue
bugfix gnu-assembler platform i386 vcvtsi2sd,vcvtsi2ss,vcvtusi2sd,vcvtusi2ss
bugfix gnu-assembler platform i386 vcvtsi2sd,vcvtsi2ss,vcvtusi2sd,vcvtusi2ss
tosunits: it's actually not ami-extra
* regenerated all Makefiles after Sinclair QL support was added
sinclairql: more work on the QL port. very basic stdio (console writeln) works.
qlunits: updated QDOS unit, added a QLfloat unit to convert longints and doubles to 48bit QLfloats, added a rotating cube example
Regenerate all Makefile's, and update utils/fpcm/fpcmake.inc and utils/fpcm/revision.inc after commit 47483
Do not set USE_FAKE_SYSUTILS for MacOS anymore
Add separate cs_assemble_on_target tglobalswitch entry
+ options.pas: Add new option -sT, to do only the linking on target, by
opposition to the old -st option, which does
both assembling and linking on target.
msg/errore.msg: Add new -sT help message
modify -st help message, to explicitly say that both assembling and linking
scripts are prepared for target system.
* msgidx.txt, msgtxt.inc: Regenerated
In FindObjectFile check the assembly file if cs_assemble_on_target is in globlaswitches
Replace cs_link_on_target by cs_assemble_on_target in assemble unit
sinclairql: make sure the Sinclair QL defaults to vlink
+ optimization type converted (modulo) divisions as well by removing up/down converting but,
insert a test and separate code path for -1 if needed
* fits_in_mm_register takes care of avx(512) support
* fix spilling of avx(512) registers
* get_scalar_mm_op fixed for M256
+ implement prefetch intrinsic for aarch64
* set reasonable defaults for arm eabi
* patch by J. Gareth Moreton: fixes crash on ARM with -CriotR, resolves
0038116
+ Aarch64: call OptPass1FData for FMA instructions as well
+ Aarch64: implemented FMovFMov2FMov, not yet used
* provided additional information in comments in the include file header
m68k: fix DB/DW/DD handling in inline assembler, update BuildConstant() method to current standards. issue reported/initial patch by Marcel Kilgus in QLForum.co.uk
* remove obsolete comment from rautils/ConcatConstant, issue reported/initial patch by Marcel Kilgus in QLForum.co.uk
Add missing CPULLVM versions for fpc_abs_real and fpc_sqr_real in x86_64/math.inc
Fix LLVM compilation by casting untyped real constants to double type, as LLVM does not support extended type constant apparently
Correct computation of operatingsystem_parameter_envp, which wrongly pointed to the NIL pointer separating argv from environment variables
* rename generic TStringBuilder to TGenericStringBuilder to make code tools happy
Revert wrong change, llvm supports extended constants
Use pascal code for LLVM fpc_sqr_real, because fmultp instruction is not accepted by llvm
sinclairql: use .exe as extension for executables instead of .bin, patch by Marcel Kilgus at qlforum.co.uk
Also accept s80bit real constants when FPC_SOFT_FPUX80 macro is defined
sinclairql: QDOS interface wrapper function improvements, patch by Marcel Kilgus in qlforum.co.uk, merged with minor tweaks
sinclairql: map file generation support with vlink, inspired by a patch posted by Marcel Kilgus in qlforum.co.uk
* backported vlink map file generation to other targets using vlink: Amiga, Atari and ZXSpectrum
sinclairql: initial implementation of RTL file I/O functions, patch by Marcel Kilgus in qlforum.co.uk
sinclairql: system unit changes and improvements, patch by Marcel Kilgus in qlforum.co.uk, merged with minor tweaks
+ Xtensa: make use of the LSX/SSX instructions
* Xtensa: cleanup of getreferencestring
+ added coloured compiler output support for OS/2 and DOS targets, platform-specific parts refactored to a standalone unit to remove the heap of ifdefs in unit comphook
sinclairql: added platform specific options to allow specifying executable metadata format
sinclairql: fix exitCode parameter accidentally overwritten in mt_frjob. also save d2 register.
sinclairql: drop support for the BASIC loader, write Q-emuLator or XTcc compatible metadata to the executable instead. based on a patch by Marcel Kilgus in qlforum.co.uk
sinclairql: changed startup code to be able to run directly as job without a BASIC loader. based on a patch by Marcel Kilgus in qlforum.co.uk
qlunits: make qlcube example still build with the current RTL
sinclairql: mark the qhdr metadata format as default in the help text
Add missing llvm directory for ppu unit compilation
add new testmethods (memref-operands)
add new testmethods (memref-operands)
working on new testmethods (memref-operands)
working on new testmethods (memref-operands)
* when getting an llvm temporary recorddef, recurse into arrays rather than
treating them as opaque defs. This is required to ensure that the temporary
recorddef for all x86-64 function results are the same on the caller and
callee side, as we allocate new arrays when generating them
* pass lp64d to GNU AS for abi_riscv_hf to get the right ABI set
* .def must be set on linux else it might be that the created executable is
deleted after compilation
Allow easier disabling of $inline on, by using -dDISABLE_INLINE
Improve CRC_checksum testing code with -dDEBUG_UNIT_CRC_CHANGES -dTest_Double_checksum -dTest_Double_checksum_write
* rtl: implement TRandomGenerator for thread-safe random
Add {$i fpcdefs.inc} to units that do not have that include
working on new testmethods (memref-operands)
working on new testmethods (memref-operands)
* revert
0047598: implement TRandomGenerator
bugfix internal assembler-reader x86 opsize local var
bugfix internal assembler-reader x86 opsize local var
working on new testmethods (memref-operands)
working on new testmethods (memref-operands)
* Try all OS/CPU combinations
Fix compilation with DEBUG_PPU macro set
* do not include fpcdefs in the cepiktimer unit
+ factor out PostProcessELFExecutable
+ write executable section size on linux
* take care of po_noreturn in more cases
* Avoid using volatile if NO_THREADING is defined
* Fix for Mantis
0038122: when a deref node is passed as a Self parameter for a type helper (which is a var parameter) we need to pass the non-derefentiated value so that the data it points to can be modified by the helper's method (this is Delphi compatible)
+ added tests
* Improve Test_Double_checksum with Test_Double_checksum_write CRC testing code.
Pass the three checksum arrays from ppufile to module owner,
to be able to check that the checksums computed at the time pf ppu writing
are compatible with the ones computed at interface level.
+ #QLvember work: stack frame optimization for m68k
* cwstring: try to load the iconv library with .6 suffix as well
* cwstring: open iconv with the transliterate flag instead of setting it later with iconvctl because it may be unavailable
* check if an invisible parameter for the result occupies parameter space
* revert
0047631: cwstring: open iconv with the transliterate flag instead of setting it later with iconvctl because it may be unavailable
* cwstring: open iconv with the transliterate flag if iconvctl is not available
* GlobalNameSpace must EndWrite before it is released to unlock the critical section
* fix test for targets not having a real wide string
* fix test for x86_64 targets using the SysV abi
working on new testmethods (memref-operands)
working on new testmethods (memref-operands)
working on new testmethods memref operands
working on new testmethods memref operands
* allow an AT&T suffix for movabs
+ -Xa option: generate code which allows to use more than 2 GB of static data on 64 Bit targets
+ implemented support for x86-64
* more than 2 GB static data requires to use the --no-relax option on linux
+ range check enumeration array indicies, range checking is after all a safety mean
working on new testmethods (memref-operands)
working on new testmethods (memref-operands)
Add internalerror when V_Error level is used in Test_double_checksum code, only with TEST_CRC_ERROR macro set
Apply patch proposed by J. Gareth Moreton in:
bug report
000036882: [Feature] Class and record definition XML dump extension
These patches extend the node dump feature (enabled with DEBUG_NODE_XML)
so it also dumps class and record definitions to the XML file. They are contained within
tags.
Currently only fields and constants are dumped to the XML file. Methods, constant and variable definitions may be added later.
* meanwhile all linux targets support the checkpointer directive
* dir_push might not flush pending switch changes but has to read the pending
record if needed
* test needs -Cg to trigger the warning
working on internal assembler-reader x86 opsize local var
working on internal assembler-reader x86 opsize local var
Fix i8086 compiler failure due to move of printnodeindention variable into verbose unit in commit
0047658
* Second patch xml-node-dump-defs.patch from J. Gareth Moreton from bug report 36882.
With same changes to ensure that xmllint find no errors in generated xml files.
+ add endsym to ConcatConstSymbol
Fix z80 compiler failure after change to ConcatConstSymbol in commit
0047668
working on new testmethods and bug-fixing size of (memref-operands | global and local variable
working on new testmethods and bug-fixing size of (memref-operands | global and local variable
* fix in
0047632 should be enabled for all targets as it is a stack tainting
parameter
bugfix internal assembler-reader x86 opsize local va
bugfix internal assembler-reader x86 opsize local va
working on new testmethods and bug-fixing size of (memref-operands | global and local variable
working on new testmethods and bug-fixing size of (memref-operands | global and local variable
* don't do x*x -> optimziation for xtensa as it causes a recursive call in sqr(...)
Raise internalerror inside RemoveCurentP is called with p=hp1, because it leads to using a class instance after it has been freed
Avoid internalerror in RemoveCurrentP for arm compiler
* cleanup merge overlefts
+ min/max intrinsics for internal use by the compiler
+ replace appropriate if statements by min/max intrinsics
+ support min/max intrinsic on xtensa
+ project file for PowerPC64LE
+ read 64-Bit ELF executable info correctly
* test for min/max intrinsics
* x86 change information updated
* (modified) patch by Christo Crause: ESP8266 doesn't support min/max instructions, resolves
0038175
* patch Christo Crause: Use LDS for 8 bit references, resolves
0038173
+ min/max support for x86
* quick fix for llvm compilation
* limit min/max optimization to fastmath for now, as the NaN handling is not working yet
working on internal assembler-reader x86 opsize local var
working on internal assembler-reader x86 opsize local var
bugfixing operandsize from 32-bit to (correct) 64-bit
bugfixing operandsize from 32-bit to (correct) 64-bit
* Adapted from patch node-dump-pass-1.patch submitted by J. Gareth Moreton from bug report 38156.
This patch extends the DEBUG_NODE_XML debug feature by also outputting,
to the *-node-dump.xml files, the node tree as it appears after the first pass,
since it often contains many more internal nodes like temporary allocations that may need
to be evaluated for debugging and development purposes, or node-level optimisation opportunities.
+ added explanation for min/max intrinsics
* prepared x86 implementation for proper NaN handling
Fix bug introduced in commit
0047709, by only calling node_complexity if first pass was already done (bug report 38183)
* handle min/max properly if it is applied to NaNs
* test extended
Fix pos field closing in XML node output after commit 47720
+ m68k: JSR, RTS to JMP optimization
m68k: in g_concatcopy, check the actual alignment of references being copied rather than always excluding word and dword sized direct copies on a 68000
cleanup bugfix internal assembler-reader x86 opsize local/global var
cleanup bugfix internal assembler-reader x86 opsize local/global var
amiga: fixed the recently added link map generation to work properly. needs recent vlink to work
* fix regression introduced with
0047625 for Mantis
0038122: when checking for a dereferentiation of the Self parameter subscript and vec nodes need to be kept
+ added test
* made optimization JSR, RTS to JMP more bullet proof, added comment
* m68k: MOVE, TST, Jxx/Sxx to MOVE, Jxx optimization
* Try to read command line exec name on linux, using argv[0], in order to be able
to use the symbolic link name instead of the real executable name.
This allows to use symbolic links to gppc386, named gppc1
to be able to launch ppc1 under gdb, as it is already possible
under OpenBSD (which returns the command line name via paramstr(0),
or under Windows if is used (generated by mklink).
+ Generate errors if compiler executable is not found, or if gdb binary
is not found.
+ Added a test for proper setting of fc_no_direct_exit in flowcontrol.
* allow absolute variables with an address to be used as syscall base
* m68k: proper values for first_*_reg
+ m68k: LEA, MOVE(M) to MOVE(M) predecremented optimization and MOVE(M), LEA to MOVE(M) postincremented optimization
* call node_complexity correctly in order_parameters when sorting parameters
add new option to avxtestgenerator to list opcodes-memrefsize-state
add new option to avxtestgenerator to list opcodes-memrefsize-state
* patch by Zoran Vučenović: fixes TDoubleRec.SetFrac, resolves
0038202
+ test
+ optimize if x>a then x:=a; into min(a,x);, similiar for max
* test extended
* x86: apply VOpVmov2VOp optimization to vmins*/vmaxs*
* min/max optimization on x86 can be applied now without fastmath as NaN is handled properly now
Fix ash_savefregp_x handling, as revealed by range check error
- remove could which prevented that rte is triggered even if we are inside
an exception block but *without* using sysutils. The remove code
was once added to have primitive exception handling even if
no sysutils is used. But if this is desired, an appropriate handler
to ErrorProc should be assigned. Resolves
0038201
* improved change information
Fix compilation failure for avr compiler with -dDEBUG_NODE_XML, to fix bug report 38222
cleanup and add comments to div. vcvt.. opcodes
cleanup and add comments to div. vcvt.. opcodes
* apply doremoveinttypeconvs to unary minus and not on 8 and 16 bit targets as well
* do an unsigned division if one operand is unsigned an the other
one a constant in its range, resolves
0038180
* x86-64: correctly translate and with large constants in mod optimizations, resolves
0038164
working on new testmethods and bug-fixing size of (memref-operands | global and local variable
working on new testmethods and bug-fixing size of (memref-operands | global and local variable
* change def parameter of single_type() from var to out (part of patch by Blaise.ru)
* apply slightly adjusted patch by Blaise.ru which moves parsing of result types to a separate functions thus ensuring that File types can't be used for procedure variables (just like they already couldn't be used as a result type for normal functions)
+ added test
working on internal assembler-reader x86 opsize local/global var
working on internal assembler-reader x86 opsize local/global var
* Aarch64: fix 32 bit div operations with constant denominators, resolves
0038225
* fpc_ln_real raises an exception for invalid operands if they exception is not masked
working on new testmethods and bug-fixing size of (memref-operands | global and local variable - append correct gas-suffix on any vcvt.. opcodes
working on new testmethods and bug-fixing size of (memref-operands | global and local variable - append correct gas-suffix on any vcvt.. opcodes
+ patch by J. Gareth Moreton: some new x86 assembler optimizations, resolves
0038130
* patch by Christo Crause to take care of the fact that the esp8266 read function is non-blocking, resolves
0038243
+ RTMSupport function
+ if available use RTM to support InterlockedCompareExchange128 on i386
* apply patch by Blaise.ru to enable the correct generation of names for classes/interfaces inside local symtables; these will be required for reference function types which are in fact interfaces and classes, this does not mean that ordinary classes can be declared inside functions
Note: no test as the functionality is not yet used
* fix the m68k cross-builds by disabling part of
0047824
external gas-assembler - handling special opcodes with multiple memref-size e.g. vfpclassps/pd - if operand-opsize < S_XMM =>> use memref-min-size
external gas-assembler - handling special opcodes with multiple memref-size e.g. vfpclassps/pd - if operand-opsize < S_XMM =>> use memref-min-size
Appply fix from Gareth Moreton in bug report 38247
* implemented UseAVX512 properly
+ make use of VREDUCE* for frac(...) if AVX512QD is a available
* Ch_ information for vreduce* fixed
* min/max optimization needs to check both operands of the if condition, even if no else-statement is passed, resolves
0038249
Fix compilation of i8086 compiler after commit
0047840
* lines with 255 chars a little bit long, reformated them
m68k: the LEA+MOVEM to MOVEM optimization is not feasible on a ColdFire
+ Xtensa: support large stack frames for the call0 abi
m68k: new CPU capability - the LINK instruction supports LONG displacements (68020+)
+ support got modifier on labels
* i386: disable InterlockedCompareExchange128 implementation if PIC is enabled
* fixed llvm shadow symtable construction in case fields are reordered
(-Ooorderfields) and hence their offsets are no longer monotonically rising
* also fixed padding for variant bitpacked records in llvm shadow symtable
* generate more efficient code for trunc(currency), trunc(comp), and
round(comp) on platforms where currency and comp are handled using the FPU
o also fixes trunc(comp) and trunc(currency) compilation for x86 on LLVM
with -Oofastmath
* add missing removal of excess fpu precision typecasts for trunc/round
- revert
0047208
* properly fix the internalerror it hid: only replace the local symbols
migrated to the parentfpstruct right before generating debug information,
so that internally generated self/result loads during optimisation passes
don't get confused by the replacement absolutevarsyms (those are normally
never encountered during optimisation, as regular absolutevarsyms are
replaced during parsing)
* use new TSym.EscapedRealName property when creating new symbols with the
same name as existing symbols
* factored out the creation of loadnodes for special variables/parameters
* darwin/AArch64: always clear fpu exception flags regardless of the
triggered signal, as the kernel currently triggers SIGILL rather
than SIGFPE for FPU exceptions
* fixed round(currency) so it takes the rounding mode into account on
platforms where currency is "type int64"
* inline trunc(currency), trunc(comp) and round(comp) on platforms where
currency and comp are "type int64"
+ $codealign directive accepts setting maxcrecord
avx512: external gas assembler not supported gather/scatter-opcodes without mask-register =>> not generate testcode
avx512: external gas assembler not supported gather/scatter-opcodes without mask-register =>> not generate testcode
avxtestgenerator: add new commandline param '-m', create only these testfile(s)
avxtestgenerator: add new commandline param '-m', create only these testfile(s)
external gas assembler: special handling for correct suffix in vfpclass-opcodes
external gas assembler: special handling for correct suffix in vfpclass-opcodes
* fix comment typo mentioned by Bart
internal assembler-reader x86 opsize local/global var - cleanup
internal assembler-reader x86 opsize local/global var - cleanup
working on internal assembler-reader x86 opsize local/global var
working on internal assembler-reader x86 opsize local/global var
* fixed error in load_fpu_location triggered by round() (fixes webtbs/tw32671
on i386 after
0047854)
+ implement align directive for records, resolves
0028927
* correctly handle inlined exits in dfa, resolves
0038259
internal assembler-reader x86 opsize local/global var - cleanup
internal assembler-reader x86 opsize local/global var - cleanup
* while not official supported, bootstrapping with 3.0.4 fixed
* Fixed missing slash in fppkg.cfg when installed in the root
* do not check inlined exit nodes for unset results, resolves
0038259
* first part of fixing
0038267: do not bail out early during constant folding
if the constant is 1 or -1
* refactored constant folding code
* fpc_AnsiStr_Concat: if one of the strings is empty and CP_NONE is passed, the code page
of the other string is taken, this is also like fpc_AnsiStr_Concat_multi works if length(sarr)=2
* properly fold string+string const+string const., resolves
0038267
internal assembler-reader x86 (local/global var) - validate asm-opcode-attsuffix and memrefsize
internal assembler-reader x86 (local/global var) - validate asm-opcode-attsuffix and memrefsize
+ fold also (string const+(string const+string var))
* string tree folding code moved into level 2 opt. block
* instead of blindly consuming whatever comes next trigger an explicit error if the parsed expression does not match for "INDEX ordexpr" or "NAME strexpr"
+ added tests
* always add a generic dummy if it is a procsym
* ensure that the dummy symbol is registered if it's added due to a routine
* use a case statement instead of nested if-then statements
* also handle call nodes when determining the generic symbol for inline specializations
* when only a symbol name is provided to generate_specialization_phase1 allow a symbol table to be provided as well
* correctly handle the case should the generic dummy symbol be a procsym instead of a typesym
* Delphi does not allow a generic method to be overloaded by a non generic type of the same name (unlike for generic types and non generic routines); this is probably done to simplify the implementation of implicit specializations of generic methods so we do this as well. For this we change the dummy symbol for generic routines from a typesym to a procsym
+ added tests
Note: what Delphi /does/ allow however is to overload a generic routine with a generic type... go figure. :/ We currently don't allow that
* fix compilation on targets that use Stabs debug information: ignore generic dummy symbols with no procdefs for generating stabs data
* Set softfloat_rounding_mode indise SetRoundMode function for all CPUs.
* SetRoundMode returns previous rounding mode value for all CPUs.
Check also that SetRoundMode returns correctly previous rounding mode
Add testing for single float type in trndmode.pp
* handle rawbytestrings in Win32Ansi2UnicodeMove properly, resolves
0038299
Fix spelling error of revision 48023
+ added newly used opcodes to avx_opcode_only_op0_may_be_memref
-- Rückwärtiges Zusammenführen von
0047837 bis
0047033 in »ppcx64.lpi«:
U ppcx64.lpi
-- Aufzeichnung der Informationen für rückwärtiges Zusammenführen von
0047837 bis
0047033 in »ppcx64.lpi«:
G ppcx64.lpi
-- Entfernung der Zusammenführungsinformationen von »ppcx64.lpi«:
U ppcx64.lpi
-- Rückwärtiges Zusammenführen von
0047837 bis
0047033 in »ppcx64.lpi«:
U ppcx64.lpi
-- Aufzeichnung der Informationen für rückwärtiges Zusammenführen von
0047837 bis
0047033 in »ppcx64.lpi«:
G ppcx64.lpi
-- Entfernung der Zusammenführungsinformationen von »ppcx64.lpi«:
U ppcx64.lpi
* use str(...) instead of typinfo unit
* use str(...) instead of typinfo unit
+ patch by J. Gareth Moreton: Advanced MOVZX optimisations, resolves
0038294
* fix for Mantis
0038310: ignore procsyms that have no procdefs for checking overloads, or more precisely to stop checking for overloads; these are generic dummy symbols
+ added (simplified) tests
* weight currency->float conversions the same regardless if
the currency type is handled by the integer unit or the x87 fpu,
resolves
0038309
* have the generic dummy symbols for procsyms keep track of their overloaded generic procsyms so that they can be easily found (will be needed for implicit specializations)
* make TProxyStream.Check an abstract method; as it is right now one had to override it anyway because it always raised an exception
* llvm: only set custom parameter alignments for byval parameters, the rest
is handled automatically by llvm (and since llvm 11.0 you get an error if
you specify an alignment for them anyway)
+ linux implementation of System.GetCPUCount
Add two new button to simplify inspecting evolutiontestsuite difference in time
* throw a proper error if a contructur has a type parameter in delphi mode, resolves
0037217
+ AddLea2Lea optimization
* improved LeaLea2Lea
* patch by J. Gareth Moreton to resolve bug introduced in the first patch, resolves
0038294
* if the Linux target is compiled with FPC_USE_LIBC the initialization of TLS is not required (according to one comment by Florian), so disable all related code in that case (as for example the syscall numbers are not available then)
+ add declaration of FpSchedGetAffinity when the Linux target is compiled with FPC_USE_LIBC
* simplified code for JccAdd2SetccAdd optimization
* patch by J. Gareth Moreton to fix MovzxCmp2CmpMovzx, resolves
0038339
* clear up message that a global generic references a static symbol a bit
* regenerate msg*.inc files
Add check for bug fix in bug report 38339
* add parameter cleanup nodes to the call cleanup block (mantis
0038316)
* do not extend 8 bit return values to 32 bit when loading them into eax,
this is not required by the api, neither does e.g. clang it
avxtestgenerator add attsuffix in 'opcode-memrefsize-state - list' (command-line option '-l')
avxtestgenerator add attsuffix in 'opcode-memrefsize-state - list' (command-line option '-l')
cleanup + add internal error if all asmr_e_not_supported_combination_attsuffix_memrefsize_type are reported
cleanup + add internal error if all asmr_e_not_supported_combination_attsuffix_memrefsize_type are reported
* avoid widening of shl operations, this is not necessary for them either
Try to avoid use of native libgcc directory when cross-compiling.
Add FSourceCPU, FSourceOS, FCompilerDate FFullCompilerVersion fields to TCustomDefaults class.
Set these new fields by also parsing FPC -iDWSPSO output.
Use these fields to try to correctly guess if native gcc should be used to
try to find libgcc directory, or only $BINUTILSPREFIX prepended gcc.
+ support R_X86_64_GOTPCRELX and R_X86_64_REX_GOTPCRELX
Function GetDefaultLibGCCDir adapted to case of Defaults not assigned (required for fpcmkcfg utility) reported by Andrew Kurushin
* patch by J. Gareth Moreton: refactor OptPass2Jcc, resolves
0038343
* simplify tx8664shlshrnode.pass_generate_code, it should not mess with the result type, this
is a matter of the type check pass
* x86: some fixes to enable 8 and 16 bit operations
* arm*: fix SxtbAndImm2Sxtb (now SxtbAndImm2Uxtb) optimization as proposed by Pierre and Gareth
* similiar fix to
0048167 for OptPass1SXTH
+ remove try ... finally statements if the finally block is empty
Fix clearing of single type register variable in initialize_regvars method for ARM cpu (with -Ooregvar)
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
* TRegistryIniFile: Fixed uninitialized Result in ValueExists(). Implemented SectionExists().
* Reverted
0041816 to allow TXmlRegistry.DeleteKey() delete the key and all its children. It is Delphi compatible. Windows implementation of TRegistry.DeleteKey() was fixed accordingly.
* TXmlRegistry: When a key name starts with \ or / it means the absolute path to the key is specified. So ignore the currently selected key when an absolute key is requested.
* TRegIniFile: When accessing a section do not change/close the current open key.
* TRegIniFile should work properly with the XML registry. The tregistry2 test should work on any platform.
* patch by J. Gareth Moreton: Unitialized result variable fix on non-x86 debug builds, resolves
0038371
Also set __stkptr inside cprt0.as startup assembly source
Also set __stkptr inside cprt0.as and dllprt0.as startup assembly sources
Avoid inlining of real constant for m68k if type is not best precision
Change parameter type of Build* procedure from out to var, as the StringList is created in calling main
This avoid a warning during compliaztion and a crash when compiled with -gt* option.
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
* arm/aarch64: patch by J. Gareth Moreton: fix register allocation information for Mov2None 2, should resolve
0038055
Reset paratargetdbg to dbg_none when handling -g- option, to really suppress debug information generation
powerpc-amiga: added some exec functions which will be required for some athreads rework
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
Add sleep inside loop to find package that can be compiled, if none is ready in ProcessThreadResult
Add some colors for comparison between two run results
Only set FNotifyMainThreadEvent at start of Execute method and after finishing the compilation of a package
Avoid range check errors
(cherry picked from commit 1351ccb3bfe6adad6be0246acb7645203df8b3b0)
# Conflicts:
# .gitattributes
* patch by J. Gareth Moreton: aarch64 EXTDEBUG fixes and extensions, resolves
0038383
* give a proper error if macros are too deeply nested
* Changed the registry test. TRegistry.DeleteKey must delete all sub-keys. It is Delphi compatible despite the incorrect statement in the online Delphi docs.
* Removed/ifdefed lots of unused variables.
* Corrected visibility of overridden methods.
* Commented out some unused (yet?) local variables.
* Fixed a wrong code caused by a typo. It has been revealed by a note about an unused var.
* let theapthread wait unneededly less so the total run time is shorter
* Fixed
0044145. To test if a constant is declared it is needed to use {$if declared()} instead of {$if defined()}.
* Commented out the unneeded/unfinished code.
* Removed/ifdefed the assigned and unused variables.
* Removed more assigned but unused vars.
* Corrected method's visibility.
+ modified patch by Christo Crause: if the target support, the switch -Xu can be used to generate the executable as an uf2 file
* Removed in_x86mm_last (the duplicate no and unused) from the tinlinenumber enum.
* Fixed value of the LF_PAD13 enum element.
* do not output error numbers for options
Add cs_generate_uf2 entry into ppudump
* fix for Mantis
0038390: use Val instead of StrToInt to avoid overload problems
+ added test
* use Str instead of IntToStr to avoid overload problems with unsigned types
* missing programs added to rules, so make clean works better
+ write message number to docs
+ enclose arguments in text angles
* rgobj: ungetiftemp can't be used here since it frees only temps of the tt_normal type.
* compiler utils cannot depend on StrUtils
* use generic VFP type instead of VFP list prone to changes
* properly mangle interface wrapper names to avoid duplicate label errors, resolves
0038385
m68k: revert
0048224, the fix proposed in that patch was just hiding an underlying issue
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new tests for compressed disp8*N
* Fixed wrong buffers in the XML registry test.
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
Introduce USE_REAL_INSTRUCTIONS to handle expressions not accepted by old assemblers
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
* better error message for runtime errors 202 and 210, resolves
0038254
* fix type conversion for array indicies if the ordinal ranges of the involved types do not overlap, resolves
0038413
* handle generic with ord call of sub-range and enumeration data excluding 0 correctly, resolves
0038412
* do not execute xend twice which was introduced in
0048430
* removed accidently committed printnode
+ initial attempt at defining an enhanced video cell record for the Unicode support in the video unit
+ added the EnhancedVideoBuf global variable to the video unit
+ introduced TVideoDriver.InitEnhancedDriver
+ introduced OldEnhancedVideoBuf
+ add a test which ensures that a "const TVarData" parameter is passed as a reference.
This is required for Delphi compatibility as implementers of IVarInvokable or
inheritors of TInvokableVariantType need to modify the variant data by using
a pointer to the TVarData because it's passed as const and thus not modifyable
by itself.
This behavior is documented in so far as the C++ builder documentation shows
that the same parameter is implemented as "const&".
* use UnicodeString instead of WideString in TEnhancedVideoCell
+ added simple test for the video unit
+ introduced initialization of the video unit in enhanced (Unicode) mode
+ added unicode video unit test
+ support both legacy and enhanced video buffers in Video.ClearScreen
+ added lazarus projects for the video unit tests for Windows
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
* test for already fixed issue
0032139
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new tests for compressed disp8*N
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
* the size of the CIE_pointer in an FDE is always 32 bit
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new tests for compressed disp8*N
* x86_64-linux: assembler helpers syscalls do not need a stackframe
* allow sub/add nodes in constant pointer expressions, resolves
0034027
* test for already fixed issue
0024434
* create \index entries in the messages.inc for an index of message texts and numbers in the user manual
bugfix
000037785 cvtsi2sd,cvtsi2ss for platform i386
bugfix
000037785 cvtsi2sd,cvtsi2ss for platform i386
* fixed off by one errors in the new video unit routines
+ enabled all debug code generation options in the video unit test .lpi files
+ added operator = for comparison of TEnhancedVideoCell records
* switched the windows video driver to use the enhanced (unicode) video buffer
* use CP_OEMCP to convert characters in LegacyChar2ExtendedGraphemeCluster
- removed useunicodefunctions from the windows video unit
- removed the cp850 code page mapping from the windows video unit (it is no longer used)
- removed unused variables and types from Video.SysUpdateScreen
* LineBuf converted to dynarray (to avoid buffer overflow for too big consoles) and made global to avoid reallocating it on the heap on each screen update
* all integers replaced with smallint, in order to be able to introduce objfpc mode
* drivers.pas moved to drivers.inc
+ added drivers.pas that includes drivers.inc
+ add drivers.inc to the include file dependencies of the drivers unit
+ introduced unit udrivers, which calls InitEnhancedVideo instead of InitVideo (i.e. enables unicode mode in the video unit)
* views.pas renamed views.inc
+ added views.pas that includes views.inc
+ add include file views.inc to fpmake
+ introduced unit uviews, which is going to be the unicode enabled version of the views unit
* FPC_VERSION => FPC_FULLVERSION
* switched the fv units to objfpc mode
* partial unicode conversion of the views unit
+ unicode version of MoveCStr
+ unicode version of MoveStr
+ unicode version of CStrLen
+ unicode version of MoveChar
+ unicode version of MoveBuf
* unicode fixes in TFrame.Draw
* TTitleStr redefined as UnicodeString in the unicode version of the views unit
* unicode conversion of TScrollBar.Init
* unicode version of TListViewer.GetText
* unicode fixes in TListViewer.Draw
* unicode version of SpecialChars
+ throw a warning in ISO mode if a constant string is assigned to a char and the sizes do not match, resolves
0038439
* unicode versions of TView.TextWidth and CTextWidth
- removed the posidx, because it seems to be unused
+ introduced TStream.ReadUnicodeString and WriteUnicodeString
* TWindow.Title changed to UnicodeString
* outline.pas renamed outline.inc
+ added outline.pas that includes outline.inc
+ added outline.inc include file to fpmake.pp
+ unicode version of unit outline
* menus.pas renamed menus.inc
+ added menus.pas that includes menus.inc
+ added include file menus.inc to the menus unit dependencies in fpmake.pp
+ unicode version of the menus unit
* histlist.pas renamed histlist.inc
+ added histlist.pas that include histlist.inc
+ added histlist.inc as dependency for histlist.pas in fpmake.pp
+ unicode version of the histlist unit
* app, dialogs, msgbox and validate unites renamed .inc
+ added .pas files that include their respective .inc files for the units app, dialogs, msgbox and validate
+ added .inc dependencies in fpmake.pp for units app, dialogs, msgbox and validate
+ added unicode versions of the app, dialogs, msgbox and validate units (unicode conversion not completed yet)
* updated the uses clauses of the unicode versions of the app, dialogs, msgbox
and validate units to use only unicode units in their uses clause
+ introduced the FVString type
* use FVString in the interface part of the validate unit
* fvcommon.pas renamed fvcommon.inc
+ fvcommon.pas that includes fvcommon.inc
+ fvcommon.inc include dependency
* fvstring replaced with sw_string in the drivers/udrivers unit
* use ufvcommon in unit uvalidate
* replaced fvstring with sw_string in validate.inc
* use ufvcommon in uviews
* use ufvcommon in uhistlist
* use ufvcommon in unit uapp
* use ufvcommon in udialogs
- reduced number of ifdefs by using sw_string in unit views/uviews
+ use Sw_String in unit menus/umenus to reduce the number of ifdefs
+ use Sw_String in unit histlist/uhistlist to reduce the number of ifdefs
* some interface unit compilation fixes in the udialogs unit
+ introduced type Sw_PString
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
* more dialogs unit unicode conversion
* umsgbox unit interface unicode conversion
+ use unit (u)fvcommon in (u)msgbox
+ introduced Sw_ExtendedGraphemeCluster
* unicode fixes in the implementation of the TBackGround object
* unicode fixes in the implementation part of the uapp unit
* unicode conversion of the msgbox unit implementation, as well as the FormatStr function
* unicode fix in TDialog.ChangeTitle
* unicode fix in TDialog.NewLabel
* unicode fix in TInputLine.Init
* more unicode fixes in the udialogs unit
* unicode fixes in TInputLine.DataSize
* unicode fixes in TInputLine.Valid
+ more unicode fixes in the dialogs unit
* do not initialize unncessary register allocators
+ initial attempt at writing a TRawByteStringCollection
* another FPC_VERSION => FPC_FULLVERSIOn fix
* switch back to 32 Bit mode if no thumb code is generated
+ added AtInsert method to TRawByteStringCollection
+ added TUnicodeStringCollection
* use a TUnicodeStringCollection in TCluster
+ unicode fixes in TCluster.DrawMultiBox
+ added simple test for the TRawByteStringCollection object type
+ more unicode fixes; the unicode units uapp, udialogs, umsgbox and uvalidate now compile
+ unicode fix in TDesktop.InitBackground
+ initial attempt to switch the unix video unit to enhanced (unicode) mode. Only
UTF-8 is supported for now, and it's not yet implemented for Linux VCSA.
* Fixed expectloc of local variables passed as a formal parameter. This issue is caught by cycling the compiler with -dEXTDEBUG. Yet the compiler can't cycle with EXTDEBUG due to other issues with wrong expectloc.
* more helpful message if an unknown field is accessed in the assembler reader, resolves
0038475
- armv5 never existed (without extension), removed
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new tests for compressed disp8*N
* do not mess with FPA registers if they are not available
* arm-linux: sighnd.inc must check for CPUTHUMB and CPUTHUMB2
* factored out tbasecgarm.init_mmregister_allocator
+ throw an error if hardware floating point operations are used in thumb(-1) mode, this is not supported
* arm: taicpu uses set instead of boolean to store instruction states
+ track if an instruction is a thumb instruction in taicpu
* forgotten part of last commit
* arm thumb1: several fixes for the internal assembler writer
* initialize current_settings as early as possible so cs_debugswitch is set correctly if needed
* ARM: NR_RETURN_ADDRESS_REG is R14
* arm thumb: generate proper cfi
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new tests for compressed disp8*N
* initial implementation of CFI support for arm (non-thumb)
* generate advance_loc records only if there was code/data since the last advance_loc entry
+ (safe) heuristics to use DW_CFA_advance_loc1 in CFI
+ generate initial cfi for aarch64
* more cfi support for aarch64
* fixed the parse-collations script/bat file
* fixed the file name in the cldrparser help screen
* updated readme with URLs of the Unicode 9.0 and CLDR 30 data files (to the best of my knowledge)
+ added tool for parsing GraphemeBreakProperty.txt and converting it to code
+ added the gbpparser tool to fpmake.pp
* (modified) patch by Michael Ring to enable the FPU on Cortex-M4F if available
+ added unit GraphemeBreakProperty, containing the grapheme break property character data from Unicode 9.0
+ added modified LGPL license header to the new graphemebreakproperty.pp unit
+ added and implemented a TUnicodeStringExtendedGraphemeClustersEnumerator class
in the graphemebreakproperty unit - an enumerator that splits a UTF-16 string
into extended grapheme clusters (i.e. user-perceived characters), conforming
to the Unicode 9.0 algorithm:
https://www.unicode.org/reports/tr29/tr29-29.html
+ added rtl-unicode as dependency for the fv unit
+ implemented StrWidth and CStrLen, using the new extended grapheme cluster string enumerator
+ use the enhanced grapheme cluster enumerator in UDrivers.MoveCStr and MoveStr
+ some fv unicode fixes for supporting complex (multi-char) enhanced grapheme clusters
m68k: extend the the register to full size, when multiplied by an immediate in memory references. Patch based on the work of Pierre Muller.
MorphOS: TProcess implementation supporting async mode and pipes
* patch by Michael Ring to fix errors introduced by
0048722
- disable optimizations to ease debugging
* fixed reference count bug in the unicode version of TView.do_writeViewRec1
* updated unicode example string
- reduced the number of ifdefs in TStatusLine.DrawSelect
- removed ifdefs from TStatusLine.HandleEvent
- removed an ifdef from DisposeMenu
* use SW_PString in TMenuItem to avoid an ifdef
* use Sw_PString in TStatusItem to avoid an ifdef
- removed one ifdef from TMenuView.Load
- cleanup ifdefs from TMenuView.Execute
- removed ifdefs from TMenuView.GetHelpCtx
- more ifdefs removed by the use of Sw_NewStr
* patch by Michael Ring: remove lm4f120 from armv7m as it is armv7em
- excluded embedded,zxspectrum,msxdos,amstradcpc from the targets that compile GraphemeBreakProperty
+ added an eawparser tool - tool for parsing the EastAsianWidth.txt unicode
property table and converting it to code
+ added unit EastAsianWidth, which contains the EastAsianWidth unicode data property
* patch by Alfred to fix cutils.CompareVersionStrings, resolves
0038514
+ array defs. of open arrays are now marked by ado_OpenArray, so (internally!) zero sized array can be declared with 0..-1
* string constants have a size of 0, resolves
0038504
* correctly set the defowner of the exception symtable to the surrounding routine as suggested by Blaise.ru
+ introduced video.StringDisplayWidth
+ add modeswitch for anonymous function and function references
* allow in-operator to be used on type parameters, resolves
0038497
* Darwin targets that don't support link order sym files can't smart link
vectorized sections
+ use Video.StringDisplayWidth in UDrivers.StrWidth
+ introduced Video.ExtendedGraphemeClusterDisplayWidth
+ use Video.ExtendedGraphemeClusterDisplayWidth in UDriver.CStrLen in order to support wide characters
- removed no longer used local variable
+ use Video.ExtendedGraphemeClusterDisplayWidth to support double width characters in MoveStr and MoveCStr
+ double width character support in the unix video unit
* attempt to fix bitpacked records with qwords in them (tw36156) when cross-compiling to big endian targets from x86. essentially the x86 shifting workarounds in the code already weren't covering all corner cases.
+ implement TView.TextWidth and TView.CTextWidth via StrWidth and CStrLen
+ unicode fixes in TMenuBox.Draw
+ Unicode aware implementation of TStaticText.Draw
+ unicode fixes for the window title
* reset LastCharWasDoubleWidth in the beginning of every line
+ bug fix in the rendering of double width characters
+ another double width rendering bugfix
+ added scrollbar and listbox to the unicode example
+ use different languages in the list box
+ unicode fixes in TCluster.DrawMultiBox
+ added horizontal scrollbar to the demo
+ enable PInputLine in the unicode demo
+ TInputLine unicode keyboard text input fixed
* fixed handling of non-BMP characters in Video.ExtendedGraphemeClusterDisplayWidth
bugfix
000037785 cvtsi2ss and cvtsi2sd in x86_64 { att}
bugfix
000037785 cvtsi2ss and cvtsi2sd in x86_64 { att}
* correctly allocate edx for mulx, resolves
0038533
Apply patch proposed by J. Gareth Moreton in bug report
000038527
The patch reworks the LeaLea2Lea optimisation and hopefully fixes the bug (admittedly by adding a brand new optimisation!).
* fix compilation for CPUs without thumb
Fix tw28713 for big endian CPUs
+ wide and combining character support when determining the cursor position in TInputLine
+ unicode combining and wide character support in TInputLine.Draw
m68k: removed some helper function which was added, but in the end it never saw any use
m68k: adjusted some max alignment values for m68k-linux based on i386-linux, because the ELF loader on m68k should be able to provide the same alignments for globals
* Remove obsolete -OG2p3 option for extcycle
+ Add extoptcycle to cycle compiler with both -dEXTDEBUG and -dDEBUG_ALL_OPT
Patch by Gareth Moreton
* Fix lea optimizations which lead to more failures with -O3 and -O4 options.
- LeaLea2Lea now checks to see if the index register is in use.
- For both the base and index registers, RegUsedBetween is changed to
RegModifiedBetween, since just reading the register is harmless for the
optimisation (it finds additional optimisations in the RTL as a result).
- Because I saw the mis-optimisation with MOVZX that occurred (even
though it was due to the mis-optimisation of LEA instructions), I wrote
some extra code in OptPass2Movx as a safety measure to ensure this
doesn't happen (although no additional instances of it happening have
been noted so far - best be safe than sorry).
+ added b.cc/b.cs support to AArch64 assembler reader (mantis
0038485)
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
Amiga, AROS, MorphOS: Prevent crash when access socket without TCP/IP Stack running
* applied patch by Pierre to fix make cycle -Cr
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new tests for compressed disp8*N
+ SETcc/Mov -> SETcc optimization
m68k-linux: revert maxCrecordalign to 2, as an experiment to fix some linking-against-C regressions since the alignment changes
+ wide and combining character support in TInputLine.HandleEvent.MousePos. This
means cursor positioning and text selection with the mouse now works properly
with these special unicode characters
* fixed double width character at the end of TInputLine covering the right
scroll arrow
+ introduced UDrivers.EgcWidth
+ optimization: use EgcWidth instead of StrWidth wherever possible
* use SizeInt for counters in math unit, all non-32 bit targets should benefit from this
Extend list of CPUs defining slowcpu conditional in tmt1 and tw8177 sources
* fixed compilation of the video unit on Windows
+ added extra unit paths to rtl-unicode
* convert unicode to the cp437 dingbats range (#0..#31,#127) in ExtendedGraphemeCluster2LegacyChar
+ use a table convert_lowascii_to_Unicode to convert unicode to cp437 lowascii and vice versa
+ also convert characters in the range #128..#255 in ExtendedGraphemeCluster2LegacyChar
- removed commented out code
+ handle enhanced video buffer resizing
+ added graphemebreakproperty and eastasianwidth to the video unit uses clauses of all the remaining operating systems
+ added lpi file for compiling testuapp for windows
* timeddlg.pas renamed timeddlg.inc
+ added timeddlg.pas that includes timeddlg.inc
* for setjmp based exception handling, get the type of the exception reason from the setjmp result
+ added unicode version of the timeddlg unit
* inplong.pas renamed inplong.inc
+ added inplong.pas that includes inplong.inc
* fixed JVM stack height calculation after calls returning an
implicit pointer tpe
* the new constant string arraydefs are also implicit pointers types for JVM
* support Objective-C classes and protocols with -gw3 (mantis
0036250)
* fix LLVM after
0048828
* global gotos really use the return type of fpc_setjmp to test where we come from
+ apply excess precision also to unary minus nodes
* made excess precision really working
+ optimize (a and b) or (c and not(b)) into c xor ((c xor a) and b)
+ test
* write execution time more precisely
* sar*/ro* do not call location_force_reg if not needed
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new tests for compressed disp8*N
* fixed compilation under Linux
+ added unit uinplong - unicode version of inplong
* tabs.pas renamed tabs.inc
+ added tabs.pas that includes tabs.inc
+ added utabs - unicode version of the tabs unit
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
Fixed free_fun function signature in zlib
fix! 2d00cab5
* do not omit location_force_reg on second operand of sar/ro* if
it is used to adapt the size of the operand
* patch by J. Gareth Moreton: MOV/SHR reference optimisation, resolves
0038560
* unicode conversion of the non-ASCII characters in statuses.pas
* replaced non-ascii characters to #XXX equivalents
* converted non-ascii characters in stddlg.pas to unicode and #XXX equivalents in the non-unicode version
* converted some non-ascii characters to unicode
* converted non-ascii characters to #XXX equivalents
* replaced high ascii characters with #XXX equivalents and provided unicode equivalents
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
* patch by J. Gareth Moreton: SubMov2LeaSub optimisation improvement, resolves
0038555
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new tests for compressed disp8*N
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
avxtestgenerator: working on new tests for compressed disp8*N
avxtestgenerator: working on new tests for compressed disp8*N
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
* patch by J. Gareth Moreton: take care of -Os for SubMov2*, part of
0038579
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
+ new RiscV32 SUBARCH rv32i
Add new make rule named full_targets
* do not generate mul instructions if the mul extension is not available
* do not apply the (a and b) or (c and not(b)) into c xor ((c xor a) and b) optimziation if short boolean evaluation is used, should resolve
0038576
* improved test
* improved last commit, better handling of boolean expressions
* last commit fixed, hopefully final fix
* fix test so it really uses random values for the boolean, thanks Jonas for the hint!
AmigaOS4: renamed reserved name "class" as field name
* Improve DEBUG_PPU code
* Move flog file closing from closefile method to destroy destructor.
* Fix write_data output into flog
Update to objects compiled using GNU gcc 5.5.0 for sparc-solaris
* RiscV32: properly read references with record offsets and base register
+ RiscV32: sanity check in assembler writer
+ RiscV32: setjmp/longjmp implementation, based on the RiscV64 one
* unified RiscV32 and RiscV64 GAS readers
+ initial (and so far experimental) implementation of -ix to output -i in xml format for further automated processing
morphos: new functions and structures from current SDK 3.16
+ support for .dc.a directive
* read multiple section flags
o RiscV64 glibc startup code fixed:
* there is no _init/_fini, call libc_csu_* instead
* fix loading of global_pointer
+ added functions for getting/setting the current code page, when using the
legacy (non-Unicode) video buffer
+ added checks for certain code pages that should not be allowed to be set in Video.ActivateCodePage
+ introduced legacy code page functions to the video driver itself (they can
optionally be implemented for operating systems with non-unicode consoles)
* wire up the code page functions to call the driver functions in case of a legacy driver
+ implemented GetSupportedCodePageCount/GetSupportedCodePage for unicode consoles
* use the current legacy console code page in Enhanced2Legacy
* hide the (currently broken, to be fixed) unix internal/external code page
stuff to the implementation part of the unit
* converted internal_codepage and external_codepage to the TSystemCodePage type.
Removed the unused codepage enum constants and sets.
* fixed bug in decide_codepages, which was checking the wrong variable for is_vga_code_page
- get rid of internal_codepage. Set CurrentLegacy2EnhancedTranslationCodePage instead.
* converted tabs to spaces
* converted comments to utf-8, so the file is readable in modern text editors
* return RawByteString in the transform function result
* use FPC's integrated codepage conversion for non-Unicode unix consoles
+ RiscV: set threadvarblocksize
* sanity check if threadvarblocksize is really set
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
* mips and xtensa compilation fixed
Add special gcc options for riscv32/riscv64 gcc calls
Update revision after commit
0048929
* RiscV: basic CFI stuff fixed
* RiscV: corrected setup of gp
* re-build c objects with a fixed C compiler regarding floating point parameter passing: riscv64-linux-gnu-gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0 with -O3
Update Makefile's after commits 48929/48930
Aros: Layers unit updated with AROS specific extensions
AROS: AGraphics, removal of AROS defines, the unit is only for AROS
Amiga: removal of includes not in use anymore
AmigaOS4: added missing varargs function
+ RiscV: initial implementation of gprof support
* cleanup
* RiscV: if shared libraries are involved, we have to link always against the crt*S.o variants
+ RiscV: initial support of pic generation
* riscv64-linux: generate PIC for all units as it is required for shared libraries
Merge: 62ea31f255 6ac633e594
* merged the wasm branch. Adds support for the wasm32 (WebAssembly 32-bit)
target.
* compilation on Windows fixed
Rough fix for riscv32 failure
* RiscV: unified itcpugas.pas
* RiscV32: fpc_longjmp needs nostackframe directive
* RiscV: unified procedure directives of fpc_*jmp
* RiscV: integer type conversions fixed
- cosmetics: superfluous newlines removed
+ compiled C object files, generated by riscv32-unknown-linux-gnu-gcc (GCC) 10.2.0 with -O3
* the TFPList.List property made protected in order to discourage using it
directly, as this circumvents range checking
Use uvalue field to get unsigned and avoid range check or overflow errors
Avoid invalid typecast error when using -CR option
+ introduced TFPList.IndexOfItem and TFPObjectList.IndexOfItem, which are like
IndexOf, but can also search backwards. The same method already exists in
FPC's classes unit.
* when parsing unions, set the uniondef reference to nil in
current_module.deflist after freeing the object to prevent dangling pointers
and use after free
fpts2junit: remove ../ at start for the classname
amiga: examples fixed and updated
+ patch by J. Gareth Moreton: AddMov2LeaAdd and AddMov2Lea optimizations, resolves
0038579
Amiga, AROS, MorphOS, OS4: Unified ExecBase for all Amiga Platforms
+ X86: JccMovJmpMov2MovSetcc optimization
Avoid copying of objpas.pp into local rtl/macos directory
* instead of registering all and then deleting non-propgetter/setter procdefs in
pdecvar.read_property_dec, don't register them by default, and then only
register them, if they are propgetter/setter. This prevents dangling pointers
in current_module.deflist and potential use-after-free bugs.
* overflow checked mul helpers do not need to check all bits either
+ RiscV: initial OpAddi02Op implementation
Use 4 char-long ShortName for ihxutil utils package
* RiscV64: type conversion to 8 bit improved
* instead of using discardresult, wrap the uniquestring functions in procedures,
that are declared as inline
* remove nf_write from the counter node when converting for loops into while loops if the counter is only read
Change short name of qlunits package to 'qlun' to respect 4 char limitation
qlunits: fix the return value of longint_to_qlfp
* Dwarf: write variant fields only if the require features are present, resolves
0038651
* Add SAMD51P19A controller type. Unit generated by Michael Ring and slightly modified.
rtl: remove defines for v2.x compiler from the common part of the RTL. It's no longer suppported to build with that
* Add deprecation message
* support building with FPC 3.2.2
amiga: check if P is nil while processing params. this should never happen, except sometimes in real world it still happens. so lets be defensive about it
* patch by J. Gareth Moreton: Nothing (NOP) node optimisation, resolves
0038194
Use utils as shortname also
Add missing go32v2 zips and corresponding sources
* copy and compare the typesym inside type nodes as well
* fix for Mantis
0038642: for enumerations with jumps Delphi behaves as follows:
- GetTypeKind returns tkEnumeration (FPC previously generated a compile error here)
- GetTypeInfo on a generic parameters returns Nil for such types (FPC previously generated a compile error here)
- GetTypeInfo otherwise generates a compile error (as before)
* the offset parameter of reference_reset* must be asizeint rather than
longint (mantis
0038636)
* allow also 8 byte string constants in assembler, resolves
0028640
* fixed assembling via pipe on Darwin
* rework the basic event on Windows so that peventstate directly represents the Event handle
Replace p2fp by p2fm as short version for pas2fpm utils package and add some missing -3.3.1 to long source zip names
Remove double source entry for utils lexyacc package
Use utils also for short version for OS/2 and emx
* test needs objfpc mode else i is 16 bit only
* added test, issue is fixed by
0048758 already
Fix short name for utils-fpcres for OS/2 and EMX
* fixed memory leak, introduced accidentally in
0048998
* cpubase.cgsize2subreg should handle all valid sizes, resolves
0038557
+ Xtensa: tcpuinlinenode.second_prefetch
+ some more change information entries added
Avoid keeping optimized out node in callcleanupblock.statements or callinitblock.statements
Use value $00000F00 instead of $F0000000 for IF_FPMASK, and adapt all floating point constants, to avoid IF_VFPv4 having the same value as IF_PASS2
* x86-64: we can spill replace 32 bit operations if the operation does not modify a register
* thumb2: Make fillchar smaller, faster and more reliable. Some gas versions remove the "mov r0,r0" making the calculated branch break
+ enable colored output on darwin, resolves
0038693
* thumb2: Optimize fillchar a bit more with a wider inner loop chunk size
* fix for Mantis
0037426: don't allow an instance function of a type helper to be used on the type instead of a concrete value
+ added test
* Windows on ARM64 adheres to the usual Aarch64 ABI, thus references need to be copied on the caller side as well
+ Aarch64: cpu_capabilities support
+ write controller unit wiht -ix as well
* Aarch64: the M1 is an ARM v8.4-a CPU
* Aarch64: cpu capabilites defines properly named
* Aarch64: enable defining cpu capabilites
* Aarch64: support LSE instructions
+ Aarch64: use LSE if available for atomic intrinsics
* CortexM4: Add some missing system registers
* fixes to deadstore optimization
* do not remove register deallocations/allocation pairs if the register is written
Update after commit 49123
* Xtensa: fix crash in TCpuAsmOptimizer.RegLoadedWithNewValue
Add sinclairql to NO_NATIVE_COMPILER_OS_LIST
Add basic support for setting argc and argv for sinclairql OS
* allow procvars to not be registered right away
* set proctypeoption for procvars
* extend procvar_dec so that procvars don't have to be registered
+ Aarch64: create better code for not()
* don't override specified assembler on the command line when leaving
assembler files in case that specified assembler is already an
external one
* don't generate high-level CFI statements when the selected assembler
does not support them, even if the target normally uses them
o fixes assembling with -Aas-darwin for i386/arm/x86-64 (on OS
versions that used those)
* Darwin/BSD: fixed StackBottom calculation
* handle case where the first instruction with line information is looked up
o this should be handled better. The common way is looking up address - 1,
but that doesn't seem to work here.
sinclairql: fix and simplify the startup code changes in
0049134. accessing global variables is not possible before relocation
sinclairql: further tweaks to the startup code. enable optimizations. mark functions as noreturn to save a few bytes
osheap: new very small heap manager which only acts as a thin layer above an OS provided heap API. mainly aimed for small and embedded systems
sinclairql: fixed parameter trashing in several QDOS function assembler wrappers
sinclairql: implemented Error2InOutRes, patch by Norman Dunbar
sinclairql: implemented io_delet and mt_rclck QDOS functions, patch by Norman Dunbar
sinclairql: various file and directory handling improvements, based on patch by Norman Dunbar
sinclairql: instead of tinyheap, made the QL port to use the new OS heap by default, also implemented Randomize, based on patch by Norman Dunbar
* allow also CSUBSETREG in tx86inlinenode.second_IncludeExclude, resolves
0038733
Disable most utils for SinclairQL for now
* PowerPC: initial (and primitive) implemenation of TCpuAsmOptimizer.RegLoadedWithNewValue
Refactor code to avoid problems with -CR option
+ FreeBSD/AArch64 support (patch by Mikaël Urankar, mantis
0038441)
* regenerated with FreeBSD/AArch64 support
* use popcnt instead of countbits.
* change countbits to popcnt in case it is used by others.
suggestion by Bi0t1n, mantis
000038728
* on second thought, and a byte typecast so that an expanded intrinsics doesn't loop over unnecessary bits.
sinclairql: first version of working argc/argv generation. implemented ParamCount and ParamStr()
sinclairql: various seeking, FS_POSAB/FS_POSRE and ERR_EF related fixes
qlunits: updated to match the latest RTL qdosfuncs.inc
sinclairql: implemented do_rename(), based on the patch of Norman Dunbar
sinclairql: new files to contain SMS only functions, iof_rename implemented, based on a patch by Norman Dunbar
sinclairql: do_mkdir implemented, patch by Norman Dunbar
sinclairql: add the used includes to the system unit deps
* fixed win32 testsuite regressions after
0049084
sinclairql: enable commandargs and exitcode features
* use up to 16 bytes alignment for the WASI target
+ common assembler optimizer base class for powerpc and powerpc64
* factored out TPPCAsmOptimizer.RegLoadedWithNewValue
* never ignore BINUTILSPREFIX environment variable in fpmake
+ search also $(BINUTILSPREFIX)-gnu-gcc for a usable gcc to get the libgcc directory
- obsolete defines removed
- forgotten file, obsolete define removed, belongs to last commit
* Delphi-mode calling without parenthesis
Also avoid invalid typecast for RegLoadedWithNewValue method for mips, sparcgen and xtensa
m68k: cleaned up some ancient mess from cpunode.pas, no significant functional change, apart from unit inclusion order
m68k: on the Sinclair QL insert the main program's name into the object, so the RTL later can set it as default job name
sinclairql: have a max. 48 char buffer for job name. set the job name to the program name by default on system unit init
sinclairql: also have a function which returns a pointer directly to the QLstring job name
sinclairql: add right spelling for iof_mkdr, add the QDOS equivalent alias
qlunits: updates, new API and utility functions, improved README
Disable sinclairql target OS for most utils packages
Add strings unit to buildrtl meta-unit, and update Makefile.fpc accordingly
sinclairql: turn the anyKey string const into a pchar, this reduces the final binary size by 200-odd bytes
Explicitly disable range and overflow checking to avoid troubles with pointer arithmetics
+ optimized multiplication for "symmetric" bit patterns on arm
rtl: make STACK_MARGIN a variable instead of a const. this allows adjusting margin size on system unit init, based on the actual stack length of the executable. useful for small systems running with little stack. allow overwriting SysBackTraceStr with a platform-specific implementation
sinclairql: implemented StackTop, this results in working stacktraces and working stack checking. Implemented a custom 5% stack safety margin and a system specific SysBackTraceStr()
atari: implemented stacktop for working stacktraces, implemented stacksize dependent stackmargin, and a system specific backtracestr. however, offs display still doesn't work properly, due to a linker issue (reported)
* insert explicit type cast for the count parameter of move/fillchar wrapping C functions,
avoids a warning in combination with -O3 and negative count values
m68k: always use ELF objects with vasm for improved cross-compatibility with other tools and compilers
sinclairql: added startup code support for the 'packed' relocation table format in vlink. disabled for now.
+ Aarch64: completed LSE support for all interlocked operations
* { ... } is no a longer valid comment in aarch64 assembler
+ compile the sysconst unit for wasm32-wasi
+ started working on the SysUtils unit for the WASI platform
* avoid leaving a dangling pointer in pparautl.proc_add_definition to prevent
use after free in different parts of the compiler
Add fForceUseForwardSlash to TLinkRes class, used for vlink linker on hosts using backslashes
* fix for Mantis
0038771: the owner of the procdef might be Nil in case of a specialization (that virtual can't be used on generics is caught later on)
+ added test
Add systems_openbsd to suppported_targets_x_smallr and modify GenerateExecutable in t_bsd unit accordingly
* moved a bunch of constants from dbgdwarf to dbgdwarfconst
* if left is a smaller type, then an extension operation for shr can be removed
sinclairql: hopefully fix off-by-one processing in the packed relocs code
m68k: added support to references like (a0,d0.w) in inline assembly, also fixed a bug, where sometimes the index register would have been randomly set as smaller than .l size, when the size wasn't specified
sinclairql: support the upcoming QL binary linking feature of vlink (still in development). it's behind an undocumented -WL switch now. also, reduce the amount of used dataspace by the size of the relocation table in the current linking mode
* patch by J. Gareth Moreton: AArch64 OptPass1Shift register tracking fault fix, resolves
0038691
sinclairql: added an entirely stub (for now) sysutils unit. added a classes unit. enabled building the whole rtl
* Mustache templates implementation
* moved warning about suspicious comp assignment to type check pass, catches also
assignments of constants
Remove unused, obsolete -dBROWSERLOG option
* NDS: fix condition when to default to apptype arm9
* improved system unit dependencies
Fix gotpcrel relocation for TESTQ x86_64 instruction
+ Aarch64: use frintz for int(...) instead of creating a helper call
+ Aarch64: directly inline code for frac(...)
* prevention of dangling pointers and use after free after free_unregistered_localsymtable_elements
* makefile regenerated with latest fpcmake
* fix bootstrapping on aarch64-linux with 3.2.x
* decrease macro nesting counter early when expanding empty macro
to avoid errors about too depth macro nesting, resolves
0038802
* Use FGeneralCriticalSection for LogIndent and LogUnindent.
Add FIndentCount integer field.
Add FWorkerPrefix string field.
Use try/finally block to keep track of LogLevel
* patch by Christo Crause to fix
0038789: writing of linker commands should not depent in -s
Add -march=XXX option for aarch64 external assemblers
Add .force_thumb pseudo-directive support forarm reader
Avoid invalid typecast if hp is not an instruction
m68k: fixed a comment. no functional change
Avoid range check error inside genitem_thumb2 by changing local variable i type
Make sure nf_usercode_entry get transferred inside firstpass procedure
Set string length before calling move to avoid problems with global data analysis on systems using C library
* fix compilation of arm compiler on 32 bit hosts
Avoid warning with -O4 option
* avoid overflow during register allocation
Add several missing -AXXX options
Use as-clang as idtxt for as_aarch64_clang_gas_info
* patch by J. Gareth Moreton: AArch64 "magic division"
(replace division by constant with multiplication), part of
0038806
+ patch by J. Gareth Moreton: improved tests for constant divisions including benchmark,
second part of
0038806
Also check *.pas and *.inc files inside sub-directories in msgused.pl
Add -TFreeBSD target OS option to -h output for aarch64 compiler ppc64
m68k: D2 is considered volatile on macosclassic
m68k-sinclairql: apply the same hack as for amiga and atari to avoid vlink section attribute warning
m68k: sinclair ql now requires vlink 0.16h or newer.
Avoid range/overflow error after commit
0049290
* fix finally block getting unconditionally removed if try-block is empty
(hasnocode(nil) always returns true). Regression from
0048174
sinclairql: implemented a selection of I/O functions, patch by Norman Dunbar
sinclairql: sysdeps must include qdosh.inc too
sinclairql: include qdosh.inc directly. this will allow easier sharing of qdosfuncs.inc with the qlunits package
qlunits: some refactors and updates. added system vars offsets to qdos unit, and a new example
qlunits: really add the a new example missed from the previous commit
* support arbitrary record regvars on AArch64: it has fairly complete support
for inserting/extracting bitfields (although the compiler doesn't use those
instructions yet in all possible cases, it seems)
* patch by J. Gareth Moreton: AArch64: Improved speed and efficiency with constant generation, resolves
0038837
* combine the Boolean parameters of read_proc and read_proc_dec into a set
* have read_body return the created procdef
* use tparse_proc_flags for parse_proc_head as well
* use tproc_parse_flags in parse_proc_dec_finish as well
sinclairql: enable most of rtl-objpas and rtl-extra on the QL
* fix for Mantis
0037252: apply patch by Bi0T1N to implement TThread.NameThreadForDebugging for Mac OS X 10.6 and newer (older versions don't provide the required functions)
+ initial support for anonymous functions, for now as essentially nested functions
Based on work by Blaise.ru
+ added Get/SetTextAutoFlush feature
+ added a test for Get/SetTextAutoFlush feature
* fix test compilation with Delphi
* fix for Mantis
0038381: apply patch by Bi0T1N to add two Delphi compatible overloads for TValue.Make
Destroy tfornode class loopiteration field if assigned
Fix message about unsupported OS_TARGET for LLVM
pastojs: fixed classmethod pointer
* fix for wrong nested comments resulting in wrong results under *nix, etc., with redirected output
* fix for wrongly chosen conditional define name
* LLVM does not have an intrinsic for int/frac, so don't replace frac with
a call to runerror(207) there
* (modified) patch by J. Gareth Moreton to unify ldr/str optimizations on Aarch64/ARM, part of
0038841
Avoid using UXT and SXT instructions on arm version below 6
* patch by J. Gareth Moreton, second part of
0038841
* Convert array of jsvalue to array of const where appropriate
* fpcr and fpsr are 64 bit on aarch64
+ ARM: basic vasm support
+ initial support for ARMv2
* check for unassigned valuestr when writing ntbs eabi attributes
pastojs: nested external class constructor
Try to fix handle of large stack size in xtensa gen_proc_entry/gen_proc_exit
- Switch to block-based processing of http-content
* Parse the ContentType according to rfc1341
* AVR: made avr_des intrinsic more usefull
sinclairql: enable weak linking support for the Sinclair QL
sinclairql: introduce a way to override the system unit's console opening/closing and exit message via weakexternals
sinclairql: for setting the exit message of the default console, use a helper function instead.
* patch by J. Gareth Moreton: x86 MOVZX/CMP optimisation, resolves
0038882
pastojs: fixed float / 0.0 results at compiletime in inf instead of divbyzero, issue
0038815
* fix building on i386 after
0049366
* RiscV: unified cpu initialization and FPU exception handling, resolves
0038893
* first part of AVR assembler optimizer reword
* AVR: second part of assembler optimizer rework
sinclairql: make sure the end of bss (hence the bss size) is also aligned to two bytes
sinclairql: return true as default for do_isdevice to work around weird console flushing issues.
* patch by J. Gareth Moreton: Memory CMP optimisation, resolves
0038907
* patch by J. Gareth Moreton: TEST chain shortcutting, resolves
0038908
* patch by J. Gareth Moreton: Additional SETcc optimisations, resolves
0038767
* Fixed processing post-content of unknown content-types
qlunits: merged a modified version of a patch by Norman Dunbar, defines system variables as a record
* Fixed Issue ID38920: twriter crashes on readonly nil component
qlunits: fixed comments in qdos_sysvars.inc to avoid compiler directives warnings
qlunits: fix SMS unit build, declare all const/vars/types before functions, and minor tweaks
qlunits: make sure everything is two byte aligned
qlunits: add a test program to test sysvar offsets
sinclairql: make sure smsfuncs.inc is in sync with the one in packages
qlunits: remove word alignment test from sysvar test, as there are byte-sized vars, which are not aligned
qlunits: added channel definition structures based on C equivalents, added test code
* more fixes to support vasm on arm
* do not crash on empty eabi attribute strings
* more fixes for VASM for ARM
* Windows: Prevent removal of the TLS directory by the linker when RTL is compiled with -O4 or when inlining is enabled.
* patch by J. Gareth Moreton: x86 JccMovJmpMov2MovSetcc improvement, resolves
0038761
* as 3.2.0 is now the oldest compiler we support we can now use {$push} {$pop} to reset the $minenumsize in the RTTI header
* keep track of symbols that are accessed from a nested/anonymous function that belong to a surrounding scope
* check whether an anonymous function can be assigned to a global, method or nested function variable
* the MovOpMov2Op optimization needs to take care of the second operand, should resolve
0038359
* check used registers properly for SETcc/TEST/Jcc -> Jcc, resolves
0038940
* prevent a range check error in TFPList.IndexOfItem when searching backwards in
an empty list and the compiler is compiled with range checking turned on
* Fixed mime-multipart processing for solutions that do
not support chunked processing of content. (like CGI)
* Parse the contenttype according to rfc1341 also for non-streaming
processing
Fix compilation with 3.2.2 release for arm and i386 CPUs
* Aarch64: apply OptPass1Data to CSEL as well
+ enabled compilation of unit SysUtils for the WASI target. Note that WASI
snapshot building fails, when compiler is built with -CR, because of a
use-after-free bug in the compiler, related to generics. A fix for this bug
is currently being worked on.
* set self to nil in current_module.deflist for registered defs in the
tstoreddef.destroy destructor, instead of doing it after each call to
x.owner.deletedef(x)
* patch from Alfred for setting source_cpu_string for the wasm32 platform
Fix duplicate source_cpu_string after last patch, by using cpuwasm32 instead of wasm32 conditional
* improvements to the prevention of dangling pointers in tmodule.deflist,
introduced in
0049417. Now it no longer depends on current_module, so it
handles the case when current_module changes between the time the tdef was
registered and the time it was freed. It also supports freeing the tmodule
before the defs, so the freeing order of the object is once again flexible.
* fixed typecast in tmodule.destroy after
0049426, since registered_in_module is introduced in tdef, not in tstoreddef
- removed the (deflist[i] is tdef) check from the tmodule destructor, since
only tdef descendants are added to the deflist and casting deflist entries to
tdef directly appears to be safe and is done in other parts of the compiler
+ enabled compilation of unit sortbase for the WASI target
+ enabled compilation of unit math for the WASI target
+ enable compilation of unit rtlconsts for the WASI target
+ enabled compilation of unit types for the WASI target
+ enabled compilation of unit typinfo for the WASI target
+ enabled compilation of unit fgl for the WASI target
+ enabled compilation of unit macpas for the WASI target
+ enabled compilation of unit iso7185 for the WASI target
+ enabled compilation of unit getopts for the WASI target
+ enabled compilation of unit charset for the WASI target
+ enabled compilation of unit cpall for the WASI target
+ enabled compilation of unit character for the WASI target
+ enabled compilation of units unicodedata and unicodenumtable for the WASI target
* fixed the dependencies of unit character
+ enabled compilation of unit fpwidestring for the WASI target
+ added classes unit for the WASI target (not yet enabled in the makefiles)
* change fma cpu flag into an fpu flag
+ added tthread.inc rtl include file for WASI
+ enabled compilation of unit classes for the WASI target
+ enabled compilation of unit uuchar for the WASI platform
+ compile the unit dos (OS-specific functions are dummies for now) for the WASI target
+ enabled compilation of unit extpas for the WASI target
+ compile the unicode collations and extra code pages for the WASI target
+ enabled some rtl-extra units on the WASI target (matrix, ucomplex, objects)
+ enabled several rtl-objpas units for the WASI target
+ enabled compilation of fcl-base for the WASI target
+ enabled the hash package for the WASI target
+ enabled the fcl-xml package for the WASI target
+ enabled the fcl-sound package for the WASI target
+ enabled the regexpr package for the WASI target
+ enabled package fcl-stl for the WASI target
+ enabled package fcl-registry for the WASI target
Fix check that third parameter of ADDI hp1 instruction is a constant
Add A_CALL to the list of instructions considered as a calljmp, even though it is a pseudo-instruction, fixes a long list of -O3 and -O4 testsuite failures
* aarch64-darwin supports unaligned memory access, confirmed by testing with clang 12
pastojs: low/high(astring)
Add -march option to clang call for llvm target
Return -1 if size of file is smaller tham header size in tppufile.readheader method
Fix compilation for x86_64 llvm variant
* for variant dispatch calls, use the parameter name in source case, not upper case
+ add a test for Variant dispatch and the generated call description format (this is for the previous three fixes)
- remove unused copy of tw17904 (wrong extension)
* improved AndUtxh2And optimization
* Test from werner pamler for issue
0038968
* fix test so that it will work correctly on non-Windows as well
* ARM: split TCpuThumb2AsmOptimizer.PeepHoleOptPass1Cpu
* patch by J. Gareth Moreton: refactoring to standardise the "Peephole Optimization: " prefix on peephole debug messages, part of
0038975
+ patch by J. Gareth Moreton: New label debugging feature, resolves
0038980
Add --NOLLVM and use LLVM by default of compiler is llvm variant
Exchange REQUIREDVERSION and REQUIREDVERSION2 values to get 3.2.2 version in reuired release version message
* patch by Alfred to use new linker names for Android NDK >=22, resolves
0038987
* patch by J. Gareth Moreton: ARM - str/str -> stm optimisation, second part of
0038975
Re-generate Makefile after wrong commit
0049495, fixes bug report 39001
+ skeleton of an embedded thread manager
* set no result in NoBeginThread, it never returns
* optimization "Merging stores: STR/STR -> STM" cannot be carried out when generating thumb code
* HaltProc does not return
* use smaller alignment when generating thumb code
* do not generate exit code for arm (thumb and thumb-2) if a routine is marked as noreturn
+ Merge Add/Sub optimization
Fix compilation of tiso8601 test by adding -Mobjfpc option
+ ARM: PushPop optimziation
activate 'compressed disp8*N' for VCVTQQ2PS xmmreg, xmmrm and VCVTTPD2UDQ xmmreg, xmmrm
activate 'compressed disp8*N' for VCVTQQ2PS xmmreg, xmmrm and VCVTTPD2UDQ xmmreg, xmmrm
activate 'compressed disp8*N' for VCVTQQ2PS xmmreg, xmmrm and VCVTTPD2UDQ xmmreg, xmmrm
activate 'compressed disp8*N' for VCVTQQ2PS xmmreg, xmmrm and VCVTTPD2UDQ xmmreg, xmmrm
+ LICENSE and README.md added, taken from git test conversion as committed by Michael
Amiga, MorphOS, AROS: unified function results to LongBool in amigados unit, correct type for GFXBase
AROS: some fixes for AVL_ functions, added missing NewCreateTaskA
* ARM (thumb): do not save registers in routines marked as noreturn
* ARM: fix for Merge Add/Sub optimization
* enumerate preopened dirs on startup and store them in a list, accessible via global vars in the system unit
+ initial implementation of GetDir() for WASI
+ keep also the fds for the current dirs
+ initial implementation of resolving relative paths
+ implemented MkDir for the WASI target
+ implemented RmDir for the WASI target
+ implemented Erase() for the WASI target
+ implemented do_truncate for the WASI target
+ implemented Do_FilePos for the WASI target
+ implemented Do_FileSize for the WASI target
+ implemented Do_Seek and Do_Seekend for the WASI target
+ implemented Do_Rename for the WASI target
Only set llvm to true if LLVM custom option variable is set, but not to false if not (as true might be the default value)
+ also resolve absolute paths in ConvertToFdRelativePath
+ initial WASI implementation of DOS.GetFTime. Not working yet, due to a
compiler bug, related to the import of fd_filestat_get from the wasiapi unit.
* also set doserror to 5 for access denied in dos.getfattr
+ request the FD_FILESTAT_GET capability when opening files
* fixed date calculation in WasiDateToDT
+ workaround for newer wasmtime versions that don't report the fd type of
stdin/stdout/stderr. Always assume handles 0..2 are a device, so that
standard input and output are flushed.
+ request fd_seek and fd_tell rights when opening a file
+ request the rights to set size (truncate) and set times, when a file is opened for writing
+ request fd_allocate rights when opening a file for writing
* changed the formatting of the setting of fs_rights_base in Do_Open. No functional changes.
+ request FD_DATASYNC and FD_SYNC rights when a file is opened for writing
+ always request FD_FDSTAT_SET_FLAGS rights
+ always request FD_ADVISE rights, when opening a file
+ always request pollfd_readwrite rights, when opening a file
+ implemented environment variables support in the DOS unit for the WASI target
* set EXEEXT to .wasm for the WASI target in fpcmake
* set the exeext for WASI properly in dotest.pp
+ started working on DOS.FindFirst
+ stack pages need to be touched on aarch64-win64 as well
Amiga video unit: fixed not initialized TInputEvent field
* win64: factored out cpu specific code
Amiga video unit: fixed not initialized TInputEvent field, 2nd try, now the deadkeys actually work as they should
* r/esp cannot be used as index register
* throw an error if esp/rsp are used as index register
* allow char constant to be used for const string parameters in generic specializations, resolves
0039030
+ added baud rate constants for arm as proposed by Piotr Kardasz in
0039101
* BitSizeOf Documentation sub (issue
0039110)
* patch by Alfred to fix cross building to darwin, resolves
0039109
+ initial working implementation of FindFirst/FindNext
* use -1 instead of 0 for indicating empty DirFD
* serial handles higher baudrates if constants are available
* patch by J. Gareth Moreton to fix faulty conditional jump logic, resolves
0038985
* DeepMovOpt requires that the target reg of the mov is not modified before hp2
+ SHXXMov2SHXX optimization
* patch by J. Gareth Moreton: improve MovAndTest2Test optimization, resolves
0039156
+ CPU.BMI1Support and CPU.BMI2Support
* patch by J. Gareth Moreton: x86: MovMovSar2MovCltd bug fix, resolves
0039180
* fix for Mantis
0026760: apply patch by Ondrej Pokorny to ensure that units referenced by an "in"-clause are recompiled when they have been changed
+ added test (though due to the nature of the bug it needs to be interactive)
* patch by J. Gareth Moreton: x86: RegLoadedWIthNewValue overhaul and bug fix, resolves
0039187
+ added Xext.h header translation
* patch by J. Gareth Moreton: CMP chain shortcutting, resolves
0039141
* use prettier parameter names in the XShm unit
* fixed filename extension of the xext.pp source file in fpmake.pp
+ added link test for the mitmisc unit
+ added link test for the xext unit
+ AVX512*Support functions
* call cpuid with eax=7 only if it is supported by the CPU
+ added header translation of the shape X11 extension
* might_have_sideeffects in gen_c_style_operator as proposed by runewalsh, resolves
0039206
* patch by Christo Crause: Xtensa [patch] Use syscall 0 to spill registers on ESP32, resolves
0039221
* patch by J. Gareth Moreton: x86: Lea2Nop for stack pointer, resolves
gitlab 0039225
* further fix for Mants
gitlab 0026760: applied patch by Ondrej Pokorny to fix recompilation of units referenced with an "in" clause if no file extension is provided
+ added (interactive) test
* patch by J. Gareth Moreton: x86: Minor bitwise optimisations, resolves
gitlab 0039299
* Xtensa: unified DataMov2Data optimization
* Xtensa: optimize constant multiplications
* avr4 has mul instructions
* revert last commit, avr4 has no call/jmp
* remove mhs_exceptions in might_have_sideeffects call for C operators: it improves code
and shouldn't hurt as this is no regression in comparison with current 3.2.x
* Patch from Zeljko Avramovic to extend ordinal/float helpers
* x86-64: removed some fwait instructions from fpc_frac_real, they shouldn't be necessary
* Restored disappeared test
+ add modeswitch for anonymous functions
* ensure that nested functions of main program, main program finalization and unit initialization/finalization are generated
* consider Self parameters of nested functions as captured as well
* allow to ignore Self parameters; for this the parameter skipping needs to be repeated to correctly catch all cases
* implement assignment of anonymous functions to procedure or method variables if they either capture nothing or (in case of method variables) at most the Self variable
* x86-64: fpc_frac_real further improved: memory loads of extendeds are expensive
+ add function to check whether a def is an invokable function reference
- x86_64: some more fwaits removed
* fixed compilation for i8086 and 8-bit targets after
gitlab 0049622. The conditional
ifdef checks for the ordinal helpers rewritten to be less dependendant on
defines, such as CPU16/CPU32/CPU64 and instead use sizeof(integer),
sizeof(nativeint) and sizeof(nativeuint)
+ added unit xevi (header translation of X11/extensions/XEVI.h)
+ added unit xlbx (header translation of X11/extensions/XLbx.h)
+ added unit xag (header translation of X11/extensions/Xag.h)
+ added unit xcup (header translation of X11/extensions/Xcup.h)
+ added unit xdbe (header translation of X11/extensions/Xdbe.h)
+ added packrecords C directive to the xevi unit, because it contains records
+ added unit xmd (header translation of X11/Xmd.h)
+ added unit dpms (header conversion of X11/extensions/dpms.h)
+ added unit multibuf (header translation of X11/extensions/multibuf.h)
+ added unit security (header translation of X11/extensions/security.h)
+ added unit sync (header translation of X11/extensions/sync.h)
+ added unit xtestext1 (header translation of X11/extensions/xtestext1.h)
+ added dependency on unit xmd for unit dpms
The TStream.ReadBuffer and TStream.WriteBuffer methods have changed the Count parameter type to NativeInt.
Changed the implementation of ReadBuffer, WriteBuffer so that the size of the blocks when calling Read and Write does not exceed High(Longint).
Notes:
- Thanks to this change, for example, a file larger than 2GB can be loaded into TMemoryStream.
- The fact that the Count parameter has the NativeInt type is compatible with the latest versions of Delphi.
fpts2junit: prevent double entries in junit xml (in test log are double entries, one for compiles, one for runs)
Amiga: Workbench 1.x compatibilty via the AMIGA_V1_2_ONLY define
* Prevent double release of a temp.
* It is still needed to release the temp allocated for the result of an assembler function if the result is not referenced. This fixes some EXTDEBUG warnings.
Amiga: Implemented GetVar for 1.x
amiga: FPC_DOKEYCONVERSION env var if key conversation Ansi to IBM should be done for every key
* Gitlab client + example
* Some additional filters
amiga: removed some debugging settings
* optimize tests for a single bit "(a and one_bit_mask_const) = <> one_bit_mask_const" into "(a and one_bit_mask_const) <> = 0" to enable further CPU specific optimizations.
* x86: Added the "test $-1,%reg" condition to the MovAndTest2Test optimization.
* patch by J. Gareth Moreton: AND/CMP optimisation, resolves
gitlab 0039287
* extended routines int/frac/trunc shouldn't mess with precision or exception flags, should fix
gitlab 0039275
* Before
gitlab 0035961 (back in 2017) some simple assignment optimizations, such as "x:=x+y" to "inc(x,y)", were performed when -O2 in tassignmentnode.simplify. In
gitlab 0035961 these optimizations were moved to a separate pass which is enabled only when -O3 by cs_opt_use_load_modify_store. This separate pass can benefit from other optimization. But worse code is generated with -O2 since then.
This commit restores applying of simple assignment optimizations when -O2.
* Add DB testsuite config file to ignore list
httpserver keep-alive first attempt
httpserver keep-alive first attempt
TFPCustomHttpServer KeepAlive* properties
TFPCustomHttpServer KeepAlive* properties
Read out KeepAlive only if enabled
Read out KeepAlive only if enabled
Rename KeepAliveSupport->KeepAliveEnabled
Rename KeepAliveSupport->KeepAliveEnabled
add threadedhttpserver demo
add threadedhttpserver demo
Remove the KeepAlive* properties from TFPCustomHttpServer, rename KeepAliveEnabled to EnableKeepAlive
Remove the KeepAlive* properties from TFPCustomHttpServer, rename KeepAliveEnabled to EnableKeepAlive
Info about active connections
Info about active connections
Use InterlockedExchangeAdd to get ConnectionCount
Fix TFPHTTPConnectionThread.Execute repeat loop
Fix TFPHTTPConnectionThread.Execute repeat loop
don't keep alive connections that failed
don't keep alive connections that failed
compiler/msg/errord*.msg: Update of German error messages
fphttpclient keepalive: failed socket operations raise exceptions - try to reconnect also in this case
Move GetStatusCode from fphttpserver.pp to httpprotocol.pp in order to use it outside fphttpserver
* Support for sleb128 and uleb128 constants in the NASM writer.
* Added sleb128tostr() and uleb128tostr() methods to TExternalAssembler.
* Use these methods in assembler writers instead of code duplication.
* Added support for the old Turbo Pascal INLINE(data/data/...) statement.
It is available only in the TP mode.
* TP compatibility: For retro CPUs always copy the function result to
the register(s) on function exit if assembler blocks are present.
*http client: rewind RequestBody in SendRequest
TFPHTTPConnection: clear FBuffer when read from it in ReadRequestContent
fphttpclient: new DoDataWrite/OnDataSent event
+ Added a test for the TP-style INLINE() statement.
* In TP-style INLINE, allowed the > modifier for global vars and relaxed range checks.
TFPCustomHTTPClient: do not reconnect when terminated
* sizeof(array) and length(array) must return sizeUint in case the array
size does not fit in sizeint. This fixes a range check error during
compilation on small CPU targets where allowed array size is 64K, but
sizeint is 32K max.
pastojs: emulate compile time assign integer constant of different type
pastojs: emulate compile time assign integer constant of different type
* properly check if -unpushed should be appended in revision.inc
Add support for hash generation for git repository (local modifier not implemented)
* Some command-line options
* always use $(GIT) to call git
fcl-json: fixed testjson.lpi
fcl-json: fixed testjson.lpi
* Request ID and connection ID for logging purposes
* Add interceptor (middleware) functionality to router + Demo
* Make sure size is set after return
Allow custom definition of GIT.
* fix change information for popcnt
* Allow to compile also non-windows,linux
Add several pattern from tests sub-directory to ignore list
(cherry picked from commit a837c8d47a93f1f1c73a6c45b837f49d9d040c30)
* change information for round* fixed
* change information for round* fixed
* Remove spurious var, prevents fpdoc from handling record
* Remove spurious var, prevents fpdoc from handling record
* Remove unneeded diagnostic output
* Remove unneeded diagnostic output
* Negative time value waits forever
* check if git executable really exists
Add some more patterns to .gitignore
Add test for bug report 38973 (already fixed in trunk/main)
+ Add support for -Adefault.
* Move help message for option -sT to the correct group of messages.
* Use shorter message to indicate switch to external asm.
* Adapted -sX messages because -sT doesn't force external assembler writer.
+ Add support for -Adefault.
* Move help message for option -sT to the correct group of messages.
* Use shorter message to indicate switch to external asm.
* Adapted -sX messages because -sT doesn't force external assembler writer.
+ Aarch64: FMovFMov2FMov 2 optimization
+ Aarch64: FMovFMov2FMov 2 optimization
* reverted wrongly committed file
* reverted wrongly committed file
Initial .gitlab-ci.yml file
Added make command to .gitlab-ci.yml
* Cleaned up .gitlab-ci.yml
* Added regression testing
* build and test must be one job
+ build fpts2junit
+ generate testresult.xml artifact
* build fpts2junit after testing so all directories are present
* fix test for targets with FPC_COMP_IS_INT64 defined
* 64-bit ID for 64-bit platforms
* TEncoding.GetEncoding - create unicode encodings, not only MBCS
* TEncoding.GetEncoding - create unicode encodings, not only MBCS
* factored out the fullcycle job as proposed by Marcus
* fix for
gitlab 0039310 by fixing various small issues in tabstractrecordsymtable.has_single_field:
- initialize the returned def to a safe default
- correctly reset the found symbol for each loop
- reset the result when descending into a record
+ added test
* destroy FList in the destructor of TFPHTTPServerConnectionListHandler
* Use FreeAndNil to clear field
* fphttpclient: add new OnIdle event to keep the client responsive in case the server needs a lot of time to respond (and to be able to terminate the request while waiting for data)
* fphttpclient: add new OnIdle event to keep the client responsive in case the server needs a lot of time to respond (and to be able to terminate the request while waiting for data)
* fphttpclient: add new OnIdle event to keep the client responsive in case the server needs a lot of time to respond (and to be able to terminate the request while waiting for data)
* http client: KeepConnectionReconnectLimit to prevent a dead-lock when a server is not available
* TSocketHandler.Select: set LastError
* check for LastError coming from CanRead()
* More clear variable names
* don't execute DoBeforeDataRead unless OnIdle is set
+ move often used floating point constants into registers
* generate a def. file only if really necessary
Ignore all BuildUnit_{package_name}.pp generated file
Ignore all BuildUnit_{package_name}.pp generated file
* we cannot do SSA during partial writes to arrays which span multiple registers, resolves
gitlab 0039325
* we cannot do SSA during partial writes to arrays which span multiple registers, resolves
gitlab 0039325
* Update handler functionality
* Better SetfieldByName/GetFieldByName
* Add http client pool from Ondrej Pokorny
* Fix for non-compilation on non-supported platforms
* Fix for non-compilation on non-supported platforms: linux -> unix
* Fopefully last fix for non-select platforms
fphttpclient: remove OnIdle and add protected methods so that the feature can be added in a descendant
fix wording of error message when field not found during reading of lfm file
fcl-web: example missing semicolon and gitignore linux bin
pastojs: fixed typecast jsvalue to external class instance not checking if Object
* Use FPC server by default
* Remove module, move module before default
* SetStatus convenience call
* Uppercase argument for GetHTTPStatusText
* Allow to move routes, make route management thread-safe
* Improved solution for issue
gitlab 0038435, json helpers for http request/response
* location management API
* Enable location management API
* Bring compileserver functionality up-to-date with simpleserver
* Parse linklib directive
* New keywords for ECMA2021
* Pass all directives through OnDirective
* const and let statements
* pass the final name of the compiler executable when compiling the compiler to avoid
moving the executable afterwards, this allows proper stack dumps with line numnbers
on OSes with external debugging information (darwin)
* move more node tree optimizations to tcgprocinfo.OptimizeNodeTree
* patch by J. Gareth Moreton: x86: SETcc/TEST/SETcc -> SETcc/SETcc optimisation, resolves
gitlab 0039271
* tw39323 needs to turn on range check to test what it is supposed to test
Add 'treated as Error:' to compiler messages
* Avoid some wrong error messages after initial error
On x86_64-openbsd, cycling with -O3 option fails due to
a wrong warning about uninitialized zeros variable in
compilation of ogbase unit
ogbase.pas(2310,41) Warning: Local variable "zeros" does not seem to be initialized
ogbase.pas(2318,39) Error: Can't evaluate constant expression
The second message is due to the fact that simplify is not
called inside nadd unit if errorcount is non-zero.
By replacing errorcount<>0 by not codegenerror,
this message disappears.
pas2js: git ignore linux binaries
Use pascal hunk for diff output for pascal source files
* Added trgobj.remove_ai(), call it instead of code duplication.
No functional changes.
* initialize Result variable of THTTPSysHandler.WaitForRequest
+ implement support for terminating a HTTPSys web service handler that's blocking inside WaitForRequest
* move freeing of the event log to a separate, virtual method so that this can be changed depending on the needs of TCustomWebApplication.CreateEventLog (e.g. when using a TCustomWebApplication descendant together with a TDaemonApplication)
Try to avoid infinite loop for revision target on svn repo
* regenerated makefiles with the latest fpcmake from trunk
* Patch by J. Gareth "Kit" Moreton (issue
gitlab 0039343). x86 peephole
optimization of conditions which are always true or false.
Add symbol_order*.fpc files to .gitignore
* x86: ShlOp2Op optimization
* fix memory leak in TFPPooledConnectionHandler
pastojs: added TPas2jsMapper.SaveJSToStream
pastojs: added hook GetFileSrcAttr to skip generating srcmap of some files
* to avoid that -Xg causes a failure during comparing ppc3.exe and ppc386.exe on windows, during the last compiler compilation step, the
same executable name is used
pas2js: httpcompiler: fixed reading values fomr config file
* Use a register alias while handling reg deallocs in trgobj.instr_spill_register()
to be in sync with commit b96057ad.
* make ShlOp2Op optimization more fool proof
* Prevent spilling of spill-helper registers which contain the value of a
previously spilled register. These helper registers must never be spilled.
This fixes failures of the register allocator in rare corner cases.
* Additional module platform
(cherry picked from commit 664de8653dc56b13cddac2cd7024697756ae422d)
* Add linklib, add some formatting
* Updated json tests to run properly when the default code is non-UTF8.
* Explicitly specify CP1252 for registry tests which depends on this CP.
* Weak externals from DLL are nor supported on Windows.
* Disabled running of the sharemem test since fpcmemdll.dll is never built.
* Prevent a crash of the tw2423 test on some versions of Windows.
* Modified the test to run properly on non-UTF8 systems.
* Explicitly specify DefaultRTLFileSystemCodePage for the test in order
to be independent from the current system code page.
* Do not run the tzlib1 test. It is not intended for this.
+ for loop optimizations can be controller by a switch (-Oo(no)forloop)
* (modified) patch by J. Gareth Moreton: ARM/AArch64 Some short-range LDR/STR optimisations, last part of
gitlab 0038841
+ keep addresses of thread vars in registers if possible and likely an advantage
* x86: only add mm capable consts to register candidate list, this is better
than checking when they are assigned
* fix code for ARM FPA, just in case ...
* Export SetPas2JSGetFileSrcAttrCallBack
Revert "* Export SetPas2JSGetFileSrcAttrCallBack"
This reverts commit
gitlab 000053cec8809421efc739d7f2e5610fa7c966e61a.
pas2js: fixed typeinfo procvar resulttype nil
pas2js: added SetPas2JSGetFileSrcAttrCallBack
pas2js: compile httpcompiler with fpc 3.2.2
* x86: Do not replace inc/dec with add/sub 1 because this code path is
executed only for the C_Z,C_NZ,C_E,C_NE conditions, so inc/dec can be
used.
* Fixed lack of the calculation code for the strength reduction optimization.
* Make some properties public
* Allow to specify IP address
* Allow to specify address
* Fixed a typo in the condition, though it seems this code path is not used now.
* Fixed the strength reduction optimization for loops containing 'continue'.
The compiler now cycles properly with -O3 -OoSTRENGTH.
* mark temps as deallocated
(cherry picked from commit 50452e5707b1d5f8590042ed55fc5f47bce33962)
* Fixed missing assignments with the strength reduction optimization.
* x86: Fixed attributes of the LEAVE instruction - it reads EBP.
This fixes crashes with -O3s in some cases due to an incorrect peephole
optimization.
Added correction to AllocRegBetween
+ added target flags for the different WebAssembly exception modes that I'm
planning to implement
* increased size of ttargetswitchinfo.define to fit the string added in my
previous commit
* fixed compilation of ppudump
+ added usage info to the compiler help screen for the WebAssembly
target-specific exception handling modes
+ added validation to ensure no more than one WebAssembly exception support
mode is enabled
+ set the NOEXCEPTIONS mode by default for the WebAssembly targets
+ support writing the new tai_tagtype directive in the asm output
remove unused resource strings
Compile with -Oodfa to get better warnings
* Reverted the accidentally committed debug code in 4a7a113a.
+ added except_native.inc include file (empty for now, but will provide RTL
support for the native wasm exceptions in the future)
x86: MOV constant optimisation
* + .gitconfig with configuration for better diffing, needs a
git config --local include.path ../.gitconfig
to be activated
* is_calljmp really means calls and jmp
* is_calljmpuncondret includes ret
* handle - more cleverly if SSE is used
pastojs: fixed compile tests
pastojs: error on linklib options
pastojs: fixed invalidate directory cache
pastojs: fixed assign external const to int
* fix alignment issues with - when using SSE
+ started the wasmbase unit (similar to elfbase and omfbase)
+ implemented TWasmObjData.sectionname
+ write the wasm binary module header and version
* fixed TWasmObjData.sectionname_gas
+ enabled the WASM32_INTERNALASM define when compiling with the lazarus project file
+ write some debug info to the console in the wasm obj writer
+ added TWasmObjSection class
+ introduced TWasmObjSection.IsCode and .IsData
+ count the number of segments and assign segment indices to the wasm sections
+ start writing the wasm sections. The DataCount section is the first section to be implemented.
* simplify real expressions involving unary minus
+ test
+ create the data section and the first entry of the import section
+ add the __stack_pointer global import
+ added the indirect function table to the imports section
+ debug print the obj symbols to the console
* fixed crash when writing a binary wasm module with a .bss section
+ print more symbol properties to the console
+ added the TWasmRelocationType enum
+ added the TWasmLinkingSubsectionType enum
+ more unary minus optimizations
* test extended
pas2js: nil typeinfo Module, Attr and params
+ more unary minus optimizations
* test extended
Expanding division to 64-bit and tests
pas2js: fixed rtl.tTypeMemberProperty
* some fixes for expectloc
+ added function name to functype hashlist in the wasm objdata class
pastojs: clone multi dim static array
+ apply unary minus optimizations also to /
* test extended
o manually applied merge request 46 by J. Gareth "Kit" Moreton:
+ x86_64: XMM-based block move optimisation
* set expectloc properly for x87 on x86
* fixed the writing of the external functions in the import table
* store the funcname to functype index in a TFPHashObjectList, instead of
TFPHashList with the index converted to pointer, which was a hack and didn't
allow adding more fields, which we would need to do for e.g. import_module
and import_name
+ added method TWasmObjData.AddOrCreateObjSymbolExtraData
+ handle the import_module and import_name directives in the internal
assembler and store them as obj symbol extra data
+ handle tai_local in the internal asm writer and store the locals in the
wasm obj extra symbol data object
obcpas: fix categories implementing protocols
Allocate the ImplementedInterfaces array for them and save to/load from ppu
Solves
gitlab 0039375
+ generate and write the functions table in the wasm binary module,
produced by the internal obj writer
+ write the code section (still, without the actual function code, but with
the correct locals)
* replaced TWasmObjData(Data) with FData in TWasmObjOutput.writeData
+ write the actual function code in the code section
+ partial implementation of emitting RELOC_FUNCTION_INDEX_LEB relocations
+ add relocation objects for the RELOC_FUNCTION_INDEX_LEB relocation to
the relocation list. They are not written to the object file, yet.
+ added enums for the wasm symbol type and constnats for the bitflags
+ write the linking section (empty for now)
Revert " * patch by J. Gareth Moreton: Nothing (NOP) node optimisation, resolves
gitlab 0038194"
This reverts commit c2ff85ac5ba307d7cc10cae7ee17d479c83c9119.
That change duplicates the logic of tstatementnode.simplify in
tblocknode.simpify in a very complex way, and in case of issue
gitlab 0039336 results
in adding a non-tstatementnode in a tblocknode, which is illegal. If
tstatementnode.simplify cannot catch all cases, then that one should
preferably be improved instead (and if not possible, we can look into
catching those edge cases in tblocknode.simplify rather than duplicating
everything).
Resolves issue
gitlab 0039336
* Aarch64: taicpu.spilling_get_operation_type with new instructions extended
+ write the externals to the symbol table
+ write the non-external functions to the symbol table as well
+ also write the data symbols to the symbol table
+ write the segment info (names and alignment) to the linking custom section
Add initial Description templates
this adds a description template for issues as well as for
merge requests that target the compiler
+ write the relocation tables for the code and data sections (empty for now)
+ fully implemented the RELOC_FUNCTION_INDEX_LEB relocations
+ introduced TObjData.SymbolPairDefine, to allow custom handling of symbol
pairs in the internal object writer
+ support tai_symbolpair in the wasm internal obj writer, so that the
PASCALMAIN alias of main can be created
+ support generating R_WASM_TABLE_INDEX_I32 relocations
+ support writing RELOC_FUNCTION_INDEX_LEB relocations to non-external functions
+ support writing imports from a different module in the wasm binary object writer
+ support writing R_WASM_MEMORY_ADDR_I32 relocations
+ add threadvar symbols to the symbol table
* generate an internal error if an attempt is made to emit a
R_WASM_MEMORY_ADDR_LEB relocation, that points to code, instead of
data
+ re-added accidently removed internal error
* made the constructor of TObjSymbol virtual, so it can be overriden
* fixed bug in the code, generated for the RELOC_FUNCTION_INDEX_LEB
relocation
+ fixed the addend in the relocations that point to data
Bug fix to XMM block move optimisation
Add two more templates to show the possibilities
Changed get_volatile_registers_mm to not return XMM16 to XMM31 when not under AVX512
- removed unused constructor of tai_impexp, as well as unused member variable extmodule
* tai_impexp renamed tai_export_name
* ait_importexport renamed ait_export_name
* simplified and integrated the WriteImportExport procedure into the case
statement. Use similar statements to write the asm code for the export_name,
like we use for the import_name directive.
+ generate the export section in the wasm internal obj writer
- removed debug writelns from the wasm internal object writer
+ generate funcdef for external procs, that don't have an import dll
+ enable the WebAssembly internal assembler and object writer
* use objsym.size to determine the code size of the function (instead of
writing until the end of the section) in the wasm internal object writer.
This removes the extra padding of 'unreachable' instructions at the end of
each function (which are zeroes, added for alignment - they are harmless,
but are unnecessary and cause a slight increase of the size of the
resulting binaries), after the final 'return' instruction of the function.
* use an incrementing counter variable to determine the numbers for the code
and data section, so they can be used in the relocation section, without
hardcoding them as constants. This will automatically adjust the numbers
when we add more sections, or when we make writing some of the sections
optional.
* omit writing the export section if there are no exported functions from
the module. This reduces object file size slightly for modules without
exports.
+ support the 'try' instruction in the wasm internal assembler
+ implemented the 'delegate' and the 'rethrow' instructions in the wasm internal assembler
* emit a tai_tagtype for __FPC_exception instead of hardcoding the asm output
directly when wasm native exceptions are enabled
* introduced the tai_globaltype asm directive, use that to declare the stack
pointer global symbol
+ introduced the AT_WASM_GLOBAL asm symbol type
* track wasm global types in the internal object writer
+ proper support for WASM globals in the internal object writer - emit
relocations, generate a Global section, if they are declared in the object
file, etc.
* combined TWasmObjSymbol.ImportIndex and .FuncIndex into just .FuncIndex,
because there's no point in having them separate, and the name ImportIndex
is misleading, as there are multiple import indices (they are separate for
functions, globals, tables, memories, etc.)
* the data section is now only written by the internal wasm object writer, when
there are data segments in the module
+ also support immutable wasm globals in the wasm assembler writer (both internal and external)
+ introduced the FPC_EXCEPTION_TAG_SYM string constant
+ introduced the AT_WASM_EXCEPTION_TAG asm symbol type, use that for specifying
the parameter to the 'throw' and 'catch' instructions
+ added support for exception tags and for the 'throw' and 'catch' instructions
in the wasm internal assembler and object writer
* fill exceptstate variables and update flowcontrol in
twasmexceptionstatehandler_nativeexceptions.new_exception
- removed the TODO comment, generated in the asm output by
twasmexceptionstatehandler_nativeexceptions.free_exception
+ support in_wasm32_throw_fpcexception in twasminlinenode.pass_typecheck_cpu
* emit a weak symbol for the exception tag, since that's what the LLVM linker
wants to treat them as shared between .o files
* updated ppudump with the new asm symbol types and binding types
* fixes to the try..finally code generation in wasm native exceptions mode
+ RTL support for raising exceptions in native wasm exceptions mode
* don't include except.inc if wasm32 native exception is turned on, instead
replace it with except_native.inc
- get rid of fpc_PushExceptAddr and fpc_PopAddrStack entirely, when compiling in
wasm native exceptions mode - these helper routines aren't necessary in this
mode
* longjmp in fpc_reraise changed to a throw instruction intrinsic in wasm native exceptions mode
* decblock moved after end_try, instead of after catch
* Parse cookies also when setting variable based on name
+ initial implementation of try..except..end in wasm native exceptions mode.
The 'on' statements are not implemented yet.
+ override the 'on' node for WebAssembly
* x86_64-linux doesn't need .data.rel.ro either
+ implemented the 'on' node for WebAssembly in native exceptions mode
+ generate functype directives for all functions in all used units, regardless
of whether they have paraloc info created. This fixes linking of WebAssembly
programs that declare their own classes, because that causes the compiler to
generate a VMT, containing references to virtual methods, and these don't
necessarily have paraloc info (if they're not called from within the program)
* the fpc_Catches result test code was inverted
+ implemented sqrt via the f32.sqrt and f64.sqrt instructions
* fixed opcode generation for the f32.const in the WebAssembly internal asm
+ implemented abs(real) for WebAssembly via the f32.abs and f64.abs instructions
+ implemented int(real) for WebAssembly via the f32.trunc and f64.trunc instructions
* fixed output of 32-bit floating point constants in the llvm-mc asm output
+ implemented trunc(real) for WebAssembly via the i64.trunc_f32_s and i64.trunc_f64_s instructions
+ implemented round(real) for WebAssembly via the fXX.nearest and i64.trunc_fXX_s instructions
x86_64: Fix to tw8573 overflow bug under -Cg option
* properly search in GetMMRegisterBetween and GetIntRegisterBetween for usable
volatile registers (low() .. high(
and not only the included ones)
* fixed code generation for 'boolean64 and/or boolean64' for WebAssembly
* fixed WebAssembly code generation for 'if boolean64 then ... else ...'
* int64/boolean64 fix in twasmtypeconvnode.second_int_to_bool
* fixed 'not(boolean64)' for WebAssembly
* fixed second_int_to_bool for cbool types for WebAssembly
* another WebAssembly cbool fix in twasmtypeconvnode.second_int_to_bool
* fixed WebAssembly cbool support for OP_NOT
* bug fix in test taddbool.pp - it was testing longbool conversion to boolean
twice, and not testing wordbool conversion to boolean at all
* fixed WebAssembly code generation for not(cbool64)
+ implemented GetDate, GetTime and WeekDay in the WASI dos unit. They return
UTC time (I don't know how to obtain the local time zone from within WASI).
* modified (cosmetics) patch by Rika: replace DJB2 with MurmurHash3, resolves
gitlab 0039377
+ Aarch64: AndCmpB.E/NE2Tbnz/Tbz optimization
+ Aarch64: Ldr
Mov2Ldr optimization
x86: Missed logic with CMP and MOV optimisations
+ added the memory.copy and memory.fill WebAssembly instructions
+ added inline numbers for a memory.copy and a memory.fill intrinsic
+ implemented FillChar for WebAssembly via the memory.fill instruction
+ implemented move() for WebAssembly via the memory.copy instruction
* fixed OS_S8 to OS_16 conversion for WebAssembly. This fixes test/cg/tcnvint6
+ enabled compilation of the fpintres unit for the WASI target and enabled tf_has_winlike_resources for the target
+ added system_wasm32_embedded to systems_embedded
+ use the aasmdef unit in wasm32/cpunode.pas
- don't set casmdata in wasm32/aasmcpu.pas, so that the aasmdef unit can override it
* always return error in SysUtils.FindFirst and .FindNext on the WASI platform,
in order to prevent infinite loops in tests
* fixed WebAssembly method pointer assignment
+ workaround for WebAssembly treating the stack parameter of the store and load
instructions as unsigned. This caused an 'out of bounds memory access' trap
when accessing arrays with negative offset index, e.g. in test/cg/tvec.pp
+ enabled compilation of unit heaptrc for the WASI target
+ added WASI .o files for the tests for linking with C
+ implemented the <= operator for smallsets for WebAssembly
Fix bitpacking 62/63 bit fields on 64 bit targets
As reported on the lazarus forum:
* https://forum.lazarus.freepascal.org/index.php?topic=56341.new
* https://forum.lazarus.freepascal.org/index.php/topic,56339.msg418608/topicseen.html
Also optimized nextpowerof2 in the compiler
+ support equality comparison of smallsets on the Z80
+ support the <= and >= operators for smallsets on the Z80
* define DEBUG_AOPTCPU if EXTDEBUG is used
Fixed bug where hp1 object was used after being freed
Typed constants: no internalerror on failure
Don't check whether the expression queue is empty in the destructor in case
there was an error. Also improved error messages (constant expression instead
of variable expression expected).
Resolves
gitlab 0039393
+ x86: MovOp2Op optimization
+ introduced WebAssembly branchful exceptions
+ increase string type to avoid const string truncation
+ fixed compilation of ppudump
- removed msg2inc. Stupid git added it without my consent.
AArch64 popt: don't replace registers with X/WZR
Most arithmetic/logica instructions don't support X/WZR as operand (since
you should use movk with the calculated constant in that case)
Resolves
gitlab 0039372
Avoid range check error in TCpuAsmOptimizer.OptPostAnd method
* bail out early in MatchInstruction
* cloned the WebAssembly native exceptions code generation and rtl support into
the branchful exceptions (which will be modified later, but we're using this
as their starting point, because we can get a snapshot built, without compiler
internal errors)
* instead of using the 'throw' intrinsic, set a boolean flag, in the branchful
exceptions support code
- don't generate any WebAssembly native exception handling instructions, nor
relocations, when compiling in branchful exceptions mode. This produces a
currently not working, but accepted by wasmtime binary (otherwise, it
complains it doesn't support exceptions and refuses to try to run it).
+ introduced raiseBr, similar to exitBr, but will point to the current
innermost exception handler, if there is such a handler in the current
procedure, otherwise it will be the same as exitBr.
+ added comment that states that raiseBr is only used in branchful exceptions mode
+ insert exception flag check and branch after each function call, when
compiling in WebAssembly branchful exceptions mode
+ implemented try..finally in branchful exceptions mode
+ initial implementation of try..except in branchful exceptions mode
+ implemented the 'on' node code generation (try except 'on' ...) for the
branchful exceptions mode
+ call g_checkexceptions after calls to fpc_reraise and fpc_raise_nested in
branchful exceptions mode
- removed commented out code from the WASI startup code
+ added unhandled exception handling code for the branchful exceptions mode
* x86: Refactored CMOV optimisations and permitted the use of constants in some cases.
+ return a small, fake backtrace for WebAssembly, so that in case of a runtime
error, the message 'Runtime error XXX at $EEEEEEEE' appears.
* use 'br_if' instead of 'if br end_if' sequence in the code, generated by
thlcgwasm.g_checkexceptions
+ support exception object cleanup, when 'exit', 'break' or 'continue' is used
in the except 'on' statements, in branchful WebAssembly exceptions mode
+ exception cleanup when break, continue or exit is used inside a
try .. except 'on' block, in WebAssembly native exceptions mode
Expanded MM block move to include YMM registers under AVX
+ proper exception cleanup for try except blocks that use exit, break or
continue in WebAssembly branchful exceptions mode
+ proper exception object cleanup when using break, continue or exit in try
except blocks in WebAssembly native exceptions mode
- removed duplicated assignment
* twasmexceptionstatehandler_nativeexceptions.handle_nested_exception and
twasmexceptionstatehandler_bfexceptions.handle_nested_exception should not be
called, so now they cause an internal error
+ default exception handling in WebAssembly native exceptions mode
* thlcgwasm.g_checkexceptions renamed .g_maybe_checkforexceptions, added also as
an empty virtual method in thlcgobj and modified the WebAssembly
implementation, so that it can be called from any exceptions mode (so it
emits no code in exception modes that don't require it, instead of generating
an internal error). This will allow .g_maybe_checkforexceptions to be called
from the generic parts of the code generator, after calls to systemprocs that
could raise an exceptions.
+ added call to g_maybe_checkforexceptions after generating call to fpc_iocheck
+ implemented GetMsCount in the DOS unit for WASI
* replace MT random generator by Xoshiro128**, resolves
gitlab 0038237
+ implemented SysUtils.GetTickCount64 for WASI
+ implemented SysUtils.Sleep for WASI
+ implemented SysUtils.GetEnvironmentVariable, GetEnvironmentVariableCount and
GetEnvironmentString for WASI
* preopened dirs structure in the system unit modified to be a pointer to an
array of records
* partially applied patch by J. Gareth "Kit" Moreton to inline parts of cclasses, resolves
gitlab 0039344
* use source register as second register in VCVTSD2SS and VCVTSS2SD, this should break
dependency chains better and resolves partially
gitlab 0039360
Disable utils for wasi target, because paszlib cannot be compiled due to use of goto labels
* Optimized evaluation of the condition.
* Strength reduction optimization: - Use a temp for complex loop start values to prevent double evaluation.
- For slow CPUs perform the optimization for all sizes of array elements.
* generate VMOVAPS for (V)Cvtss2CvtSd(V)Cvtsd2ss optimization, resolves
gitlab 0039360
+ added the current WebAssembly exceptions mode to the .ppu module flags and
perform a check to ensure all units are compiled in the same exceptions mode
as the main program
* another location to use source register as second register in VCVTSD2SS and VCVTSS2SD
to break dependency chains, hopefully final fix for
gitlab 0039360
+ support of SHA extension in the internal assembler
+ CPU units: check for SHA support
Better handling of zeroing upper parts of registers
Better handling of zeroing upper parts of registers
* preopen fd names and current dir changed to use ansistring, as well as the
parameters and result of ConvertToFdRelativePath. This will allow easier
implementation of ChDir.
xor optimisation now doesn't check to see if the REX prefix will actually be removed, as it's beneficial for speed reasons to only use the 32-bit register when zeroing the whole thing
* fixed handling of relative paths that are not directly relative to a preopened
dir in ConvertToFdRelativePath. This is a preparation for ChDir support.
o based on a patch by Rika, resolves
gitlab 0039401:
* use Base64 (62=_, 63=$) encoded FNV hash (instead of CR-32) to shorted identifiers
* renamed fpccrc to fpchash
+ test
* fix x86 compilation after my last commit
* fix also IDE building after fpccrc to fpchash renaming
+ implemented ChDir() for WASI
- removed the DebugWriteXXX functions from the WASI system unit, since console
output is now quite stable and can be used for debugging
* moved the preopened dir and current dir handling types and variables to the
implementation part of the system unit, so their implementation is not exposed
and can be changed in the future (e.g. for thread safety when WebAssembly
gets multithreading support, etc.)
* by default, DEBUG_AOPTCPU is only enabled if the compiler is compiled with -dEXTDEBUG
+ being able to define change information for xmm0
* corrected change information for SHA256RNDS2
* keep the drive string separate in the preopen and the current dir records on
the WASI platform
* replaced ['/','\'] with AllowDirectorySeparators in the WASI directory
parsing code
* replaced '/' with DirectorySeparator in the WASI directory parsing code
* another instance of ['/','\'] replaced with AllowDirectorySeparators
* use AllowDirectorySeparators, instead of checking for '/' and '\'
* use rawbytestring instead of ansistring for the WASI file name handling
+ implemented SysUtils.FileClose for WASI
+ implemented SysUtils.FileOpen for WASI
+ implemented SysUtils.FileCreate for WASI
- removed the zero constants from the implementation of SysUtils.FileOpen for WASI
+ implemented SysUtils.FileRead for WASI
* fixed WASI bug in do_read, where the result of the __wasi_fd_read syscall function was ignored
+ implemented SysUtils.FileWrite for WASI
+ implemented SysUtils.FileSeek for WASI
+ implemented SysUtils.RenameFile for WASI
- don't call ToSingleByteFileSystemEncodedFileName in SysUtils.FileOpen and
.FileCreate, because ConvertToFdRelativePath already calls it
+ implemented SysUtils.DeleteFile for WASI
+ implemented SysUtils.FileGetDate for WASI
+ implemented SysUtils.FileAge for WASI
+ implemented SysUtils.FileSetDate for WASI
+ also implemented FileSetDate(FileName) for WASI, via the __wasi_path_filestat_set_times API call
* patch by Dean Mustakino to avoid generation of debug info for generics, resolves
gitlab 0038827
+ test
* fixed off-by-one error when initializing current_drive in the WASI system unit
* fixed range check error in HasDriveLetter when path is 1 character long
+ implemented SysUtils.FileExists for WASI
* don't set InOutRes in ConvertToFdRelativePath, but return it instead. This
fixes issues in places where this function is used in a way that should not
set IOResult.
+ implemented SysUtils.DirectoryExists for WASI
+ implemented SysUtils.FileGetSymLinkTarget for WASI
* always return an error in SysUtils.FileSetAttr on WASI - this function is not supported by the WASI API
+ implemented SysUtils.FileGetAttr for WASI
+ dummy implementation of dos.SetFAttr for WASI, based on the Unix version
+ implemented DOS.GetFAttr for WASI
+ added platform-specific helper function dos.DTToWasiDate, similar to
DTToUnixDate on Unix
+ implemented dos.SetFTime for WASI
* fix for the WASI datetime to epoch conversion
* add no internal flag when folding constants in taddnode.simplify, resolves
gitlab 0039308
+ implemented SysUtils.GetLocalTime for WASI
* fixed padding in the filerec to match textrec even on platforms where
sizeof(pointer)<>sizeof(codepointer), like in the medium and compact i8086
memory models
+ added test for SysUtils.GetLocalTime
+ init the ansistring upper and lower case tables in the WASI SysUtils unit initialization
+ pass 64-bit structures by address in WebAssembly for compatibility with LLVM's C ABI
* Removed unused tlocation.registers[].
* itcpugas unit for Z80 providing gas_regname to fix compilation with -dDEBUG_NODE_XML
* C ABI fixes for the passing of records in WebAssembly
* fixed formatting in defToWasmBasic
+ added support for the handling of singleton record and array types in
defToWasmBasic
* fixed passing of singleton record parameters, containing a float in WebAssembly
+ support cdecl and stdcall on the WebAssembly target. They are essentially the
same, the only difference is that cdecl creates an unmangled alias
* replaced the 'if br end_if' sequence with the 'br_if' instruction, when
generating WebAssembly code for try..finally blocks (in all exception modes)
+ added a wrapper function around __wasi_path_readlink that calls it iteratively
with doubling buffer sizes, starting with 64 bytes, until it reaches 16384
bytes, and reads the link into a rawbytestring. Use that function in all
places in the WASI rtl that need to read a symlink.
+ extend assembler optimization MovxMov2Mov to MovxOp2Op
* merge request 75 by J. Gareth "Kit" Moreton manually applied:
This merge request makes a number of improvements to the DeepMOVOpt method and supporting functions:
* ReplaceRegisterInInstruction now replaces registers in references that are written to
(since the registers themselves won't change)
* RegModifiedByInstruction will no longer return True for a register that appears in a reference
that's written to (for the same reason as above) - special operations like MOVSS
(the 0-operand version) aren't affected.
* DeepMOVOpt returning True will now always set the Result of OptPass1MOV to True even though p
wasn't directly modified, since this often caused missed optimisations.
* Some of the speed-ups in the patch from
gitlab 0032916 have also been applied in order to make
the general DeepMOVOpt run faster, notably it tries to avoid calling UpdateUsedRegs where possible.
* manually merged merge request 69 by J. Gareth "Kit" Moreton:
x86: CMP/MOV refactoring and expansion
This merge request refactors the SwapMovCmp routine, and calls to it, to be more self-contained,
having the preliminary checks built-in to ensure that moving the MOV instruction is
actually a sound idea, while also making it more general-purpose so it can handle instructions
that are not MOV operations. This feature is primarily for future expansion,
but also cleans up the code for the x86 peephole optimizer.
* patch by Sergey Larin: Reducing and aligning the size of TAnsiRec, TUnicodeRec for CPU64, resolves
gitlab 0038018:
For CPU64, the size of record TAnsiRec and TUnicodeRec is 16 bytes instead of 24.
Which is very good also because of the alignment. when allocating memory, the address
of the first character of the string will be aligned on the 16-byte boundary.
At the same time, the useless Dummy field, which is needed in CPU64 for exactly alignment, has been removed.
For CPU32 (and CPU16), the record size has not changed, so procedures such as
fpc_AnsiStr_Decr_Ref, implemented in assembler (see i386, arm), remained working correctly.
* tests adapted
* x86-64: do not jump in inc/declocked to return but return directly
fcl-js: fixed stackoverflow when freeing long binary list
Disable utils/fpcmkcfg package for wasi OS as it requires packages/fpmkunit package
+ support reading of .p2align with op code and/or max. bytes in the gas assembler reader
+ test
Disable utils packages for wasi OS if required package is not supported or if labels are used (which is not supported for wasm32 target CPU)
* ConvertToFdRelativePath removed from the interface part of the WASI system
unit (to avoid cluttering the WASI system unit interface with platform
dependent routines) and added to a new unit, called wasiutil
* added the fpc_wasi_path_readlink_ansistring helper function to unit wasiutil
* the FNMatch private helper function moved from unit DOS to unit WasiUtil, and
changed to have rawbytestring parameters, so it can be used from SysUtils as
well.
- removed unused, commented out fields from the RtlInfoType record
- removed the RtlInfoType record, because it is only used only once in a local
variable. Use an anonymous record instead.
* moved the FindFirst/FindNext/FindClose code from unit DOS to WasiUtil, using
RawByteString. This will allow to reuse the same implementation in SysUtils.
+ implemented FindFirst, FindNext and FindClose in SysUtils for the WASI platform
+ implemented DOS.FSearch for WASI
- removed TWasiSearchRec.Mode, because it was unused
* when compiling with the main branch compiler, p2align with 3 parameters can be used now
+ introduced the use of asm labels for WebAssembly. Resolve them in
tcpuprocinfo.postprocess_code. Use them when generating code for the
'continue' label jumps.
* the libc unit might be deprecated, but it's no reason for wrong declarations, in this case values that should be declared as octal but were declared as decimal with the same literal text
+ use WebAssembly asm labels for the code generation of 'break' statements as well
* fixed some more warnings
* use WebAssembly asm labels for generating code for the 'exit' statement
pastojs: added test linklib
* leave unresolved branches in the asm output, when the compiler is compiled with -dEXTDEBUG
* if a label cannot be associated with the previous block instruction, try
matching it with the next instruction
pastojs: test unit linklib
+ wrap block nodes with exit in a_block..a_end_block instructions. This fixes
'exit' in inlined procedures on the WebAssembly target.
pastojs: library: create and call main
fcl-pasrc: error if exports section inside inside procedure
* fixed range check error in the DOS unit
* moved the 'end_block' WebAssembly instruction before the 'exit' label right
before the procedure finalization code. This fixes compilation errors in
procedures with implicit finalization code (e.g. for ansistring local vars,
etc).
* match the label to the wider block, if it is adjacent to both the brevious
and the next instruction
internalerror if the section we're about to keep has no exesection assigned
pastojs: library: export name
fcl-js: fixed TJSWriter.WriteExportStatement spacing
* use WebAssembly asm labels for the raise branch instruction in branchful
exceptions mode
fcl-passrc: test export unitname.name
pastojs: library: export unitname.name as alias
* pass a randseed which is known to be problematic
* check paramstr argument for negative values, resolves
gitlab 0039410
* extended test to cover last commit
pastojs: fixed clear com interface reference in class field on destroy
Fix compilation of nds and wii OS rtl
+ added sanity check when resolving labels to ensure we don't get any jumps with
negative nesting depth
pastojs: library: export var
* moved the default procedure CurrRaiseLabel to the end of the procedure, not
at the exit label. This fixes problems when using units with finalization
code that contain classes with class destructors in branchful WebAssembly
exceptions mode.
* Add test for case of pointer and size
Bug fix to MovMov2Mov 6 optimisation exposed by 4012c3dbd47f661805bb7a831c6c687807ede3b4 (and miscellaneous code refactors)
* WebAssembly code generation for 'case' nodes changed to use labels
- removed thlcgwasm.incblock, .decblock and br_blocks, as branching is now done
entirely with labels
+ TDFABuilder.redodfainfo
pastojs: library: forbid unit exports
* keep track of the block stack, when resolving labels and check whether the
blocks match (i.e. block..end_block, if..end_if, loop..end_loop, try..end_try)
+ added 'else' tracking for the if..end_if blocks
* TX86AsmOptimizer.OptPass1MOVXX takes care of volatility
* improved TX86AsmOptimizer.OptPass1MOVXX
pastojs: fixed class property getter static
+ print full file path if -vb is passed even if no line number is known, resolves
gitlab 0039419
Improved ADD and SUB optimisations for LEA instructions
* Better coalescing with real registers. This improves setting of parameters
in registers.
* Removed superfluous condition in trgobj.enable_moves().
* Fixed flags checking in trgobj.adjacent_ok().
* Added assembler comments about coalescing when DEBUG_SPILLCOALESCE is defined.
Fixed some range check problems
* correctly read the region label in $region directives, resolves
gitlab 0039395
* Restore previous default behaviour for OnDirective, put under option
Fixed OptPass2Lea not honouring symbols
+ write code and data size for Mach-O files if possible
* cleanup of 2.7.0 defines
fcl-res: Mach-O fat binary support
Only for TMachOResourceReader. We always compile/generate a single architecture
binary, and then the programmer can combine those with lipo. So the writer does
not need fat binary support for common usage.
Resolves
gitlab 0039124
+ fold real constants c1,c2 for v+c1+c2 or c1+(c2+v) (+ being either + or *) as well if fastmath is enabled
Fixed variant discriminator types
Record variant discriminators: check types
* AArch64: TCpuAsmOptimizer.RegLoadedWithNewValue: check if p.ops=0
* Corrected calculation of spilling efficiency.
optcse: fix wrong typecast
* Write interference graphs to the unit output directory.
* Removed unused and confusing tnode.parent and tnode.concattolist().
* Removed obsolete OLDREGVARS ifdefs.
* Corrected setting of the flag.
* tcgaarch64.g_concatcopy calls tcgaarch64.g_concatcopy_move only if the current subroutine has pi_do_call set
* fixed copy loop in tcgaarch64.g_concatcopy if ldp/stp is used: fixed increment calculation and fixed tail length calculation
fpdoc: gitignore linux binary
fcl-passrc: parse goto statement
fcl-passrc: parse if then goto
* improved heurisics when thread var addresses or float constants are put in registers
* corrected accidently made changs in 01a449c8, resolves
gitlab 0039424
* Fix cvar;export; parsing
* fixed the ptccrt key codes for the ctrl+numpad keys
+ ARM: started on vfpv5 support
+ fp-armv8 fpu type added
* tcgsizep2size now supports all tcgsize values
* Fixed node coalescing with real registers.
+ be able to add single cpu capabilites by the command line
+ AArch64: SHA2 capability
+ more Aarch64 cpu capability flags added
* fix (V)Cvtss2CvtSd(V)Cvtsd2ss2* optmizations for non-avx code, resolves
gitlab 0039416
* my last commit hopefully fixed
+ Aarch64: read register sets with ranges properly
+ tests
* when converting a*a into sqr(a), set the result type correctly
* removefloatupcasts takes care of cs_excessprecision, resolves
gitlab 0039012
Explicitly disable overflow for offset propagation optimization
* patch by Rika to pass some strings by reference, resolves
gitlab 0039338
* patch by Don Siders: Fixes spelling, grammar errors in source and compiler messages, resolves
gitlab 0039434
llvm: version 12.0 support
Add some delay and a maximum attempt number in GenerateTempDir to avoid getting oversized execution log files
x86: new optimisation to change add/sub 128,(dest) to sub/add -128,(dest) to reduce binary size
Add -WP option so that IDF version can be passed in - stored in globals.idf_version. The version is checked in t_freertos.pas and for esp-idf version 4.3.x an extra link file is added, also running ldgen.py is skipped as that seems unused.
* inputfilepath might not be empty
+ draft for esp-idf version specific rtl unit which contains the necessery linklib statements
* Objects can also be abstract in FPC
* correct idf version check
* "Class of" allowed for fields
* better code and data size info for FreeRTOS
The linklib list for esp-idf v4.2 is also needed for v4.3
Place IDF related files in executable output folder.
* Test for po_arrayrangeexpr
Remove unused $OUTPUT substtution and empty check of outputexedir.
* Add missing definitions
* fix bootstrapping wtih 3.2.2 and -Cpcoreavx2
- Bug fix to new ADD/SUB optimisation where conditions are concerned
- Register allocation fixes for overflow checks
Bug fixes to magic division and vectorcall code that trigger -CriotR checks
Added two new overflow tests
* cleanup of VER3_0 defines
Converted tabs to spaces in toverflow.inc for consistency
pastojs: fixed call type helper on type helper read from pcu
* Export statement allows index and name
* Test for po_keepclassforward
* Add notice that work by Wolfgang Erhardt was used
* Moved comment to top of file for better visibility
+ Aaarch64: support adr instructions with local labels in the assembler reader
+ throw an error if an illegal instruction extension is passed as command line option
+ more AArch64 extensions
+ initial files for intrinsics support on AArch64
* Fixed build with NO_THREADING on Windows.
* fpcmake uses now git for date and hash in revision.inc
* compile fpc with -Cg on powerpc64-linux
* x86-64 can handle overflows in 64 bit multiplications directly, part of resolving
gitlab 0039450
Use filter instead of findstring make function when a whole word needs to match
Regenerated fpcmake.inc after previous commit: Use filter instead of findstring make function when a whole word needs to match
All Makefile's regenerated
Avoid having uninitialized UseBinutilsPrefix local variable in GetDefaultLibGCCDir function
Commit revision.inc change after 7d1b7eda0e
* fix conditional statement as pointed out by Sergey Larin
* last commit was not correct, fixed
FreeBSD CSU fixes
* Assembler blocks in non-pure assembler functions must always declare all
changed registers
* argc is read as *(long*) in C -> changed plongint to pptrint
* fixed ident section
Keep esp32 and esp8266 version specific tweaks separate.
Extract linker script generation as separate method. Check if esp linker scripts can be found in library paths, if not then generate scritps.
* Added Tmoveins.id to be used for sorting and searching in Tmovelist, to
produce the consistent order of elements.
This fixes occasional differences in the register allocation caused by
the address space randomization. When ASLR is in effect, the previous
approach to sort elements by their memory addresses can't guarantee the
consistent elements order for each compilation of the same source code.
* Use longint for Tmoveins.id instead of word to prevent overflow in extreme cases.
Add output path to kconfig source file location parameters.
Always call DoExec to generate linker scripts. Even if cs_link_nolink is set, the ldgen scipt needs to be called in the generated ppas script.
Change declaration of DynLinkStr local variable of MakeExecutable method to ansitring to avoid short string overflows
Fixes to ADD/SUB 128 optimisation that didn't check flags properly, and also handling ADC/SBB properly
* typescript parsing & conversion, initial commit
+ - can be used to remove options from a cpu capability switch
Fixed Unreachable code warning when building on a 32-bit platform with DEBUG_NODE_XML
* fixes excluding of cpu capabilities
Add gdb4fpc.ini, generated by gppcCPUSUFFIX utility and utils/fpcm/fpcmake to .gitignore list
New MovxMovxOp2OpMovx optimisation
* cwstring: Added ICU versions for new versions of Android.
+ add type helpers for the remaining Boolean types (QWordBool and Boolean{8,16,32,64})
* generate no exit code at all on x86-64 if the subroutine is compiled with po_noreturn
Bolder OptPass2Movx optimisations, including a simplification fix
New Movz ###,%ecx, shift/rotate %cl,... optimisation
* compilation of x86_64-win64 fixed
* adjust ToInteger of the Boolean helpers so that it returns the value of either True or False, but not any other value (e.g. in the *Bool types). This is not only Delphi compatible, but also fixes the compilation problem of the one or other 32-bit platform (like PowerPC) after e65b822a.
+ add a test for converting a 64-bit Boolean (either QWordBool or Boolean64) to a 32-bit signed integer (this problematic case was discovered after e65b822a on PowerPC
Adding aaarch64-embedded target
This adds support for aarch64-embedded, specifically for the Raspberry Pi 3.
Uses UART0 at 115200 baud 8N1 for console IO.
Also add short format version of build unit BUnit.pp to ignore list
MovZX->MovSX optimisation
Improved handling of signed sequences in OptPass2Movx
* TypeScript Improvements, 97% of DefinitelyTyped declarations now parsed
* Force ampersand in EscaleKeyword
Massive overhaul to OptPass2Movx to favour operand shrinkage
New MovxAndTest2Test optimisation to mirror the regular MovAndTest2Test optimisation
* generate revision.inc using git log with a date format argument compatible with older git
* comment corrected
- option -date=iso is not needed when retrieving the hash
Added missing MOVSXD check to PostPeepHoleOptsCpu
* files moved as strutils is now in rtl-objpas
+ store references to global variables in registers if benefical (currrently used for aarch64 only)
* Increased the bounds of TBooleanArray to prevent a range check error while linking Lazarus.
* Prevent a range check error in case of big unsigned values.
* Fixed random AVs when targeting the AVX FPU.
x86: New TEST optimisations
* updated ptcpas and ptcgraph to the latest 0.99.16 release candidate
+ enabled compilation of the package ptc for macOS
+ enabled compilation of unit ptcgraph for macOS
Safety checks on TEST removals and better FLAG tracking
* fix m68k IE after e9acd759, patch by Yuriy Sydorov
New optimisation that merges small constants written to the stack
Graph package fixes
Fix aarch64-freebsd compilation failure
by restricting graph unit to i8086/i386/x86_64 CPUs.
Remove unneeded i386-linux special case.
* ptcpas update: support the F13..F35 function keys on platforms that recognize them
Fixed bug in new TEST optimisation where a FLAGS check always returned "in use"
* make tgobj.pas less verbose in extdebug mode, use separate define DEBUG_FREETEMP for the really
verbose stuff
AmigaOS4, MorphOS: added missing RemBob macro
LLVM: add Read/WritePort* implementations
Fixes Unix graph compilation on x86 with LLVM
Re-enable compilation of graph unit for aarch64-win64
Removed incorrect logic in TEST optimisation
+ in_min/max_single/double support for aarch64
* ARMv7A / A64: Constant writes to memory merged to larger forms where possible
+ in_min/max_dword/longint support for aarch64
* Publish handler resulttype, add OnContextExecute
* Slightly better identifier position
* RPC Client code generator (also in pas2js)
* Add RPCMethodName property
* Fix registry search for method name
* ptcpas keyboard handling improvements for macOS and X11
* Fix from Henrique Werlang, use safename when writing pascal code (pas2js issue 39196)
* Patch from Henrique Werlan, correctly fetch RTTI info for external classes (pas2js issue 38943)
* Create API description as Pascal
* compilation with i386 fixed
Overflow bug fixes to MovZX/SX optimisations when CMP instructions are encountered.
Fixed MovxOp2Op failing on i386 due to lack of register check
* TX86AsmOptimizer.OptPass1MOVXX should search only over other instructions if it works with registers only
* patch by Rika: improve ctuils.newalign/align, part of
gitlab 0039496
x86: New double CMP optimisation to remove a branch
i386: Correction to GetIntRegisterBetween to ensure we only get 8-bit registers that we can actually encode
x86: Additions to OptPass2Movx to better synergise with new CMP optimisation under -O2
* x86_64 Win64 callback implementation: fix building the argument array if the result is passed as a parameter
* TMethodImplementation.HandleCallback: fix building the argument array if the result is passed in a parameter
+ add Handle property to access the TypeInfo pointer of the TRttiType
* move initialization of TValue to a separate method to avoid duplicate implementations
+ add Rtti types for static and dynamic arrays
+ added tests
+ add TValue.FromArray to create a TValue type for a static or dynamic array from an array of TValues
+ added test
* i386 callback implementation: only skip the result argument if it was detected as one from the parameters
* i386 invoke implementation: check the correct argument in the second pass
Refactoring of OptPass2Movx to remove goto
Fixed bug in MovxMovx2Movx optimisation that would specify a 64-bit destination instead of 32-bit one
* rtl-console: always compile Amiga KVM units in OBJFPC mode. This makes it easier to compile these units outside of this package
* rtl-console: slight refactor of how Amiga SysUpdateScreen() addresses the videobuf. this results in slightly more optimal code with less complex addressing, which helps low-end processors
* rtl-console: on Amiga, remove the initial testing of the buffer for changes. it just slowed things down with frequent partial updates, especially on low-end processors with limited or no data cache
* rtl-console: on Amiga added a custom screen update call, to do partial screen updates. doing a full update can be very slow on low-end systems (checking the entire screen buffer every time), so software tuned for these can now request partial updates, when the updated already is already known
* TObject.InitInstance got very big so inlining has no advantage anymore, resolves
gitlab 0039494
* patch by Rika: another improvement of cutils.newalignment, part of
gitlab 0039496
Procedure-saved registers are now recorded for peephole optimizers to use
JccAdd2SetccAdd modified to make use of GetIntRegisterBetween
* rtl-console: generalized the partial screen update feature which was added to Amiga. the function was renamed to UpdateScreenArea(). it's still an empty call on other platforms, that falls back to UpdateScreen() but the infrastructure is now there to support it.
* rtl-console: fix ; in the previous commit
* libffi: fix abi declarations for x86_64
rtl/osheap: fixed a dumb reversed condition in osheap/SysAllocMem()
* use an anonymous symbol for the record operator table as its typing is different for each incarnation anyway
* Amiga-likes: set some sensible heapsize defaults, for OSHeap support
rtl/amiga: add support for OSHeap, now default in legacy mode, optional define otherwise
amunits: in agraphics legacy support, use ExecFreeMem (OS call) instead of FreeMem (RTL call) to free the Bitmap which was created using ExecAllocMem
rtl-console/amicommon: set the window's UserPort to nil before closing, as recommended
amunits: added missing WA_Activate handling to the OpenWindow taglist handling legacy support code
amunits: added missing WA_Borderless handling to the OpenWindow taglist handling legacy support code
rtl-console: use videoDefaultFlags variable on Amiga for WA_Flags. disable smartrefresh in full screen, also respect the FPC_VIDEO_SIMPLEREFRESH env var
* Fix memleak and compiler hints
rtl/amiga: in legacy MatchFirst, revert back to the original directory if we used CurrentDir(0), otherwise MatchFirst() will change the directory to SYS: (0 lock is a shortcut to the boot volume)
rtl/amiga: do not UnLock the initial lock returned by CurrentDir in legacy MatchFirst
rtl/amiga: make sure FileInfoBlock used by legacy MatchFirst is longword aligned
rtl/amiga: added some basic infrastructure to MatchFirst to improve pattern matching in the future
rtl/amiga: fixed the FileInfoBlock copy to the Anchor chain which broke recently with the alignment fixes
rtl/amiga: added minimalistic #?. and *. pattern matching to legacy MatchFirst
MOV/CMP optimisation is now in both Pass 1 and Pass 2 to catch more
eventualities
* Position stream on start
* Some fixes & improvements
* Initialize APIRequestName
* fpjsonvalue unit to convert between TValue (RTTI unit) and JSON
* build json-rpc using invoke
rtl-console: quickfix for Amiga UpdateScreenArea() so it properly updates multiple lines
* Move resourcestrings to single unit
* Some clarifying comments
* Some clarifying comments
* Some cleanup, add file headers
+ LZCNTSupport
+ test extended
Checking the protocol version for websocket is not required on the client side.
* allow %... for binary constants in delphi mode, resolves
gitlab 0039503
* Add Ant/JUnit alike XML test-output format
* out and var are reserved words
* Prepend T when writing pointer types and PrependTypes is set
* Add linking examples, change pcchar to pchar
+ modeswitch UNDERSCOREISSEPERATOR, active by default in delphi modes:
support _ as seperator in numbers, it is ignored while reading them, resolves
gitlab 0039504
Additional copyright header
+ x86: ADXSupport
+ x86: RDSEEDSupport
Debugging code in AllocRegBetween is now safer and more accurate, and p2 can no longer be nil
Remove sortalgs unit for wasm32 CPU instead of only wasi target, as it is the wasm32 cpu that does not support gotos
Add wasm32 CPU handling in embedded target
Enable rtti unit compilation for symbian OS, to fix failure in fcl-json
* (modified) patch by Rika: optutils.SetNodeSucessors improvement, resolves
gitlab 0039509
* compilation with -Oodfa fixed
* fix
gitlab 0039506: add assignment operator overloads for all string types so that assignments of constant strings can be handled correctly
+ added adjusted/extended test (the test isn't enabled by default however as it requires libffi on most platforms)
* DefinitelyTyped now converts
PostPeepholeOptTestOr now removes TEST when dealing with POPCNT and LZCNT
Use different library link lists for esp8266-rtos-sdk v3.3 and v3.4.
Added a connection event when clients connect to the server.
The disconnect event is now called once instead of three.
Fixed error if payload = 0
* Use resource strings, add const to string params where appropriate
* Remove debugging statements
* Fix warnings & hints, use resourcestrings, add const where appropriate
Avoid range check error inside tcgcasenode.pass_generate_code method
Ignore NR_DEFAULTFLAGS for ait_regalloc, because there is no default flags for JVM
New backward MOV optimisation
New POPCNT tests to evaluate new optimisations
* clean up of assembler files not used anymore
* updated revision after 53e5a4a0
* powerpc64-linux: unused assembler loader files removed
Add help message for xtensa-freertos -WP option
Typecasting to int64 type fixes the exception.
pas2js: compileserver: set default port 3000
Add unit dependencies for arm and aarch64 specific units
Update fpcmake.inc after addition of aarch64-embedded target
Added reason for closing the connection.
Add libraries required to link simple example with esp8266-rtos-sdk v3.3
* apply patch by Blaise.ru:
- avoid creation of a dummy typesym just to call parse_var_proc_directives() by introducing a new parse_proctype_directives() that takes a tprocvardef instead of a symbol like the former does
- have parse_var_proc_directives() call parse_proctype_directives() to avoid duplicated code
* apply patch by Blaise.ru:
- all call sites of parse_var_proc_directives() have the tprocvardef easily available, so use parse_proctype_directives() directly
- remove the now no longer required parse_var_proc_directives()
* apply patch by Blaise.ru: parse_object_proc_directives() and parse_object_record_directives() should only be called with procdefs, so change the parameter from tabstractprocdef to tprocdef to make this explicit
* apply part of patch by Blaise.ru: check only once whether writable consts are enabled or not by determining the type of the assembly list earlier (it's only not needed in an error case anyway)
* apply part of patch by Blaise.ru: reduce code duplication when parsing anonymous procvar types
- apply patch by Blaise.ru: pdflags are no longer required in generate_specialization_phase2() after parse_proc_directives() was done, so remove its unused modification after that call
* throw an error if raise is called in a noreturn subroutine outside of any exception frame, resolves
gitlab 0039514
* apply patch by Blaise.ru: reject assignments of instance methods, accessed via a type, to method pointers
+ add tests
* apply patch by Blaise.ru: avoid internal error when assigning class methods, accessed via a class reference type, to incompatible procvars
+ added tests
* apply patch by Blaise.ru: proper code generation for assigning class non-static methods, accessed via a class reference type, to method pointers
+ added test
* x86: Fixes to GetInt/MMRegisterBetween assignments
Turn TCallCandidates into an object, make it create FIgnoredCandidateProcs on demand, and outline such adding on demand into dedicated TFPList.AddOnDemand.
* Patch from Yuri Silver to read data correctly. fix issue 39517
Websocket server correct work with Ping Pong
* New UpdateUsedRegsBetween utility subroutine
* x86: OptPass1_V_MOVAP now uses GetNextInstructionUsingReg and UpdateUsedRegsBetween
Fixed Internal Error 2020120501 number clash
Added reaction for incorrect reserved bits.
Added processing of reserved opcodes.
+ apply patch by Blaise.ru: allow initialisation of method pointers with class methods (when class types are
known at compile time)
* adjust error message when a method pointer isn't suitable
+ add tests
* regenerate msg{idx,txt}.inc after message change in last commit
* fixes for fpc_Val_SInt_ShortStr by Bart B
+ new test for fpc_Val_SInt_ShortStr
+ benchmark
* reordered condition so they can be evaluated quicker
Control message must not be fragmented.
Java: adapt FPC_ANSISTR_UNIQUE signature
Conform to change made in 800bb3adc23
Fix compilation of the two tests for jvm-android target
* updated version by Bart B
* optimze case
* few formatting changes
Use '.rodata' for read-only data section for aarch64 CPU
* fix
gitlab 0039519: apply patch by Julian Puhl to enable OpenAL for Win64
* fpc_Val_SInt_ShortStr: bug fixes and improvements by Bart B
Fixed fragmentation of incoming messages.
* fix test for improved fpc_Val_SInt_ShortStr
New MOV optimisation that helps reduce instruction count and memory accesses
+ add method ResetSourceLines to TExternalAssembler to reset already written lines
* reset written source lines once a section is encountered
pas2js: compileserver exitcode 1 on ESocketError
Remove fall-through logic and separate idf_version checks of esp32 and esp8266. Also warn if idf_version is below the supported range.
UTF-8 support for message.
All Autobahn testsuite tests passed
* patch by Bart B to fix the value of Code for unsigned types if the input is negative, resolves
gitlab 0039523
+ DestSize parameter for fpc_Val_UInt functions
Refactoring procedures in aoptx86 to gain speed boosts
Merge foreachnodes into one version that uses a context object.
Add a bound parameter to node_count(_weighted).
Allocate THashSet item and its key together when FOwnKeys=true.
* enable brenchmark to be compiled with -Sh
Get rid of some global variables.
Added missing units for websocket client example
pas2js: compileserver: added cmd line option interface
o patch by Bart B:
* fixes fpc_Val_UInt_Shortstr, part of
gitlab 0015633
* fpc_val_qword_shortstr uses the ValueArray constant
* tests fixed after last commit
Fixed and refactored MOVX optimisation that occasionally caused crashes on i386 platforms
* patch by Bart B: fixes fpc_val_word_shortstr() and refactors fpc_val_longword_shortstr() so that it uses the same algorithm and naming conventions as the other unsigned val-helpers.
Correct linker script for aarch64-embedded
Start address was wrong, should be 0x80000, not 0x8000
* extract a symbol or def from its previous owner if that owner has OwnsObjects set to true
+ provide a tsym based variant of ChangeOwnerAndName
* a function also captures other nested functions when these are called
* generate a better name if the procdef is an anonymous one
+ add method register_implemented_interface to tobjectdef which registers an implemented interface and - if desired - also initializes the GUID related fields of the objectdef
* use that method in all locations outside symdef that add add an implemented interface
Based on work by Blaise.ru
* all val helpers now use the ValValueArray
* regenerate packages\wasmtime with an up to date fpcmake
Add link unit for esp-idf v4.1. Version checks to allow for different patch levels in idf_version.
GenerateDefaultLinkerScripts should set out_ld_filename.
esp32.rom.api.ld was only introduced in esp-idf v4.3. Remove invalid linker search path.
pas2js: compileserver: added commandline param --version
* High() and Length() for dynamic arrays deal with sizesinttype instead of ossinttype (on AVR the former is 16-bit while the later is 8-bit thus this is an important distinction)
+ MovapXComisX2ComisX2 optimization
+ add constants for the Invoke symbol of a function reference interface (both for declaring and finding it)
+ add utility function to retrieve the invoke procdef of a function reference interface
* regenerate all makefiles with latest fpcmake
Refactoring and bug fix in OptPass2Movx that could cause incorrect
values in overflow conditions
* test does not need to use sysutils anymore
* some fixes for 8 Bit CPUs
* do not use sysutils anymore
Fix compilation of jvm-java and jvm-android rtl
* Aarch64: operations affect always the full 64 bit register, so
TCpuAsmOptimizer.RegLoadedWithNewValue can use SuperRegistersEq
+ Aarch64: SxthSxtw2Sxth optimization
* fpc_AnsiStr_To_ShortStr: set length before moving, should result in better memory access pattern
* Pass 2 can now be run multiple times when
under -O3 and above.
Added correct flag tracking for JccMov2CMov optimisations
* change cgsize2subreg and reg_cgsize on Z80 to behave more like they do on AVR; this fixes compilation of Z80 now that the array and string length fields are indeed of type SizeSInt instead of OSSInt
+ routines to test for AVX512VNNI and AVX512BITALG support
* Change return type of some functions, so -1 can actually be returned, patch by Zeljko Avramovic (issue 39268).
* avoid warning/error on uninitialized variable
* more false positives of unintialized varibles worked around
* move the handling of the symbol found in factor_read_id to a separate function
* ensure that an expression that involves an overloaded generic in mode Delphi isn't handled as a specialization if it shouldn't be
+ added tests
* ensure that result of factor_handle_sym is initialized
* Small safety precaution
* check also for 64 bit registers in TX86AsmOptimizer.RegModifiedByInstruction
+ test for already fixed bug so this avoids that is is reintroduced
Fix linker commandline for m68k-atari
CMOV now modifies rather than writes to the destination register so RegUsedAfterInstruction behaves properly
Fix linker script for atari/gnu ld
Fix fullinstall make target
Add possibility to pass jvm target compilation parameters and clean up if no problem is detected
Disable h2pas utils package for wasm32 as this CPU does not support goto
* m68k-sinclairql: fix the inclusion of the target proper
+ fix support for 8-byte records, held in a register pair on the WebAssembly target. This fixes
gitlab 0039524
Client support of HTTP over unix socket
* adjust parse_proctype_directives so that it can handle a function reference as well
Disable utils tply package for all wasm32 targets as it uses goto's
+ m68k-atari: fixed bogus TOS program flags passed to VLink. added -WF argument to allow the user to specify their own flags if needed
* regenerated message includes
* m68k-atari: make the Atari target use 68000 CPU as default
* m68k-atari: make the Atari target always default to VLink, even for crosscompilers
* m68k-atari: make vasm the default assembler. also don't claim we have an internal linker
* rtl/atari: get rid of the old prt0.as startup code, which is not in use any more. this way, we do not require GAS any more for a build
* rtl/atari: do not default to tinyheap for now. the compiler itself doesn't work with tinyheap for some reason
Fixed registers in references not being tracked properly in MovMovXX2MovXX 1 optimisation
fphttpclient - only handle Unix in conditional compilation for UnixSocketPath feature
Add internalerror if ogwasm tries to write unset Func/Global or TagIndex of TWasmObjSymbol
Added TranslatePlaceholderCP before Wide2AnsiMoveProc call.
In the fpc_setstring_ansistr_pwidechar procedure, before calling Wide2AnsiMoveProc, the translation cp = 0 to the DefaultSystemCodePage has been added.
Note: In all other places such translation is present.
Added TranslatePlaceholderCP in fpc_Read_Text_AnsiStr procedure.
This is a small optimization.
+ added wasi to the list of targets without thread support
+ define USE_NOTHREADMANAGER in the WASI system unit
* when adding WebAssembly object info, traverse through current_module.used_units,
as well as the usedunits global. This resolves
gitlab 0039543
Optimized the comparison of a widestring variable with ''
Fixed optimization `Length(W)=0` -> `(Pointer(W)=nil) or (PLongword(Pointer(W)-4)^=0)` for WideString
* name of result variable of anonymous functions can be changed (and must be in modes without modeswitch Result)
* extend parse_proctype_directives to handle proc(var)defs as well as invokables
* adjust handle_calling_convention so that it can be used with both proc(var)defs and invokables
* correctly handle directives for anonymous functions
* Sample to demonstrate generating/showing/checking a TOTP
Allow WideChar const to UTF8String const conversion
Added test to check WideChar const to UTF8String const conversion
* handle result type of unsigned ordinal operations in ISO/Extpas mode similiar to TP, solves
gitlab 0037875
Fix memory leak - avoid handler allocation when not needed
* Removed unused parameter
* Section-offsets have 64 bits in the Dwarf-64 format
Update build and link requirements for esp-idf v4.4. Refactor the version dependent linker fragments list into an array of version specific array of strings for easier updating in future.
* Update to upstream implementation by Alexey Torgashin. Fix issue
gitlab 0039423
* Use correct define for tests 51/52
Improved JccMov1JmpMov0Jmp -> SETcc optimisation
* declare the type symbol of an internal def as sp_internal
+ add a constructor for trecorddef to declare an internal record type as part of a specific other type
Based on code by Blaise.ru
* make the VMT symbol and type def of the corresponding class or object instead of having them be global
* bump PPU version to avoid potential compilation errors due to this
Based on code by Blaise.ru
atari: pass tos exe flags also to ld
atari: implement ARGV protocol for runtime startup
atari: implement environment functions
atari: add -Wt option to allow specifying the executable format
This is useful to create aoutmint format binaries using vlink,
which have a symbol table that has no limit for the name length.
Retry incase of thread initialization failure
pas2js: fixed init external class RTTI
fcl-json: clean up, updated TestStrings
fcl-js: switched to TypedParams
pastojs: switched to TypedParams
fcl-passrc: fixed sourcepos of member const
pastojs: using TJSVariableStatement.VarDecl
pastojs: less string warnings
In case of incorrect shutdown of the client. The buffer may return =0. There will be an exception.
atari: add missing bios/xbios/gemdos functions
todo: Some newer MiNT functions
atari: add missing AES/VDI definitions and functions
+ some MIPS64 stuff added to the Makefiles
atari: add missing type LongIntFunc to tos unit
rtl/atari: check for application/acc at startup
pastojs: debug log for pas2jslib
pastojs: fixed Setlength(unicodestring) issue 39208
pastojs: write sourceMappingURL only if map file enabled, issue 39210
atari: add some more AES/VDI functions
* mips64el compiler can be compiled
* tosunits: tabs 2 spaces fix in the TOS unit
* tosunits: add some required defines about compiler mode, strings, alignment in the TOS unit
* tosunits: do not use functions which convert between shortstring and a char array via an AnsiString in TOS unit
* tosunits: remove the sysutils dependency from TOS unit, it's no longer needed
* tosunits: tabs 2 spaces fix in MetaDOS
* tosunits: add {$PACKRECORDS 2} everywhere, just in case
* rtl/atari: naming: gemdos_free is actually gemdos_mfree. no functional change.
* rtl/atari: use the haltproc declared in the startup code instead of calling pterm in the system unit directly.
* rtl/atari: fix haltproc external name. apparently the atari target uses a different Cprefix in the compiler, so copy-pasting this stuff from the Amiga port don't work 1:1
fcl-passrc: fixed attributes of interface types issue 39198
pastojs: fixed await() as aclass, issue 39028
pastojs: consistent error message on custom js file not found, issue 38978
pastojs: calling constructor of nested external class, issue 38858
mips64 define must also set mips
Also set mipseb or mipsel macro for 64-bit mips CPU
Add default macros inoptions unit for mips64 and mips64el CPUs
Set float type information in system interface part for mips64 and mips64el CPUs
+ use linux tag in gitlab-ci.yml
Add use of SD instruction in tcgmips.a_load_reg_ref method
tosunits: variable basepage needs to be visible by applications
atari: add metados functions to tos interface
atari: make control array of gem_pbb PurePascal compatible
Applications expect it to be an array, not a record.
* dts2pas added for next pas2js release
atari: fix external linkage of graf_movebox/graf_rubberbox
* Shorter version of libimports
rtl/atari: implement environment functions also in dos unit
* move checking for a def in the hierarchy to a separate nested function and use it to check the hierarchy of the current def being specialized as well
* check hierarchy of the current generic or specialization def independant of whether it's a record- or objectdef
+ add a field to denote that a symbol (mainly local and parameter ones) was captured through another symbol
* don't check for a duplicate internal symbol in inherited symtables
* set the type symbol of the procvar while it is parsed so that a function reference can have itself as part of the parameters or the return type
* set the flag that the symtable contains a generic at the end of the corresponding block of types_dec() to ensure that the owner is assigned correctly
+ add function funcref_equal to check whether two function references are considered equal enough to be assignable
* consider invokables as related when they're equal
* correctly handle calling convention for function references
* protected symbols are visible for defs declared in a local symtable as well
+ some basic stuff for MIPS64
* rtl/atari: add the standalone softfpu units to the Atari build. this fixes the Atari native compiler build after recent changes
* register MIPS64 targets properly
+ add utility function to retrieve a file position of a usage of a type symbol from a type's definition
* an internal definition in a specialization might not have a genericdef
* if a symbol is not part of a symtable then assume it's from the current module
+ add an error message for when a symbol can't be captured
* regenerate msg{idx,txt}.inc
+ add necessary core functions and functionality to implement capturing of variables
Based on code by Blaise.ru
* do not insert the $result symbol again when the VMT for the capturer is built
+ add function to check whether a procdef can be converted to a function reference
* two function references are equal to each other as long as their signatures match
+ implement necessary functionality in tcgprocinfo to initialize and populate the capturer
Based on code by Blaise.ru
atari: new unit gemcommon was missing from fpmake
+ add tests for function references, anonymous functions and C-blocks
+ startup code skeleton for MIPS64
pastojs: export from units
* aros64: recent developments hanged the library call ABI, lets try to follow it (aros64 is experimental)
atari/sysos: use the symbolic names for error numbers
rtl/atari: fix readln from console
atari: add nf_ops unit to access NatFeats from emulators
rtl-extra: add printer unit for atari
* also handle function references when a generic one had been parsed
pastojs: library added rtl.run, moved exports behind rtl.run, fixed export unit symbols
+ add flag to denote an object def as a function reference
+ add support for parsing function references
* revert accidently committed code
+ skeletons for mips64el specific files
+ add flag to denote that an objectdef is invokable, thus can be used like a function variable
+ add utility function to check whether an objectdef is an invokable one
* if an interface is declared inherit the invokable flag from the parent interface
* sorted defines in the compiler: mips64 is defined on all 64 Bit mips platforms, mips64el for little endian, misp64eb for big endian
+ additional skeleton files for mips64
tosunits: provide alternative names for members of GRECT
tosunits: declare some var parameters as out, to avoid warnings
tosunits: remove some unused locals
tosunits: fix a bug in vq_extnd
pastojs: started test TPas2JSUseAnalyzer
* Added DetectBOM to TCSVDocument
pastojs: changed library exports to export const statements
+ store also ecx and edx after cpuid call with eax=7
+ test VNNI and BIGALG instructions
Fixed bug on x86 platforms where the stack pointer was not allocated if it was different to the frame pointer
* m68k: do not generate unnecessary unaligned load sequences for byte loads into registers, this fixes tcnvint1 test on plain 68000
* m68k: don't attempt to copy less than 1 byte in g_concatcopy, this fixes tdfa7.pp on 68000 and removes some superfluous address processing on 68020+ in the same test
* m68k: implement basic support for interlocked functions using a TAS based global spinlock on CPUs which don't have the CAS instruction
* Some streamlining in x86's OptPass1LEA routine now that the stack
pointer is properly tracked, which also permits some deeper
optimisations on -O1 and -O2 virtually for free.
+ add utility function to check whether an invokable can be invoked without explicit parameters
tosunits: simplify some pointer assignments
pastojs: mark record fields as used when passing record to a jsvalue parameter
pastojs: mark record fields as used when passing record to a jsvalue parameter
tosunits: fix a bug in objc_find
tosunits: fix a bug in vsl_width
tosunits: fix a bug in menu_tnormal
pastojs: do not write rtl.run for platform module
pastojs: fixed find generic proc overload without params, issue 38796
pastojs: add rtl.run() on platform module
* setting of MIPS64(EL) in system.inc fixed
* MIPS64 can
* MIPS64 does not need separate 64 bit code path for ordinals
rtl-extra: fix printer device
* m68k: some CPUs don't have TAS either (for example some CF)
fcl-passrc: fixed generic method with Self do
+ add a new tproccopytyp pc_normal_no_paras to copy an abstractprocdef without its parameters (useful if the parameters themselves will be reused and the original def otherwise deleted)
Fix leak due to bad merge or rebase
rtl/atari: move common code of getenv
rtl/atari: try to convert argv[0] to absolute pathname
atari: support ARGV protocol in ExecuteProcess
vdi: add some extra checks for functions that are not always present
vdi: enlarge control array, needed by some NVDI5 functions
fcl-passrc: fixed method combining overload and override
* Normalize route when checking for duplicate routes. Fix issue
gitlab 0039570
fcl-passrc: UseTypeInfo of record and class: skip generic elements
fcl-passrc: useanalyzer: skip not used record methods for typeinfo
* do not copy parameters onto the stack using FPU registers if the type is
actually handled by the MM unit, resolves
gitlab 0039567
tosunits: add a missing copyright header
+ add C/C++ object files for aarch64-win64 compiled with LLVM 13.0.0
wasm32 compiler target required -dNOOPT option
Adding common directory for riscv32/64 and -dNOOPT for wasm32
Add newer Compiler targets: riscv32/riscv64/xtena/wasm32 and z80
Set correct exetension for cross-IDE
* fix declocked(longint) for aarch64 without LSE, resolves
gitlab 0039569
Disable range and overflow checks inside detect_linuxvcs procedure
tosunits: add a missing copyright header
+ support conversion between legancy and enhanced console in UpdateScreenArea
* Amiga compilation fix after merge of unicodekvm branch
* win16 compilation fix after merge of unicodekvm branch
+ added dependency to rtl-unicode for the ide package
* Fix case sensitivity of macro value
* Operator name can now also be finalize
* avoid range check error and overflow in objpas.hash, should resolve
gitlab 0039561
* Finalize does not need result
AmigaOS4: fix compilation for double UTF8Encode in library unit and system
* Copy & AddRef operators
Revert "+ added dependency to rtl-unicode for the ide package"
This reverts commit 153baf41ce46448440b170f8d0d175953bd17f24.
testobj3: fix test
Use RTL StringRefCount instead of local GetRefCount that only supports some
platforms and depends on the internal layout of ansistring headers
* m68k: fix an instruction which doesn't exist on ColdFire
fcl-js: fixed compile with pas2js
fcl-passrc: fixed publish all members for typeinfo
fcl-passrc: fixed resourcestring
pastojs: compile with pas2js
- removed superfluous comment
tosunits: fix the package build for Coldfire
Amiga: Fix for unable to type in FV applications for Amiga-systems
+ emit an error message if the ihxutil is not found when compiling an ZX Spectrum executable with the internal linker
+ emit a 'tried' message (fpc -vt) when using ihxutil for ZX Spectrum
* tosunits: fix the cube spin on systems other than original TOS/EmuTOS, patch by mfro in atari-forum.com
atari: some small bug fixes to new bindings
* new RawByteString and UnicodeString methods and objects in the 'objects' unit
put behind ifdefs (FPC_HAS_FEATURE_ANSISTRINGS,
FPC_HAS_FEATURE_UNICODESTRINGS, FPC_HAS_CPSTRING) to fix compilation on
embedded systems
* fixed object names in comments
+ compile the charset unit for Win16. This fixes compilation after the
unicodekvm branch merge.
* regenerate all makefiles with the latest fpcmake
+ enabled compilation of unit 'cpu' for win16
+ enabled compilation of unit getopts for win16
+ enabled compilation of cpall and all its codepages for Win16
+ enabled compilation of unit unicodenumtable for win16
+ enabled compilation of unit unicodedata for win16
* use unit rtlconsts instead of rtlconst for win16
+ enabled compilation of unit character for win16
+ enabled compilation of unit ctypes for win16
* tosunits: rename gemcommon to gemcmmn so the unit name fits 8.3 limitations
Fix gcc options for mips CPU
tosunits: honor the window rectangle list in examples
* tosunits: tabs to spaces and indendation change in gem.pas. no functional change.
* m68k-atari: override the exeext globally, not just at the final step of the linking. this fixes 'Linking .ttp' messages, when in fact .prg gets generated
* tosunits: add metados to the compilable units, reported and patch by mfro on atari-forum.com
Resolve address of a symbol defined as absolute of another symbol, in assembler code.
Update utils/fpcm/revision.inc after commit 8d65554495 dated 2022/02/13
+ test for last commit (44094dba2f96fcc6c252f9c42398b6740edb85a1)
Fix compilation of mips64 compiler by simple use of 'make mips64'
Fix loading of 64-bit constant into register for 64-bit mips CPU
Fix invalid typecast by postponing sym change to after address resolution in 44094dba
* Local speedup in OptPass1LEA that avoids expensive calls if p and
hp1 are adjacent.
Update utils/fpcm/revision.inc after commit 6bded28a10
Enable mips64-linux target
Regenerate Makefile's with mips gcc fixes and new enabled mips64-linux target
Update utils/fpcm/revision.inc to commit d0db89072e
- removed probably accidently commited IDE configuration files
* if an invokable that isn't a function reference is followed by a point in a mode that doesn't use TP/Delphi style calling without parameters then don't call it like is done with normal procvars
- removed spurious comment
* use 'with' in tlinkerwasi.SetDefaultInfo
* set and use ExeCmd instead of DllCmd when making an WASI executable
* some fixes to the WASI library compilation (not ready, yet)
+ added separate startup code for libraries, that declares _initialize, instead of _start
- removed --allow-undefined linker option when compiling a WASI library
- removed commented out code for executing WASI dllcmd[2]
- don't pass --export-dynamic to the linker when linking a library for the WASI target
* x86: Improvements to JccMov2CMov to catch Jcc @Lbl; ; JMP @Lbl
fcl-passc: removed testpasutils.pas
Add missing rtl/mips64 files and fix some rtl/mips64el files
* hopefully final fix for absolute references to absolute symbols
+ patch by Bart B: TBucketList threw access violations after Clear, resolves
gitlab 0039565
+ test
- don't write the wasm-ld command line to the screen when linking a WASM
library. The command line, passed to the linker is dumped when compiling with
-vv anyway.
* Patch by Dokkie8844, better whitespace handling: fix issue
gitlab 0039557
* handle frac(+/-Inf or Nan) correctly in the software implementation, resolves
gitlab 0039584
* move determine_generic_def out from pdecl.types_dec to pgenutil
* extract the code to parse a forward declaration out from types_dec into its own function parse_forward_declaration
+ add ability to strictly compare defs with generic constraints (this is needed for declarations, while for normal code we're rather relaxed)
+ add a method to retrieve a copy of a specialization context
+ add support for forward declarations of generic classes and interfaces (any implicit pointer type really); fixes
gitlab 0034128
+ support for generic forward declarations fixes
gitlab 0039581, so add a test for it
+ support for generic forward declarations fixes
gitlab 0039582, so add a test for it
* fix typos in comments, no code changes
pastojs: set version to 2.3.1
* Implement ExtractIdentifierNames: fix issue 39454
* Standalone tag fix from Dokkie884
* Patch from Dokkie884 to implement inheritance
* just copy value parameters to a temp. when inlining instead of
using (@...)^ constructs, resolves
gitlab 0039590
* Add -s --settings option
Add section directive for subroutines for embedded and freertos systems.
* throw an internal error if the reference of lea contains a segment register
* Extra options for more flexibility
* powerpc-morphos: add support for linker map file generation, some code cleanups
help text: vlink is no longer default on MorphOS for a while now, remove from help text, add Atari and Sinclair QL where it is the default
* regenerated message files
Try to fix mips gcc troubles
* reorder string expressions with parentheses so fpc_*_concat_multi can be used efficiently, resolved
gitlab 0039479
Move member variable "section" to tprocdef. Type of "section" to agree with symansistr define.
* throw error properly if a target does not support sections
* z80-msxdos: cleaned up some msdos leftovers in i_msxdos. no functional changes.
fcl-web: added IWSTransport.PeerPort, fixed compile with fpc 3.2.2
fcl-base: fixed compile fpthreadpool with fpc 3.2.2
fcl-web: added property TWebSocketServer.Host
* x86: Fix to MOV/CMP register deallocation positioning
* x86: RegModifiedByInstruction and RegInInstruction
are now more accurate for (I)MUL and (I)DIV.
fcl-net: no ESocketError after closing the connection
* var, type, threadvar, const sections require also in classes etc. at least one declaration, resolves
gitlab 0039599
* revert a650d346f1646c1b71380430a96c440e222a087d for now as it apparently does
not work with all language encoding
* building for LLVM fixed
* do not throw an internal error in case of a misplaced string, resolves
gitlab 0039609
* add .prg extension to be ignored by git. this is used on Atari and a number of 8 bit platforms for executables
* m68k: allow vasm to be used for system_m68k_embedded target, simplify some code
* embedded: cleanup of the dummy DOS unit. remove the stubs for platform-specific helpers, cleanup tabs/spaces, cleanup the copyright-message mess
* nds: the embedded stub DOS unit was just a copy of the NDS one with minor fixes, so lets make the NDS port use the current cleaned one as well
+ AVX512VBMISupport and AVX512VBMI2Support
* z80-amstradcpc: add some initial files for the target (mostly just the clone of ZX Spectrum files for now)
fcl-passrc: pasuseanalyzer: mark library export function result sub elements
* prevent that a absolute symbol references itself, resolves
gitlab 0039604
* m68k: fix an endless syntax error loop in the assembler reader
* regenerated message files after adding the z80-amstradcpc target files
Update revision.inc to 982071d4a9 hash
Also define CPU_clean make targets for CPUs not yet in CYCLETARGETS, like mips64 now
* i386: make use of *fence instructions
Do not use -m32 option to find generic gcc library
Update to revision 6d26d56f2f
Regenerate all Makefile's to fix problem on x86_64 linux
* cleanup: cs_opt_loopunroll is a generic optimization for a long time already
* z80-amstradcpc: fixed target naming mess, so -Tamstradcpc works now, also fixed the help text
* regenerated message files after CPC naming fix
* Added some clarifying comments for TWSMessage data
* fix MovapXComisX2ComisX2 optimization
* m68k: disable the frame pointer optimization on subarchs that don't support long displacements for now, until the shortcomings of the cg can be addressed
* Publish OnError and OnConnectionHandshake
* m68k: spilling read, write, and replace is now bound to CPU capabilities instead of CPU family. This probably fixes some issues on 68000, where spilling replacement was not respecting CPU displacement handling boundaries, leading to assembler errors.
Extra code generation options for shift with compile time constant.
* fix change information for a lot of MMX instructions
* return the proper shift state in the i8086-msdos keyboard unit GetKeyEvent and
PollKeyEvent (previously, it was truncated, due to the native int being 16-bit
on i8086)
* fixed bug, where left and right shift were swapped in the i8086-msdos
keyboard unit.
* fixed bug, where left and right shift were swapped in the i386-go32v2
keyboard unit as well.
fcl-passrc: fixed parsing class var var
* m68k: fixed the register save/restore for larger than 32K stackframes on subarchs which has no long displacement, to not trash register A0
* more change information fixed
+ introduced the CurrentLegacy2EnhancedKeyEventTranslationCodePage private
variable in the keyboard unit. It is used for translating AsciiChar to
UnicodeChar in non-enhanced (i.e. non-unicode) consoles. It can be initialized
in SysInitKeyboard in non-unicode consoles, so they can return unicode
characters as well.
+ support 83/84-key keyboards in the go32v2 keyboard unit
+ get the current DOS code page in the go32v2 keyboard unit, so enhanced key
events Unicode characters are returned correctly (provided that the cpall and
fpwidestring unit are included as well)
+ get the current code page in the msdos keyboard unit as well
+ support shift+pgup, shift+pgdn, ctrl+shift+pgup and ctrl+shift+pgdn in the
unix keyboard unit
Added test cases for AVR shift by compile time constant.
* more change information updates
Unicode 14, Unicode Collation Algorithm 14, CLDR 40 support.
* m68k: make sure right is in an address register for muln,addn,orn,xorn, before calling the low level cg
* more change information updated
fcl-pasrc: fixed multilinestrings # combos, double backticks become one, fixed apostroph, renamed MultilineStringsTrimLeft, MultilineStringsEOLStyle
+ added properties TEnhancedVideoCell.ForegroundColor and .BackgroundColor,
which can store up to 256 colors
- removed spaces at end of line
* attr2ansi changed to accept separate foreground and background color
parameters, instead of single attribute bytes. No functional changes.
* use separate variables for tracking the foreground and background colors
* copy operator of TEnhancedVideoCell now copies the 8-bit foreground and background colors
+ added 256 color support to the Unix console video unit
* fixed the 256-color support for konsole
* changed the video unit initialization sequence, so that the startup cursor
position is preserved at exit (or when switching to the user screen in the
IDE), when running in xterm or compatible (gnome-terminal, konsole, etc.)
Make pas2jni use cthreads on Unices
* change information updates
AROS: Locks must be BPTR type
+ introduced TEnhancedVideoCell.EnhancedVideoAttributes, based on ECMA-48 and xterm
+ implemented enhanced video attributes in the Unix video unit
+ added test for the enhanced video attributes
+ added second screen to the video4 test, which demonstrates all the attributes (without combining them)
* convert advanced video attributes to legacy attributes (emulating bold, italic,
etc. using colors). Also, the blink attribute is converted correctly now.
* fixed SSSE3 change information
Avoid repeated warnings about libgcc directory
AROS: 64 bit fix for sysutils FileCreate
* change information for SSE4.1 instructions
+ introduced PTCKEY_LESS (the 102th key on international keyboards, <> when
used with US keyboard layout)
AROS: 64bit fixes, synchronized to official ABIv11 includes
* change information for SSE 4.2 instructions
fcl-passrc: anonymous procedure type
fcl-passrc: forbid nested anonymous procedure type
fcl-passrc: fixed mem leak on error during parsing function type
fcl-passrc: test forbidden anonymous function types
* AES instruction change information fixed
* ifoWriteString boolean renamed to ifoStringBoolean., read will now also observe ifoStringBoolean. Fix issue
gitlab 0039625
* few more updated change information entries
fcl-passrc: resolver: allow anonymous records only for var, const and variants
* continued to update change information
m68k: utilize cg.a_loadaddr_ref_cgpara in hlcgcpu, as m68k has an instruction for loading addresses directly to the stack (PEA), and the default implementation of hlcg.a_loadaddr_ref_cgpara doesn't use that code path
fcl-passrc: anonymous records
fcl-passrc: do not allocate a temp list
Revert "m68k: utilize cg.a_loadaddr_ref_cgpara in hlcgcpu" for now, turns out it's not needed
* continued to update change information
* use v*csr instructions if they are available
Unicode source code's size reduction: short field names, delete unicodenumtable.pas.
Unicode' unicodenumtable.pas removed : update Makefile.fpc.
* another change information update
* more change information
* initialized some fields and data to -1 to make the results more similar to the slave chm (merged_chapter/example1/slave1) example.
Now only
- the checksum at $4
- the number of topics (different issue)
- the offset of framename in #strings differs.
* Correct whitespace definition
* Test from Inoussa to test NormalizeNFD
* finished change information for AVX1 instructions
AROS: 64-bit filehandle compatibility/consistency fixes for ASYS_FileList related routines
AROS: 64-bit filehandle compatibility fixes for doslibf.inc
Regenerate Makefile's with trunk fpcmake
* completed change information for AVX-2
Fix compilation by removing unicodenumtable unit
* Fix parsing of bootstrap
* change information for AVX-512 mask register instructions
* started with change information for AVX-512
pastojs: added option ObfuscateLocalIdentifiers
pastojs: fixed searching TJSPromise in global scopes
Add x86_64 CPU to list requiring fpux80 support
* extend tabstractprocdef.getcopyas by a parameter to control whether the copy should be registered or not
* rework tprocsym.Find_procdef_byprocvardef so that its implementation can be used in a more generic manner
+ add method tprocsym.Find_procdef_by_funcrefdef to find a procdef that's compatible with the specified function reference
* make tprocinfo.addnestedproc public so that it can be used to add generated functions
* do not throw an error if syscall is used with a syntax not applicable for the current
target, resolves
gitlab 0039640
Installer now also depends on rtl-unicode package
* fix
gitlab 0035261: apply slightly adjusted changes by Ryan Joseph to implement support for implicit generic function specializations
The main adjustments were as follows:
- fixing coding style and identation
- fixing some typos
- using a better name for the property in tcallcandidates which holds the symbols created for anonymous parameter values
* probably check type for int_to_real instruction selection
* Numeric chars allowed in identifier, no need to escape
* Test for stringtoidentifier
* CGI demo for css minimizer/classname extractor
Symbolic constants: don't range check on use
If these constants are defined with an explicit type, they are already
truncated/checked at that point. If we range check them again on use, we
may get errors because at that point there is no explicit type cast
any more.
* make __lib_csu* weak symbols on m68k-linux
* [x86] Added new RefsMightOverlap method and implemented it into the XMM memory move optimisations to catch memory overlaps; fixes bug i39627
Symbolic constants: don't range check on in use in typed constants
Same as 3da54dcf9f, but this type when used in type constant definitions
like record fiels
AArch64 asm reader: add support for fpcmp(e) conditions
Resolves
gitlab 0039643
* i386: make also use of VCVTUSI2S* instruction if possible
* check more cpuid flags in the cpu units
* x86: m128 etc. are now vector arrays (giving correct memory alignment) and "use_vectorfpu" will return True for these types
m68k: opcode table updates based on vasm 1.9 (used with permission)
* factored out tx86typeconvnode.int_to_real_mm_location
* do not crash in case of too many $push directives, resolves
gitlab 0039652
* patch by Cyrax: Quote path - which is passed to Windres or alike program, resolves
gitlab 0036526
LLVM: enable DWARF debug info generation
LLVM: data location debug info support
This was added to LLVM for Fortran arrays, but can also be used for Pascal
dynamic arrays
LLVM: support for attaching metadata to instructions
agllvm: remove useless code
LLVM: factor out writing operands in agllvm
Add several tests for 127 max ID length, related to bug report
gitlab 0039661
Check mf_symansistr is compatible with current compiler mode and issue a message before failing PPU loading
pas2js: removed translation.html, it is now on the wiki https://wiki.freepascal.org/Pas2js_Transpiler
* Compiler error is now thrown if record alignment is not a power of 2 or is greater than 64.
* New tests for aligned records
+ recurse into multiple subscription nodes when calculating contant @... expressions, resolves
gitlab 0039665
* disallow offsetof trick for types involving implicit dereferences, resolves
gitlab 0039667 partially
* x86: New CMP optimisation that mimics some of the CMOV optimisations and removes unnecessary conditions.
* Removed foolish inline from StripLabelFast
agllvm: support for writing specialised metadata nodes
tnodeuitls: merge GenerateObjCImageInfo into InsertObjectInfo
LLVM needs to insert the Objective-C image info into the general object info
metadata. This way we don't need to store a reference to that metadata so
as to add extra data to it later (tnodeutils is never instantiated, it only
contains class methods)
LLVM: assign procdef.procstarttai, like in the regular code generator
* x86: Introduced TrySwapMovOp method, and redesigned TrySwapMovCmp
to use it while also trying to move one more instruction back
* x86: New jump/label tracking in CrossJump optimisations
tfileposinfo: separate types for the fields
Allows other units to declare variables of the appropriate type when storing
those values separately
* Changed -1 to $FFFFFFFF on DWord writes to suppress range check errors
* x86_64: do not use copy_mm in g_concatcopy for 8 byte sized copies
+ add method to find a procinfo for a nested function by the corresponding procdef
* x86: Changed the names of temporary register
stores in OptPass1MOV for reasons of clarity,
and other minor optimisations.
* x86: Extension to CanBeCMOV that permits a potentially unsafe reference if it appears in the previous comparison
* use MOVDQA instead of MOVQ in spilling_create_store
* call OptPass1_V_MOVAP for MOVDQA
* call OptPass1_V_MOVAP for MOVDQA on i386
* x86: Fixed bugs in and refactored and renamed
DoSubAddOpt optimisation method
Typed const builder: store tsym
Useful for LLVM debug info generation
llvmdbg: initial version based on dbgdwarf
Line information is mostly functional, type information not yet (except
for basic procdef info, as that's required for line info)
+ fold "a shl n1 shl n2" and "a shr n1 shr n2" into "a shl (n1+n2)" and "a shr (n1+n2)", resolves
gitlab 0039629
dbgllvm: remove restriction to only write struct procdef in context of struct
Does not make a difference for LLVM since all debug info for procdefs is
assigned to the definition instructions for the procdef anyway, and avoids
issues when only generating line info (in that case the structs will never
be processed, but we still have to generate the basic debug info for their
procdefs to provide a scope for their line info)
Use a set instead of boolean arguments to TCallCandidates.
Outline freeing TFPList with disposing its items into TFPList.FreeAndNilDisposing.
* only abort due to a missing overload directive if there indeed was any procdef found (due to implicit specializations there might be none), fixes compilation of tests webtbs/tw38310b and webtbs/tw38310c
* move handling of a dummy symbol (mainly either resolving it or generating a suitable error) inside single_type to a nested function as the same code is used multiple times
* fix
gitlab 0039673: also resolve the dummy symbol in case this isn't a reuse of the current generic's name
+ added test
* fix
gitlab 0039679 and fix
gitlab 0039680: for implicit specializations a parameter used in a call might also inherit in some depth from a specialization used as parameter type
+ added tests
* the index of the generic type parameter is not the same index of the paras list
+ added test
* a function can't be used to implicitely specialize a specialized procedure variable parameter and vice versa
+ added test
* fix
gitlab 0039681: also handle the result type of a specialized procvar when checking for a possible implicit specialization
+ added test
* fix
gitlab 0039675: consider the symbols for unnamed parameters as used so that there won't be unnecessary hints about them
+ added test
fcl-passrc: resolver: fixed call generic function with anonymous specialize function type
* x86: Improvement to CMP/JE/CMP/@Lbl/SETE ->
CMP/SETE/CMP/SETE/OR optimisation to reduce
pass counts (and work better with improved
FLAGS register allocation).
* use a single if-condition for both check_hints and addsymref
* in case of an implicit specialization ensure that the symbol of the generic is indeed considered as used once the final implicit specialization has been picked
+ added test
* x86: Improved TrySwapMovCmp to insert before
the FLAGS register is allocated.
* more precise test as suggested here: https://gitlab.com/freepascal.org/fpc/source/-/commit/876ae561585c22b9809764710f11b9a88da935ee#note_921869640
* compile always with -CX -XX for Z80
* AVR: fix TAoptBaseCpu.RegModifiedByInstruction, resolves
gitlab 0039623
* AVR: fix TCpuAsmOptimizer.InstructionLoadsFromReg for MOVW
* simplify code for MovMov2Movw optimization
AROS: Remove CPU64 ifdef's ensuring 64-bit compatibility for records/fields
Preparation for the introduction of stack aligned records fields (AROS STACKED
structure members).
Remove unmaintainable superfluous ifdef's that are used inside certain record
structures (in an attempt to use correct padding on 64-bit targets) because
they are not in line with the introduction of stack aligned record fields.
AROS: Change MethodID fields (back) to their original 32-bit (longword) size
Preparations for the introduction of stack aligned record fields (AROS STACKED
structure members).
MethodID really is 32-bit wide so we need to change those back to their
original size.
AROS: Add stack aligned record fields for 32-bit and 64-bit compatibility
Final step that attempts to ensure that fields of particular records are
'STACKED' (stack aligned) properly for both 32 and 64 bit.
AROS introduced STACKED structure members, which are members that are padded
according to the current used stacksize which in itself is based on the target
CPU.
These structures are required to have a particular defined size in memory and
have a particular field alignment, therefor these records are always end-padded
(whether required or not) so that we are able to force the compiler to add
padding depending on the RECORDMIN setting.
Other available FPC directives and/or solutions seem currently not able to
solve that issue and we do not wish to manually check each structure to
determine if it requires end-padding or not (based on bitness) simply because
it is unmaintainable.
This change attempts to ensure that these record structures compile using the
correct memory size and field layout for both 32 and 64-bit CPU's.
The introduction of stack aligned record fields solves a lot of 64-bit related
crashes when working with native OOP such as MUI and BOOPSI.
Note: Not tested on big endian.
* AVR: moved MovMov2Movw optimization into pass2 as it might prevent other optimizations
* Fixed bug in register preservation tracking
LLVM lineinfo: fix nolineinfo generation
LLVM requires line info metadata for all call instructions that may potentially
be inlined. So attach one to all call instructions in nolineinfo regions, but
set their line number to 0 (same as what clang does)
fcl-hash: gitignore testhash
fcl-web: fixed compile tcjwt
llvmtype: ensure all processed defs get recorded
This is necessary so they get reset as well, as they may be reprocessed while
compiling other units (both by llvmtype and dbgllvm)
llvmdbg: add declaration for all DISPFlags
* Add examples for syshelpers from Zeljko Avramovic. Fix issue
gitlab 0039541
* Patch from Alexey Torgashin for unquotechar issue 266. Fix issue
gitlab 0039696
* Use memorystream as a kind of tstringbuilder for json escaping(StringToJSONString), fixes bug
gitlab 0039525
fcl-hash: added HexStrToString
Enabled mouse support for macOS and *BSD. Free Vision apps can now make use of the mouse for these O/Ss.
fcl-hash: asn check boundary, added rsa private/public key parse functions
dbgllvm: create dummy line info for instructions that shouldn't have any
Use line 0 for that, like clang does
dbgllvm: handle array of const (stub)
dbgllvm: handle empty spFlags
fcl-hash: fixed ASNParse_GetIntBytes for ASNSize<8
fcl-hash: fixed HexStrToBytes
fcl-hash: fixed freeing TBigIntContext.BIRadix and migrated to mode objfpc
fcl-hash: rsa encrypt: fixed using non zero padding bytes
fcl-hash: test rsa encrypt/decrypt
fcl-hash: use RDTSCP on i386 and x86-64
llvm metadata: use cardinal instead of tsuperregister for unnamed metadata numbers
We're not putting these into registers, so no need to limit ourselves
dbgllvm: fix infinite loop when writing multi-dimensional array info
AROS 64bit fixes filehandles #2
Solve crashes when opening, closing and managing files for AROS 64-bit when
filehandles are located in memory > 32-bit by making sure the used file
handles are actually of type BPTR/THandle instead of longint/cardinal
(and stays compatible to AROS 32-bit).
* enable random on avr, it does not increase program size if not used
* make test compiling on avr
* avr3 and avr31 should also have a movw instruction
cutils: also use minalign, when varalign equals it, not only when varalign is less than it (21 years old bug?)
fcl-hash: do not call randomize too often
fcl-web: added TJWTSignerRS256
fcl-web: added TJWTSignerRS384, TJWTSignerRS512
fcl-web: RS256 using sign/verify
+ enabled compilation of the package ptc on OpenBSD
+ enabled compilation of units ptcgraph, ptccrt and ptcmouse on OpenBSD
LLVM: fix fileinfo of temp allocations
dbgllvm: fix crash when generating debug info for procdef of imported struct
dbgllvm: fix crash for files without procedures/functions
dbgllvm: add scopeLine attribute for function debug info
Ensures that breaking on the function correctly sets the breakpoint on the
first source line of the function (rather than potentially in the prologue
without line information)
fcl-web: TJWTSignerRSA: prefix hash with ASN1 digest info
+ enabled compilation of unit ptc on FreeBSD
+ enabled compilation of units ptcgraph, ptccrt and ptcmouse on FreeBSD
* Patch from Alexey Torgashin to handle invalid groups. Fix issue
gitlab 0039697
AROS: 32/64-bit RTL exec compatibility update
Update some exec RTL record structures to be 32/64-bit compatible.
Unit Exec was already up-to-date with these changes.
AROS: RTL exec update. Memory sizes are IPTR
Memory sizes are expressed in IPTR/PtrUInt in order to be compatible to both
32 and 64-bit.
Affects both record structures and API call signatures.
See: https://github.com/aros-development-team/AROS/commit/d7df812342ac2bfc7df2fd271c4cab473fe804b3
AROS: Unit exec update. Memory sizes are IPTR
Memory sizes are expressed in IPTR/PtrUInt in order to be compatible to both
32 and 64-bit.
This changes some of Exec API call signatures and should not impact
existing code.
These changes reflect the changes made in the exec RTL (that were present in
the previous commit) but note that Unit Exec record structures were already
up to date.
See: https://github.com/aros-development-team/AROS/commit/d7df812342ac2bfc7df2fd271c4cab473fe804b3
AROS: 32/64-bit RTL doslib compatibility update
Update some doslib RTL record structures to be 32/64-bit compatible.
AROS: 32/64-bit unit amigados compatibility update
Update some amigados record structures to be 32/64-bit compatible.
These changes reflect the changes made in the doslib RTL (that were present in
the previous commit) but note that some of Unit amigados' record structures
were already up to date.
AROS: RTL doslib, record field members update
Update some doslib RTL record field members for AROS compatiblity.
AROS: Unit amigados, record field members update
Update some amigados unit record field members for AROS compatiblity.
These changes reflect the changes made in the doslib RTL (that were present in
the previous commit).
AROS: 32/64-bit RTL utility compatibility update
Update some utility RTL record structures to be 32/64-bit compatible.
Unit Utility was already up-to-date with these changes.
+ use the DEC special graphics character set to draw some non-ASCII characters
on Unix consoles that don't support UTF-8 (or don't have it enabled)
+ use some ASCII replacements for certain non-ASCII characters (used by Free
Vision) on Unix consoles that don't support UTF-8
* allow 32 byte alignment of constants and variables on aarch64-darwin
* Libnettle & dynamically loadable version of libgmp
* Add libnettle into build
fcl-hash: added some asn write functions
fcl-hash: init X509 key with strings, write as ASN and DER
fcl-web: test writing rsa keys as DER, test with RFC 7515 values
* Ignore fonts & output programs
+ AVR: helpers take care of ADIW
* AVR: use adiw to create spilling constants if possible
* AVR: insert allocations for registers used by spilling so the assembler optimizer does not remove spilling code
fcl-hash: added PSS helper functions I2OSP, MGF1SHA256
llvm metadata: counter per unit rather than globally
Results in less high numbers, and reproducible results when partially
rebuilding
llvmdbg: diflags/dispflags fixes
Fix MainSubprogram flag for older LLVM versions, as it was a plain flag rather
than a subprogram flag there.
Added visibility flags for procdefs (public/private/protected)
Write flags as enum rather than integer to avoid issues with changing values
across different LLVM versions
Fix generation of default linker script for esp-idf v4.4
* write number of iterations
+ AVR: track flag usage
+ AVR: take care of allocated flags when spilling
* AVR: trgcpu.do_spill_read might also use ADIW
* do not run test, it is about successful compilation and runtime on weak CPUs is high
* Bug fix that prevents downsizing of
"(x div y) and z" when "x div y" is 64-bit and
z is 32-bit or less. Fixes i39646
fcl-hash: started RSASSA_PSS_SIGN
fcl-hash: started RSASSA_PSS_SIGN
Rename tsymtable.insert and delete methods to insertsym ands deletesym
fcl-hash: started RSASSA_PSS_Verify
fcl-web: TJWTSignerPS256, TJWTSignerPS384, TJWTSignerPS512
fcl-web: fpjwarsa: catch exceptions during verification
db testsuite: add TestMSSQLLargeStrings
* Change writeln+exit to ignore
fcl-hash: less hints and disable range checking for bigint
* for now, IO is not supported on AVR
fcl-hash: fixed fptlsbigint on i386
fcl-web: added des3 encoded pem example
fcl-web: removed des3 encoded pem example
* Do not make assumptions about string encoding
* Use const for string argument
* x86: Bug fix where aoc_ForceNewIteration was
checked in the wrong pass.
* Avoid memory allocation in IsNullOrWhitespace. Fix issue
gitlab 0039702
* AVR: trgcpu.do_spill_read must load ofs
* Example for RSA signing
AROS: 32/64-bit compatibility update for unit workbench
Make TAppMessage compliant to both ABI's as well as 32/64-bit by
changing field am_ID to be of type IPTR for all targets..
AROS: 32/64-bit compatibility update for unit intuition
Make TDrawInfo compliant to both ABI's by removing redundant ifdef.
Add information about (new) fields.
Update dri_version to v3.
AROS: 32/64-bit compatibility update for unit agraphics
Make TRastPort compliant to both ABI's by removing redundant ifdef.
Add information about (new) fields.
AROS: 64-bit fix elf structures for unit amigados
Make sure ELF structures are compliant to 64-bit when target is 64-bit.
AROS: 32/64-bit fix field alignment for unit commodities
Make sure AROS' record structures are C-packed.
AROS: 32/64-bit fix field alignment for unit conunit
Make sure AROS' record structures are C-packed.
* made test compilable if no floating point type support is available
* Add some delphi compatibility enumerateds to TShiftState
* Corrected label reference counts caused by TAsmLabel.GetName incrementing refs
* improved version that is still readable and has hex inline. Most importantly, it writes directly to result string rather than a temp, saving a copy that is hurting specially for longer strings.
* set minimum compiler to compile the compiler to 3.2.0
AROS: Update RTL structure TETask (execd)
Bring RTL (execd.inc) structure TETask up to date to unit exec (exec.pas).
This structure situated in the RTL was (literally) based on the MorphOS
version which is not compliant to AROS.
The original MorphOS TETask structure can still be 'activated' when the flag
AROS_MORPHOS_COMPATIBLE is defined when compiling the RTL and exec unit (as
is also the case in the original AROS repo).
AROS: ABI compatibility update structure TETask (ABI/BC break)
These changes break Binary Compatibility between ABIv0 and ABIv1.
Record TETask was not compliant to ABIv1 because field et_Compatibility is
only required for ABIv0 (https://github.com/deadw00d/AROS/commit/06538a17900b3e6c45d053128957fba8668c2c15).
Therefor these changes update record TETask for both RTL (execd.inc) and unit
exec (exec.pas) so that field et_Compatibility is only present for ABIv0.
The impact of these changes should be minimal because all relevant fields are
still accessible (some located at another offset) and code should never rely
on the size of this structure.
SymAnsiStr: fix "make all" and webtbs/tw39661*
Fixes compilation with LLVM backend
TSymStr: more consistent usage
* x86_64-linux and i386-linux align variables and constants up to 64 byte boundaries
PPU version: bump
fcaea210758 changed name mangling
* made checking for supported targets more fool proof
* arm-linux: set max. alignment for constants and variables to 32 byte boundaries
Fix for variables longer than 127 chars
AROS: ABI compatibility update AROSSupportBase (ABI/API/BC break)
These changes break API/Binary Compatibility between ABIv0 and ABIv1.
Field stdOut is replaced by undefined field named _pad for ABIv1 while
(still) being present as stdOut for ABIv0.
Field DebugConfig is completely removed from ABIv1 (still present for ABIv0).
If your code depends on either of these two fields then you need to make
appropriate changes when compiling for ABIv1.
Removing dependency on either of these two mentioned fields is preferred.
Both RTL (execd.inc) and unit (exec.pas) are updated.
See also https://github.com/aros-development-team/AROS/commit/194cc5e1c52a9dc67aa2275c8acb26673e454757
* set max. variable and constant alignment for win32 and win64 to 64 byte boundaries
LLVM debug info: LLVM 7.0 support
Also defined some llvm flags in a negative way so they can be removed from
later versions rather than added
* Fix to bug that would reset nf_write flag on tempref nodes in assignments
Use round to convert float constant into s64comp type for LLVM compiler as is done in general case
* simplifications by Rika (*2 loops => shl/Bsr), resolves
gitlab 0039717
AROS: Add structure spinlock for SMP builds
In 2015 ABIv1 introduced support for spinlocks for SMP enabled builds (1) by
use of a special spinlock structure.
This structure was later updated to end up in its current form in 2017 (2)
This commit adds this record structure to both RTL (execd) and unit (exec).
The structure can be "enabled" by defining AROSPLATFORM_SMP during build.
1) https://github.com/aros-development-team/AROS/commit/b6045c27fdb925491cc8081837b978d288f057a3
2) https://github.com/aros-development-team/AROS/commit/0ffdbdc48f6b5add7efb3cc193fa98739dedeff3
AROS: Use structure spinlock for SMP enabled build (ABI/BC break)
This commit will add an additional spinlock field to record structures
TMsgPort and TSemaphoreRequest for a SMP enabled build.
This will break ABI and Binary Compatibility between ABIv0 and ABIv1 and for
ABIv1 (for a SMP enabled build).
Recompilation in such case is required as both record structures TMsgPort and
TSemaphoreRequest are embedded in other record structures which causes a
myriad of changes to those records including different record sizes and other
field offsets.
Note that SMP is currently only available for ABIv1 and afaik only supported
for AROS target x86_64 while AROS target i386 has initial support for SMP
(but not actively enabled).
SMP enabled build can be 'activated' by defining AROS_PLATFORM_SMP and
AROSEXEC_SMP.
AROS: Ensure that spinlocks for SMP enabled build can only be active for ABIv1
These changes makes sure that the use of record structure TSpinlock can only
be enabled/active for AROS ABIv1 as that ABI is currently the only ABI that
is able to support SMP by using the spinlock record structure.
AROS: Ensure that spinlocks for SMP enabled build is not possible for ABIv11
These changes makes sure that the use of record structure spinlock is not
active/available when compiling for AROS ABIv11 as that ABI does not support
spinlocks as implemented for AROS ABIv1.
Note that this is a ABI and Binary Compatible break between ABIv1 and ABIv11.
AROS: Make sure opaque SMP extension is used for ABIv11 only
These changes adds an additional record field to record structure TMsgPort in
order to support SMP for ABIv11 (non m68k targets only).
This additional field contains two opaque IPTR's/PtrUInt's and therefor breaks
compatibility between ABIv0, ABIv1 and ABIv11 as well as make them binary
incompatible.
It also renders ABIv11 incompatible with itself when this change was introduced
on march 18 2022. Recompilation of existing code for this ABI is thus required.
See: https://github.com/deadw00d/AROS/commit/b9bc67accce27db0e2cc0f79f554dc76e9b17a73
aasmtai: added tai_string.Create(ansistring)
Also prevent range check errors for empty strings
LLVM metadata: specialised metadata fleshing out
+ added the atomic memory access WebAssembly instructions from the threading proposal for WebAssembly
+ enable the atomics extension on the llvm-mc command line (extension appears
to be recognized since LLVM 8.0, so it should be safe to always enable this
from the llvm-mc command line)
* patch by Rike: Use reverse_longword instead of manually reversing longword, resolves
gitlab 0039720
+ added intrinsic (for RTL internal use) that emits the WebAssembly atomic.fence instruction
+ support the atomic.fence instruction in the WebAssembly internal object writer
llvmdbg: disable open array data location
Since we don't generate full debug info for parameters yet, this internalerrors
llvmdbg: remove some commented dbgdwarf code
Also adjusted some hashtable sizes
Fix syntax error for isLocal field for function/procedure type LLVM debug information
Use '.L' as labelprefix for LLVM compiler variant
+ Aarch64: MovOp2AddUtxw optimization
LLVM: separate as_clang_llvm_darwin
The Darwin local label prefix ('L') is different from that on most other
platforms ('.L). While LLVM generally handles that for us, for inline
assembly it's still FPC's job to adhere to the target conventions.
Only use Win64 vectorcall special case if calling convention is vectorcall.
Text for merge request #226
* a64: Fix where hp1's was assumed to be an instruction and not actually checked
Fix %cpu type as spotted by Alexey Torgashin
* a64: New movz reg,#0 -> mov reg,xzr (or wzr) optimisation
* more readable fix for the missing ait_instruction check
* arm/a64: New sbfx/ubfx -> mov optimisation
* a64: Updated debug messages to follow standard.
Call increfs manually to avoid removal of stabs debug related labels
* increase default dwarf version for linux targets where current distributions exist
Do not alloc/dealloc NR_DEFAULTFLAGS for wasm32, as it is NR_NO
Add dumping of backtrace in case of unhandled exception inside TCustomInstaller.Run method
* Make sure webcompiler works again
* Export wasiAlloc and wasiFree
* implement necessary conversion functionality for anonymous procdefs to function reference interfaces including capturing of variables
fcl-json: fixed compile with fpc 3.2.2
fcl-passrc: moved ReadNextPascalToken to fpscanner
fcl-passrc: fixed compile pscanner with pas2js
* Streamlined label referencing
* better constant propation for inline nodes
amunits: correct the HookEntry wrapper functions to new compiler behavior. at some point during 3.3.1, the compiler started to omit stackframes when not needed, which broke the previous assumptions about stackframe handling
+ added instrinsic support for the all the 2-parameter read-modify-write
WebAssembly atomic operations (add, sub, and, or, xor, xchg). Note that they
are not implemented in the internal assembler, yet.
+ added intrinsic support for the WebAssembly cmpxchg atomic operations as well
Add missing reference increases for ait_jvar labels
* if a for loop does not change a variable, we can propate it if it is a constant, resolves
gitlab 0039726
fcl-json: fixed StringToJSONString
* fixes to the WebAssembly atomic function intrinsics
+ support the new WebAssembly threads and atomics instructions in the internal assembler
+ support intrinsics for the WebAssembly memory.atomic.wait32 and memory.atomic.wait64 instructions
+ support intrinsic for the memory.atomic.notify WebAssembly instruction
+ add a new symoption for symbols created for nameless types during implicit function specialization so that they can be recognized
* if the symbol belongs to the current def also consider it a specialization if it's a nameless type symbol from an implicit function specialization as their owner gets changed to the function itself
agllvm: fix writing metadata operands for variable declarations
llvm metadata: add DIGlobalVariableExpression enum
Only documented as of LLVM 9.0, but existed already in 7.0.
Also fixed DIGlobalVariable not being marked as unique
llvmdbg: handle nil in more places
"void" is represented as "null" in LLVM debug information, which we represent
by nil
llvmdbg: build hashtable to lookup llvmdecl belonging to a global variable
We need to attach the debug info to it
llvmdbg: fix missing initialisation when there are no procedures
llvmdbg: emit debug information for global variables
llvmdbg: emit uppercase symbol names unless C++-style debug info is selected
Otherwise gdb won't find the symbols unless you use the exact case
* more robust code for constant propagation in for loops
+ implemented InterlockedIncrement, InterlockedDecrement, InterlockedExchange,
InterlockedCompareExchange and InterlockedExchangeAdd for WebAssembly in a
thread safe way, using the thread and atomics extension, when the RTL is
compiled with -dFPC_WASM_THREADS
pastojs: fixed call inherited of nested class
llvm: replaced boolean fields in tllvmcallpara with a set
* continue const. propagation after a for loop when possible
pastojs: fixed absolute result
fcl-json: StringToJSON: fixed pas2js compile and less mem allocations
fcl-json: fixed compile pas2js
fcl-passrc: fixed compile pas2js
llvm: changed llvm_metadatatype from untyped pointer to undefineddef
That matches its meaning better, as it should not result in type conversions.
E.g. some kinds of metadata parameters expect a "type register" parameter such
as "metadata i32* %reg.3"
- remove duplicate paraprintnodetree to ensure that there the right paraprintnodetree is used (namely the one from globals)
* ensure insert_self_and_vmt_para can deal with a preexisting self symbol as long as it has the expected type
* patch from Pierre for working around the exitcode <= 125 limitation in wasmtime
* fix regressions after previous patch by correctly parsing output, which does not contain '##WASI-EXITCODE:'
* patch by Pierre, which fixes WebAssembly code generation for signed div/mod with overflow checking
* WebAssembly code generation fix in thlcgwasm.a_op_reg_reg_reg_checkoverflow, based on patch by Pierre (but simplified, to use a single block)
* fixed WebAssembly code generation in thlcgwasm.g_overflowCheck_loc (patch by Pierre)
+ enabled compilation of units variants and rtti, bug
gitlab 0039579 is now fixed
* replaced several internal errors, related to the WebAssembly labels
resolution with more meaningful error messages, in order to ease the
debugging of the compiler. Based on patch by Pierre.
* regenerate makefiles with latest fpcmake
+ added except_branchful.inc as a system unit dependency include file to wasm32/makefile.cpu
+ added unit WebAssembly for WebAssembly-specific stuff. Currently contains
the AtomicFence intrinsic, which emits the atomic.fence instruction.
+ added AtomicAdd() and AtomicSub() intrinsics to the WebAssembly unit
+ added AtomicAnd(), AtomicOr() and AtomicXor() to the WebAssembly unit
+ added AtomicExchange() to the WebAssembly unit
+ added AtomicCompareExchange() to the WebAssembly unit
+ reserved inline numbers for the WebAssembly atomic loads and stores
Add implicit units to wasi rtl
Regenerate Makefile after: Add implicit units to wasi rtl
+ implemented WebAssembly atomic load intrinsics
+ added AtomicLoad() to the WebAssembly unit
+ added WebAssembly atomic store intrinsics
+ added AtomicStore() to the WebAssembly unit
+ added AtomicWait() to the WebAssembly unit
+ added AtomicNotify() to the WebAssembly unit
* AtomicWait marked as inline
* implement assignment of procedure and method variables and routines (global, instance and nested) to function references
+ some more cpu specfic files for mips64(el)
Add help for -Aomf option for wasm32 CPU and new message for ogwasm binary writer
Avoid some range check error and convert internalerror into error messages
tllvmcallpara: turned into object and added convenience methods
* the WebAssembly internal assembler renamed WASM (previously it was OMF, which was the ID of the MS-DOS .obj writer, which I forgot to rename)
* fixed the message in the previous commit
TCGParaLocation: remove alignment gap
+ support different versions of llvm-mc (version 10 seems to be the earliest that works)
* add cblock directive so that the test fails for the correct reason
* correctly handle directives for function references
+ added "(experimental)" to the compiler help screen for the WebAssembly compiler options that are still unstable/experimental
Remove %OS by %TARGET, as spotted by Gareth
* test also cmem unit intensively
* compilation with -O3 fixed
Fix cycling with -CR option
fcl-passrc: added enums msFunctionReferences,msAnonymousFunctions
* fix
gitlab 0039736: ensure that the capturer object and any converted function reference interface are considered used
+ added test
* fix compilation with DEBUG_NODE_XML defined
fcl-passrc: resolver: fixed error when accessing element of forward class
Avoid invalid typecast to tabstractvarsym
* Export wasiAlloc, wasiFree
agllvm: support nested constants in parameters
Needed for metadata support
agllvm: support specialised metadata with field names
Necessary for DIExpression
tllvmcallpara: record whether it's passed to metadata
Sometimes we need the def to store a the original def of the passed parameter,
e.g. for the first argument to llvm.dbg.addr
hlcgobj: new getlocal and recordnewsymloc methods
Call hlcg.getlocal instead of tg.getlocal when used for actual parameters/local
variables. Has an extra tsym parameter, which will enable the LLVM backend to
insert debug information.
Call hlcg.recordnewsymloc when the location of a (local/para) symbol changes,
so debug info tracking can be updated (only done for LLVM currently)
+ enable the ROL/ROR instructions for WebAssembly
+ enable the 64-bit SAR instruction on the WebAssembly target
+ implemented popcnt via the popcnt instruction in WebAssembly
* Risc-V: return with mret from interrupt handlers, resolves
gitlab 0039737
+ added the memory.init and data.drop instructions
+ added the WebAssembly reference instructions ref.null, ref.is_null and ref.func
+ added the WebAssembly table instructions
+ added the WebAssembly reference and vector types to TWasmBasicType
+ support all the new types in encode_wasm_basic_type
+ added the 'wasmthreads' target switch (enabled via -CTwasmthreads)
* fixed compilation of ppudump
* added non-atomic implementations of the atomic operations in the WebAssembly unit, used when the RTL is compiled without -CTwasmthreads
+ added a 'producers' custom section to WebAssembly object modules, containing the FPC version
+ produce a target_features section when compiling with -CTwasmthreads
ngtcon: fix def of emitted vmt in procedure of object typed constants
Fixes compilation of tests/test/tprocvar17 with the LLVM backend, and probably
some other tests as well
rautils: don't interpret ".L3" as potentially meaning "unitx.identifier"
Fixes compilation of webtbs/tw10641.pp with a compiler compiled with
range checking
taddnode.cmp_of_disjunct_ranges: fortify in case of programs with errors
Fixes compilation of webtbf/tw3116 with a compiler compiled with -Cr
+ support the memory.init and the data.drop instructions in the internal asm writer for WebAssembly
+ added the WebAssembly saturating truncation instructions to the internal assembler
* pass the option to create shared, imported memory to the linker, in case the module is compiled with -CTwasmthreads
Note that this breaks running programs compiled with -CTwasmthreads with "wasmtime run --wasm-features threads", but
there's not much we can do about that, since shared memory is required for threading, and wasmtime still doesn't
support it.
* the stack pointer on Risc-V points always at the last used position, resolves
gitlab 0039739
* pseudo instructions for flag handling
* standard Risc-V pseudo instructions for Risc-V 32 completed
* unified Risc-V 32 and 64 cpubase.pas
+ completed Risc-V 64 pseudo instructions
* typo fixed
llvm: support for adding/subtracting constants to pointers in typed constants
Fixes webtbs/tw34027 for llvm
do_set: immediately exit in case of range error
Prevents run time error in case of a compiler compiled with range checks
enabled (webtbf/tw10890a)
AThreads: prevent deadlock for event set before waited
tarraydef.elecount: fix overflow detection
It did not trigger in case of an array[0..high(asizeint)]. Fixes compilation
of webtbs/tw9039[ab] with a compiler built with range checking enabled.
llvmdbg: fix overflows for aggregates > 2^61 bytes
LLVM does not support aggregates larger than that at all, because internally
it stores all sizes in bits in an uint64. Their rationale for not having
special support for that is that there is no hardware with full 64 bit VM
address space anyway. So truncate our size emissions in debug info also to
that.
read_record_fields: fix overflows of variant record size variables
Could happen in case of > 32 bit variant parts, or variant parts at offsets
> 32 bit offsets.
Fixes webtbs/tw9039c with a compiler compiled with -Cr
* set the correct symtable level for the invoke procdef
* ensure that the VMT for the function reference interface is generated correctly, but for this the invokedef needs to be copied without hidden parameters (and handle_calling_convention will be done by the VMT builder as well)
function references: make names of interface methods valid Pascal identifiers
On high level targets, and on PowerPC/PowerPC64, interface method thunks are
implemented using internally-generated Pascal wrappers, so the method names
need to be valid Pascal identifiers.
Additionally, that wrapper code uses the procsym's realname, so also
update the realname field when changing the name of anonymous methods.
* unified Risc-V 32 and 64 register data file
+ "rescued" mkrvreg.pp from old svn data
* fix
gitlab 0039745: the conversion from ordinals to pointer types in mode Delphi is not allowed for a void type (happens when using a typecast to convert a method without parameters to a function reference)
+ added test
Fix compilation of sparc compiler with -dDEBUG_ALL_OPT
Also add a comment when a label has been optimized out when compiled DEBUG_LABEL
Manually increase refs of newly created labelsymbol in insertpcrelativedata
Add several increfs to avoid troubles on AIX target OS
+ add a mode Delphi equivalent for tanonfunc56 to check whether overload selection works correctly
+ added Risc-V register information file generation to the compiler Makefile
* more stringent naming of register file information for Risc-V
* make proc_to_funcref_conv publicly available
+ add an error message that a nested function variable can not be assigned to a function reference
* regenerate msg{idx,txt}.inc
* ensure that a nested function variable can not be assigned to a function reference
* the check for nested procvars is now done during the conversion in capturer_add_procvar_or_proc so loosen the check in proc_to_funcref_equal_internal
* fix
gitlab 0039740: consider a conversion of a procedure or procedure variable to a function reference as a bit more expensive than otherwise
+ added test
+ add tests that ensure that the overload selection works correctly when functions, methods or nested functions are assigned when overloads for function references are involved as well
+ add tests to ensure that the assignment of nested function variables to function references is forbidden
* fix
gitlab 0039742: when assigning a function to a function reference it's not the function itself that needs to be checked to be captureable, but instead what it captures (this applies for both the non-generic and the generic case)
+ added tests
Disable finalisation code fro LLVM compiler to avoid interface finalisation troubles
Fix compliation error with -Oodfa option as reported by Gareth
* anonymous method overloads for synchronize/queue.
* fix missing ifdef for the non win32/64/unix targets.
* also do watcom.
+ forgotten pseudo-instructions added
* zero is a valid Risc-V register alias
Fix compilation ofrtl/nds/classes.pp unit
* "fast lane" code and comment fixed
fcl-passrc: fixed method override modifier inherits overload modifier
Fix compilation of 32-bit powerpc compiler
llvm: version 13.0 support
* Risc-V: allow also register aliases in register modification lists after asm blocks, last part to resolve
gitlab 0039738
llvm: added support for newer Xcode toolchains
Based on https://en.wikipedia.org/wiki/Xcode#Xcode_11.x_-_13.x_(since_SwiftUI_framework)_2
LLVM: list supported LLVM/Xcode versions
Use the -i or -il command line parameter
fcl-passrc: fixed searching overload in mode delphi
llvm: version 14.0 support
llvminfo: fix copy/paste error in llvm 14 comment
Spotted by @Alexey-T1
fcl-passrc: resolver: fixed emit hints for used units
fcl-passrc: fixed parsing property hints
dbgllvm: rename hastable for staticvarsym declarations
llvmdbg: support for generating debug information for local/para varsyms
Note that not all symbols are covered yet, because absolutevarsyms are not
yet supported and those are e.g. used for function result aliases.
Additionally, not all types are fully supported yet.
* align memory blocks in cmem at least to stack alignment boundaries, resolves
gitlab 0039730
fcl-passrc: fixed releasing modules of a package
* patch by Rika: improve EncodeUleb128/EncodeSleb128, part of
gitlab 0039750
llvm: removed Xcode 10.0/10.1 as supported versions
These already did not work because they predate clang 7
parentfpstruct: don't add vo_is_firstfield to first field of record
That flag is only for the first field of variant parts of records
objcdef: remove duplicate variant start check
aasmllvmmetadata: remove leftover unused type
fcl-passrc: started transition TPasElement reference counting to Parent free
dbgllvm: support for record field debug information
Try to fix real constant problems for llvm compiler
dbgllvm: added appenddef_struct_named
Factored out of appenddef_record_named for reuse by objectdefs.
Also moved responsibility of adding the struct dinode to the asmlist
to the caller, as the name of this method does not imply it will do
that.
dbgllvm: remove tmembercallbackinfo
Leftover from dbgdwarf, not used here
dbgllvm: skip static fields when writing struct fields
These are not part of the struct instances
dbgllvm: struct_metadef fixes
It will be used to hold a reference to the underlying structure of a class,
whose type is represented as a pointer to a DW_TAG_class_type for compatibility
with the debug information generated by the FPC backend (otherwise we could
instead just add a deref expression to all variables of such a type)
dbgllvm: support for tobjectdef debug information
Classes, objects, interfaces, Objective-C classes, ...
fcl-passrc: transition TPasElement from reference count to free
fcl-passrc: transition TPasElement from reference count to free
pastojs: started TPasElement free instead of refence count
dbgllvm: emit all symbolic constants as enum values/strings
Easier to read in the .ll files, and avoids potential mismatches with their
value in LLVM (in case it changes across LLVM versions)
Fix compilation of arm compiler with LLVM=1
Fix oversized type size constant
Avoid Invalid typecast error when using -CR option by using tabstractrecordsymtable type for record or object symtable
dbgllvm: removed some commented-out declarations
* Improved TESTALL.BAT file for JVM tests
Remove accidently added binaries in commit 0e142c00
* patch by Rika: Replace some instances of manual work with endianness with cryptic oneliners, resolves
gitlab 0039719
TInetSocket connect timeout support under 1 second fix.
(cherry picked from commit f20b6275563a6051ea91ab2f1b1521dd287be83f)
pastojs: TPasElement free instead of refence count
fcl-passrc: fixed directives DispatchField and DispatchStrField
pastojs: fixed mem leak with specializations
pas2js: fixed mem leak file cache
pas2js: fixed mem leak resources
pas2js: fixed mem leak pcu
fpdoc: free TPasElement instead of reference count
fcl-passrc: TPasElement free instead of reference count
pastojs: TPasElement free instead of reference count
fcl-passrc: fixed compile
pastojs: started array of interface
pas2js: faster arrayConcatN
pastojs: faster AnArray:=Concat(AnArray,...)
regexpr: disable forced optimisation switch
This should be specifiable via (fp)make
pastojs: fixed concat append for nil and referenced array
pastojs: faster concat append for var args
pastojs: faster concat append array:=array+
* Correct windows DLL name
defutil: new is_address() helper
Returns whether a def represents an address
nllvmadd: fix not always forcing pointer constants in registers
There could have been a typeconversion around the pointerconstn/niln.
This was hidden because llvmtype fixed it up later, but with opaque
pointers it showed up again.
* a few more MISP64 fixes
agllvm: missing space between type and tai operand
llvm: support for opaque pointers
Will be the default starting with LLVM 15, and required with LLVM 16.
Tested with LLVM 14 and '-mllvm -opaque-pointers'. See
https://releases.llvm.org/14.0.0/docs/OpaquePointers.html for more
information.
llvm: use formaldef rather than undefineddef for llvm_metadata
Better matches the intent, and fixes compilation issues on AArch64
+ RiscV32: patch by kupferstecher: compiler support of CH32V30*, part of
gitlab 0039777
* fix for "other" keyword
arm paramanager: always create at least one paraloc
Even for parameters of 0 bytes. Matches behaviour on other targets.
* use a TCmdStr as parameter for SetVerbosity as it gets passed a TCmdStr in the option handling, thus may contain a parameter value (especially -vmXXX) larger than 255 characters
+ add a AnsiString based overload of GetToken
* change ChangeMessageVerbosity from String to AnsiString as long parameters might be passed to it
webidl: fixed keeping stacktrace on exception, fixed uninitializd var in ParseConst, gitignore linux test file, parse empty interface without brackets
webidl: fixed parsing optional attributes
webidl: parse [LegacyNullToEmptyString] DOMString
* OnDisconnect before disconnecting objects
* OnDisconnect before disconnecting objects (cleanup). Fix issue
gitlab 0039780
webidl: parse getter/setter with default name
webidl: allow func arg name callback
webidl: parse stringifier;
llvmpara: don't crash if a parameter has no paralocs
* don't load the controller unit if the currently compiled unit *is* the controller unit (which might happen if one compiles the controller unit as part of a program)
* ensure that the heaptrc unit can be used on Linux and BSD without linking against the C library
* do not throw messages on potentially uninitialized internal symbols, resolves
gitlab 0039744
Put systems_bsd into systems_weak_linking to fix heaptrc compilation failure for netbsd and dragonfly target OS introduced by commit ae346a87
fcl-passrc: fixed overload double override
webidl: fixed attribute name required
llvmdbg: fixed variant fields
They have to be members with a union type, rather than union types
themselves.
* optimize a-const1-const2 when const1 and const2 are real constants and fast math is on, part of fixing
gitlab 0039782
fcl-passrc: use TMaxFloat
* fix bootstrap with 3.2.2, whi
* fix bootstrapping *BSD with 3.2.2, which isn't flagged as supporting weakexternal on those targets
webidl: attribute name interface
darwin: also run dsymutil for DWARF 4
* enable dbus for freebsd
x86-64: keep tcgpara vardef the same as the para's real def
Only override the paraloc's vardef if necessary. This fixes compilation of
tests/test/cg/tvectorcall*.pp for LLVM
webidl: extended attributes, exposed=*
x86-64: properly set parameter alignment if not default
* get rid of cs_opt_none
* $O+ sets cs_opt_level2 instead of cs_opt_none which made no sense
* do not use Dwarf-4 yet as it is too little tested and has no benefits
* Free extra headers after disconnect
* OnDisconnect called too often
* remove accidently commited writeln
* need to pass connection. Do not call disconnect event twice
* Actually write error message if there is one
webidl: fixed AV on field without type
webidltopas: started outputformat
webidltopas: started split TWebIDLToPas2js
webidltopas: started split TWebIDLToPas2js
webidltopas: default GetTypeName
webidltopas: show source positions
Support arrays and classes in compile-time OffsetOf.
+ print more exceptions debug info, when the WebAssembly RTL is compiled with -dEXCDEBUG
* WebAssembly exceptions fix: fixed raise without parameters in except..end
blocks in WebAssembly native and branchful exceptions mode. Fixes
gitlab 0039752
pas2js: fixed rtl.arrayPush copy instead of reference
Split startup code into different .init sections according to avr-libs convention.
+ added check whether PPU and program are compiled in the same WebAssembly
exceptions mode (either both are turned on, or both are turned off)
* Don't call secondpass(left) in twasmtypeconvnode.second_int_to_real, this fixes bug
gitlab 0039735.
+ enabled compilation of package libtar for wasm32-wasi
+ enabled compilation of package webidl for wasm32-wasi
+ enabled compilation of package symbolic for wasm32-wasi
+ WebAssembly: use the 64-bit div instruction, instead of an RTL helper for 64-bit division
* fixed WebAssembly code generation for integer unary minus with overflow checking
+ enabled compilation of unit FmtBcd for wasm32-wasi
+ enabled compilation of package fcl-json for wasm32-wasi
+ enabled compilation of package fcl-db for wasm32-wasi
+ generate exception checks after calls to fpc_overflow class in WebAssembly
branchful exceptions mode, because fpc_overflow can raise an exception in case
unit SysUtils is included.
+ make use of the unsigned remainder instructions in WebAssembly (i32.rem_s, i64.rem_u)
+ enabled compilation of package fcl-sdo for wasm32-wasi
+ enabled compilation of package fcl-passrc for wasm32-wasi
+ enabled compilation of package fcl-mustache for wasm32-wasi
+ enabled compilation of package fcl-js for wasm32-wasi
* fix
gitlab 0039795: when extracting make_prettystring it was forgotten to also append the const part of the name to the specialize name
webidl: TWebIDLToPasWasmJob clean up
webidl: dynarray: do not prepend duplicate T
fcl-base: pascodegen: do not write empty line for default section
webidl: exitcode 1 on exception, wasmjob: units
fcl-base: fixed range check error
webidl: wasmjob: prepend classprefix to all external types
Simplify SanitiseXMLString.
* do not throw an internal error if slice is used on dyn. array paramters, resolves
gitlab 0039806
webidl: wasmjob: getter for base types
webidl: wasmjob: setter for primitive types
webidl: wasmjob: setter for JSValue
webidl: wasmjob: split unit
* refactored duplicated code for epoch to datetime and vice versa conversion
between the dos and sysutils units for the WASI platform
* Fixed infinite loop when CONSTPROP is enabled
but USELOADMODIFYSTORE is not.
webidl: wasmjob: started pascal interface
riscv32: Fix potential FP proc_exit bug
* THandleObjectArray added
Darwin: use recent versions of stat(fs) records when available
When the RTL is built for Mac OS X 10.6 or newer, use the new versions
and the corresponding alternate system library functions.
Also extracted the Darwin stat record definition to reduce the
ifdef hell.
* do not optimize away +0.0 if no fastmath is passed as -0.0+(+0.0)=+0.0
webidl: wasmjob: use interface
webidl: wasmjob: interface guid
webidl: wasm-job: function Cast
* make infinite a default param
webidl: wasmjob: invoke function
webidl: wasmjob: invoke function with primitive args
* x86: MovAndTest2Test optimisation now accepts a smaller sub-regiser on the TEST instruction
webidl: wasmjob: invoke procedure
webidl: wasmjob: prefix callbacks with T
webidl: resolving type defs
webidl: added Function and BigInteger to base types
webidl: add const modifier to function def arguments
webidl: wasmjob: callback wrapper for primitive types
cresstr: fix length specified for resource strings to typed const builder
Copy/paste error
* patch by Rika: SwapEndian([u]int16) has unnecessary “and $FFFF”, resolves
gitlab 0039814
* allow type parameters in variant parts of records as we do not now
what type is used during specialization, resolves
gitlab 0039805
webidl: wasmjob: pass method as argument
webidl: wasmjob: create unique local var
webidl: wasmjob: object attribute
webidl: wasmjob: function type object as arg and return type
* Do not define UNICODE by default, only in Uregexpr
* x86: Shrink TEST instruction on MovAndTest2Test
where possible.
webidl: wasmjob: dictionary
set Tag_ABI_VFP_args to 1 only if the hard float abi is used, should resolve
gitlab 0039817
webidl: wasmjob: started return type array
* convert a+/-const1-/const2 in into a+/-(-const1)+(-const2) to enable further optimizations, resolves
gitlab 0039782
Update packages/regexpr/src/regexpr.pas
* Use correct define for regexpr, name has changed
riscv: Merge stack code, fix interrupted code
- Stack pointer is kept below register save area. This ensures that
registers are not overwritten by interrupt handlers.
- RV32 and 64 code is merged to base class.
__fpc_valgrind symbol: use correct size when inserting definition
x86 BuildInsTabMemRefSizeInfoCache: don't read past end of instab
Add cntfrq_el0 and cntpct_el0 AArch64 registers
tstringconstnode.changestringtype: fix buffer overrun
Found by asan
* handle absolute on strings correctly for dwarf debug info, resolves
gitlab 0039816
* as correctly pointed out by Bart B, -gw instead of -g should be used in the test for
gitlab 0039816
* fix SysUtils.HashName as proposed by Awkward in
gitlab 0039827, resolves
gitlab 0039827
* adapted to syscodepages.inc for the fixed HashName
ttai_typedconstbuilder: do not remove tcalo_vectorized_dead_strip_item
This was done because originally getting the finalized asmlist happend
through a single proc that either called the vectorized version or the
regular version depending on the presence of tcalo_vectorized_* flags.
Nowadays, calling either get_final_asmlist_vectorized_dead_strip or
get_final_asmlist happens directly as needed.
This flag will be used by the LLVM asmwriter to add appropriate
address sanitizer information.
LLVM backend: address sanitizer support
Activate with -Clfsanitize=address. Only tested on Darwin/x86-64 for now.
agllvm: fix writing strings in metadata arrays
They were interpreted as part of larger strings
llvm: fix reading past end of data for some parameter references
Fixes false positives when using address sanitizer
webidl: wasmjob: array name
webidl: array arg pass as const
webidl: wasmjob: error on passing not supported array as argument
* a64: New conditional branch to CSET peephole optimisation
* a64: Porting of MatchOperand function from x86 that takes integer parameter
Adding AArch64 CurrentEL register
CurrentEL is used to determine the current "exception level" in the CPU.
It has four possible results:
0b00 - EL0 - Application
0b01 - EL1 - Rich OS
0b10 - EL2 - Hypervisor
0b11 - EL3 - Firmware
https://developer.arm.com/documentation/ddi0595/2020-12/AArch64-Registers/CurrentEL--Current-Exception-Level
https://developer.arm.com/documentation/102412/0100/Privilege-and-Exception-levels
* Reference counts are now properly incremented on duplicated taicpu objects
LLVM address sanitizer: add asan library and rpath on Darwin
Also verified that "make all" works with asan on macOS/AArch64
* Always generate CFI-information. During linking it can be omitted when
no debug-information is requested. On Linux this needed a change in the
linker-script. On Windows it already works as desired. Other targets
may need some adjustments as well.
* arm: Symbol reference counts are corrected when PC-relative data is inserted
* arm: Labels to constants are now data labels and not jump labels
x86: Direct assignment instructions are no longer checked prior to calling CheckJumpMovTransferOpt, instead relying on the callee to do the heavy lifting (also fixed -Os bug)
fpexprpars: fix access violation when setting an expression after clear
Darwin: fix compilation on macOS/AArch64 after 1f328cf3
No function suffixes there since there's no backward compatibility issue.
* deprecated warning fixed
* correctly truncate rtti symbol names of enumeration types, resolves
gitlab 0039829
* x86: Fixed bug in "Mov0LblCmp0Je -> Mov0JmpLblCmp0Je" optimisation
where the reference count was increased twice.
+ support writing of 32-bit and 64-bit relocations in the REL object writer
for Z80. This fixes DWARF debug output and makes it behave consistently with
the Z80 external assembler writer.
* patch by rika: simplify tscannerfile.readstring, resolves
gitlab 0039835
+ added the WASM_SYM_TLS symbol flag constant
+ added WASM segment flag constants
+ set the TLS flag for threadvar sections when WASM threads are enabled
+ prefix the threadvar sections with '.tbss' when WASM multithreading is enabled
+ WebAssembly multithreading: also declare threadvar sections as TLS and prefix their name with '.tbss' when using the external assembler
+ introduced trefaddr.addr_got_tls, to be used for generating WebAssembly threadvar access, when WASM multithreading is turned on
+ generate proper WebAssembly threadvar access when multithreading is turned on
+ declare the three magic global variables (__tls_size, __tls_align, __tls_base), created by the linker, when WebAssembly multithreading is enabled
+ added WebAssembly intrinsics for reading __tls_size, __tls_align and __tls_base
+ setup a thread manager (functions are still not yet implemented), when the WASI RTL is compiled with multithreading support
+ add the "-m wasm32" parameter to the linker, when linking for the WASI
target. No idea if it does anything, but is passed to the linker by the
official WASI SDK, so it shouldn't hurt.
* set the default stack size for the WASI platform to 65536 bytes (this is the
default, used by the linker)
+ allow changing the stack size for the WASI platform
* stack alignment on the WASI platform is 16 bytes
* patch by Rika: optimize TStringHelper.StartsWith / EndsWith, resolves
gitlab 0039706
* set the stack size to 64kb and stack align to 16 bytes for the wasm32-embedded target
+ allow setting the stack size for the wasm32-embedded target
+ pass '-m wasm32' to the linker, when compiling for the wasm32-embedded target
+ allow creating a linker map file, when compiling for the wasm32-embedded target
* use current_module.sharedlibfilename instead of current_module.exefilename, when linking a library for the wasm32-embedded target
+ allow specifying custom extra linker options for the wasm32-embedded target
+ allow specifying custom extra linker options for the wasm32-wasi target
- removed debug writeln when calling the linker for the wasm32-embedded target
+ show a "linking" message before invoking the linker for the wasm32-embedded target
* fix
gitlab 0039826: correctly handle function references that are part of generics/specializations, but are not generics/specializations themselves
+ added test
* apply the same alignment parameters to wasm32-embedded as wasm32-wasi
Revert " * patch by Rika: SwapEndian([u]int16) has unnecessary “and $FFFF”, resolves
gitlab 0039814"
This reverts commit f92102a5f22ae7b978ecf91d59781e16f0b82163.
The and $ffff is needed to avoid range check warnings when the function is inlined with a constant parameter
webidl: wasmjob: updated class function Cast
- disable the cs_opt_nodecse optimization from the -O2 for the WebAssembly target, because it causes a crash, when compiling the classes unit
+ added custom section descriptions for DWARF debug info for the WebAssembly object writer (not actually emitted, yet)
+ introduced TWasmObjSection.IsDebug
* fixed crashes with the WebAssembly internal object writer, when debug info is enabled. The debug info itself is not yet written to the file, though.
+ write the actual DWARF debug sections in the WebAssembly object writer. The relocations aren't ready, yet, though.
+ emit WASM DWARF debug info relocations
+ implemented the R_WASM_FUNCTION_OFFSET_I32 relocation in the WebAssembly object writer
+ always (even when multithreading is off) create a "target features" section
in the WebAssembly object writer, since we still require some (very commonly
supported) extensions, even without multithreading
* don't write R_WASM_TABLE_INDEX_I32 relocations, always use R_WASM_FUNCTION_OFFSET_I32 in debug sections
* workaround crash when generating WebAssembly DWARF debug info for threadvars, while multithreading is turned off
llvm: move asan library linking support to texternallinker
This way other platforms besides Darwin can also use it.
* an attempt to fix WebAssembly debug info section relocations
* tests for merge request 244
Cleanup bsd and sysctl units make rules
+ support RV32E Extension
webidl: resolve typedef in args and resulttypes
webidl: prefix enum types
webidl: remove empty forward interfaces
webidl: using JOB_JS, record as TJSObject
Fix error getting payload when receiving a close command.
* Add Cross-Origin Isolation headers
* RiscV: generate mret only for FreeRTOS and Embedded
webidl: sort interfaces topological
webidl: wasmjob: skip getter
webidl: wasmjob: skip constructor
webidl: wasmjob: rename conflicting arg names
webidl: write function with result type undefined as procedure
webidl: write typedefs and callbacks in one list, they may depend on each other
webidl: skip fields without name
webidl: fixed cloning pasnames of args
webidl: fixed read object property
webidl: resolve parent interfaces
* RiscV: pass the same default directories to the linker as on other architectures
* Riscv32 and Riscv64 on linux: enable safecall support
llvm: support for getting the llvm rtl (rt) architecture name
This is the name used as part of the llvm rt libraries, like
asan (address sanitizer)
llvm: generalised sanitizer linking support
Also enabled automatic detection of sanitizer library + setting rpath to Linux
Fix compilation with -Oodfa
ARM: fixed compiler compilation after 75c16b612660
+ allow the 'section' directive for the WebAssembly platforms
+ introduced tcpustaticvarsym.is_wasm_global
* don't reserve bss data for wasm global vars
+ introduced methods for converting WebAssembly global var types from a Pascal type to TWasmBasicType
+ declare user-defined wasm globals in the llvm-mc assembly output
webidl: wasmjob: resolve function return types, use IJSArray for arrays
webidl: parse enforcerange
webidl: parse enforcerange
webidl: nicer error messages, fixed function returning Object
webidl: wasmjob: write forward interface definitions
webidl: wasmjob: write implicit arrays as IJSArray
* WebAssembly high level code generator: use the global.get and global.set
instructions to access references to symbols of type AT_WASM_GLOBAL
webidl: wasmjob: Cast as class function, default ancestor IJSObject, methods
* x86: Bug fix where a tai type was assumed and could sometimes trigger an invalid typecast under -CriotR
webidl: GetOverloads: resolve typedefs
webidl: skip proc type property
variable trashing: don't trash internal syms
Since they're managed by the code generator, they should always be valid.
parentfpstruct: explicitly trash before initialising
It's an internal sym, but it contains user data. Together with the previous
commit resolves
gitlab 0039845
webidl: wasmjob: fixed multi used function
webidl: wasmjob: fixed multi used functions
webidl: nicer local var names
webidl: property get array
webidl: classname as keyword
* x86: Fixed minor logic bug in aoc_ForceNewIteration check where UpdateUsedRegs was called at the wrong time.
webidl: added option --globals
webidl: wasmjob: fixed idlinterface arg
* x86: Corrected some incorrect uses of RemoveCurrentP in OptPass1_V_MOVAP.
webidl: wasmjob: nicer callback code
* x86: Refactor of a DeepMOVOpt call to make use of a while loop and aoc_ForceNewIteration to increase compiler speed and efficiency.
+ VPXorVMov2Mov optimization
llvm: correctly write aliases when using opaque pointers
llvm: llvm/clang 15.0 support
pas2js: fixed array push records/sets
* fix
gitlab 0039849: it's an error when the file (or string) parameter of a Read*/Write* is followed by a ":"
+ added test
* do not warn on anonymous functions without captured variables about being not used, resolves
gitlab 0039853
* x86: Fixed bug where redirected jump has its condition changed (fixes i39851)
* x86: Reference count fix in CMP/Jcc and TEST/Jcc redirect optimisations
* New test to catch i39851
+ VPXor2VPXor optimization
* x86: Correct fileinfo and some refactoring for imul2leashl optimisation
* x86: Correct fileinfo and some refactoring for OptPass1LEA
* x86: Correct fileinfo and some refactoring for OptPass1SHLSAL
* x86: Correct fileinfo and some refactoring for OptPass1CMP
* x86: Correct fileinfo for OptPass2MOV
* x86: Correct fileinfo for PostPeepholeOptCall
+ support declaring wasm globals in the WebAssembly internal object writer
+ added test for wasm globals
+ added wasm dir to test dirs
+ added test for wasmglobals, where the globals are declared in the implementation section of a unit
+ forgotten comments for new optimizations
Update errord*.msg
new messages and other changes in errore.msg have been translated or ported to the German message files.
fcl-base: fixed local names
* captured variables cannot be in registers typically
* wasm32 obj writer: writing the debug section symbols to the symbol table moved before the writing of the debug sections themselves
* wasm32 obj writer: moved the writing of the data sections ahead
* wasm32 obj writer: determine the section number for the datacount, code, data and debug sections ahead of time (before writing the sections)
* wasm32 obj writer: do the relocations before writing the code, data and debug sections
* wasm32 obj writer: use Data.ObjSectionList.Find to find the debug section by name in MaybeWriteDebugSection
* use simpler FMOV instead of UMOV
+ introduced TWasmCustomDebugSectionType
* use WasmCustomSectionName to obtain the debug section names in MaybeWriteDebugSection and MaybeAddDebugSectionToSymbolTable
* x86-64: math helpers do not need a stackframe
Added SSL support for Websocket client.
* Use default handler for SSL sockets
* Remove dependency on fpopenssl unit
+ handle LOC_FLAGS in thlcgobj.location_force_mem, resolves
gitlab 0039292
* patch by Rika for ArcTan2 to reduce code size
* fix
gitlab 0039860: even if the block type is not correct for the specialization of a generic routine continue to specialize it to not trigger e.g. an internal error
+ added tests
* extract generating the specialization from a specialize node into a separate function
* try to specialize a specialize node if it's followed by a < in a non-code section so that we might get better error messages
* the clause for converting the captured symbols of a nested function must not be entered by an anonymous function
* fix
gitlab 0039858: correctly keep track of symbols that need to be captured into the capturer
+ added test
* Fixed internal error number clash (2021102610)
Mark .noinit section with nobits flag.
* patch by Rika: More numerical stability for Math, resolves
gitlab 0039863
* x86: New SHR-based optimisations
fcl-passrc: resolver: allow for for-loop var only local vars
* improved FstpFld2 optimization
* x86: New "shr %cl; shr x" swap optimisation
+ some debug messages added
* cosmetics
do not publish enums with jumps
do not publish enums with jumps - keep error on static properties
* x86: Fixed bug where the magic number of an integer division wasn't fully sign-extended, causing incorrect logic within the compiler.
* Converted assertion into an internal error
* x86: New MovShr/Sar2Movx optimisation
* patch by Rika: This speeds up DefaultReplacements by a lot (order of magnitude or so), resolves
gitlab 0039722
* x86: Improved unsigned integer division for when BMI2 is available.
Revert " * patch by Rika: This speeds up DefaultReplacements by a lot (order of magnitude or so), resolves
gitlab 0039722"
This reverts commit a2d7503f714ee8ff856efd8d17548fbab928f0ec.
Reason: breaks replacements in config file parsing.
* apply default replacements also to defines set by -d:
- -d with $ is not possible so this should not break any existing compiler call
- this fixes also the strange error message "Error: malformed parameter: -dlinux"
when e.g. -d$FPCOS is passed as the default replacements are applied to the
error message
* x86: 64-bit integer division reciprocal algorithm uses IMUL
with an immediate for the modulus version where possible
FIX: DARWIN: aarch64: tstatfs.fstypename length error (
gitlab 0039873)
* experimental test for
gitlab 0039722, no sure if it will work this way on all platforms
fcl-web: TCustomWSServer.RemoveConnection: call DoDisconnect on disconnect
fcl-web: TCustomWSServer.OnDisconnect: pass TCustomWebsocketClient as Sender instead of connection
fcl-web: fixed TCustomWebsocketClient.FreeConnectionObjects
* improved test as proposed by Rika
* Fix from Kevin Jesshope to correct filename detection in CGI app
* Fix from Kevin Jesshope to fix concurrent access in case of CGI
* handle also simulated flags in tmipselnotnode.second_boolean, resolves
gitlab 0039877
webidl: INputStream, OutputStream, set default unitname, wasmjob: variants
webidl: added typedef test for wasmjob
webidl: test interface attribute boolean
webidl: test interface function setEventHandler
webidl: Promise as IJSPromise
webidl: promise: add comment of returntype
webidl: pass variant args as const
m68k: use CPU capabilities at places instead of hardwiring cpu_coldfire
m68k: disable an A_MOVE in the spilling code in an effort to finally try to unbreak paszlib
m68k: add a CPU capability to signal the CPU has no 48 bit encodiing limits
m68k-amiga: print offsets during stacktraces, instead of absolute addresses, which are not really helpful in a single address space
m68k: ignore the mk68kins binary
* fix
gitlab 0039876: correctly Read(Str) enum types which have a size smaller than 4 Byte
+ added tests
* fix
gitlab 0039857: don't trash symbols marked as vo_is_internal
+ added test
* fix
gitlab 0039875: when a WideString constant is used to initialize a PChar the constant needs to be converted to the current code page
+ added test
powerpc-amiga: fix build after ecbd5840
* improves node complexity calculations
powerpc-morphos: enable 'section' keyword support, and force the startup code to be in the .text section, to fix linking external objects with unnamed sections on this platform
* don't switch a+/-/sqr(b) into an fma statement if b is too complex
* x86: EDX is now deallocated before MULX instructions in the "magic div" algorithm so it can be used as the destination
* correctly convert a single WideChar to a PChar constant with the correct code page
+ added test
* moved tests to proper location
+ MovzMovz2Movz optimization
m68k: fixed the capabilities flags inverted logic issues committed in 7d23c2e9
* Call CheckSession before handling request, but after handling CORS
pastojs: fixed search inc file
+ AArchz64: TCpuAsmOptimizer.OptPass1SXTW
* fix for TCpuAsmOptimizer.OptPass1SXTW
m68k-linux: try to be as ColdFire compatible in the startup code as possible, so explicitly use jsr, otherwise this might compile to a long bsr, that is not CF compatible (except cfv4)
webidl: wasmjob: use const for class function cast
* refactor TCpuAsmOptimizer.OptPass1SXTW
+ Aarch64: SxtwOp2Op optimization
* refactoring
* cosmetics
* factor out GetNextInstructionUsingReg calls in TARMAsmOptimizer.OptPass1*XT*
+ ARM/Aarch64: *xt*Op2Op optimizations
* building of arm compiler fixed
* AArch64: extended SxtwMov2Data to CMP and CMN
* factor out TARMAsmOptimizer.USxtOp2Op
fcl-css: added test lpi, ignore lib, run from other dir, cleaned up
fcl-css: StringToCSSString: fixed advancing utf-8
fcl-css: keep exception stack traces, fixed parsing empty rule
* use the bts instruction on x86 if possible, the reg,reg variant is better than a mov/shl/or sequence
* apply OptPass1Data to neg as well
* x86: Added BEXTR and BZHI to special spilling rules since they follow the same format as SHRX etc.
* x86: Added SARX to BMI2 code generator
* x86: Made a check for BMI2 more explicit in the integer division code generator
fcl-css: TCSSStringElement = Class(TCSSBaseStringElement)
vector support: check supported type during parsing already
Avoids internalerrors at the code generation stage when using an unsupported
type
vector support: use vector result types
Set the result of a vector add node to a vector type.
Ensure that that these vector types are still asignment-compatible with
regular array types (may want to change this when we expose vector types),
and don't remove type conversions from vector types to array types (so the
code generator pass can still rely on the resultdef being a vector type)
High level codegen: set MM register type for vectors
LLVM: support for -Sv (manual vector usage)
Override register type for vectors to "integer registers" because we don't
use mmregister on LLVM (they're all virtual, so it doesn't matter)
* Comment out debug in loop
* Seems not all was committed
* Seems not all was committed
* Patch from Luca Olivetti to fix memleak in CORS support. Fixes issue
gitlab 0039886
fcl-css: added TCSSElement.Parent
fcl-css: added GetCSSPath
Darwin version comparisons: factored out into object
Use numeric instead of string comparisons
objc: use compile-time macOS version checks
Use "modern" APIs for calling inherited messages when targeting Mac OS X 10.6
or later
objc: stop generating coalesced sections
When targeting >= Mac OS X 10.6, don't generate coalesced sections anymore
because they are deprecated. Resolves
gitlab 0039818
fcl-css: TCSSIntegerElement.GetAsString: append units
fcl-css: started TCSSResolver
Overload selection: call procvars if result is compatible with parameter
Previously we only autmatically called procvars without parameters in TP/Delphi
modes if their result type was equal to the parameter type to which they were
passed. Resolves
gitlab 0039748.
fcl-css: selector child combinator
fcl-css: resolver: adjacent and general sibling combinator
fcl-css: resolver: has attribute check
fcl-css: attribute selector operations
symcreat: support for scanner/parser escape sequences
Support escape sequences when parsing internally generated code. Used for now
to force interpreting certain identifiers as unit/namespace identifiers.
fcl-css: tests for :first-of-type, :last-of-type
fcl-css: resolver: invalid selectors
fcl-css: fixed ~= searching only words separated by whitespace
webidl: fixed compile with fpc 3.2.2
pastojs: fixed concat array of record and static array
fcl-css: test inline style
* allocate registers correctly for method pointers on 16 bit address cpus, resolves
gitlab 0039603
* New test for extended CMOVcc optimisations
* i8086 compiler fixed after 9848349610219cd0d2dadc67b112fb09a8317e91
* New tests that evaluate CMOVcc using a reference even if IfRefSafe returns False because the previous condition reads it
fcl-css: added two char tokens, parse descendant combinator as binary op
fcl-css: descendant combinator
fcl-css: attribute value integer
* hopefully final fix after 9848349610219cd0d2dadc67b112fb09a8317e91
fcl-css: started skipping invalid selectors
Changed the interface creation to keep the generic name of an interface.
fcl-css: fixed skipping invalid, skip utf8bom, nth-child
* fix
gitlab 0039903: correctly parse anonymous function references in records (and classes/objects)
+ added test
* check whether the hdef is still a procvardef before accessing it as such
* handle_calling_convention is only needed for a function reference used in a record/class/object when it's an anonymous one
* fix
gitlab 0039902: correctly handle assignment of procvars to properties with a field write accessor
+ added adjusted/extended test
* fix
gitlab 0039902: in case of mode ObjFPC function pointers passed to parameters need to be checked for the correct procdef as well
+ added adjusted/extended test
Missing file from b26703feaa9
* patch by Rika: Use linear file list in FInput.TInputFileManager instead of linked, resolves
gitlab 0039880
fcl-css: :is :where, nth-child of
fcl-css: fixed reading unary tile not as identifier
* mark units compiled with cs_compilesystem with a corresponding flag
* fix
gitlab 0039907: only load system class types from units that are marked as a System unit
+ added test
x86: Deeper insight in OptPass2ADD and OptPass2SUB to produce more efficient code
fcl-css: cache nth-child lists
fcl-css: resolveR: surpress duplicate warnings
fcl-css: parse relational selector list
* Connection list, allow to set descendent for connections and disconnect/connectiondropped events
* end of an include file works like a new line with regard to single line (//) comments, resolves
gitlab 0039912
* fix
gitlab 0039898: when a loadnode is captured ensure that its nf_load_procvar flag is applied to the subscript node as well
+ added tests
* Fix problem reported by Pierre
* Better solution for last commit, correct sockets definitions in implementation
* Prevent codetools from messing up types again
Change is_macro to return true for A_JAL if in pic mode
Add DISABLE_SYSTEMINLINE check to be able to avoid setting SYSTEMINLINE macro
Add name of unit for return type if not from current module in tprocdef.customprocname
Fix loading of ObjC protocol type after c8fee69345
That type lives in the objcbase unit, not in the system unit
Resolves
gitlab 0039914
* cleanup captured symbols when moving them from the nested function to the new method
* when generating the call to the extracted function reference inside the nested routine we need to use the parameters of the nested function and not those of the newly created procdef (fixes some of the test case failures with -O2)
* propertly check equality with the for-counter when propagating constants, resolves
gitlab 0039915
* apply ShlOp2Shl optimization also to floating point operations
* look ahead for ShlOp2Op optimization
* use append_object_struct also for dwarf-3 when creating dwarf debug info for objects, resolves
gitlab 0039920
* small correction to linker script
* improve dwarf cfi on avr
* cfi for avr needs 32 bit pc begin and range
+ add platform independent helper routines for the atomic intrinsics; these only require the implementation of the size specific fpc_atomic_cmp_xhg_* helper, but if only the CPU size specific helper is implemented the others will at least be safe for multi threading inside the same process
+ add utility function to retrieve a signed integer def for a given integer def
+ add message in case an ordinal or pointer expression is expected (e.g. for the atomic intrinsics)
+ test for heapsort fallback to Generics.Collections.TArrayHelper.Sort
Incorrect function name imported from `comctl32.dll` - for `LoadIconWithScaleDown` function.
* improve test for Generics.Collections.TArrayHelper.QSort, resolves
gitlab 0039932
* set the maximum alignment values for constants and variables to 64 on aarch64-linux
* fix for commit a91e5478, mixed localalignmax and constalignmax
fcl-passrc: omit hint for not used anonymous type
fcl-passrc: omit hint for not used anonymous type
fcl-web: TWSServerConnection.HandshakeResponseSent propagates result
* patch by Rika: Optimize some compiler/CFileUtl.pas functions for returning unchanged strings, resolves
gitlab 0039882
* $P/$OpenStrings is supposed to be a local switch, so change that accordingly
+ added tests
* change PPU version as the change regarding $P/$OpenStrings affects the token buffers of generics (which contains the current settings)
* enable OpenStrings by default in mode Delphi
+ added test
* marked parameters in ucomplex with const
cs_opt_consts: disable when non-local gotos are active
This optimisation can insert code after the call to fpc_setjmp, resulting in
it not getting executed after a longjmp. Fixes tmacnonlocalgoto on AArch64
with -O2 or higher.
* fix copy/paste typo in comments
* Fix memleak in case of error.
* optimize shortstring concatenations if they're on the right side of an assignment to directly use the left side instead of a temporary
* use AllocRegbetween in TARMAsmOptimizer.RemoveSuperfluousMove, resolves
gitlab 0039921
* TDebugInfoDwarf3.appenddef_object should not write an extra finish_entry for objects and C++ classes
pastojs: fixed clone array of tobject, pas2js issue 39238
* the right side of a concatenation of multiple ShortString values can directly pass any String[x] to the utility routine, because only the Length() is used, not High() and nothing is modified (also typed pointers must not be used for them); this allows for better code generation for strings with a maximum length < 255
* patch by Bart B: FormatFloat correctly outputs NaN now, resolves
gitlab 0032868
+ test
cgbase: make first parameter of supregset_reset "out"
rgobj: reduce compilation time of programs with long movelists
Reduces compilation time of webtbs/tw2242 for AArch64 with -O2 from
15 minutes to 10 seconds on my system.
from 15 minutes to 10 seconds
Darwin: don't try to print size statistics if the binary wasn't linked
fcl-web: fixed crash in websocket server on windows when closing when already disconnected
* Optimization of TStringHelper.Split by Rika. Fixes issue
gitlab 0039948
* x86: Bug fix where improved AddMov2Mov optimisation didn't
check to see if the other register was modified in between
* x86: Improvement to bug fix so an optimisation can still be made even if the other register is in use
* New test to evaluate i39918
* x86: Bug fix where "mov $0,%reg" was inserted on the wrong side of a SETcc instruction
* x86: Added two new tests for i39922
* x86: Fixed mistake in var9 optimisation under -Os; "andl $255,%eax" is not
smaller than "movzbl %al,%eax" because the immediate is sign-extended,
not zero-extended, so $255 will be stored as a 32-bit value.
* fixes tcg64frv.a_op64_const_reg_reg based on the analysis of Bart B, resolves
gitlab 0039953
fcl-css: shorten PseudoAttribute to Pseudo
* x86: ConvertJumpToRET now sets the condition to C_None
* if a pointer_to_array type conversion is applied to a variable, it is not written, resolves
gitlab 0039957
fcl-css: renamed TCSSNode to ICSSNode, resolver: list of style elements
Rewrite fpc_shortstr_concat_multi for AVR to not use a temporary shortstring to reduce RAM usage.
riscv32: Fix 64bit comparisons
- Code taken from MIPS backend
- Removed some unused code generated for RV32 64bit integer ops
* properly reset nf_write/nf_modify flags for min/max inline nodes, needed by dead store optimization, resolves
gitlab 0039958
* factored out nutils.node_reset_pass1_write
add loongarch64 tests support
FPU exception mask: generlised system unit interface
Make Utf8CodepointLen adhere to the Unicode standard somewhat more and know all of the Unicode 15.0 combining characters.
+ added WASI multithreading helper for setting the stack pointer for the linear stack
powerpc64le: fix reading FPU control word after
gitlab 000758aa1143
Also, missing rest of the commit message for that change:
The default implementation of SysResetFPU now sets the FPU control word that
was last set from any thread (Delphi and FPC i386/x86-64-compatible). No longer
call SysInitFPU when starting a new thread, only SysResetFPU. Combined, this
means that new FPC-started threads will always start out with that control
word on all architectures.
Added generic fpc_cpuinit implementation that is used unless
FPC_SYSTEM_HAS_FPC_CPUINIT has been defined.
Ensure that the softfloat exception mask is initially set to the same
value as the hardware fpu exception mask on architectures that use both.
SafeLoadLibrary now saves/restores the FPU control word on all platforms.
Removed outdated fpc_mtfsb0_corrected define check in powerpc64.inc
Resolves
gitlab 0038230
* a_load_subsetreg_reg will no longer generate an AND instruction if it isn't necessary
fcl-css: added attribute value check
* x86: Modification to PostPeepholeOptShr to skip over MOV instructions if they don't modify the current register
* Added debugcapture route
* make the hidden high parameter for short strings a byte for 8 bit CPUs
* Add crossoriginisolation and debugcapture
* Fix handling of options file
Fix incorrect dwarf entry count. Issue
gitlab 0039928 introduced in 1b6982107f1ac4b4111e37be0a3649d155a2bc1e
Thumb(2): fix compilation after FPU control word changes
Resolves
gitlab 0039966
* x86: The code generator will now attempt manipulate "x and (not y)" (where x and y are ordinals) to use ANDN.
pastojs: FindDefaultConfig: search in symlinked compiler exe
* Publish all available & needed properties
* Fix compilation without threads
- remove unused consume_generic_interface; it has been superseded by handle_generic_interface in 17a0ac7fc03
* x86: Extended FuncMov2Func optimisation to handle 1, 3 and 4-operand functions
+ print optinfo pointer if set
* check if optinfo is assigned before using it, resolves
gitlab 0039913
* x86: FuncMov2Func moved to separate method and also called by OptPass2MOV.
* check for proper exception type
Change wrong "$macros off" into "$macro off"
* x86: Changed BMI2 check to BMI1 for ordinal ANDN optimisation
* x86: CheckJumpMovTransferOpt now also copies over register deallocations to allow better optimisations
Darwin/AArch64: detect when SIGILL indicates an FPU exception
Parse the ESR (ESR_ELx, Exception Syndrome Register (ELx)), return run error
as in float_raise
+ apply OpTest/Or2Op optimization to ANDN as well
+ DebugMsg for OpTest/Or2Op added
Darwin/AArch64: future-proof version check
* x86: PostPeepholeOptTestOr has different debug messages for each found instruction, and also tests for BEXTR and BZHI.
* fix life information propagation for while loops, resolves
gitlab 0039971
* warnings/errors fixed which are caused by the new life information propagation
+ test
* more warnings after last commit fixed
Fix internalerror generated with riscv32 compiler.
Fix
Compiling ./fcl-passrc/src/pscanner.pp
pscanner.pp(2512,40) Fatal: Internal error 2006010801
error generated for riscv32-linux target after commit #c83e6c34
by correcting expectloc for riscv32 for 64-bit comparisons.
Add a small test.
pas2js: use exename instead of paramstr 0, to search pas2js.cfg in exe location
* x86: Updated Mov0LblCmp0Jne optimisation to work when alignment hints appear before the label
* more debug messages
* better exit codes for test
* x86: FuncMov2Func now has code to remove "mov %reg,%reg" (since it doesn't get removed in Pass 2).
* generate the generic name for a specialization of a generic interface alias in the same way as for specializations in general
* fix
gitlab 0029859: ensure that it's correctly passed down into generate_specialization whether a unit name was provided for the specialization and if so search the generic only in that unit
+ added tests
Improve NaturalCompareText behaviour as a comparer.
This version probably can’t return garbage or intransitive results.
* ensure that hmodule is initialized correctly
RTTI: don't generate full RTTI for internal types
These are types created by the code generator for internal purposes, and hence
are never queried by user code
AArch64: X18 is not a volatile register
It may be unused on some platforms, but in general it's reserved for OS library
usage (usually related to TLS)
Darwin: fix mac0S 11.0 version string
Prevents LLVM warnings
systems_iphonesym -> systems_iphonesim
It's a simulator, not a symbolator
Darwin: really fix -Xg for DWARF4
+ MovSubCmp2MovSub optimization
Linux: don't discard CFI when using it for exceptions
Allow cycle to finish successfully with -dEXTDEBUG without ALLOW_WARNINGS=1
* fix FindUnitSymtable for exception symtables, resolves
gitlab 0024801 and
gitlab 0039974
* more consistent naming of exceptsymtable enumeration symbol
* Add gstreamer library import unit (gst)
* stop generation of typed array constants if the size does not match, resolves
gitlab 0039980
use function references for callbacks + change TNotifyEvent to TFPHTTPClientPoolSimpleCallback
* x86: Added new emit_reg_ref_reg routine and related methods to support BMI2 instructions
* x86: The code generator will now attempt to manipulate "x and ((1 shl y) - 1)" to use BZHI
both callback interfaces: classic events and function references
* x86: "x and ((1 shl y) - 1)" to BZHI adapted for in_and_assign_x_y
* dead store elimnation should not remove statements which can cause an exception
* run dead store elimination multiple times if needed
* Added new tests for BZHI optimisations
* simplify implementation (almost) without touching the public interface
* make function references an option to classic events
fix TServerSocketStream.CanRead result when FServer is gone (this happens on closing the server with open connections)
remove unused private variable
httpserver: add KeepConnectionIdleTimeout property and OnKeepConnectionIdle event. Fix KeepConnectionTimeout to match the meaning from the comment and the name
disable KeepAlive flag in CloseConnectionSocket to close hanging keep-alive connections
* changed of do_optdeadstoreelim must be passed by reference as noted by Alexey Torgashin
dwarf-eh: don't emit header if there's no data to emit
Introduce CTYPES_INLINE, enabled by default but which can be disabled using -dDISABLE_INLINE for ctypes unit
Fix the ~ is NOR rather than NOT
Fix the edge of first_imaginary in move op
Add loongarch64 architecture support to compiler
Add loongarch64 linux support to compiler
Add loongarch64 fpcmake support
add loongarch64 rtl support
add loongarch64 linux rtl support
Add loongarch64 packages support
Fix potential overflow when incrementing 8 bit high value of res.
add ppsuf so that we can compiler loongarch fpc now
* generate correct dfa for subroutines declared as safecall
llvmdbg: fixes for method debug info
Mark "self" parameter as artificial
Add methods to the scope of the class/record rather than to the file scope
Add the vmt field, strip the "($)hidden" prefix from its name, and emit its
real type
* check if a target really supports safecall before calling load_safecallresult_node
* ensure that newly created tloadparentfpnodes have a valid resultdef as they might be created in situation where the loadnode itself is no longer typechecked
* fix
gitlab 0039981: retrieve the symbol that returns the desired procdef/procvardef not maybe the Self or something else as we need that symbol to differentiate the procdefs
+ added test
+ mark the def for a capturer class with a corresponding object option
* ensure that the correct overload is picked for function reference parameters
+ added tests
* fix
gitlab 0039978: ensure that Self is captured when a method of the current class is captured into a function reference
+ added test
* fix
gitlab 0039977: allow a capturer to access any method independant of visibility as the visibility checks are supposed to have been done before the captured symbol was converted
+ added test
* more robust calculation of TBITS_SHIFT
* only i386 uses same special fastcall calling convention
* x86: New TEST->BT peephole optimisation
* x86: New OR->BTS peephole optimisation
* x86: New AND(NOT X)->BTR peephole optimisation
llvmdbg: remove unnecessary typedef intermediates
* fix crash in debug output in TX86AsmOptimizer.DoArithCombineOpt for DEC/INC $reg
* x86: CMOV optimisations now check optimizecputype rather than cputype
Fix test to succeed for big endian mips
* x86: LeaLea2Lea now handles cases where the second LEA instruction
has a second register in the reference.
* x86: The LEA/LEA optimisations can now work with a different
destination register and the intermediate register still in
use.
* x86: New CPU feature flags in cpuinfo units
x86: MovMovMov2XChg optimisation now makes use of the CPUX86_HAS_FAST_XCHG flag
Avoidd to use hp1 after calling RemoveInstruction, as the VMT is invalidated
* x86: Converted BTR and BTS tests to use a new utility function to check if BTx instructions are acceptable to use
async pool: procedure references simpler
* x86: New XOR->BTC peephole optimisation
* x86: Zen processors now marked with CPUX86_HAS_FAST_BT_MEM flag
* x86: Flags that relate to optimization hints rather than features have been moved to a separate set
fcl-css: comments and warnings
* calculate life info for if nodes correctly if the then branch is empty, resolves
gitlab 0039992
* Allow to specify DB connection params on command-line
* Modifier for allowed schemas
* Extra linux fcntl constants
* x86: Refactored SetCC optimisations to better
spot label clusters and alignment hints.
Amiga: Bugfix for Tagged Version of OpenWindow at WB1.2/1.3
* x86: New RET/lbl/RET optimisation
* x86: TEST and CMP optimisations now perform jump optimisations prematurely to remove unnecessary TEST/CMPs
Fix use of unaligned for big endian code
* propagate life info properly
* x86: Extension to Cmp1Jl2Cmp0Jle to catch inverted variant
* CollapseZeroDistJump no longer updates registers or strips dead labels, instead just setting p to p.Next
* first (modified, added a comment) patch by Rika to improve generic Index*, part of
gitlab 0039996
+ FstpFldFstp2Fstp optimization
* further look ahead for temp. deallocation for FstpFldFstp2Fstp and FstpFld2
+ ShlShl2Shl optimization
* Range check fixes to BZHI tests
* x86-64: movl/movq -> movl/movl zero-extension optimisation
* x86-64: Extended the movl/movq optimisation to cover more distance
* convert n-n mod const into n div const*const, resolves
gitlab 0039615
Add test for avx2 support using cpu unit function avx2support
* x86: Addition of AMD CPUs: Bobcat, Jaguar, Piledriver, Excavator, Zen2 and Zen3 (and supporting flags)
* x86: Added FMA as an FPU target distinct from AVX and AVX2 (the latter of which has a new FPUX86_HAS_AVX2 flag)
Use correct class typecast for commit ba4cee279b
* Version number for compatibility with lazarus webserver
* Some improvements as proposed by Alexey Torgashin
* Generics.Collections sorting algorithm switches to Insertion Sort if the partition is small (closer to Introsort)
+ missing halt instructions
* TArrayHelper<>.QSort uses a simpler 'reasonable' metric that decrements from 2 log2(n) before changing to heapsort
Fix compilation failure of RTL with -Co option for x86_64-linux target
* New 'do not execute' flag for notes and respective internal error triggering
* x86: 'and not' optimisation now sets the NOT node to 'do not execute' as it is skipped over
* x86: BZHI optimisation now sets the subtract and shift nodes to 'do not execute' as they are skipped over.
* create muln with create instead of create_internal when converting "n - n mod const)" so pass1 works properly, resolves
gitlab 0040004
* TAddNode.Simplify now uses pruning methods
* New node pruning methods
* More complex uses of the pruning methods in TAddNode.Simplify
* try to improve result stability by longer runtime
* avoid unneeded widening of expressions due to constants defaulting to extended
* x86: Fixed movzwl/movzbl bug in OptPass2Movx (resolves i40003)
* Add stub for IsManagedType
Fix two tests for ELFV2 powerpc64 ABI
* use bzhi only (if at all) for in_and_assign_x_y and not other in_*_x_y operations, resolves
gitlab 0040016
Linux: fix pthread types
Remove legacy implementation-specific fields (they don't match the current
glibc fields anymore since a long time) and fix alignment fields (they are
union fields that overlap with the rest of the record).
All platforms now use the modern opaque array-based definitions.
LLVM: fix variant records when alignment of first part is not the highest
Resolves
gitlab 0040015
* In TAddNode.Simplify, commutative operations now ensure integer constant operands go on the right for simplicity
* Dead code in TAddNode.Simplify has been stripped
* disable timing check as it causes too much false negatives on machines under load
* as long as the type passed into a TypeInfo() is not an undefined or error def the resulting value will always be constant at compile time, so it can be compared to another then no matter if typenode or not
+ added tests
Set current_filepos in Internal assembler class also if DEBUG macro is set
+ more change information fixed
AArch64 cgcpu: add missing brackets around and/or expression
* New is_cyclic function to detect if def references itself - fixes
gitlab 0040010
Linux mutex: restored the __m_kind field
This particular field is at the same offset on all architectures with the same
bit width, and is guaranteed by glibc to remain at this offset for backward
compatibility with static initialisers.
Resolves
gitlab 0040021
* continued to fix change information
* Refactor of is_cyclic to use a linked list on the stack instead of a dynamic array
LLVM: us paraloc def instead of para def for byval
We also use the paraloc instead of the para to write the def
LLVM: add Xcode 14.0 support (-ClvXcode-14.0)
* another change information update
* Adjustment to TBLockNode.pass_1 to actually strip nothing nodes
Darwin/AArch64: adjust alignment info of custom-aligned paralocs
Resolves
gitlab 0040019
webidl: add Document/DocumentFragment/Node types
* patch by Rika to improve FrExp and LdExp
* Implement case-insensitive version of Equals & Contains. Fix issue
gitlab 0040029
Use CMOV and FCMOV with a condition, the parser should reject without a condition
Do not set usesectionprogbits and usesectionflags to true for solaris assembler
* Fix testing of A_JCC and A_SETCC, add A_CMOVCC
* Add $PIC for i386 and x86_64 solaris assemblers
Add PIC code for solaris/i386/start.inc
Refuse A_Jcc, A_SETcc, and A_CMOVcc without condition
Fix fcmove instruction for external assemblers
- remove apparently accidently added files
* patches by Rika: Fix a bug in LdExp(extended), and test Math.Frexp/Ldexp implementations instead of own, resolves
gitlab 0040030
fcl-json: add support to create JSONObject with QWord values
+ (negative) test for cmov/j/set without condition
* Implement -t and -x options
* Fix spurious warning of already specified -t
* If no subtarget file found, error out instead of hint/warn
* Globals needs subtarget for macro substitution
* Handle ARCH_TARGET/ARCH_SOURCE
* Lazarus project file
* Remove unused KnownArchitectures tryout
* Add SUB_TARGET
* New intrinsiccode field for TCallNode to track transmutation from TInlineNode
* tinlinenode.handle_str now uses the new intrinsiccode field for TCallNode
* Fix some compiler warnings
* Fix some compiler warnings
* Fix some compiler warnings
* Fix some compiler warnings
* Fix compiler warnings: switch to TStrings for external command options
* Fix loglevel for ListMode
* Fix wong extension for fpcssresolver.pas
* A call node's original parameter ordering can now be remembered, and a method introduced to access this
* TCallNode.simplify method introduced to convert Str with a constant into a direct string assignment
* Some improvements by Rolf Wetjen
* Remove unused KnownArchitectures tryout
* Remove unused KnownArchitectures tryout
* Refactor, so the combination CPU-OS-SubTarget is a record. Allows for extension if need be
aros: fixed typo/naming mismatch in 5b0669d0, spotted by Alexey Torgashin
* get rid os some warnings
* Delegate darwin ifdef out of program flow, towards const, for clarity
Homogenize with other OSes by also using CPU_UNITS make variable
Regenerate the three Makefile's modified by the two previous commits
Add SetToArray and ArrayToSet functions for more general RTTI Set handling
fphttpclient allow to override supported protocols from url
* Patch from Ondrej to implement SameArray
* Free cached queries when committing
* Define char as AnsiChar
* properly transform a+const1-const2 into a+const1+(-const2), resolves
gitlab 0040041
+ missing -O4 option added
+ (modified) patch by Bart B to add Cycles conversion functions, part of
gitlab 0040055
* Obey -p/--port command-line option
* Patch from Andrew Haines to actually pass OutgoingFrameMask to frames. Add woSendErrClosesConn flag
* Patch from Andrew Haines: do not send close connection message if already closed
* Sample program from Andrew Haines to test echo servers
* RFC states that client must use mask: enforce mask on connect
* Fix missing fields in TSQLDBRestResource.Assign
Remove include files for collation_ru source, as they are gone since commit 27ed2808dcb4c95b101cada579f32ea3325e08d3
Add missing include directory src/ptcwrapper
Remove convert.inc from fpmake include list as it was removed in commit 15ff16d85218ad77941878493af4b120cb11da47
Specify correct include files used in ptcwrapper unit, not in ptceventqueue
* improve module local data accesses by avoiding a got read
m68k: updated instruction tables to match vasm release 1.9a
m68k: add some initial CPU-specifc boilerplate for an internal ELF writer
* Example program to print unit dependencies
* Allow widechar sets, reduce to ansichar set
* Do not insert widechar -> ansichar conversion node in const declaration
* Allow array constructor to contain widechars in mode unicodestring.
* Do not insert a widestring <-> ansistring conversion node when checking for (un)equal empty string.
* fix
gitlab 0040061: the Self of types that aren't implicit pointers (recods, TP-style objects, primitive types (for helpers)) needs to be stored as a Pointer in the Capturer so that modifications are correctly visible
+ added tests
* fix
gitlab 0040060: ensure that Self is not added for anonymous functions that are part of a static class method
+ added test
* a callnode for an anonymous function can have its procdefinition fixed, thus avoid the need to check for overloads
* don't free the old, captured Self symbol as that does not belong to the anonymous function
* when assigning an anonymous function to a method pointer move the function to the normal function level to avoid potential problems when accessing other variables
* fix
gitlab 0040062: ensure that Self is only added to anonymous functions when dealing with method pointers
+ added test
* do not throw an internal error on typed constants with wrong element count, resolves
gitlab 0040066
* ensure that all hidden parameter symbols are removed when adding an anonymous function to a capturer (they'll be added again later on)
* also skip high parameters when pc_normal_no_hidden is given to tprocdef.getcopyas
* fix
gitlab 0040031: with support for inline specializations it no longer makes sense to make the parameter symtable of a procedure variable type readonly as there *are* defs that are added to it
+ add adjusted test
- remove no longer required readonly functionality from tparasymtable
symcreat: add hidden high parameters in create_procdef_alias
No longer happens automatically for pc_bareproc procdef copies
llvm:a fix opaque ptr IR for Objective-C protocol
Also for interfacecom functions and properties. Fixes test/tobjc9 and
test/tobjc9b with LLVM 15.0+
* fix for bug
gitlab 0040071 (corrected integer size redefined due to use of objfpc)
thlcgobj.g_undefined_ok: new method
Specify that a register's contents may be undefined because of previous
operations (e.g. shifting by more bits than the register has, whose result
depends on the target architecture), but that the code generator will
later on ensure that if this is the case, that result will be overwritten/
masked.
LLVM: override thlcgobj.g_undefined_ok
Uses the freeze instruction available in LLVM 10.0+. If we don't freeze undef/
poison values before using them in a calculation (even if that calculation is
something like "and 0", which masks the result completely), the result will
still be undef/poison and will keep propagating.
tcginnode.pass_generate_code: use tlhcgobj.g_undefined_ok
Also override the code that uses this for LLVM with a variant that does not
need it for LLVM versions that do not support the freeze instruction.
* patch by Bart B to complete missing functions in the math unit, resolves
gitlab 0040055
m68k: added a helper function to check if a register is an FPU register
* Add PATCH method to router
Avoid generation of invalid 'cb(n)z sp,label' instruction
Amiga: 32 bit set color functions for OS 1.x
* Reorganize packages/googleapi/ directory.
Separate hand coded files to a new directory "src/base"
(googlebase.pp, googleservice.pp, googleclient.pp)
Move generated api files to a new directory "src/bindings"
Move the the bindings generator program out of /examples to /generator
Move the unit googlediscoverytopas.pp to /generator
Fix paths in /generator/googleapiconv.lpi
Regenerate Makefile (using fpcmake -w -Tall)
Edit fpmake.pp
- remove src path
- add src/base path
- add src/bindings path
- fix bad path for unit googleadexchangebuyer.pp
- do not include unit googlediscoverytopas.pp (commented out)
(add this later if the generator is setup to be
included in the build)
Implicit specialisation: use regular array parameters for array constructors
Fixes compilation of test/timpfuncspez5 with LLVM and debug info, as the LLVM
debug info writer internalerror's when you try to generate debug info for
an array constructor (since those types should never appear as parameter/
variable types).
Replace them with reusable regular array types, so that multiple invocations
of the same generic function with array constructors of the same type and
number of elements are collapsed into the same specialisation
macOS: set max var/constalign to 64
For all non-ppc(64) targets. Fixes test/talignrec1.
The test for '' after getting the location into BaseDir should test BaseDir not BaseURL.
* Forbid use of string alias in system unit
* patch by Bart B: Implement sinh(), cosh() and tanh() for single, double and extended parameters, resolves
gitlab 0040083
rtl: TReader: FindComponentClass using field name and classname
* Check that system unit is actually loaded before using it to search for system symbols
(cherry picked from commit 9e5ee68887dcb8acf66caf873bc5cfc58fb25316)
* Add is_systemunit_unicode function (cchartype suymbol)
* add uachar loading for unicode rtl
* Add opensslsockets to uses so googleapiconv works with HTTPS
m68k: more boiler plate and refactor for a future internal assembler
* string -> shortstring, check zero length instead of comparing to empty string
* check zero length instead of comparing to empty string
* check zero length instead of comparing to empty string
* string -> shortstring, check zero length instead of comparing to empty string
* string -> shortstring, check zero length instead of comparing to empty string
* string -> shortstring, check zero length instead of comparing to empty string
* Add IndexChar for widechar
* check zero length instead of comparing to empty string
* String -> ShortString/RTLString
* check zero length instead of comparing to empty string
* check zero length instead of comparing to empty string
* Synchronize API for AnsiString/Unicode string, keep string where possible.
* Adapt classes to Unicode RTL : Give string/char correct type depending on case
* Refer to mainunit for lazarus IDE
* Refer to mainunit for lazarus IDE
* String helpers for all string types
* Explicit string types, duplicate where needed
* Remove use of internal conversion routines
Make generic Index* faster and denser.
* first approach to fix tfrldexp on i386-win32
rtl: TBinaryObjectWriter.Version
* Fix changed base type in TAbstractWriter for WriteString
* Fix windows compilation
* Fix dynamic array (managed types) handling in restbase.pp (Ref
gitlab 0040094)
Fixes code in method TBaseObject.SetArrayProperty
and removes private method SetArrayElements
This fixes AVs and memory leaks.
* googleapiconv fixes and cleanup (ref
gitlab 0040094)
- Add updated URL for google api discovery
- Fix incorrect usage / help messages and put options in alpha order
- Replace "with .. do" statement with a local variable for clarity
- Add missing DiscoveryJSONToPas.Execute so output files are not empty
- Add FreeAndNil(Application) to clear a memory leak
(it now has a clean Heaptrc)
- Minor fix to .lpi file which had incorrect dependency.
* bash scripts for testing and running googleapiconv (ref
gitlab 0040094)
* Some forgotten string -> shortstring instances
LLVM: remove use of getelementptr in make_simple_ref_ptr
We cannot safely infer whether it needs to be indirect or not there,
it should be done at a higher level if appropriate.
* more fixes to googleapiconv (ref
gitlab 0040094)
(googlediscoverytopas)
-Fix unit clause and "uses" for generated units
(googleapiconv)
-Add --version parameter
-Fix logging messages
-Set OutputUnitName so units have correct clause
(restbase)
-Add #todo notes for follow up
-Move function RFC3339ToDateTime next to related functions
m68k: removed the unused S_IQ opsize
rtl: added overload GetClass(UnitName,ClassName), implemented UnregisterClass, overload TStream.WriteComponent(Instance,WriteUnitName)
rtl: ObjectBinaryToText, ObjectTextToBinary: support unitname/classname
* Remove conditional code for compiling googleapiconv with v2.6.4 on i386
(restbase.pp)
- Remove {$ifdef ver2_6} directives and associated code
- Remove {$ifndef ver2_6} directives (but keep code)
(googleapiconv.pp)
- Remove {$ifdef ver2_6} directives and associated code
- Remove synapse defines and associated code line
(googlediscoverytopas.pp)
- Remove {$ifdef ver2_6} directives and associated code
* Add NetAddrIsPrivate function from Ondrej Pokorny
* Remove PChar/PPChar/PPPChar defines, they are in the system unit
* Fix compilation with unicodertl
m68k: more work on instruction validation for the internal assembler
* More fixes and cleanups in restbase.pp (googleapiconv)
- Move test functions out of class to local procedures and into
{$IFDEF DUMPARRAY} and change the parameters to match the rtl versions:
function GetDynArrayProp(P: PPropInfo) : Pointer; virtual;
procedure SetDynArrayProp(P: PPropInfo; AValue : Pointer); virtual;
- Add dyn arrays support to the ClearProperties method
- In SetArrayProperty, fix previous commit (fba7595b) because the
array properties were not being set and make the dyn array handling
code more typesafe.
- In SetObjectProperty use TObjectArray instead of Pointer to make the
dyn array handling code more typesafe.
- In ClearChildren use ClearProperty to do the work and simplify the code.
- Fix some compiler warnings and hints.
*fix compile warnings and hints in googleapiconv and googlediscoverytopas
- Fix compiler warnings and hints and unused local variables
- Change deprecated ClassHeader to ClassComment
- Fix comment in helper script
Add sign extension to 32-bit for unaligned OS_8 and OS_16 types (to try to solve
gitlab 0040102)
* patch by Alfred Glänzer: Prevent install of unnecessary files during cross-install, resolves
gitlab 0040101
Only signed extension is needed
* avoid internal error in case of an illegal generic declaration
* Better Ansi/WideString support for TStream. Fix StringStream with unicode to be delphi compatible
* undid accidentely activated define
* Ensure installer is there, needed by some packages
Add Delphi-compatible TCurrencyHelper
* alternative declaration for SDL_CreateThread added to keep old code working, resolves
gitlab 0040112
* Some fixes in INtToBin, XorDecode/XorEncode
rtl: added TBinaryObjectReader.BeginComponent
* do not warn on lea e/rsp with negative address offset, part of
gitlab 0040113
+ tests
* Fix alias typed documentation
* Correct exception handling
* i386: Bug fix where EBP was marked as preserved when it wasn't, causing faulty optimisations
* Added some debugging aids
* x86_64: warn only on negative offsets if rsp is involed, second part of
gitlab 0040113
+ tests
* cleanup of outdated defines
+ support of octal literals
Darwin: support -Xg for DWARFv4
+ support procvar[] in tp/mac procvar mode if the procvar returns an array type
* compile float*2 as float+float if possible as proposed by Rika, resolves
gitlab 0040116
* (Hopefully) fix compilation for non-win,non-unix platforms
LLVM: workaround to fix make all
* Adapt fcl-web (and examples) to unicode rtl: Need widestringmanager, use echo as path, make runnable.
* mark constant symbols used in preprocessor expressions as used, resolves
gitlab 0040108
* PChar -> PAnsiChar fixes
* PChar -> PAnsiChar fixes
* Fix compilation with unicode rtl
* Fixes in PChar -> PansiChar
* compilation after merge fixed
+ add utility function to retrieve the char type def from a stringlike def
* use new chartype_for_stringlike function to retrieve the char type for a stringlike def instead of casting to a stringdef
* UnicodeString<>WideString on windows
* CompareStrAnsiStringProc is not necessarily assigned
* Zero out stringmanager record
* get_stringconst should handle widestring correctly: library & import names are unicodestring constants in unicode rtl
* Fix compilation after rebase
* Allow to work with unicodertl
Fix sysutils unit compilation failure for wasm32-wasi wince and possibly more targets
* Unicode resource strings
* initial preparations for riscv32-freertos
* Set result correctly in TCORSSupport.HandleRequest
* Avoid error by checking if content was already sent
* Create container with unique name, improve thread-safety
Improved CompareByte for i386 and x86_64.
+ first work for esp32-c3 support
* transform a/a only into 1 if fastmath is on
* more riscv32-freertos-esp32c3 stuff added
m68k: add tables to convert from some stub opcodes + condition into real opcodes. Use them in the external assembler writer for now. Later the internal assembler will need these tables too.
m68k: do not generate LEA instructions with explicitly specified size. only long is possible anyway.
* SetString needs correctly typed argument
* Rework so scanner & lexer files do not contain actual code. Code is moved to scanbase and h2pbase units
* Add switch to revert to using char
* Prevent writing pointer types twice
* patch by Rika: Implement TCurrencyHelper.Ceil/Floor, resolves
gitlab 0040134
* x86: Fixed bad register tracking in OptPass2JMP
* x86: More accurate register tracking in CheckJumpMovTransferOpt
* x86: Registers are now allocated properly during a FuncMov2Func
optimisation
* x86: Converted bit-test optimisations to use
debug_hexstr so comments aren't truncated
(and put $ before BTx values)
* x86: New debug_hexstr instruction to help produce concise debug comments
JVM: add typesym for anonymous record typed constants
Fixes compilation of system unit with JVM compiler after b38d13577f943
* Different PUT/PATCH. Allow legacy PUT
Utf8CodePointLen: remove pointer arithmetic to fix JVM compatibility
* Completion of put/patch split
* Correct params checking in case of array
* Fix interlockedincrement
Improve generic CompareWord.
Improved CompareWord for i386 and x86_64.
* patch by Jinyang He to fix building loongarch64 with -Oodfa/-O4
Commit new revision.inc file after f737860763
Improve generic CompareDWord.
Improved CompareDWord for i386 and x86_64.
* Improvements so whole RTL can be parsed
* Added additional constants for enumerated, fix build
* enable to check the existing of environment variables in config files
+ completed identifiers for RiscV ABIs
* set fpu type correctly for riscv32-freertos
IndexWord and IndexDWord for i386 without REP SCAS.
riscv32-freertos:
* unit name fixed
* linker script fixed
* assembler supports dwarf
* don't not generate non-constant leb128 entriesm for riscv32-freertos
* set FPU type properly for riscv32-freertos
* call esptool.py properly on Darwin
+ exec_e_cant_call_linker shows now the error message
Add support for -Ploongarch64 option
* x86: Some refactoring to use aoc_ForceNewIteration instead of manually advancing p
Aslo check that live_end is assigned before refering to it
Fix compilation error for loongarch64 system unit with -dFPC_USE_LIBC option
Fix compilation error with -dFPC_USE_LIBC for loongarch64 cpu
* x86: TEST/Jcc/TEST optimisations can now look beyond the next instruction under -O3
pas2js: fixed compileserver compile with fpc 3.2.2
fcl-web: gitignore for linux
fcl-web: simpleserver: fixed parsing config file
fcl-web: moved OnLog from TSimpleFileModule to TFPCustomFileModule
* x86: JccMovJmpMov2CMovCMov will no longer move
MOV instructions (fixes i40122)
Even better CompareByte for x64.
Tries to handle tails with a SIMD unit as well.
* x86: PostPeepholeOptCmp and PostPeepholeOptTestOr
now do a final attempt of TrySwapMovCmp to
clean up Pass 2 optimisations
* also count the use of enum syms in preprocessor expressions correctly
* post/pre inc/decrement references modify obviously the base register on avr, resolves
gitlab 0040153
* Better transaction handling, improved ranking mechanism speed
* completed post/pre inc/decrement addressing mode instructions in TAoptBaseCpu.RegModifiedByInstruction
Amiga: System CloseList() and CleanupThreadProcChain() are called after the memory manager is already shut down changed to native os memory allocation
AThreads: ThreadInfo for the main thread move to a global var to prevent problems with heap manager
* patch by ccrause: do not load .fpc* sections into avr microcontroller to save space, resolves
gitlab 0040160
* patch by ccrause: fixes another .fpc* section problem for AVR, resolves
gitlab 0040162
Fix glDebugMessageXxx to use extdecl
* x86: Fixed oversight in RegModifiedByInstruction not checking W0, W1 and WU-type flags
* Allow to read extra targets from secondary file
* Remove double external clause
* External objc class forward definition
* fix compilation with -dEXTDEBUG
* patch by Rika: Perform 32-bit random if the bound fits into 32 bits at runtime, resolves
gitlab 0040171
* Speed optimisations for peephole register tracking functions
* patch by Rika: fix for 15f29b8fa06a5b5d25a0d4783d7940fdf73b00d2
* patch by Rika: Make more use of fpc_*_array (mainly fpc_addref_array) in rtl/inc/dynarr.inc, resolves
gitlab 0040174
* check if a linker with the postfix .bfd exists, if yes, use it, resolves
gitlab 0040175
* fix (hopefully) build without an ld.bfd variant
x86: Some oversights fixed where another iteration of pass 1 wasn't performed when it should have been
pastojs: allow readonly modeswitch functionreferences and anonymousfunctions
fcl-js: fixed writing small floats
+ x86: AND/CMP -> CMP optimiziation
* fixed comment
* shortened code
* FindRegAllocBackward will now return nil if it hits a dealloc for the register first
* Dotted filenames for package uuid
* Dotted filenames for package bfd
* Dotted filenames for package libgc
* Dotted filenames for package cairo
* Dotted filenames for package odbc
* Dotted filenames for package opengles
* Dotted filenames for package os2units
* Dotted filenames for package opencl
* Dotted filenames for package gstreamer
* Dotted filenames for package libxml
* Dotted filenames for package ptc
* Dotted filenames for package fv
* Dotted filenames for package fpgtk
* Dotted filenames for package iconvenc
* Dotted filenames for package mysql
* Dotted filenames for package cocoaint
* Dotted filenames for package pxlib
* Dotted filenames for package libndsfpc
* Dotted filenames for package libcurl
* Dotted filenames for package imlib
* Dotted filenames for package libffi
* Dotted filenames for package googleapi
* Dotted filenames for package fpindexer
* Dotted filenames for package unzip
* Dotted filenames for package symbolic
* Dotted filenames for package newt
* Dotted filenames for package fcl-registry
* Dotted filenames for package ncurses
* Dotted filenames for package rtl-generics
* Dotted filenames for package libfontconfig
* Dotted filenames for package rtl-console
* Dotted filenames for package bzip2
* Dotted filenames for package dblib
* Dotted filenames for package users
* Dotted filenames for package fcl-report
* Dotted filenames for package gdbm
* Dotted filenames for package fcl-net
* Dotted filenames for package tcl
* Dotted filenames for package numlib
* Dotted filenames for package graph
* Dotted filenames for package gnutls
* Dotted filenames for package oracle
* Dotted filenames for package ggi
* Dotted filenames for package httpd13
* Dotted filenames for package gtk2
* Dotted filenames for package sndfile
* Dotted filenames for package fcl-json
* Dotted filenames for package opengl
* Dotted filenames for package zorba
* Dotted filenames for package x11
* Dotted filenames for package libgbafpc
* Dotted filenames for package libenet
* Dotted filenames for package syslog
* Dotted filenames for package arosunits
* Dotted filenames for package winceunits
* Dotted filenames for package libpng
* Dotted filenames for package fcl-res
* Dotted filenames for package webidl
* Dotted filenames for package paszlib
* Dotted filenames for package fcl-db
* Dotted filenames for package fcl-passrc
* Dotted filenames for package fcl-js
* Dotted filenames for package dbus
* Dotted filenames for package fastcgi
* Dotted filenames for package imagemagick
* Dotted filenames for package fcl-sound
* Dotted filenames for package proj4
* Dotted filenames for package dts
* Dotted filenames for package rexx
* Dotted filenames for package cdrom
* Dotted filenames for package fftw
* Dotted filenames for package hermes
* Dotted filenames for package fcl-sdo
* Dotted filenames for package fcl-hash
* Dotted filenames for package objcrtl
* Dotted filenames for package qlunits
* Dotted filenames for package libogcfpc
* Dotted filenames for package libcups
* Dotted filenames for package a52
* Dotted filenames for package ldap
* Dotted filenames for package httpd22
* Dotted filenames for package odata
* Dotted filenames for package pastojs
* Dotted filenames for package pthreads
* Dotted filenames for package fcl-pdf
* Dotted filenames for package fcl-web
* Dotted filenames for package palmunits
* Dotted filenames for package fcl-process
* Dotted filenames for package unixutil
* Dotted filenames for package libmagic
* Dotted filenames for package libusb
* Dotted filenames for package jni
* Dotted filenames for package xforms
* Dotted filenames for package mad
* Dotted filenames for package libnettle
* Dotted filenames for package libc
* Dotted filenames for package libtar
* Dotted filenames for package fppkg
* Dotted filenames for package postgres
* Dotted filenames for package hash
* Dotted filenames for package gitlab
* Dotted filenames for package wasmtime
* Dotted filenames for package fcl-mustache
* Dotted filenames for package regexpr
* Dotted filenames for package univint
* Dotted filenames for package pcap
* Dotted filenames for package gnome1
* Dotted filenames for package matroska
* Dotted filenames for package morphunits
* Dotted filenames for package gtk1
* Dotted filenames for package rtl-objpas
* Dotted filenames for package winunits-jedi
* Dotted filenames for package fcl-async
* Dotted filenames for package oggvorbis
* Dotted filenames for package openssl
* Dotted filenames for package utmp
* Dotted filenames for package httpd24
* Dotted filenames for package tplylib
* Dotted filenames for package fcl-fpcunit
* Dotted filenames for package libvlc
* Dotted filenames for package pasjpeg
* Dotted filenames for package fcl-stl
* Dotted filenames for package libsee
* Dotted filenames for package libmicrohttpd
* Dotted filenames for package libgd
* Dotted filenames for package gdbint
* Dotted filenames for package os4units
* Dotted filenames for package fcl-extra
* Dotted filenames for package openal
* Dotted filenames for package gmp
* Dotted filenames for package rtl-extra
* Dotted filenames for package svgalib
* Dotted filenames for package ibase
* Dotted filenames for package fcl-xml
* Dotted filenames for package amunits
* Dotted filenames for package librsvg
* Dotted filenames for package lua
* Dotted filenames for package nvapi
* Dotted filenames for package modplug
* Dotted filenames for package fcl-base
* Dotted filenames for package rtl-unicode
* Dotted filenames for package fcl-image
* Dotted filenames for package tosunits
* Dotted filenames for package fcl-css
* Dotted filenames for package zlib
* Dotted filenames for package sdl
* Dotted filenames for package aspell
* Dotted filenames for package ami-extra
* Dotted filenames for package httpd20
* Dotted filenames for package winunits-base
* Dotted filenames for package sqlite
* Dotted filenames for package chm
* Dotted filenames for package iosxlocale
* Dotted filenames for package vcl-compat
* Tools to create dotted units or units that support dotted filenames
* Allow hidden units to be found when replaying generic
* Allow System.Variants (Delphi-compatible name) to be found when inserting variants unit
* Do not crash when module pointer is nil
(cherry picked from commit e6f71b6accd4949b8dec86fdd93d27e0c109732b)
* fix typo in resource string
+ add generic utility function ConstParamIsRef<> to determine whether a specific type is passed by-value or by-reference as a const parameter
* second mul might get called with a zero operand if the other has a side effect,
handle this correctly in ti386addnode.second_mul64bit, resolves
gitlab 0040182
fcl-hash: fixed start without params, show config filename
fcl-hash: fixed start without params, show config filename
fcl-hash: fixed HOTPCalculateToken on non utf8 platform
* Avoid useless exceptions by checking existence of resource
* Fix default classname property
* Fix windows compilation
* Resource handle is not resource ID
* patch by Rika: Remove dead code in DynArrayIndex, resolves
gitlab 0040194
+ add function reference suitable overload of TThread.ForceQueue()
* patch by Rika: Remove wrong paranoia (and add correct one (and shorten in general (and fix a bug in))) fpc_dynarray_setlength, resolves
gitlab 0040193
* library list for esp32c3 for IDF 5.0
* Add possibility to read updated data
+ riscv32-freertos: first version of TlinkerFreeRTOS.GenerateDefaultLinkerScripts
* compilation fixed with -Oodfa
* ensure that a procvar (especially a "REFERENCE TO") begins either with FUNCTION or PROCEDURE
+ added test
SSE2 Index* and Compare* for i386, chosen at runtime.
Fix messages about not found gcc
Code actually looks for the gcc executable inside $PATH, not for libgcc.
fpc works without the libgcc.so devel symlink.
* take care of mips64* when calling gcc for the libgcc path
* change Result of CheckSynchronize to true when at least one method was executed (matches with both FPC and Delphi documentation)
* PopCount takes care only of the bit pattern, so take the uvalue to avoid an internal error, resolves
gitlab 0040190
WPO: also consider NewInstance to detect class instancing
Resolves
gitlab 0040200
LLVM: don't use type names in ctor/dtor arrays
Workaround for https://github.com/llvm/llvm-project/issues/56809
LLVM: LLVM 16 support
No changes compared to LLVM 15 that affect us
LLVM: cleaned up some comments
Arosunits: rexx unit added
* Add support for select query parameters
* Better signature for Initialize/Finalize dummies
* also initalize default helper variables of initialization sections, resolves
gitlab 0040183
Fix interactive information log error
+ support FILEEXISTS(...) in preprocessor expressions, resolves
gitlab 0039527
+ tests
* tscannerfile.readpreproc sets preproc_pattern correctly for quoted strings
* fix of Erroneous reading of the value of the StackLength variable at program start based on issue report by Sergey Larin, resolves
gitlab 0040211
Report correct error positions inside macros (at least more often).
Optimize {$DEFINE x := y} and refactor tmacro.buftext.
* write types declared in the interface section with a DW_AT_external tag, should resolve
gitlab 0040210
* revert use of DW_AT_external for types as this is not covered by the dwarf standard
WPO: fix dead code detection, and handle procvars
Extend dead code detection to not only look for the main mangled name, but also
for any aliases before deciding that a routine has been dead-stripped.
Assume objects/classes can also be constructed if the address of one of their
constructors or of the TObject.NewInstance class method has been taken.
Resolves
gitlab 0040204
* patch by Rika: Shorten cutils.compareansistrings, resolves
gitlab 0040213
* patch by Rika: Use Index* for pointer lists, resolves
gitlab 0040218
Add aarch64-iphonesim target
Commit new utils/fpcm/revision.inc after aarch64-iphonesim target addition
Handle Index* / Compare* tail by directly reading last VECSIZE bytes, if there was at least one full vector.
* do not replace index registers with esp/rsp, resolves
gitlab 0040223
Do not always set DEBUG_AOPTCPU
* Some changes suggested by Edgar Fernando
* Add HTTP logging mechanism
* JSON-RPC 2.0 allows params to be optional
* wasm32: generate module info by traversing through current_module and its
used_units list recursively. This should fix
gitlab 0040229
* use a TFPList, instead of a dynamic array in twasmnodeutils.InsertObjectInfo.
No functional changes.
+ support 16-bit pointer size in TFPGObjectList.IndexOf
+ support 16-bit pointer size in TFPGInterfacedObjectList.IndexOf
+ support 16-bit pointers in TFPList.IndexOf
* some error messages use nicer symbol names
fcl-web: fixed av on logging TFPHTTPConnection.DoHandleRequest
Add tf_use_psabieh for LLVM for x86_64-iphonesim, aarch64-ios and aarch64-iphonesim targets
* patch by Rika: Fix and possible simplification of SanitiseXMLString, part of
gitlab 0039800
Use systems_darwin set for supported targets for as_clang_llvm_darwin
fcl-css: ECSSException, resolver log warnings
Post-modern CompareByte for i386/SSE2.
Post-modern CompareByte for x86-64/SSE2.
RP2040 support based on modification by Michael Ring (https://github.com/michael-ring/freepascal).
Specify endianess and abi when calling xtensa linker
Add -EB or -EL paramter to xtensa assembler call (Warning: this requires a patched 2.40 release\!)
Supposedly faster FillChar for x64.
rtl: classes: added parameter aName to TFindComponentClassExEvent
Fill* for x64, physically sharing half of the code with FillChar.
Try to implement linux si_uc.inc for xtensa CPU
Re-enable QSort killer O(N²) detection, make it deterministic and instant, and make the killer itself universal.
* No need to check standalone if no tag
Supposedly faster Move for x64.
Fix UTF-8 symbols in comments.
Index/Compare refined by hand instead of mostly being GCC output.
Attempt to use local _init and _fini procedures
Improve shortstring Pos() and generic fpc_shortstr_compare().
Improve i386 fpc_shortstr_to_shortstr(), fpc_shortstr_compare(), and add fpc_shortstr_compare_equal().
Add aarch64-freebsd c object files
* patch by Dean Mustakinov to improve commandline quote handling on Windows, resolves
gitlab 0040189
httpserver: make sure that socket is freed even if StartServerSocket raised an exception
* Fixed bug in "JccMovJmpMov2CMovCMov" optimisation where it didn't track registers in references getting changed
* Added test to attempt to catch access violation caused by faulty optimisation (i40165)
Add missing swaping in case of different endianess of stab entry inside TInternalAssembler.WriteStab
Fix for tentryfile.getreal with FPC_SOFT_FPUX80, putreal still needs the same change
Specialized IndexQWord for i386.
[AVR] Include bootloader starting address and max size where relevant.
Restrict previous change to compilers that do not have 10-byte extended type
Use GetExceptionMask/SetExceptionMask to avoid floating point exception inside FPC_SOFT_FFPUX80 code
Also add boot information to board aliases.
Fix error leading to Makefile error for all non AVR CPUs even when SUBARCH is set
* Use correct sizeof to check if entry size is large enough
Only modify softfloat_exception_mask, as this is not handled equally for all CPUs with GetEXceptionMask/SetExceptionMask
Add -Aas-clang for i386/x86_64 unix targets
Set defdynlinker depending on selected ABI for riscv32 and riscv64
* More efficient if-statement construction in tmoddivnode.simplify
The exit code isn't reseted in the pas2js compiler.
fcl-passrc: fixed compile
fcl-passrc: fixed adding specialized type behind array
pastojs: fixed pass non safecall proctype to safecall proc type arg, issue
gitlab 0039261
pas2js: createSafeCallback: return null for null
* Start of error recovery
* More error recovery: variable (lists)
* Add showdeps example to ignore list
Make sure RTL str consts have consistent ending. Fixes issue
gitlab 0040272
fcl-passrc: parsestatements: simplified
fcl-passrc: refactor ParseStatement, split ParseElse
fcl-passrc: refactor ParseStatement, split ParseFor
fcl-passrc: refactor ParseStatement
fcl-passrc: refactor ParseStatement
fcl-passrc: started resolver tests for multi errors
* Code that checks for divisions against -1 is now not inserted if
it's not necessary (e.g. no downsizing)
Restore start section at end of assembler block inside z80 asm reader
- remove unused variable; reported by Alexey Torgashin on the forum
* Refactor processorname -> suffix name for clarity of flow
Refactor initialization of binary and processor name for clarity of flow
Refactor check for -PB and -PP for clarity of flow
* Refactor: Rename some variables for clarity
* Refactor: add utility routine to handle command-line changes
* loongarch64 architecture reinstated
Add new test code to verify that tentfile.buf limits are not overpassed
Change m68k-embedded target to handle standard RTL units as most other CPUs do (fixes compilation failure in utils/h2pas package)
* implement waitformultiple for win32 only.
* Change interface to allow for COM waiting + a basic windows implementation. (only for desktop apps? Use msgwait* for the rest?)
Do not define HasSignal for aarch64-win64 target
Use clang instead of as for AsBinStr for aarch64-win64 target
* clearified message is mentioned in documentation issue 39349
Add symbian target to UItypesOSes
Remove accidentally added binary file
Fix compilation for msdos targets
* Make sure it compiles with previous release
Use same features for riscv32 as for arm and xtensa CPUs
Add '-b pei_aarch64' option for aarch64-win64 system
Add -Awin64-as option for aarch64 compiler for win64 target
Disable -EB/-EL passing for freertos OS as the corresponding released binutils do not support this option
Add new make variable BETATARGETS, for CPU targets in beta stage, to include it into distclean list
Try to fix linker script for aarch64-win64
* replace Length(
) - 1 with High() which leads to slightly shorter/better code (reported by lagprogramming on the forum)
* Add option to allow emitting comments in RTTI info
* Emit comments in RTTI info for classes/interfaces
* Define RTTI directive parameters
+ Implement support for parsing sets in preprocessor directives
* Implement parsing of RTTI directive
* Introduce RTTI options in symbol definition
* Apply RTTI directive status to symbol
* Allow RTTI directive also before uses clauses
* Write extended RTTI info
* Dump extended RTTI info from PPU
* Define RTTI visibilities
* Avoid range error in comparisons
* Extended RTTI Type info routines and data structures
* Implement -t options for fpc executable
* Remove some debugging statements
* Refactor processorname -> suffix name for clarity of flow
* Refactor initialization of binary and processor name for clarity of flow
* Rename variables for clarity
* subroutine to simplify command-line handling
* Limited subtarget config file parsing to detect -V
* Specifying multiple -V should not give an error but warn, as for -T or -t
* Delphi compatibility: Add conversion between TValue from/to variant and TVarRec
* Correct command-line handling
* Reorganize tests in more clear sets
* fix
gitlab 0040293: have the SysUtils unit use the TArray<> declaration in the ObjPas unit instead of declaring it again
Shorter i386.inc:fpc_AnsiStr_Decr_Ref.
Shorter x86_64.inc:inc/declocked.
+ introduced [hl]cg.a_label_pascal_goto_target. It is similar to [hl]cg.a_label
and is called by the code generator, when the label generated is the result of
a Pascal label.
+ added wasm32-specific flag tai_label.is_pascal_goto_target
+ added the wasmfuncref directive for procvars. Not actually implemented, just
parsed.
* ppudump compilation fixed
+ handle wasm funcrefs in tgcpu.defToWasmBasic
* added support and simplified the handling of results in create_functype_common for reference types
+ also support funcref parameters in create_functype_common
+ introduced flag is_wasm_externref to tcpupointerdef for wasm32. This is to be
used for declaring WebAssembly externref reference types.
+ magically insert a void externref type in the System unit, called WasmExternRef
+ support externref in defToWasmBasic
+ handle externref parameters in create_functype_common
+ introduced is_wasm_funcref(tdef) helper
+ introduced is_wasm_externref(tdef) helper
+ introduced the is_wasm_reference_type(tdef) helper
* Add TNoRefCountObject (delphi compatibility)
* Add PProcedureSignature
* Disable result, explicit list cmmand-line argument
Add new substitute_env_variables parameter for DefaultReplacements function (with default true value)
Disable substitution by environment variables in message comment related functions
* Add some methods for improved DUnit compatibility
fcl-web: made TFPCustomHTTPServer.CreateUpgradeHandlerList virtual
* the a_ref_null instruction split into two subinstructions - a_ref_null_externref and a_ref_null_funcref
+ enable the reference types extension in llvm-mc via a command line option
* fixed the textual representation of the ref.null instruction for llvm-mc
+ implemented WebAssembly code generator support for funcref and externref data
types, using new register types R_FUNCREFREGISTER and R_EXTERNREFREGISTER
+ WebAssembly internal asm support for the ref.null instruction
+ WebAssembly internal assembler support for the ref.is_null instruction
* test for variant TValue
* Do not test variants with equal memory area: e.g. strings may point to different memory areas
* Add Tests.Rtti.Util to uses clause. Keeps lazarus happy :)
* Add tests for variant arguments
* Fix variant record definition for CIF
+ simple test for WasmExternRef
+ disallow taking the address of WebAssembly externref type
* check for codegenerror in twasmaddrnode.pass_typecheck and exit early, to avoid crashes
+ also check for assigned(left) after calling inherited in twasmaddrnode.pass_typecheck, to avoid another crash
+ some basic tests for WebAssembly funcref types added
* fixed test's program name
* disallow conversion between regular pointers and WasmExternRef
+ also test that pointers cannot be converted to externref implicitly
- removed redundant semicolon
+ support using nil constants for setting values of WebAssembly reference types (funcref and externref)
+ support nil comparison of WebAssembly reference types (externref and funcref)
* disallow WebAssembly reference types to be declared as var, constref or out parameters
* fixed program name in test
* disallow passing WebAssembly reference types as untyped var/constref/const parameters
* disallow passing WebAssembly reference types as untyped out parameters as well
* fixed bug, introduced in 6ff566350cbc2ecf8615cae6cc6792939a288ec8, due to
missing parenthesis
* fixed another crash, introduced in 6ff566350cbc2ecf8615cae6cc6792939a288ec8
* fixed crash in twasmcallnode.pass_typecheck when there is no procdefinition (for generic methods)
* use tcallparanode.parasym to find the tparavarsym in twasmcallnode.pass_typecheck
+ support WebAssembly reference types as WebAssembly globals
+ support externref and funcref WebAssembly globals in the internal object writer
+ added parser support for the 'suspending' directive
* ppudump compilation fixed
+ initial attempt (not fully working, yet) at implementing WebAssembly suspending externals
* since exporting webassembly globals doesn't yet work accross units, added a
workaround by using property getters and setters
* fixed compilation with -Sew
* fixed creating suspended wrappers for functions without parameters
Handle the specific NaN pattern of mips floating-point unit
+ initial implementation of WebAssembly promising exports
* fixed generating wrappers for suspending functions that return something, other than double
+ added a basic JS promise test
Rename variable called section to _section to avoid parsing error for morphos OS
+ comments for tsk_wasm_suspending and tsk_wasm_promising
+ comment for the po_wasm_suspending value
+ support 'suspending last' externals as well
+ also allow declaring an external as 'suspending first'
* eo_promising renamed eo_promising_first
* assert that any exported promising function is not synthetic
+ introduced tcpuprocdef.add_promising_export
+ introduced implement_wasm_promising_wrapper
+ added last:boolean parameter to implement_wasm_promising_wrapper
+ added 'last' or 'first' to the internal promising wrapper name
Set defualt riscv32 linux abi to abi_riscv_ipl32
Set defualt riscv32 linux abi to abi_riscv_ipl32
Fix fullcycle compilation error due to -Sew option
Add 'else' branch to 'case' keyword construct
for the setting of ABI in riscv32 assembler call.
Do the same for riscv64 assembler call.
* Switched from waitformultiple objects to -handles for xp/w7 compat, closes 40297
Set default abi for riscv 32/64 embedded
* tcpuprocdef.promising_export_name renamed promising_first_export_name
+ support 'promising last' exports
+ print an error message, in case 'promising' exports are used on non-WebAssembly platform
* ensure that the functions that insert the hidden parameters (function result, open array high parameters, etc.) are idempotent
* revert 430bcac389c29a5ceca7759cfca69454aa31abf9 as with the change that the functions to insert hidden parameters are idempotent this is no longer required and also wrong as uses of the deleted symbols aside from Self and the framepointer would be left dangling
* fix
gitlab 0040221: don't allow a conversion from an anonymous function to a procvar type if compare_defs_ext already rejected them
+ added tests
Added generic WCH32Vx RISC-V processor types using memory size suffixes
Modified low-level startup code for RISCV32 embedded microcontrollers to
allow user code override of reset handlers for non-power-up reset events
as well as enabling user code override handlers for all 255 possible
interrupt vectors.
Separated out the low-level startup memory init into a callable procedure
to allow users that have caught reset events to init memory again if needed.
Signed-off-by: Interferon
* tsk_wasm_suspending renamed tsk_wasm_suspending_first
+ print a proper error message if a suspending external is used on a non-WebAssembly platform
* fixed erroneously duplicated code from previous commit
+ added promising _start and _initialize exports
+ added mutable globals to the target switches section
Added changes that didn't commit in merge 427
There is code in the register allocator to restrict register allocation to the
first 16 registers in RISC-V RVE and RVEC modes. However, there was still
code in tcpuparamanager.create_paraloc_info_intern that allowed the allocation
of up to register X17 in RVE and RVEC modes. Modified this function to
take the processor mode into account and restrict it to X0..X15 in RVE and RVEC modes.
Also put conditional code in setjump.inc assembler code to only set the first
16 registers in RVE and RVEC modes.
The entire embedded-riscv32 RTL can now compile successfuly in RVEC mode.
* Split out option parsing in one routine per letter
* Make use of copy() without count when rest of string is needed
* Fix compilation for ARM
+ comments for the new error messages
* bump CurrentPPULongVersion
OSX 64bit - MIDIServices.pas - MIDIPacket && MIDIPacketList pack record fix
+ disallow WebAssembly reference types in records, objects and classes
+ added comment for the new error message
+ disallow using sizeof() and bitsizeof() on WebAssembly reference types
- rm commented out debug writeln left over from previous commit
Support use statx syscall in fpstat and fpfstat
Fix the init state of LoongArch FPU exception bit
fix when FPC_USE_LIBC is disabled not call PASCALMAIN
Omit FPC_INIT_FUNC_TABLE generation if no unit initialization is registered for current project.
* search for i386-linux-gcc also by trying i686-linux- as prefix as
apparently for newer gcc -m32 does not return the proper libgcc path anymore
fix store stacklength but not its addr in info
Use prlimit64 in FpSetRLimit and FpSetRLimit
Set STACK_MARGIN_MAX to four times of pagesize on LoongArch64
It fixed a test named tstack. Actually, Linux user get the stacktop is
incorrect in current. The value of stack pointer when enter the procedure
is thought as it is in the highest stack page. But if the parameters is
enough large, lager than 16k, most of arch will also fail this test.
Since the LoongArch default pagesize is 16k, it fail often because
stack-layout-randomization causes the stackpointer underflow to next page.
I had tried fixed it in rtl/linux/[arch]/si_*. But because the codes is
unworthy and hardly the parameters is enough large, just expand
STACK_MARGIN_MAX for simplicity.
set default result in TPCUWriter.IsExternalEl
* Fix for i386 breakage after merge request !433
fcl-web: added TCustomWebsocketUpgrader.OnConnect
fcl-net: fixed range check error
fcl-web: TWSFramePayload.ReadData: check for endless loop and wait for new data
* for unique type aliases keep track of the original def
* increase PPU version
* a type helper that inherits from another type helper may extend a unique type helper of the parent's extended type (thus allowing to make the type helper of the original type available for the aliased type)
+ added tests
* don't insert anonymous functions into a withsymtable
+ added test
* fix
gitlab 0040142 and
gitlab 0040324: don't alias the function name to the $result variable for anonymous functions unless an explicit result name is provided
+ added tests
* fix
gitlab 0040332: apply patch by Rika to avoid a crash when an overload can't be picked outside of a function (e.g. when using intrinsics inside constants)
+ added test
* ensure that the ATypeInfo parameter is valid before checking it
* move check for whether to use binary comparer functionality to a static function of TComparerService
* fix
gitlab 0040331: for enumeration with holes (that don't have type information) use the binary comparers
+ added test
* in case there hasn't been an error generated with an invalid attribute declaration then print at least "illegal expression" error
+ add a tcallnodeflag value that prohibits the tcallnode.pass_typecheck to return a procvar in case of a call without parameters with a found symbol, but no suitable procdef
* fix
gitlab 0040095: when searching a suitable constructor for the custom attribute don't allow the return of a procvar which can happen in Mac/TP procvar modes (like Delphi)
+ added test
* fix
gitlab 0039447: when checking whether the parameters are valid for pointer arithmetic check the *correct* parameter for being valid pointer-like type (I'd say that this was a copy&paste mistake...)
+ added test
* fixed ppudump for WebAssembly after the JS Promise Integration branch merge
* Allow compilation of fcl-fpcunit for webassembly
* Generate hidden class to be used for TVirtualInterface (wasm only)
Add -Tlinux for loongarch64 compiler
* Hidden thunk class tests for webassembly
* Parent class for hidden TVirtualInterface thunking class
Introduce -XLL option for link using ld.lld linker
* Restore -aR, lost in refactoring
* Lowercase subtarget file, as done in compiler
fcl-net: clean up and keep stacktrace
git ignore msg2inc binary
* .compiled files should not be checked in
* Test adapted: RTTI is enabled for raw interfaces
Regenerate msgidx.inc and msgtxt.inc files
fcl-net: comment: TInetServer.SockToStream should be using TServerSocketStream
fcl-net: fixed memleak in TFPThreadedConnectionHandler
fcl-web: TWSThreadedConnectionHandler.TWSConnectionThread.Execute: fixed handling exception
* TPtrWrapper for Delphi compatibility
* Delphi compatibility aliases for Interlocked* functions
* change TCachedSearchRec.Attr to longint as TCachedDirectoryEntry.Attr is also a longint, resolves
gitlab 0040343
Switch from functions for the Atomic*-family to intrinsics
Fix cpu16 error in AtomicCmpExchange
Fix system compilation for CPU16
* Enable compilation for webassembly
* Webassembly also has reversed clean - most likely 32/64 bits issue, not delphi/FPC issue
* Allow compilation using webassembly
* Additional fields/enums for invoke helper
* Mark method for invoke helper
Create invoke helper if requested and reference it in RTTI
* Invoke helper definition, allow calling it
* Tests for webassembly invoke helper
Changed the JS Writter to avoid access violation in the buffer.
Fixed range check error, compiler error!
* Progress and exit status display
* Some explanations for running tests under wasmtime
* Interface thunk class must query owner object interface list
pastojs: added test for rangecheck currency
* Undo wrongly added file
* Correct location of fields
fcl-passrc, pastojs: fixed crash on evaluating ord(int),
gitlab 0039260
pastojs: fixed test on windows
pastojs: TCustomTestCLI.OnWriteFile: check if binary
* Allow compilation with webassembly (do not use goto)
Don’t use local shortstring in generic fpc_pchar_to_shortstr, move directly to the destination.
* Allow compilation for webassembly
Working i386 fpc_pchar_to_shortstr; previous version didn’t support length limits smaller than 255 and was often slower.
* Allow compilation for webassembly
Don’t allow generic fpc_pchar_length to arbitrarily over-read.
Handle unaligned copy in TCGSparcGen.g_concatcopy method
* Replace string -> shortstring
* Handle some options required by android, nasm and darwin assemblers
* Fix uninitialized result in DoDecode subroutine
* Do not compile pointer overloads of atomic operations for MS-DOS/i8086
* Shorter form of copy, remark by Alexey Torgashin
* ansichar is the basic type
* Improvement of SysGetEnvironmentList by Alexey Torgashin. Fixes issue
gitlab 0040347
* PAnsiChar version of Strdispose must be public
* Fix forgotten PChar->PAnsiChar
* Fix non-unix compilation
* Correct type for filenames
Changed the map file name to keep all um UTF-8.
* Better detection of ansichar
* Add TInterlocked by Do-Wan Kim
* x86: Fixed bug where OptPass2Jcc CMOV optimisation sometimes
put the wrong-sized register into an operand (fixes i40307)
* Patch from Rika to implement BitTestAndSet
* Fix definition of options
Add test about bus error generated in sparc compiler
* x86: Revamped OptPass2Jcc CMOV code to shrink and reuse registers as much as possible
* Add overload to fix issue 40931 in lazarus
Added cthreads to fpmake for fpcmake util
* New CMOV test at webtbs/tw40307.pp
Add '%note' to .note.openbsd.ident section
* Make sure it compiles with FPC 3.2.2 for pas2js...
* Make sure it compiles with FPC 3.2.2 for pas2js...
* Make sure it compiles with FPC 3.2.2 for pas2js...
fcl-passrc: less hints and fixed char tests
TMarshal & TMarshaller, strange things from Delphi.
* Simpler form of Terminate
* Remove dependency on cthreads, that should always be in program/library uses clause
* use cthreads in correct location
* Fix wrongly renamed units/packages
Restore usage of fpexecve function inside ExecuteProcess
as set by commit 305d34a8f6f
* Fix getlibraryfilename: do not add .so if output already contains it, do not add lib prefix if output already contains it. Take care of -o option
Delay-load CoWaitForMultipleHandles to not force the dependency on ole32.dll.
* Added JSON fpcunit helper
Also prevent SyncObjs.THandleObject.WaitForMultiple from unconditionally linking to ole32.dll.
* x86: Fixed bug with BT optimisation where operand
sizes bigger than the register word size caused
incorrect code generation (fixes
gitlab 0040358)
* Enable for nativent and symbian
* Move TMarshal to system unit
* TArray is now in system unit
Load oleaut32.dll for widestrings on demand.
Most of the applications don’t and shouldn’t use widestrings, as unicodestrings are superior.
* Fix compilation for avr-embedded (no unicode strings)
* Regenerated makefiles with subtarget support
* Some fixes for compilation with unicodertl (new methods after merge)
* Regenerate makefiles with subtarget support
* Fix compilation for platforms that do not have unicodestring
* Fix for tmarshaller big endianness
Fix order of parameters of FillChar
Update after fpcmake.ini change
Fix order of parameters of FillChar as suggested by Alexey Torgashin
Attempt to get ogcoff to work on CPU with opposite endianness
Add missing TPECoffExpDir variantr of MaybeSwap procedure
* Add possibility to specify output filename, and allow not to write package name
* Remove redundant Makefile.fpc
* Accept presence of Makefile+fpmake.pp as alid package dir
Protected the verbose of the resolver.
* Some corrections after remarks by Alexey Torgashin
Cleanup TLinkerLinux.SetDefaultInfo method in t_linux unit
* Tests for NAMESPACES directive
* Small tool to regenerate fpcmake.inc. Execute "make regenerateinc" to use
* Pass FPC_DOTTEDUNITS on to fpmake as -ns
* cpu-target checks now use CPU_OS_TARGET instead of FULL_TARGET, as the latter includes SUB_TARGET
* x86: Fixed bug in TEST/JNE/TEST/JNE optimisation that caused bad code to be generated under -O3
* Improvement to TEST/JNE/TEST/JNE code to be more accurate where register deallocations are concerned
* New test, mostly for x86, to detect incorrect TEST/JNE/TEST/JNE optimisation
* Correct dependency for dynlibs
* Add dependencies, fix jenkins build
* Better dependencies for ctypes, remove double unit rules
* Regenerate Makefile with fix for missing space
* Fix EOL escapes, regenerate makefiles
* Removed double unit, regenerated makefile
* Remove double ctypes unit
* Remove double system unit target
Update errore.msg
Someminor corrections, found when translating to german.
* Renamed so as not to be automatically detected, in line with Makefile.pkg in packages dir
* Script to regenerate makefiles with proper options
* Extra dependencies for dos, solves hopefully jenkins problem ?
LLVM: only add sret attribute for first parameter on caller side
We already did this when generating the definitions, but not yet
when generating the calls
tw40324: fix compilation on unix platforms
Fix spelling mistake SFPUX8080UNIT => SFPUX80UNIT
Avoid 'will not overwrite just-created' error on installation
Avoid double rules for ctypes and cmem units
* Add dependency of lineinfo unit on exeinfo.
* System.ExeInfo depends on EXEINFO_DEPS, not on LINEINFO_DEPS
* lnfodwrf unit does not depend on lineinfo unit
* lnfogdb depends on ctypes, baseunix and unix units, but not on lineinfo
Regnerated Makefile's after dependency fixes for debug info units
Handle macos directory, which target name is now macosclassic
Makefile regenerated after addition of macos directory handling by regenmakefiles.sh
i8086 CPU also needs sysutils unit as dependecy for cpu unit
Update Makefile's after cpu unit dependency fix
* Fix wrong instances of $ifdef unix
Remove code testing for FPC_VERSION 1.X or 2.X
* Additional dependency for unit unit
Fix installation of freertos RTL
Avoid overwriting of already set DOS_DEPS_OS and DYNLIBS_DEPS_OS variables for linux RTL
Fix last forgotten SFPUX8080UNIT wrong variable name
Remove OS specific rule for ufloatx80 and ufloat128 units, already found in inc/Makefile.rtl
Remove OS rules for softfpu, sfpux80 and sfpu128 units, already present in inc/Makefile.rtl
Regenerate Makefile's after softfpu, sfpux80, sfpu128, ufloatx80 and ufloat128 changes
Remove OS rules for sortbase unit, already present in inc/Makefile.rtl
Add missing win32 OS sysutils related variables, copied over from win64
LLVM: LLVM 17.0 support
No changes in IR (that affect us) since LLVM 16.0
Try to fix dependency issues for win64 OS
Handle path conversion using cygpath utility on Cygwin system
Avoid using namespcaced/win32 directory
Add explicit dependency of Windows unit to objpas
Temporary fix for win32/initc unit which is not yet handled in namespaced
Add heaptrc and fix several namespaced unit names
Fix dependencies for win32 and win64
Regenerate Makefile's after change in inc/Makefile.rtl
Regenerated Makefile's after adding WINDIRSDIR variable
Adapt USE_STATX code to FPC_DOTTEDUNITS
Small fixes need to get i386-linux dotted ready.
* Add explicit -dFPC_DOOTEDUNITS for fpcylix unit
* Add dependecy on sysutils for cpu unit
* Add missing CPU_DEPS for System.CPU.ppu rule
Update Makefile's after commit 93c116ff19
Fix dotted mmx unit rule and OBJCBASE_OPT
Regenerate Makefile's after 0c7c75435d
Improve generic large set operations: +, -, *, ><, =, <=, mostly by working in PtrUints.
Add dotted version of Dos unit in msdos/sysutils source
Add default NSOSDIR and msmouse unit rules
Regenerate Makefile's after 21b02cb56b
Invalid pointer operation.
* fix parameter alignment on x86_64 when more than 6 parameters are involved (aka the stack is used)
+ added test
* regenerate tests/Makefile
Use RTLCONSTSUNIT but set the variable to rtlconst
* Replace -I by -Fi iun objpas rule
* Correct fgl unit _DEPS variables
* Set up rules for RTLCONSTSUNIT to handle both rtlconst and rtlconsts
Regenerated Makefile's after change in inc/Makefile.rtl
Regenerated Makefile's after HEAPTRCUNIT change in inc/Makefile.rtl
* Move EMX/OS2 rules to inc/Makefile.rtl
+ Implement dotted versions for te mex/os2 units
* Use lower names for OS2Api.name as in namespaced/os2 directory
Add required OS2Api. prefix for dotted units
Use uppercase UNIT names in new EMX/OS2 rules
Regenerated Makefile's after change in inc/Makefile.rtl
Add required FPC_DOTTEDUNITS changes
Handle .pas/.pp source extension differences also for dotted units
Rectofy emx/os2 unit dependencies
Regenerated Makefile's after change in inc/Makefile.rtl
Add a few missing dependencies on system unit, or on objpas unit because of $mode use
Regenerate Makefile's after inc/Makefile.rtl change
fpwidestring depends on objpas unit because of $mode objfpc
Regenerate Makefile's after inc/Makefile.rtl change
Regenerate Makefile's after inc/Makefile.rtl change
Use SYSUTILS_UNIX_DEPS to set +SYSUTILS_DEPS_OS for linux
Set DYNLIBSINCDIR to WINDIR for win32 and win64
Remove several useless variable settings for os2
Put unique rule for unicodedata into inc/Makefile.rtl
Unique rule for fpwidestring unit
Add NSWINDOWSDIR variable
Regenarate rtl Makefile's
Amiga: activated sysconst for amiga
Add objpas unit dependency for unicodedata because of $objfpc mode
* Add possibility to return empty dataset instead of 404, add event to refine WHERE Clause in code
AROS: activate fpintres again
MorphOS: activated fpintres again
MorphOS: introduced openssl3 library unit
Always set RTLCONSTSUNIT to rtlconsts, if FPC_DOTTEDUNITS is not defined, as OS specific changes are parsed after
Set RTLCONSTSUNIT to rtlconst only of FPC_DOTTEDUNITS is not defined
[AVR] Add command line options to selectively remove portions of the RTL startup code.
Add explict rule for AVR specific intrinsics unit
Replace explicit rule to compile system unit for embedded OS by setting of SYSDEPS and FPC_SYSTEM_OPT variables
Set CPU_SPECIFIC_COMMON_UNITS using dotted compatible variables
Fix sysutils dotted rule for OSes having local included files
Add dotted rules for embedded specific heapmgr and consoleio units
Write dotted rules for embedded CPU specific units
Regenerate embedded Makefile
Fixed creation pointer information in Pas2Js.
Allow constructor RTTI info in Pas2Js generated file.
Add -Sg option for the three soft fpu units
Add dotted rules for some CPU specific units
Remove unwanted space in EmbeddedApi.sc32442b.pp name
Use lowercase names for all embedded CPU specific units, as in namespaced/embedded/CPU
Faster genset.inc:fpc_varset_set_range.
Adapt sources to FPC_DOTTEDUNITS
Fix some WinApi rules for wince
Add WinApi messages unit rules
Remove fpcmake.loc added by accident
Specialized fpc_varset_OP_sets for i386 and x86-64.
Remove ancient i386 implementations of (large)set_(add/mul/sub/symdif/contains)_sets that were kept as references until someone implements varset_* versions, according to the comment.
Set CPU_SPECIFIC_COMMON_UNITS to empty for i8086-embedded
embedded dos unit needs objpas unit because of objfpc mode
Remove obsolete GRAPHDIR and USELIBGGI, because graph unit has been moved to packages long ago
Try to fix dotted rules for embedded targets
Dotted rules for arm-embedded
Re-add 'Lost in translation' mmx unit for i386-linux target
* Make sure it compiles with version 3.2 (pas2js)
Avoid recurvise variable expansion error for wasm32-embedded
Fix syntax errors in make fullcycle
Add unit specifiers for tlsdirectory fields: they need to be PUInt from globtype unit
Applied fix for binutils 2.41 for loongarch64 suggested by Jinyang He
https://gitlab.com/MQ-mengqing/source/-/commit/32fa3e9eb1a31fa6c4262623dbe432919f66419c
with modifications reported in comments.
volatile: allow for assignments
* factor out subreg2opsize
+ test from Rika for merge request 458
default values: store as staticvarsyms in staticsymtable
Previously, they were stored as localvarsyms in either the localsymtable
(for procedures/functions) or as localvarsyms in the staticsymtable (for
init/fini code of units/main programs). The latter was a hack (staticsymtables
normally cannot contain localvarsyms) and caused the temp allocator to also
allocate them as a local in fini code even if the default was only in the init
code.
The new approach ensures at most one copy gets allocated per unit, it doesn't
require explicit initialisation (since staticvarsyms are in bss -> zeroed by
default), gets rid of the localvarsyms in staticsymtables, and as a bonus
solves an issue with inconsistent LLVM debug information for the localvarsym
in init/fini code (since the staticsymtable is shared between the init and
fini code, so was the local, and therefore we generated debug info stating
it was defined in the fini code but within the scope of the init code).
Resolves
gitlab 0040395
* (modified) patch by Jinyang He to handle alignment in FindInFieldTable correctly, resolves
gitlab 0040400
pastojs: fixed possible mem leak
pastojs: fixed pass ClassInstVar to IntfType
fcl-process: fixed parsing CommandLine under unix
default value: fix issue with inlining
Ensure the mangled name is always the same
Resolves
gitlab 0040404
set FSocketInitialized to False in TSocketStream.Close (fix AV when Close is called twice)
SSL sockets: propagate socket error on SSL_ERROR_SYSCALL (SSL_ERROR_SYSCALL means an error happened on the underlying socket)
Sockets errors redefined as regular Berkeley error constants also for Linux + add EINTR for Win
default(): fix webtbf/tw37303 after previous changes
* Small improvement in inittls. Fixes issue 40408
* x86: Fixed bug where incorrect SSE/AVX peephole optimisations were performed under -O3 in some situations.
* New test to detect SSE/AVX optimisation error
* Added missing register allocations to SSE/AVX optimisations
default(): fix in generics for non-procvars after 1be741681648
Block added in the wrong place :|
Resolves
gitlab 0040409
* Simplify GetEnumNameCount (by Lagprogramming). Fixes issue
gitlab 0040411
Call rtl_do_close handler in sysfile.do_close, as reported by Kostas Michalopoulos
* renamed tests so they are actually run
* missing file to build added, as mentioned by Mathew Bradford
* Makefile regenerated
Amiga: Enable Dotted RTL for Amiga
* Blowfish II implementation
* Support for content-disposition: attachment
* correct grammar in comment
MorphOS: fixed support for dotted rtl
* patch and test by Rika: Redirect StrUtils.RPos to StrUtils.RPosEx, fix a bit, improve a bit, resolves
gitlab 0040394
* Patch from Alexey Torgashin to switch to const param strings where possible
* Trigger OnHeaders after responsestatuscode is set. Fixes issue
gitlab 0040419
* patch and test by Rika: fixes self inserts in Insert(x, dynarray) and improves Insert(x, dynarray), resolves
gitlab 0040417
Let fpc_dynarray_concat(_multi) reuse the only nonempty input or append to the destination if possible.
Improve fpc_dynarray_delete.
Regenerate Makefile's for amiga, aros, embedded and morphos OSes
Add dependency of dos unit to objpas unit due to use of objfpc mode for FreeRTOS OS
* ensure that the field and method tables are always accessed with the default alignment
Better (and probably more correct regarding stack usage) i386 version of SHA1Transform.
* Packages: x86_64 assembly version of SHA1Transform added to hash package
Remove “original version” of MD5Transform.
MD5Transform for i386 without a stack frame and with less pushes.
Add sysutils dependency on Dos unit for msdos OS
Add main inputfilename for V_Parallel option to allow easier debugging of parallel compilation issues
+ add a test that check for correct functionality of all the SwapEndian() overloads
* fix
gitlab 0040421: implement assembly variants of the SwapEndian functions for Aarch64
+ add some tests for hint directives in context of arrays (both with the element and the index) that check that the hint is indeed generated
* fix
gitlab 0040381: also check for hints when parsing the parameters of a routine (including open array parameters) or the result type of a function
+ added tests
* fix
gitlab 0040390: implement support for handling parameter names (including __SELF and __HIGH(
)) that resolve directly to registers
+ added tests
* prepared test to be used as regression test
Add globals to implementation _USES clause to prepare move of V_XXX constants to globals unit
Avoid double definition of V_XXX constants by moving them to globals unit
Add new V_Parallel constant
Add -vj option in options unit to set V_Parallel
Add mainsourcefile to all messages when V_Parallel verbosity option is set
Flatten out -vX options in help message to make changes easier
Add -vj option in help message
Regenerate msg*.inc files after adding -vj option description
* Allow event handlers to modify input
Compile “length(string or array) = 0” as “pointer(string or array) = nil” without further check, unless really required.
Also handle length <> 0, > 0, < 0, >= 0, <= 0, assuming lengths are never negative.
* Correctly initialize some variables to avoid AV
Try several ports before failing
Change V_Parallel so that V_All doesn't contain V_Parallel, only explicit -vj will add main source file information
Add aarch64 embedded, freebsd and iphonesim systems
default parameter values: fix crash
Fix crash when declaring default parameter values while current_procinfo
is not yet valid
resolves
gitlab 0040413
Set FPINTRESUNIT and OBJPASUNIT variables
Remove explicit fpintres rule, which is present in inc/Mkefile.rtl
Makefile's regenerated after: Remove explicit fpintres rule, which is present in inc/Mkefile.rtl
Replace all fpintres with $(FPINTRESUNIT) in Makefile.fpc
Regenerated Makefile's after: Replace all fpintres with $(FPINTRESUNIT) in Makefile.fpc
Always set MACPASUNIT variable
Makefile's regenerated after: Always set MACPASUNIT variable
Remove all OS specific macpas unit rule
Replace all macpas by $(MACPASUNIT) in Makefile.fpc files
Regenerate Makefile's after macpas => $(MACPASUNIT) changes
Remove OS specific iso7185 unit rules, and replace iso7185 by $(ISO7185UNIT)
Do not use ISO7185UNIT variable for main source file in ISO7185_DEPS
Remove OS specific extpas rules and replace extpas by $(EXTPASUNIT)
Regenerated Makefile's after: Remove OS specific extpas rules and replace extpas by $(EXTPASUNIT)
Remove all OS specfic objpas unit rules
Replace objpas by $(OBJPASUNIT) in all Makefile.fpc
Regenerated Makefile's after: Replace objpas by $(OBJPASUNIT) in all Makefile.fpc
Remove OS specific rules for uuchar unit
Replace all uuchar by $(UUCHARUNIT) in Makefile.fpc
Regenerated Makefile's after: Replace all uuchar by $(UUCHARUNIT) in Makefile.fpc
Remove all OS specfic rules for heaptrc unit in Makefile.fpc
Replace heaptrc by $(HEAPTRCUNIT) in all Makefile.fpc
Regenerated Makefile's after: Replace heaptrc by $(HEAPTRCUNIT) in all Makefile.fpc
* corrected version provided by Yuri Prokushev, the original author; fix for
gitlab 0040322
Remove duplicate fpintres unit in morphos Makefile.fpc
Replace 'softfpu sfpux80 ufloatx80 sfpu128 ufloat128' by DOTTED variable names
Remove OS specific rules for lineinfo unit
Replace lineinfo by variable LINEINFOUNIT
Remove OS lnfodwrf unit rule and use LNFODWRFUNIT variable
Remove duplicated, useless line
Remove wrong ERRORSUNIT=System.Errors line
Remove OS specific rule for exeinfo unit
Replace exeinfo by EXEINFOUNIT variable
Add missing include files for strings unit dependency list
Remove OS rules for strings unit and use STRINGSUNIT variable
Regenerate rtl Mzkefile's
Remove OS rules for cmem unit and use CMEMUNIT variable
Regenerate rtl Mzkefile's
Remove OS lnfogdb unit rule and use LNFOGDBUNIT variable
Fix missing spaces around $(CMEMUNIT)
Use PID to generate unique GDB script names
Limit this to cases when -vj or -vJ option is
used to call the compiler, which adds a PID prefix
to all compiler output.
This feature is useful to debug parallel make issues.
Remove OS rule for charset unit and use CHARSETUNIT variable
Use SORTBASEUNIT variable
Add all codepage unit source files to cpall dependency
Remove OS rules for flg and cpall units
Use FGLUNIT and CPALLUNIT variables
Remove OS getopts rule and use GETOPTSUNIT variable
Remove OS rules for character unit and use CHARACTERUNIT variable
Remove OS rules for errors unit and use ERRORSUNIT variable
* moved crctest.pas to use it as real test
Remove OS rules for callsepc unit (which was removed in 2001 from RTL)
Use CP_UNITS in OS Makefile.fpc
Remove OS rules for unixcp unit and use UNIXCP variable
Replace fpwidestring by FPWIDESTRINGUNIT variable
Regenerate RTL Makefile's
* re-enabled fixed assembler code
Fix CP_UNITS_SRC variable value
Regenerate Makefile's after: Fix CP_UNITS_SRC variable value
Remove OS ports unit rules, set PORTSDIR variable and use PORTSUNIT variable
Remove OS x86 unt rules and use X86UNIT variable
Remove OS rules for mmx unit and use MMXUNIT variable
Fix EXEINFOUNIT and CP_UNITS variable values or dotted case
Regenerated Makefile's after: Fix EXEINFOUNIT and CP_UNITS variable values or dotted case
Cast properly to avoid range error
Fix CP_UNITS variable setting
Fix CP_UNITS_SRC variable for dotted case
* Remove OS specific linux unit rules
* Replace linux by LINUXUNIT where neeeded
* Remove OS specific linuxvcs unit rule
* Replace linuxvcs by LINUXVCSUNIT
Regenerated Makefile's after CP_UNITS_SRC fix for dotted version
LLVM: fix double init/fini of local managed variables accessed from nested functions
resolves
gitlab 0040392
Improve i386 SHA1Transform further: remove some (14) reads, and use MOVBE if suddenly available.
Use frame register $r22 (aliased as $fp) inside SignalToRunerror for loongarch64 CPU to fix backtrace dumps
* use break instead of classically breaking out of the loop
* fixes
gitlab 0040435
Change loongarch64 default dynamic linker directory according to gcc
* sha1i386.inc is used on all targets now
* throw an error if instructions which needs an operand size is used with one operand being a reference without size
tosunits: xbios vsetrgb/vgetrgb - do not use Pascal open array style syntax in a C-style API, but C pointer-style
tosunits: add VM_INQUIRE constant for xbios_vsetmode()
* patch by Rika: In i386/set.inc, use “pop mem” instead of “pop reg; mov mem ← reg”, resolves
gitlab 0040443
Faster string concatenations.
Remove syslinux (former name of system unit), which is obsolete for clean rules
Modify references to old syslinux unit in comments
Remove rule for fpcylix rule, which is not in unit list for aix and solaris targets
* Use linux directory explicitly for fpcylix source location
* Remove android rule for fpcylix unit
* Replace fpcylix by FPCYLIXUNIT variable
* Update math unit rules for dotted version
+ Add PROCINC/mathu.inc dependency in generic rule for math unit
* Remove OS specific rules for math unit
* Use MATHUNIT variable everywhere
Makefile's regenerated after math unit rule update
Add -Fi option for dynlibs.inc directory to DYNLIBS_OPT in dynlibs unit rule
Set dynlibs related variables
Handle dynlibs unit to support DOTTED version
* Replace dynlibs by DYNLIBSUNIT variable use everywhere
* Remove OS specific dynlibs unit rules
* Set DYNLIBSINCDIR varaible where required
* Set DYNLIBS_DEPS_OS where needed
* Adapt dl unit rules for DOTTED version
* Set DL_DEPS_OS to dlaix.inc for aix OS
* Set DL_DEPS_OS to dlandroid.inc for android OS
* Remove OS specific rules for dl unit
* Replace dl references by DLUNIT variable
Handle DOTTED transition for termio unit
Remove unused console rule in aix and solaris directories
Update console unit for DOTTED
Regenerate all RTL Makefile's
* Adapt initc unit to DOTTED.
* Remove OS specific initc rules.
* Set default directory for initc main source to
UNIXINC variable value if is is set.
* Replace initc references by INITCUNIT variable.
* Add dpmiexcp dependency for initc on go32v2 system
by setting INITC_DEPS_OS.
* Add nwsys.inc dependency for initc on netware system.
Regenerate Makefile's after DOTTED conversions
Handle syscall unit for DOTTED.
Revert " * patch by Rika: In i386/set.inc, use “pop mem” instead of “pop reg; mov mem ← reg”, resolves
gitlab 0040443"
This reverts commit cf1683d14c6f6b9f981ed352b99cd53da37852a7.
Handle bsd unit for DOTTED.
* use the VWideChar field to retrieve the WideChar value instead of VChar to fix usage on big endian systems
* Packages: x86_64 assembly language version of MD5Transform added to hash package
* md5performancetest now gives better granularity on the elapsed time
* correctly retrieve the type of the Variant
* rename tests for TValue from tests.value to tests.rtti.value, cause they're still part of the tests related to the RTTI unit
* Packages: BMI1 version of MD5Transform for x86_64
Rename fields of tspillregsinfo record to avoid having same field names as treginfo record
Try to fix crash in loongarch64 compiler
loongarch64 compiler has a specific routine,
called fixupref that generates some instructions that are
stored into a tasmlist given as an input parameter.
This function returns a boolean,
if the return value is false, the populated list gets
sometimes discarded.
This can lead to a later crash, because the unused
and freed instructions might have been stored
in live and live_end fields of the reginfo record
used inside rgobj unit.
The fix checks if any of the to be discarded instructions
has been stored inside reginfo records,
and resets the field in that case.
The fix might need to be more general,
because other parts of the compiler,
like all optimization code, also remove
instructions...
Handle sysctl unit for DOTTED
Handle sysconst unit for DOTTED
Add rtlconst.inc dependency for rtlconsts unit
Handle rtlconst(s) unit for DOTTED
Add pthread.inc dependency for cthreads unit
Handle cthreads unit for DOTTED
Add unixtype nit dependency for ctypes unit for Unix OSes
Handle ctypes unit DOTTED conversion
syscall unit is only used when -dFPC_USE_LIBC is not used
Fix error in variable name for sysctl unit
Add ctypes and dl unit dependencies of exeinfo unit for darwin target
macosclassic OS does not have unixtype unit
sysnr.inc is in linux/sparcgen directory for sparc and sparc64
Prepare for use of fpmkunit table by adding o_none and c_none as first element in TOS and TCPU types
Update fpcsrc level Makefile using lakest trunk fpcmake utility
Use common rule for baseunix unit
Add dependency on sysctl of baseunix for all bsd OSes
Handle unixtype unit and introduce PTYESINCDIR variable
Add missing dl unit dependency for sysutils on android OS
Handle cwstring unit for DOTTED
Handle win16 specific units: wintypes winprocs and win31 for DOTTED
Regenerate Makefile's after change to inc/Makefile.rtl
Add windows specific unit dependencies for types unit
Handle types unit for DOTTED
Handle typinfo unit for DOTTED
Replace typinfo and types unit by TYPINFOUNIT and TYPESUNIT
Set special value for RTLDEFSINCDIR variable
for andrioid and targets using AMIINC variable.
Add rtldefs.inc dependency for cwstring unit,
with RTLDEFSINCDIR directory.
Handle specific main cwstring.pp source for android OS
Start use of fpmkunit table
Adapt fpmake to use of fpmkunit table
Faster dynamic array concatenations.
Replace all objpas$(PPUEXT) by $(OBJPASUNIT)$(PPUEXT) in inc/Makefile.rtl
Replace all objpas unit references by $(OBJPASUNIT) OS Makefile.fpc
Replace sortbase by $(SORTBASEUNIT) in all OS Makefile.fpc
Remove OS specific rules for cpu unit and use CPUUNIT variable
Remove obsolete rule for gpm unit (now in rtl-extra package)
Remove OS specific rules for msmouse unit and use MSMOUSEUNIT variable
Remove OS specific dos unit rules, set DOSDIR or DOS_DEPS_OS as needed and use DOSUNIT variable
Regenerate Makefile's after changes for DOTTED support
Revert wrong substitution of classes and sysutils subdirectories inside wildcard calls
Set SYSUTILSDIR variable for OSes using unix/sysutils.pp main source
Modify POSIXINC value and set SYSUTILSDIR to POSIXINC for qnx OS
Remove OS specific rules for sysutils unit and set SYSUTILS_DEPS_OS as needed
Regenerate Makefile's after changes for DOTTED support
Remove references to variants, varutils, dateutil and fpmkunit units, all moved to packages long ago
Use CLASSESUNIT variable instead of classes
Add dependency of classes unit on sortbase
Set CLASSESDIR for OSes using unix/classes.pp source
Remove references to fmtbcd (which is located in rtl-extra package)
Remove OS specific classes rules, setting CLASSES_DEPS_OS if needed
Add tthread.inc dependency for classes unit using TTHREADINCDIR variable
Regenerate Makefile's after changes for DOTTED support
Remove obsolete rules in gba, nds and wii Makefile.fpc
Remove rules and references to matrix and ucomplex, which are in rtl-extra package
Remove references to crt and graph units
Remove references to sockets unit, now in rtl-extra package
Remove references to crt and objects units
Modify rules for freebsd unit for DOTTED
Remove obsolete handling of RELEASE, done by fpcmake
Fix TTHREADINCDIR value for haiku OS
Add dependency of dos unit on winprocs and wintypes units for win16 OS
Convert watcom unit rule to DOTTED
Convert go32v2 specific units to DOTTED
Regenerate Makefile's after changes for DOTTED support
Update compiler related Makefile's
syscall unit doesn't depend on unixtype, nor baseunix units for BSD OSes
Add SYSTEMDIR variable (needed for BSD OSes)
Remove OS spefic rules for system unit.
Use SYSDEPS variable to add specific dependencies.
Override FPC_SYTEM_OPT to add OS specific options.
Use SYSTEMUNIT variable.
Regenerate Makefile's after system rule changes
Fixing trying to consume ID for anonymous switch field
amiga and embedded Makefile.pfc changes
Remove RESUNIT rule from amiga/Makefile.fpc, as fpintres and fpextres are both treated inside inc/Makefile.rtl
Use CPU_COMMON_UNITS for embedded rules.
Regenerate amiga, embedded, and go32v2 Makefile's
* 3-operand LEA instructions are now expanded if the latency could cause slowdown
Cleanup sinclairql Makefile.fpc
go32v2 dos unit depends on go32 unit.
* Fix OnChange being fired twice when adding an object. Fixes issue 40261
Set SYSTEMUNIT variable globally inside inc/Makefile.rtl
Remove OS specific SYSTEMUNIT variable setting
Regenerate Makefile's with centralized SYSTEMUNIT variable
* New "fast 3-component LEA hint" and "Icelake" CPU options
Avoid troubles with exported directories
Remove softfpu from unit list for wasm32-embedded target
+ introduced classes for WebAssembly structured form of instructions
+ added code for converting wasm asmlists to structured lists (i.e. lists, using the new wasm structured instructions classes)
Fix compilation of go32v2 installer by regenerating Makefile using latest fpcmake
* fixed bug in wasm_convert_to_structured_asmlist
* fixed more bugs in the wasm structured asmlist construction
* set typ of wasm structured instructions to ait_wasm_structured_instruction
+ for debug purposes print wasm structured instructions in the llvm-mc assembler output
* shorten the string for ait_wasm_structured_instruction in taitypestr to fit in string[24]
* constructors made public to avoid warnings
+ added else to case statement, avoid the warning, produce an internal error in this unexpected case
+ added else to case statement to avoid warning
+ added compiler internal error when encountering certain unexpected wasm instructions (indicating improper nesting)
+ more consistency checks for unexpected instructions when converting to wasm structured instruction form
+ also debug print structured try..catch and try..delegate blocks
+ also check for unexpected delegate instructions when converting to wasm structured form
+ fix for the conversion of try..catch blocks to structured form
fcl-css: test user pseudo class
Set SYSUTILSDIR to unix dir in linux Makefile.fpc
Add also DOSDIR and CLASSESDIR
* "blea" test will now display the CPU name (can be disabled by removing {$DEFINE DETECTCPU})
Add Exception backtrace when compiled with -dDUMP_EXCEPTION_BACKTRACE
Add pseudo PIC code for 32-bit powerpc, probably wrong :-(
bypass `real` → `integer` conversion → `real` promotion in `dateUtils.dateOf`
The `dateUtils.dateOf` function takes one `tDateTime` value, a `real` value,
converts it to an `integer` using `trunc`, and then the value is automatically
promoted to a `real` value again (because of result data type `tDateTime`).
This is unnecessary (unless an error is the desired behavior).
You can use just `system.int` to obtain the integral (= date) part of `tDateTime`.
Fix range error in tstruth2bu.pp test
fcl-passrc: started test generic with type alias
fcl-passrc: added test unit not used through alias
* correctly name nested enum type debug symbols, resolves
gitlab 0040462
Attempt to fix tcalext3 big-endian powerpc64 failure
* Fix Access Violation when starting debug server failed
* Do not eat exceptions. Allow to handle errors in translation. Fixes issue
gitlab 0040430
+ simple test for Dateutils.DateOf
* Use const string arguments where possible. Fixes issue
gitlab 0040441
+ introduced map_structured_asmlist
* fix BMI1 version of SysV MD5Transform
* Some optimizations for FloatToStr (20% gain). Fixes issue
gitlab 0040137
* compilation on non-x86 targets fixed
* Patch from Rika to enable assembler version of MD5 on i386-darwin. Fixes issue
gitlab 0040470
* Fix wrong char->ansichar
Remove readln and add NORUN marker for tw40453 test
* Remove subtarget option
* FileNewer should return true if the dest file does not exist.
* Packages: i386 BMI1 implementation of MD5 hash
* Add boolean %b format specifier
* improve math.power as suggested by Paolo Valle, resolves
gitlab 0040461
* Add foForceLF to allow LF-separated files on windows. Fixes issue
gitlab 0039893
* (re)Build element ID list at end of parse. Fixes issue
gitlab 0039391
+ introduced twasmstruc_stack
+ added a block stack parameter to TAsmMapFunc
Move setting of SYSTEMDIR variable to prerules to get correct source directory for system unit on BSD targets
+ added code for creating labels, associated with blocks and converting branch with consts to the corresponding block's label
+ in case of unresolved labels, call resolve_labels_complex, which will eventually implement the stackifier algorithm. Currently, it converts the asmlist to structured.
+ always call resolve_labels_complex, if DEBUG_WASM_GOTO is defined.
+ define DEBUG_WASM_GOTO in ppcwasm32.lpi (but not in the makefiles)
+ added ait_wasm_structured_instruction to the SkipLineInfo set
* moved the code that converts branch numbers to labels in the cpupi unit and call it from resolve_labels_complex
* fixed hang in map_structured_asmlist_inner
* fixed crash in map_structured_asmlist_inner, when the TAsmList parameter is nil
+ convert wasm structured list to flat list
* libfontconfig dependency for linux/bsd
+ added method tai_wasmstruc_if.ConvertToBrIf
+ added support for params and results in tai_wasmstruc_if.ConvertToBrIf
* Packages: ARM assembly language version of MD5Transform added to hash package
* libfontconfig only on linux/freebsd/darwin
fcl-js: fixed EscapeString for surrogates
pastojs: errors on illegal char const
pastojs: added test for utf-16 surrogates
pas2js: skip invalid surrogate
* ARM: Fixed issue where some offsets of ADR assembly instructions
were incorrectly encoded by the internal assembler
pastojs: do not add rtti for public constructor for class without rtti, related
gitlab 0037752
* ARM: New test to evaluate ADR encoding error
+ added and implemented tcpuprocinfo.AllocWasmLocal
* Local var templist renamed localslist. No functional changes.
* moved the preparation of the locals asm list in tcpuprocinfo.postprocess_code to a local subroutine
* moved the insertion of the wasm locals asmlist to a local subroutine
* insert the wasm locals asm list after resolve_labels_complex, since it will (in the future) be able to allocate more locals, in order to resolve the branches and goto
* set the last=true property of the last tai_local in the locals list in the
beginning of insert_localslist, instead of in the end of prepare_locals
+ support mapping of structured instructions also in map_structured_asmlist_inner
* convert if structured instructions to br_if + labels
+ added amfrtDeleteAi, support deleting instructions in map_structured_asmlist_inner
* convert loop..end_loop blocks to flat list + branch instruction
* strip block instructions
+ add the extra allocated locals before inserting the locals list in wasm32 tcpuprocinfo.postprocess_code
Add namespaced version of libfontconfig and unixtype units in _USES clause
Add calls to FcGetVersion, FcConfigGetFilename and FcConfigFilename
* Add system.actions unit for Delphi compatibility
Set calling convention for fontconfig library import unit
* Some fixes for namespaced compilation
* a64: Fixed bug where BIC instructions were treated as having 2 operands rather than 3
* Tests for i40474 and i40475 (BIC issue on AArch64 and incorrect shifter/extender mnemonics respectively)
* a64: Corrected supported shifter/extender mnemonics for arithmetic/logical instructions
* fix
gitlab 0040451: load the assembly symbol into a separate operand so that an offset already contained in oper isn't discarded + added test
* fix
gitlab 0040410: allow specialization of a procdef also inside exception handlers + added test
* the unit name has already been uppercased for the search, so no need to uppercase it again for the message output
x86_64.inc: shorten Interlocked*, perform macro-fused test+jz in Index* early.
* a64: Renamed OptPostCMP/And to PostPeepholeOptCMP/AND for internal consistency
* Patch from Dokkie8844 to ease implementation of certificate verification. Fixes issue
gitlab 0040480
+ added label resolution via state machine
* fixes to the mangling of the entry and exit code during the state machine label resolution
* fixed branch ordering in resolve_labels_via_state_machine
+ allow jumps to goto targets
* support local.get/set/tee with a const parameter in the wasm internal assembler writer
* temporary workaround for the is_pascal_goto_target check not working properly in a_jmp_always
* fixed a div by zero error, when compiling a wasi-hosted compiler
* fixed the label resolution for asmlists with WebAssembly native exceptions
* arm/a64: New AND/CMP -> TST or ANDS optimisation
+ enable compilation of the bzip2 unit for the WASI platform, since WebAssembly now supports goto
+ enable compilation of the chm package for the WASI platform, since WebAssembly now supports goto
+ enable compilation of the fcl-res package for the WASI platform, since WebAssembly now supports goto
+ enable compilation of the hermes package for the WASI platform, since WebAssembly now supports goto
* refactor: wasm_convert_to_flat_asmlist and wasm_convert_to_structured_asmlist now accept a single var parameter
* fixed and enabled the is_pascal_goto_target check
* refactored thlcgwasm.a_jmp_always. No functional changes.
* arm/a64: Added new TST post-peephole optimisation to replace previous AND/CMP/B(c) optimisation
+ introduced thlcgobj.a_jmp_always_pascal_goto - same as .a_jmp_always, but generated by a pascal goto statement
* refactored the taicpu_wasm_structured_instruction descendants to use a wstyp enum variable, instead of using the 'is' operator to determine the class type
+ check whether all br instructions, generated by goto point to a pascal goto label
* Add system.math.vectors for Delphi compatibility.
* Fix compilation with pas2js
Fix possible overflow in riscv32 compiler
* New "TryRemoveRegAlloc" optimisation utility
* Debug capture separated out
* Rework to use new fpdebugcapture unit
* Remove duplicate code, move some code from fileutils to utils
* Allow compilation for wasm
* Dependencies for utils to compile to webassembly
* Fix compilation using namespaces & unicode rtl
* No namespaces for fpmkunit
* Fix windows compilation
Increase size of Param field of TSwitchItem object, to avoid truncation for -Cploongarch64 option
* WasmEdge library import
* Git did not add .lst files
* Fix compilation in unicode rtl
* x86: Fixed bug in "LeaLea2Lea 2" optimisation where final offset was calculated incorrectly
Change AVOID_OVERFLOW to avoid warning about inequality being always true
Add new TUnsortedCompilerOptionsStringList class
which sets Duplicates to dupAccept explicitly in constructor.
Use new TUnsortedCompilerOptionsStringList class to instanciate
all TStrings containing list of complier options.
* Fix windows unicodertl compilation
* Correctly load library, make this public
* Do not (yet) compile for wasm
* Delphi compatibility unit system.permissions
* System messaging, simple implementation
Refactor and fix a bug in Boyer-Moore.
* arm/a64: New "OptPass2TST" routine to catch "TST; B.c; AND -> ANDS; B.c" optimisation
* Remove TStringList descendents
* x86: Fixed inefficiency in the long-range MOV optimisations
* x86: Factored out the MovMov2MovMov 2 optimisation to
catch an inefficiency in the "Deep MOV" optimisations
* Patch from Rika to fix broken test (tw39885)
* Add Delphi-compatible DisposeOf and friends.
* Adjust wasmtime interface to latest version
Replace remaining SYSINITUNITS variable by SYSINIT_UNITS
Makefile's regenerated after: Replace remaining SYSINITUNITS variable by SYSINIT_UNITS
* Add some constants for Delphi compatibility
Enable libfontconfig for solaris OS
Enable fcl-pdf for BSD and solaris OSes
* Enable function references and anonymous functions in Delphi mode
* Add system.devices for Delphi compatibility
Refactor promotional features of StrUtils.
On i386 and x86_64, add cpu.CPUID — high-level wrapper to CPUID instruction, and cpu.CPUBrandString — convenience for CPUID leaves 80000002, 80000003, and 80000004.
* redefine also PPChar and PPPChar depending on the string type mode, resolves
gitlab 0040491
* moved files to appropriate location
* clean up strange extra char
* Label and align optimisation is now only done in the post-peephole
stage rather than passes 1 and 2.
Deny effective RTM support if CPUID bit RTM_ALWAYS_ABORT is set.
Change internal linker in cross-endian message.
Change message level from error to warning,
in order to allow to work on full support of
cross-endian internal assemblers and linkers.
* Add HINST for Delphi compatibility
* Add varUInt32 alias for delphi compatibility
* Add some methods to TFormatSettings for Delphi compatibility
* SkipInstr now includes ait_align
* Some delphi compatibility types and consts
* Some delphi compatibility constants
* Make sure it compiles with 3.2.2
* Fix compilation of unicode RTL after patch by Rika
* Search config file in same directory as actual compiler binary
fcl-pdf: added gitignores for fonts and binaries
+ added methods for writing ints with specific endianess in TObjData
* Correct dependency of (System.)Character, or resulting unit is unusable
* some fixes for the x86 assembler writer, when running on a big-endian hosted platform
* UpdateUsedRegsAndOptimize improved to clear aligns that don't have
any live labels after them, and to better handle non-jump labels.
+ introduced methods for writing endian-specific integers to TObjSection
* big endian fix in TOmfObjData.writeReloc
* use NtoLE instead of LEtoN in OMF DoRelocationFixup when converting from native to little endian. No functional changes, just better readability.
* Packages: Fixed assembler error in Hash package on x86_64 when external assembler is used
* Delphi compatibility methods, unicode character type helper
* Make explicit how much better FPC is when compared to Delphi ;)
* Ensure null-terminated strings. Patch by modersohn, fixes issue
gitlab 0040499
* Add system.analytics for Delphi compatibility
* write pretty symbol name of a generic is not found during specialization
* x86: CMOV block optimisation overhauled
LLVM: fix currency parameters passed on the stack on x86-64
Resolves
gitlab 0040496
* Fix by Dokkie8844 to treat error codes by GnuTLS in a more graceful manner. Fixes issue
gitlab 0040195
* a64: Node parser now attempts to directly create BIC, ORN and EON instructions
* a64: New CG tests for evaluating correct EON instructions
* Fixed internal error number clash (2022102110)
* Avoid access violation, use internalerror instead. See also issue
gitlab 0040502
* Refer to bugreport for internal error 20231102
Check that tai returned by GetNextInstruction is really a taicpu object before using an explicit typecast
Use faster check for type of tai object
Fix handling of ST_LOADMESSAGES token
Clean up OSCPUSupported array values
* fix
gitlab 0040500: do a for-in on a string variable using low(strvar) to high(strvar) so that zero based strings are handled correctly
+ added test
* fix
gitlab 0040504: always provide the global enum symbol for anonymous enum types (e.g. as part of a set)
+ added test
* Add delphi-compatible observers to classes
* Add GetMulticastObserver
* Add TStreamOriginalFormat for Delphi compatibility
* Add SkipValue to TReader
* Add TReader.ReadPrefix for Delphi compatibility
* Additional Delphi-compatible constant
* Not all OSes have NilHandle
* line info may not use namespaces, referenced in compiler
* Do not use namespace prefix for lnfodwarf
* Regen Makefiles with correct defines for some lineinfo units
Replace TEncoding.FLock with interlocked operations.
* Fix wince/nativent compilation
* Add delphi compatible constant
Add potentially required barriers to TEnconding.
* Implement TSemaphore & TMutex for Delphi compatibility
* Add pthread_mutex_timedlock, sem_timedwait may be needed in future
* Better version of nilpchar
* x86: Additional TEST/CMP optimisations to optimise CMOV blocks
that aren't optimal due to register pressure
* x86: PostPeepholeOptMov attempts to convert mov $0,%reg to
xor %reg,%reg and mov $-1,%reg to or $-1,%reg under
-Os even if the flags are in use by looking ahead.
* Correct tsemaphore for platforms that do not have the mutex_timedlock
* Fix typo, missing brackets
* Fix during defined USE_pthread_mutex_trylock
* Correctly close IFDEF block
* Make TSemaphore and TMutex opt-in for some platforms
* Allow to disable 8.3 filename search
* pthread_mutex_timedlock
Add tests for IndexQWord, and shorten tindex.pp.
Fix for trunk arm STM optimize bug
* check for *-1 multiplications after folding, resolves
gitlab 0040448
Make some i386.inc functions “nostackframe”.
* a64: New CSEL block optimisations ported over from x86 CMOV block optimisations
* Fix unicodertl compilation
* Only free event if it was actually created
* Fix string type in AnsiLastChar declaration
* Add unicode AnsiLastChar overload
* Add system.diagnostics for Delphi compatibility
+ added TWasmObjInput class. To be used in the WASM internal linker. Not doing anything, yet.
+ implemented TWasmObjInput.CanReadObjData: checks for WASM header and version
+ started implementing TWasmObjInput.ReadObjData
* Properly zero-terminate ansistring when calling unicode2ascii
AVX2 CompareByte for i386.
iosxwstr: use kCFCompareNonliteral
Patch by @modersohn
Fixes tunistr7/twidestr7, resolves
gitlab 0040507
cpptcl1.o: recompiled with -fno-exceptions
As identified by @modersohn, resolves
gitlab 0040501
* Add interface to libpcre (Perl Compatible Regular Expressions)
+ added TInternalLinkerWasi class (not fully implemented, yet)
+ added TWasmExeOutput class (not implemented, yet)
* Darwin only has 8-bit char version of the library
* Implement Delphi multiline strings
* Handle forward external objcclass
* Implement missing tests
* Fixes for Delphi multiline strings in pas2js
* Some fixes to compile with pas2js
* Fix compilation after Delpĥi mode strings were added
Remove runtime ABI adapter in x86_64.inc:IndexByte/Word, and save two jumps in the common case.
+ centralized cpu capability detection
* detect avx support also in the i386 system unit
* Enable multiline strings in delphi mode
* Register msDelphiMultilineStrings
m68k: initial compiler changes for Human68k (Sharp X68000) support
tabs to spaces cosmetics. no functional change
m68k: Human68k support for fpcmake
m68k: first bit of a Human68k RTL - a very dummy startup code
* patch by lagprogramming: Improvement of function SetCompileModeSwitch, resolves
gitlab 0040525
human68k: have a README for the RTL
* Add AssertNoException, add overload with function reference
Add missing token buffer index update for ST_LOADMESSAGES handling
Improve token buffer size checks.
* For settings comparison: call CompareByte only on copy_size.
* For mesgnb: verify that there is enough memory space
in rest of tokenbuf to hold the number of messages.
+ Add a check that tbi is not greater than tokenbufsize.
Revert wrong commit about PIC code for powerpc-linux
* check also for XGETBV support, resolves problem reported by Pierre
human68k: add an RTL skeleton, almost nothing is implemented yet
human68k: fpcmake support fixes, files regenerated
human68k: this system has internal sysinit
human68k: ppudump typo/build fix
human68k: fpmake changes, disable everything that cannot be built currently
human68k: add support to fpmkunit
human68k: regenerated Makefiles
human68k: actually tell the build system where the rtl directory is
human68k: some forgotten regenned files
human68k: fix xecutable generation
* Add system.notification for Delphi compatibility
ERMSB-aware Fill* for i386.
* Make dictionary constructor behave as Delphi does in absence of comparer
m68k: basic DOS syscall generation for human68k
Call FindUtil for ld or nlmconv utils at linking stage, not before
* arm: Fixed "RegInInstruction" and "RegModifiedByInstruction" not handling the flags properly
AVR optimization LdsMov2Lds
* arm: "OpCmp2OpS" moved to Pass 2 so it doesn't conflict with AND; CMP -> TST optimisation
REP STOS branch for x64 Fill* (only for System V ABI for now).
* arm/a64: "OptPass2AND" and "OptPass2CMP" adapted to remove vestigial CMP and TST instructions
* Do not ignore .lpi files in general
* Use class instead of classname
* System.JSON for Delphi compatibility
nested procvars: support assignments when switch not active
Support assigning one nested procvar to another even when the nestedprocvars
modeswitch is not active. This can happen when the type was declared in a
different unit that was compiled with this modeswitch, or in internally
generated wrapper code (which uses "pure" objfpc mode)
* Fix compilation in unicode RTL
* Correct dependency for system.notifications
* Fix compilation in unicode RTL
Fix a typo in CompareWord_Plain.
* Add system.pushnotifications for Delphi compatibility
* a64: SkipAligns calls removed.
* x86: SkipAligns calls removed.
* SkipAligns method removed
* Pass make sure all TPath.Combine overloads follow the same code logic
Fix for external class declared inside another external class.
* SkipLabels now handles alignment fields correctly
* x86: Safety check, since after calling DoJumpOptimizations, the input may no longer be the same tai
* GetFinalDestination now calls SkipLabels on an alignment field
* x86: Fixed inefficiencies revealed in "TEST/JNE/TEST/JNE"
optimisations after SkipAligns cull.
A variant "TEST/JNE/TEST/JE/@Lbl" optimisation now exists to
accommodate for an intermediate jump optimisation that prevents
the original optimisation from working if performed first.
Move test to end of possible conversion and add check_valid_var boolean variable
* Some delphi compatibility issues solved (PtrToNil and TGUID operator)
* Make IInterface methods virtual, as in Delphi
* USe scoped enums: Delphi compatible, avoid clash with constants defined in sysutils and classes units
Reenable semaphore support for NetBSD and OpenBSD in syncobjs unit
* Delphi compatible hash again compatible
* remove some artifact file
Add test for bug report 40537
Fix usage of GNU assembler for i386-nativent target
* FNV hash, needed for system.hash
* Dotted version of fnvhash.pp
* System.Hash for Delphi compatibility
m68k: do not generate argument popping for a noreturn call
human68k: RTL works enough now to run a hello, world!
regenerated msg*.inc files for the compiler after human68k merge
m68k: have the targets in alphabetical order in the help text
human68k: implemented some basic file and I/O handling functions
Fix for function Val to validate the parameter count of the function.
human68k: fixed a dumb typo on the bss start calculation. fixes FPC binaries under run68.
Add human68k OS to list of supported OSes for m68k GNU assembler
Improve GNU linker call for m68k-human68k target
+ Add '-b xfile' option
+ Add '-m human68kxfile' option
+ Add $GCSECTIONS and set GCSectionStr for GNU linker
* Add Delphi-compatible regular expressions based on libpcre
$ Corrections for widestring use
* pcre available only on selected platforms
* Make methods static so they are assignment compatible with regular procedures.
* Make string argument const.
* More const for string params
human68k: minimal DOS calls error handling/inoutres mapping
trealconstnode.printnodedata: fix currency values getting written to stdout
human68k: handle the OS malloc returning errors properly
human68k: refactored some type naming used in the startup code
human68k: setup the stack, then use setblock to limit the memory usage to the amount we're really using. this frees up RAM, and allows the heap allocator to work.
human68k: disable tinyheap, as there's some memory trashing going on with it, and use the regular one for now
human68k: parse the arguments passed to the program, fill out argc/argv, make ParamCount and ParamStr() to work
* fix output position of deprecated hint for certain cases where it was wrong, resolves
gitlab 0040534
human68k: set default stack size to 16KiB
human68k: more work on getting tinyheap right. still doesn't seem to work, sadly, so still disabled
human68k: actually, the comm field coming from the OS is in ph68kdos_comline format, so use it accordingly
* Some small improvements, added some clarification to readme
human68k: fix zero termination of the last argument
human68k: fixed argv[0] generation, after figuring out that length() is something very different to strlen()
* Better creation of self-signed certificates. Patch by Anton (@odisey1245). Fixes issue
gitlab 0040553
* GetEpochTime (not used though it seems) should return time_t
human68k: also fill the entire args buffer with zeros, for proper last argument termination
human68k: one more rework after advices/reports from Pierre Muller, hopefully this fixes all remaning edge cases
LLVM: only round currency values when storing them back to memory
Resolves
gitlab 0040550
LLVM: recognise Xcode-15 as LLVM codegen target
webtbs/tw10641.pp: skip for Darwin (it does not support these relocations)
Supposedly better fastmove.inc.
human68k: implemented do_open (based on the Atari version)
human68k: try not to nuke immediately during argument parsing, if memory allocation fails
human68k: cosmetics, no functional change
human68k: implemented do_getdir (based on the Atari version)
* Delphi-compatible Record-based Regex API
Attempt to save push/pop ebx on small non-GPR moves.
human68k: implemented do_chdir
human68k: pre-fetch the version number of the OS during startup. and store it for easy access
human68k: implemented do_rename
* Allow Delphi-style const [ref]
* Parse inline variable declarations
LLVM: use llvm.dbg.declare instead of llvm.dbg.addr for variable declarations
Even though it's supposedly deprecated, clang also still uses it and without
the declaration ranges of local variables are sometimes cut off
human68k: implemented some trivial functions in sysutils
fix EncodeURLElement string types
tosunits: add the README as doc
h68units: new package with and for Human68k support units
* Node dumps now output the convention if it's not pocall_default
* Update to latest version 18ad26b2bee562c00b8800ea4a20df1f946933e0
Changed the default value for Char, to be a #0 char and not an empty string.
* Fix unicode rtl compilation
* Disable inlining for the moment, so lazarus compiles
Increase non-temporal i386 & x64 Fill* thresholds to 4 Mb.
* Extended version of tprocess
* Fixes & changes after discussion with Martin
fcl-passrc: fixed unique number
pastojs: fixed cmd line help -t param
* Allow new PrepareCreatedHandleForProcess to do the work
fcl-passrc: fixed parse untyped vars
pastojs: fixed tests for new char init #0
* Add more checks/tests, add iotNull
* Fix compilation for Atari-like
* Remove dead code. Close handle before raising exception.
* Prevent file descriptor leaks
* FPrevent file descriptor leaks, event to control closing descriptor
* Allow users to create descendents of TIODescriptor
* do str(...) optimization only in level 3+ mode
For safety: Invalidate handle first, then Close handle
The PipeStream will close the handle
Remember the IOType at time of handle creation (and before calling user events). User may reuse the instance and change it, then CloseTheirHandles needs to know.
Invalidate Handle, even if we don't close it. (it may be set, e.g. for iotNone)
Fix uninitialized result for dwFlags
* Add CreateAnonymousThread with anonymous procedure
Attempt to ERMS backward i386 ‘Move’s.
* Set subtarget define as soon as -t option is parsed
pastojs: forbid subtarget -t parameter in config file
* Fix AV in some cases. reported by Pascal Riekenberg
* Guard against the case connection is nil when closing datasets
Move ERMS branch into a separate function instead of runtime checks of fast_large_repmovstosb.
* Ensure code compiles with 3.2.2
m68k: fix the assembler reader to bail out earlier on a failed parsing of a constant expression
human68k: added a totally untested DOS unit to the RTL
human68k: regenerated Makefile after the previous commit
human68k: less fail in regenerating a Makefile
+ added ld_int_wasi constant. Register the WASI internal linker.
* enable the WASM internal linker, in case the compiler is compiled with the ENABLE_WASM_INTERNAL_LINKER define
* override and implement TInternalLinkerWasi.InitSysInitUnitName
* set CObjData in the TWasmExeOutput constructor
* override GetCodeSize, GetDataSize and GetBssSize in TInternalLinkerWasi to avoid crash
* write a WebAssembly header in TWasmExeOutput.writeData
* implementation of TInternalLinkerWasi.DefaultLinkScript. Create a script that reads all the object files.
+ added functions for reading the different types of Wasm object sections
+ introduced decode_wasm_basic_type function
+ Wasm internal linker, object reader: implemented parsing of the type section
* Correct check on command-line for -t
+ input error message in case the type section size is unexpected/wrong
+ import section duplicate check
+ added const sets for the WebAssembly reference, numeric and vector types
+ WebAssembly object reader: implemented parsing of the import section
+ function section duplicate check
+ read the functions count from the functions section
+ parse the rest of the function section
+ parse the data count section
* Namespaced version of testinsight units
* minor improvement for TPasRecordType.IsAdvancedRecord. Fixes issue
gitlab 0040539
* Fix AV due to not initialized FullName field. Patch by Bart B. Fixes issue
gitlab 0040489
* Add const for string where possible
+ introduced ReadUleb32 to avoid code repetition of the >high(uint32) checks
* use ReadUleb32 in more places
* the ReadUleb, ReadUleb32 and ReadName methods moved to be local functions inside TWasmObjInput.ReadObjData.ReadSection
- removed the TObjectReader parameter from ReadUleb, ReadUleb32 and ReadName
+ added section bounds checking to the read function, used inside TWasmObjInput.ReadObjData.ReadSection
- removed the repeated section bounds check in the section parsing code,
because now all reads go through the read function, which does section bounds
checking on every read
+ added code section duplicate check in wasm object reader
+ read the code entries count from the code section
+ started parsing of custom sections - known custom sections are dispatched to
a specialized parsing function for each of them, while unknown custom sections
(currently the ones, not produced by FPC) produce an error
+ parse and check the version of the 'linking' section
+ parse the linking custom section by splitting it into subsections and call subfunctions (dummy for now) for each subsection
* the 'linking' section is a section, not a subsection. Fix error messages.
* set FReader and InputFileName in the beginning of TWasmObjInput.ReadObjData
+ parse the WASM_SEGMENT_INFO subsection
+ check for duplicated WASM_SEGMENT_INFO subsections
+ added DataSegments dynarray of record, that will store data segment info
+ check for duplicated data sections
+ read the data count from the data section. Set size of the DataSegments
array, if the data count section hasn't been encountered. Compare the count
with the value from the data count section, in case the data count section
has been encountered, and issue an error, if they differ.
* check that the data count section preceeds the data section and report an error otherwise
+ parse the data section in the wasm object reader
+ verify the segment count when parsing the WASM_SEGMENT_INFO subsection
* moved local vars to avoid bug
* moved another local var to avoid bug
* fill the data in the DataSegments array when parsing the WASM_SEGMENT_INFO subsection
+ read the section content in the wasm object reader
+ check for memory index other than 0 in the wasm object reader and report an error, since that is not supported
+ check and report an error if a passive data segment is encountered by the wasm object reader
* attempt to avoid warning, treated as error, causing CI failure
+ symbol table subsection duplicate check
+ implemented parsing of the symbol table in the wasm object reader
+ wasm object reader: store the symbol table in a dynamic array, so it can be processed later
+ check bounds for SymIndex of SYMTAB_DATA symbols
+ create data symbols in the wasm object reader
+ support local binding when reading data symbols in the internal wasm object reader
+ wasm obj reader: store the parsed import data from the import section in local arrays and structures
+ store in the FuncTypes array the func types, parsed in the function section
+ wasm object reader: range check the symbol indices of SYMTAB_FUNCTION entries
+ partially implemented the creation of symbols for SYMTAB_FUNCTION entries
+ include mod name in symbols
* The "Val" intrinsic is now simplified for string constants akin to a
pure function.
* Fixed bug where a call node's intrinsic code
wasn't copied over during "DoGetCopy"
* Fixed bug where the original index of a call
para wasn't copied over during "DoGetCopy"
+ wasm object reader: implemented parsing of the global section
+ fully implemented reading the code section
+ check the code entries count in the wasm object reader
+ wasm object reader: create code sections and symbols
+ parse the export table in the wasm internal object reader
+ add oso_keep flag to the code sections that contain an export
+ create exe sections in the wasi internal linker script
+ auto add oso_data and oso_sparse_data when creating a .bss segment on the wasm target
* set MaxMemPos in the wasm internal linker
+ started implementing the reading of relocation sections in the wasm object reader
+ implemented parsing of the relocation section
+ check for supported relocation types, report an error if an unsupported type is found
+ keep track of section indexes. Save the code and data section indexes.
* disallow (for now) relocations for sections other than the code and data sections
+ store the parsed relocation table in an array
+ find the code and data segment of each relocation
+ create relocation objects for R_WASM_FUNCTION_INDEX_LEB relocations in the wasm object reader
+ create relocation objects for R_WASM_TABLE_INDEX_SLEB relocations in the wasm object reader
+ create relocation objects for R_WASM_TABLE_INDEX_I32 relocations in the wasm object reader
+ create relocation objects for R_WASM_MEMORY_ADDR_LEB relocations in the wasm object reader
+ create relocation objects for R_WASM_MEMORY_ADDR_SLEB relocations in the wasm object reader
+ create relocation objects for R_WASM_MEMORY_ADDR_I32 relocations in the wasm object reader
+ create relocation objects for R_WASM_TYPE_INDEX_LEB relocations in the wasm object reader
+ create relocation objects for R_WASM_FUNCTION_OFFSET_I32 relocations in the wasm object reader
* New "tval1" test to verify that Val with constants works properly
* also keep track of captured def (necessary when functions are captured)
* correctly handle managed function results when converting a global or nested function to a function reference
+ added test
* the adjusted nested function needs to access the parent function for the capturer
* only walk the node tree if there are indeed captured symbols to convert
* ensure that nested functions that are assigned to function pointers are considered as captured as well
* split the two error cases of tanonfunc25 into two different tests
* keep track which nested function definition the new method has been converted from
* allow a nested function that calls itself can be converted to a function reference
+ added test
LLVM: enforce line information for invoke instructions
Like with call instructions, when generating debug information LLVM requires
line information for invoke instructions that may be inline
* No static versions for 5.6 and 5.7
pas2js: marked allowed writeln
+ Extracted the func list maintenance functionality from the WebAssembly object
writer to a new TWasmFuncTypeTable class. This will allow for it to be reused
in the WebAssembly exe writer as well.
* TWasmFuncTypeTable.AddFuncType renamed .AddOrGetFuncType
Try to compute correct page size for wlib call
- removed TWasmObjData.AddFuncType, instead call directly [F]FuncTypes.AddOrGetFuncType
+ initialize TWasmObjData.FFuncTypes in TWasmObjData's constructor
+ added a TWasmFuncTypeTable instance to TWasmExeOutput
* TVmtFieldEntry.FieldOffset needs to be SizeUInt instead of PtrUInt, so that it works correctly on the various memory models of i8086 as well
+ added test
* Added new "tval2" test that assigns constant string symbol
* Added unsigned versions of the "tval" tests
* SymbolTable.ObjSym type changed from TObjSymbol to TWasmObjSymbol
+ WebAssembly object reader: create symbols for imports that have the
WASM_SYM_EXPLICIT_NAME flag set. Save the import module and name info inside
a new field TWasmObjSymbol.LinkingData.
+ implemented TWasmExeOutput.GenerateLibraryImports
+ process the module imports and write them to the map file in TWasmExeOutput.AfterUnusedSectionRemoval
+ store the functype in TWasmObjSymbolLinkingData
+ added TWasmFuncType.ToString implementation
+ also write the functype of imported functions in the linker map file
+ WebAssembly internal linker, exe writer: keep track of exe import functions. Add and fill TWasmObjSymbolLinkingData.ExeFunctionIndex
+ added a section array to the wasm exe writer
* converted some helper methods from TWasmObjOutput to global functions, so they can be reused in the exe writer
+ added and implemented TWasmExeOutput.WriteWasmSection
+ initialize TWasmExeOutput.FWasmSections
* WriteWasmBasicType and WriteWasmResultType converted to global functions to allow reuse in the exe writer
* writing of the type wasm object section extracted to a method TWasmFuncTypeTable.WriteTo, so it can be reused in the exe writer
+ generate and write the Type section in the WebAssembly internal exe writer
+ generate the import section in the wasm exe writer
+ WebAssembly exe writer: write the code section
* set TWasmObjSection.MainFuncSymbol in the wasm object reader
* extracted the import preparation to a separate method TWasmExeOutput.PrepareImports
+ write the type indexes correctly
+ added check for the ExeFunctionIndex inside WriteCodeSegments
+ fill the memory section in the wasm exe writer
+ partial implementation of RELOC_FUNCTION_INDEX_LEB relocations in the wasm internal linker
+ write the import function indexes in the linker map file
+ wasm internal linker: write the functions, defined in the current module in the linker map file
* wasm internal linker: use the main symbol (without WASM_SYM_EXPLICIT_NAME,
i.e. not an alias) to define code section names in the wasm object reader.
For example, the section for the INITHEAP function is now called:
.text.n_SYSTEM_$$_INITHEAP
instead of
.text.n__FPC_InitHeap
(which is based on an explicit alias for the function - '_FPC_InitHeap')
+ report an error in case a wasm object file has a code section, without a main symbol
* only set MainFuncSymbol of code sections to the main (non-alias) symbol
+ wasm internal linker: fill ExeFunctionIndex of alias code symbols as well
* produce an internal error, instead of a warning in case of RELOC_FUNCTION_INDEX_LEB pointing to a function with missing ExeFunctionIndex
* refactor: invert if condition and else statement (reducing the nesting level), because then terminates the function. No functional changes.
+ implemented RELOC_TYPE_INDEX_LEB relocations in the wasm internal linker
* wasm internal linker: start the data section at offset 0, as WebAssembly is a Harvard architecture.
+ webassembly internal linker: create separate exe sections for .rodata and .bss
+ WASI internal linker: implemented GetCodeSize, GetDataSize and GetBssSize.
+ write the data section in the wasm internal linker exe writer
MorphOS: fixed process with Pipes
+ implemented R_WASM_MEMORY_ADDR_I32 relocations in the wasm internal linker
+ implement R_WASM_TABLE_INDEX_I32 relocations in the wasm internal linker
+ create the Table and Elem sections in the wasm exe writer
+ implemented R_WASM_MEMORY_ADDR_LEB relocations in the wasm internal linker
+ implemented R_WASM_MEMORY_ADDR_SLEB and R_WASM_TABLE_INDEX_SLEB relocations in the wasm internal linker
* wasm internal linker: produce an error if an R_WASM_SECTION_OFFSET_I32 or an
R_WASM_TAG_INDEX_LEB relocations is encountered - these aren't implemented,
and are not required for 'hello, world', so will be done later.
+ wasm internal object reader: process SYMTAB_GLOBAL import entries
+ wasm internal linker: internally define the '__stack_pointer' global symbol
+ also define non-imported SYMTAB_GLOBAL symbols in the wasm internal object reader
+ create relocations for R_WASM_GLOBAL_INDEX_LEB entires in the wasm object reader
* define the __stack_pointer symbol in a different way, so it doesn't crash during linking
* use SizeInt instead of PtrInt for the stack area size (this both matches the declaration in TypInfo as well as enough on 16-bit targets like i8086)
+ wasm internal obj reader: add globals to a '.wasm_globals' object section
* set the size of AT_WASM_GLOBAL symbols to 1
+ add descriptive comment regarding the TVmtField* types
+ wasm internal linker: put all wasm global symbols in separate sections,
called .wasm_globals.n_XXX. This allows section-based smartlinking to work on
global symbols.
* more clean variable initialization
+ implemented R_WASM_GLOBAL_INDEX_LEB relocations in the wasm internal linker
+ generate the global section in the wasm internal linker exe writer
+ write export section in the wasm internal linker exe writer, only the memory is exported for now
+ wasm internal linker: write the exported functions to the export section in the exe writer
* fixed bug in the application of RELOC_GLOBAL_INDEX_LEB fixups in the wasm internal exe writer
+ allocate stack and set the initial value for the stack pointer in the wasm internal exe writer
* start the data at offset 1024 instead of 0, just like the LLVM linker
* wasm internal linker: start the .text section at mempos 0
* wasm internal exe writer: set mempos for code sections to the offset within
the code section. This does not affect the .wasm binary generation, only the
linker map file.
+ added check for whether R_WASM_TABLE_INDEX_I32 relocations always point to a function symbol in the wasm internal object reader
Fix FillQWord_SSE2 stack usage.
Fix wrong explicit typecast of srsym variable (caught by -CR option)
Add emulation_opt settings for all four mips CPUs
+ fill the correct minimal number of memory pages required in the wasm internal linker
+ increased the default stack size of the WASI platform from 64 KB to 8 MB (like in i386-linux)
+ read debug sections in the wasm internal object reader
* ignore relocation sections for custom sections for now (will be done later), so that we can proceed with the debug info generation in a later phase
+ wasm object reader: allow other sections to be created before the first code section
+ add the debug sections in the WASI internal linker script file
Add string constant values to stringconstn nodes in parse tree output
LLVM: fix missing line debug info for some invokes in specialised functions
Required when the code can be inlined. Fixes compilation with debug info of
system.messaging.pp
Extended RTTI: optimise fetching VMT index
Extended RTTI: fix use of wrong def for the methods table
Fixes LLVM compilation
* increase PPU version due to Extended RTTI related changes
* for some reason my ppu.pas had a version of 18, instead of 20... so now the correct version m(
Fix failing targets for fcl-process by changing Execute into SysExecute inside src/*/process.inc files
Add struct field names to subscriptn nodes in parse tree output
+ write debug sections in the wasm internal exe writer
* ensure that the SysCall unit is also usable when FPC_USE_LIBC is defined
* Make sure dummy tprocess compiles
fcl-json: fixed compile with pas2js
fcl-passrc: fixed compile with pas2js
pastojs: fixed compile with pas2js
Fix compilation of syscall unit for Linux with -dFPC_USE_LIBC option
Fix syscall unit compilation for i386-linux using -dFPC_USE_LIBC
Add dependency on objpas unit for syscall unit compiled with -dFPC_USE_LIBC
Use GetProcAddress to set GetFinalPathNameByHandle function pointer
+ wasm internal object reader: pass a TWasmCustomDebugSectionType parameter to ReadDebugSection
+ wasm internal object reader: also read the '.debug_frame' and '.debug_str' sections
+ wasm internal object reader: record section indices for debug sections. Check for duplicated debug sections.
+ wasm internal object reader: support relocations for debug sections
m68k-atari: fix installation of sysconts and heaptrc units
m68k-atari: regenerated Makefile
+ support R_WASM_SECTION_OFFSET_I32 relocations in the wasm internal object reader
* wasm internal object reader: validation of the RelocIndex range moved to a single place - in ReadRelocationSection
* wasm internal object reader: removed the warnings in case of missing symbol (this will now create an internal error, instead)
* refactor: changed the type RelocationTable.RelocType to avoid type casts. No functional changes.
* refactor: changed the type of SymbolTable.SymKind to TWasmSymbolType, to avoid type casts. No functional changes.
+ wasm internal object reader: validate that relocations that should point to a SYMTAB_FUNCTION entry, actually point to such entry
+ wasm internal object reader: added range check to the reader of the SymKind field
+ wasm internal object reader: check that relocations that should point to a SYMTAB_DATA symbol, actually point to such symbol
+ wasm internal object reader: check that R_WASM_GLOBAL_INDEX_LEB point to a SYMTAB_GLOBAL symbol
* wasm internal linker: perform R_WASM_SECTION_OFFSET_I32 relocations
* wasm internal linker: set mempos of debug sections to 0
- wasm internal object reader: removed redundant check for R_WASM_TABLE_INDEX_I32 pointing to a SYMTAB_FUNCTION entry (we now do this check earlier)
+ wasm internal linker: implemented R_WASM_FUNCTION_OFFSET_I32 relocations
+ test from Rika for merge request 566
+ WASI internal linker: add all object sections, starting with '.bss' to the .bss section
+ WASI internal linker: also add .debug_frame and .debug_str sections to the output binary
+ WASI internal linker: simplify linker script generation for the .text, .rodata, .data and .bss sections via the use of ScriptAddGenericSections
* wasm internal linker: fixed the relocation of imported function symbol aliases
* wasm internal linker: skip the element section when reading object files. This fixes linking with object modules, produced by the external assembler.
+ wasm internal object reader: parse the tag section
+ wasm internal object reader: read tag imports
+ wasm internal object reader: store the tags from the tag section in the TagTypes array
+ wasm internal object reader: bounds check the tag type index against the types table
+ wasm internal object reader: read tags from the export section
+ wasm internal object reader: range check event symbols against the tag index space (imports + tag section)
+ wasm internal object reader: create symbols for SYMTAB_EVENT entries in the symbol table
* wasm internal object reader: validate that R_WASM_TAG_INDEX_LEB relocations point to a SYMTAB_EVENT symbol
* wasm internal object reader: convert R_WASM_TAG_INDEX_LEB relocations to relocation objects
* wasm internal linker: treat exception symbols as AB_COMMON
+ WASI internal linker: added the .wasm_tags exe section to the linker script
* wasm internal object reader: handle tag symbol flags properly (support weak and local symbols)
* wasm internal linker: set mempos of the .wasm_tags (and .wasm_globals) section to 0
+ wasm internal linker: create the tag section (if not empty)
+ wasm internal linker: implemented RELOC_TAG_INDEX_LEB relocations
* wasm internal linker: produce an internal error on unknown relocations
+ enable the WASI internal linker
* fixed internal linker crash if no tags are defined (i.e. no WASM native exceptions used)
pas2js: updated nodepas2js and compile with ecmascript6
pastojs: fixed parsing multi line comment
fcl-js: fixed TBufferWriter on nodejs
+ support for fputimens on non-linux OSes
* reworked fputimens support on linux
+ FileSetDate for all unix OSes
* Some fixes in code generation
Fix compilation of syscall unit for i386-beos target
Avoid double declaration of seterrno
LLVM: remove flags used to support older LLVM versions
* search using the real package name instead of the uppercased one so that an as-is cased package will be found as well
+ add a test that checks for correct working of the legacy method table
Examinc OPT and CROSSOPT instead of FPCOPT in [prerules] to check if syscall unit needs objpas dependency
* range checking is already performed in pass_typecheck
* ensure that the legacy method table has the correct alignment on platforms that require it (e.g. SPARC64)
* Fix missing escape for dollar sign
m68k-human68k: fix installation of sysconts and heaptrc units
m68k-human68k: regenerated Makefile
+ generate DWARF debug info for WebAssembly locals
m68k-sinclairql: make heaptrc compile for the QL
m68k-sinclairql: also build the various softfpu flavors for the QL
m68k-sinclairql: fixed the installation of many units that are otherwise built
m68k-sinclairql: regenerated Makefile
Fix compilation of fcl-process for wince target OS, FIXME: untested :-(
do not display the changing assembler note, if the internal and the external assemblers are the same, or there's no internal assembler defined
tabs to spaces cosmetics, no functional change
m68k: add more cases, where TST instructions can beoptimized away, because the previous instruction already sets all the required flags
Add fcl-process/src/winall include directory for Windows targets
Add handling of packages/fcl-process/src/amicommon directory
Revert move of packages/fcl-process/src/win/pipes.inc to packages/fcl-process/src/winall directory: wince should use dummy/pipes.inc file
* ensure that TObject.FieldAddress returns the same values as accessing the RTTI directly
m68k: refactored the optimizer to avoid direct asml management where possible, and use standard functions instead
Use ERMS in all eligible cases, again.
Namely, when Move.count > NtThreshold but move distance is too short. 8310b169b780171ba1aac906602bada424b9eb76 messed with the logic and made this case fall back to a regular loop instead of more preferable ERMS.
* fixed bug that caused 'c in ['a'..'z']' to fail on the WebAssembly target, when code is compiled with {$packset 1}
Avoid range check error in AddNormalStringDef
* Vectors of string constants are now simplified into ordinal constants
* New CG tests for verifying tvecnode.simplify correctness
* Fix typo in enumeration value rloHTTP
Issue internal error in def type is errordef
- removed the ENABLE_WASM_INTERNAL_LINKER define from the .lpi file
* access the legacy method table using the correct alignment
- removed the DEBUG_WASM_GOTO define from the .lpi file
* Fixed issue where Val shortcutting would not compile under 32-bit systems
* several issues with the in_val_x optimization fixed
Add missing syscall_nr_futimens for NetBSD OS
* Add Current and CurrentIsMain
Add new DragonFly OS syscall number up to release 6.4.0 (v6.4.0 tag on https://gitweb.dragonflybsd.org/dragonfly.git)
* Change GetSystemTimes signature to be delphi compatible, implement for linux
* remove semicolon to make Lazarus happy
* fix
gitlab 0040592: make the Delphi-compatible attributes usable, but in a way that makes it clear to the user that they won't work
+ added test
* avoid wrong warning about FillChar not initializing the output parameter in case count <= 0
* fix bootstrapping with with 3.2.2 and -dFPC_USE_LIBC
* fix utimensat and utimensat if the rtl is compiled with -dFPC_USE_LIBC
* print the whole symbol name for hint messages
* avoid that fpc_fillmem does not inline due too much nested calls
* fix
gitlab 0040595: correctly access the list of parameters of the extended method table
+ added test
* fixed bug in the handling of WebAssembly goto
+ support for .debug_loc and .debuc_loclist sections
+ added a zero/unitialized/unknown value to TWasmBasicType: wbt_Unknown
+ introduced TWasmValueStack for tracking the state of the WebAssembly stack. Not used, yet, but will be in the future.
* check length of optstring before dereferencing (optstring[1]) it. Fixes
gitlab 0040596
pastojs: set version to 3.1.1
* system.threading compatibility unit + tests
Add MaybeSwap for coffsectionrec records (needed for cross-endian compilation)
* use TTimespecArr instead of tkernel_timespecs in sysutils
* cleaned up TTimespecArr declarations
* Delphi-compatible overloads UTF8ToUnicodeString
Also swap word/dword in case of cross-endian compilation
* fix darwin compilation after TTimespecArr changes
* compilation on linux with FPC_USE_LIBC fixed
* manually added newer syscall numbers for arm-android
Use call to seterrno function inside FpSysCall functions for powerpc cpu on linux OS
* fix compilation for mipsel-android (hopefully)
* fix compilation on 32 bit hosts
* last commit was not complete, fixed
+ manually added new syscalls to i386-android
Use writeUInt32LE/writeUInt16LE method to write multi-byte integer in importlib method in t_win unit (as all supported CPUs are little endian)
+ added TWasmControlStack and frame. Not used, yet. Will be used in the future
for WebAssembly stack tracking and validation.
* inverted the indices of TWasmValueStack, so that item 0 is top of stack
* fix
gitlab 0040593: don't check for a static method when assigning a methodpointer to a function reference
+ added test
* fix implementation comment
- the setter for tloadnode.procdef is not used, so remove it so that that tloadnode.setprocdef can be extended
* fix
gitlab 0040594: when assigning a nested function to a function reference don't check for the nested procvars parameter, because nested functions can be treated like anonymous functions here
+ added test
* disable OptPass2Test and OptPass2CMP for now as it seems to result in buggy code
* Added field to identify blocknodes that wrap entire subroutines
* set stack margin on windows, so there is stack space left for exception handling in case of a stack overflow, resolves
gitlab 0040589
Fix writing of low qword of floatx80 real type into 10-byte array on big endian systems
* Fix writing of 'comp' type depending on FPC_COMP_IS_INT64 macro.
* Fix writing of floatx80 on systems with gaps due to alignment requirements.
* Add internal_endian field to tppudumpfile class
* Check that this new field is indeed set, once only, by
header flags.
* Use this flag to extract high and low parts of floatx80
record for soft floatx80 support.
Use reverse_byte to write constant sets in cross-endian configuration
Add writeInt8/writeUInt8 methods to fix some cross-endian generation issues
Use writeint8/writeuint8 methods to avoid cross-endian issues
Support cross-endian compilation for telfobjdata.writereloc method
* Windows CE does not support SetThreadStackGuarantee
* Fixed issue where OptPass2CMP and OptPass2TEST didn't drop out on labels etc.
* Fix writereloc for cross-endian compilation
* Fixed issue where TryCmpCMovOpts produced bad
code if the last MOV got moved.
Fix for default value of a class of type.
Support Windows XP where SetThreadStackGuarantee is absent.
* New Boolean "SetAndTest" utility function
* win64 has always SetThreadStackGuarantee
* Replace widestring with unicodestring (faster on windows). Fixes issue
gitlab 0040613
* x86: New "STC/CLC; MOV" peephole optimisation
* while on windows the max. possible year should be 1980+127=2127, 2104 causes an error (seems to be limited to 2099), so stay with 2096
* inserting $result into the symtables should never trigger a duplicate symbol error, resolves
gitlab 0040608
Swap real constant in internal assembler
* x86: New "Jcc; CLC/STC; .Lbl" optimisation
* Fixed internal error 2022041701 number clash (LLVM changed to 2022041730)
* Introduce fmShareNoLocking to disable locking of file descriptors on unix
* Prevent file handle leak
* Do not lock output files
* Use TProcess file redirection facilities
* x86: Separated out Jcc; STC/CLC optimisation and added additional peephole optimisations
* x86: Additional STC/CLC; J(N)C deterministic jump optimisation
* x86: STC/CLC optimisations can now handle multiple Jcc instructions
* x86: New "aoc_DoPass2JccOpts" option to catch branch and
STC/CLC optimisations that only manifest in Pass 2
Add linux dependency on syscall unit for libc on i386 and x86_64
Regenerated Makefile's after: Add linux dependency on syscall unit for libc on i386 and x86_64
Avoid 'false' warning: Local variable "gap_index" does not seem to be initialized on cycle with -O3 option
* Fixed compilation with FPC 3.2.2
* compile with stack checking
* DRY Refactoring: introduce discardppu
* Refactory: remove current_module use from top-level parsing
* Use value for fmShareNoLocking which does not overlap with classes fmCreate
* Move implementation part to separate routine so we can split tasks later
* Move interface parsing part to separate routine so we can split tasks later
* Split parsing from post-processing, code generation and linking
* Move program/library header parsing to separate routines
* Remove commented variables
* split module creation from parsing start
Add rule to generate exitcode.exe dos/go32v2 binary, required by dosbox_wrapper
Add command line in verbose mode
+ more CPU and FPU flags added
* TWasmControlFrame changed to a record
+ implemented methods in TWasmControlStack: Push, Pop, GetItems, SetItems
+ implemented TWasmValueStack.GetCount
+ implemented TWasmControlStack.GetCount
+ implemented TWasmValidationStacks.PopVal
+ introduced TWasmBasicTypeList
+ introduced TWasmValidationStacks.PopVal(expect)
+ introduced TWasmValidationStacks.PushVals
+ introduced TWasmValidationStacks.PopVals
+ introduced TWasmValidationStacks.PushCtrl
+ introduced TWasmValidationStacks.PopCtrl
+ introduced TWasmValidationStacks.label_types
+ introduced TWasmValidationStacks.Unreachable
Add DosExitCode to DosError shl 16 to set ExitCode value in utils/dosbox/exitcode.pas program
* replace/restore_scanner use var in state to make sure the correct scanner is freed
* Make current_scanner a function/procedure to better control lifetime
* use set_current_scanner, add mainscanner
* Remove use of current_module
save/restore state when loading other modules.
+ introduce x86-64 microarchitecture levels for cpu and fpu flags
* Remove freeold from set_current_scanner
* Make tglobalstat a class
* Remove loaded_from in tmodule. The same unit can be loaded from different places
* Split load_ppu for clarity
* Check whether call to deref(impl) is needed during re-resolve (indexes may be -1 if not yet built)
* Introduce task (Single main-level task at the moment, no change in behaviour).
* fixed some issues with the x86-64 instruction versions
* use more of the constants
Also use 60 seconds as max_count in new code
* fix
gitlab 0040618: apply adjusted patch by Евгений Савин (@jack128a) so that a non-load case expression is loaded into a temp first when converting a single range branch into an if-clause
+ added test
* fix typos in comment, no code changes
* decide more sophisticately if a temp. var is needed for fixing
gitlab 0040618
* extend LeaCallLeaRet2Jmp optimization to work on windows
+ also add x86-64 as cpu type (gcc compatibility)
* Patch from Martin to rename iotNone to iotDefault.
* Introduce ToString for all enumerateds.
* Patch from Martin to improve backwards compatibility: do not use Startf_UseStdHandles if all descriptors are iotDefault
* Fix compilation of processunicode
* Patch from Martin to set FCloseHandleOnExecute before invoking OnGetHandle - the handler might change it
Waaay faster TJSONScanner.
* patch by Евгений Савин to make Variant to string convertion use CurrToStr for varCurrency, resolves
gitlab 0040624
FT_Get_Sfnt_Name and related
FT_Get_Sfnt_Table and related
Fix dummy and wince fcl-process code after commit 54157a17
+ implemented TWasmValidationStacks.Validate for many (but not all, yet) instructions
Add some output to explain failure for test tests/webtbs/tw40624.pp
* x86: Replaced CPU features array with "cpu_x86_64_v1_flags" where possible
* x86: Fixed CPU feature flags for AMD Jaguar and Piledriver
* Make GetEnumName safer, check actual type. Allow passing an integer
* comment fixed, hint by Maxim Ganetsky
* Add TRttiEnumerationType for Delphi compatibility
* Introduce state variables, used to construct list of used units
* Return first waiting in usedunitsloaded
* generate init_final table from actual uses clauses
Check for Move overlaps in more obvious way (that also does no jumps in forward case).
Write two last values after 2× loops unconditionally instead of an extra check.
Simplify x86_64.inc:Move non-temporal loops, and adjust thresholds for move distances considered too short for NT.
Change Mov*DQ to Mov*PS; they are always equivalent because no operations but the memory transfers are performed, and 1 byte shorter each.
+ implemented support for the local.get, local.set and local.tee instructions in TWasmValidationStacks.Validate
* mask FPU exceptions during libxml initialization to avoid an fpu exception with newer libxml, resolves
gitlab 0040622
* fix
gitlab 0040603:
- initialize thrdinfo record using Default() so that padding bytes are zeroed as well
- correctly pass the count of ULONG_PTRs
* make Lazarus' CodeTools happy
* protect against comparisons of nested types of generics and specializations
* use iscurrentunit only when there isn't a suitable def that the moduleid of the symtables can be compared to
* fix
gitlab 0040621: when checking for visibility of members then always use the genericdefs for specializations for correct scoping
+ added test
* clean up of arrayconstructor_to_set, the stringdef case didn't work for years and is not tested, so it probably is not supposed to be there at all
* complain about turned off support of c style operators only in the parser,
so error recovery is better
* patch by Rika: Small improvements to (a|u)strings.inc, resolves
gitlab 0040364
* x86-64: Typo fixed in FPU type string array
Avoid wrong typecast by adding check that p1 is an instuction before casting it to taicpu
* Framework for more complex block node simplification
Follow sdas documentation for .ascii limitations by using only printable chars and .byte for others
* New block node optimisation that attempts to
flatten nested blocks (makes labels and later
optimisation more efficient).
* Make paramdefs owned, so IDE can trace back changes to owning component
+ when calling FPC_THROWFPUEXCEPTION in a sub routine, pi_do_call must be set, fixed for aarch64
* Guard against empty source, fixes build of docs
* Add EndOfStream property for Delphi compatibility
+ function needs_check_for_fpu_exceptions to unify fpu exception handling
* Handle finish state separately
Supposedly faster i386 int() and frac().
* Introduce constwresourcestring - in unicode mode, resource strings are unicode strings, and must be streamed differently
* Implement TFile.OpenText
* Fix compilation in unicode rtl
* Fix compilation in dotted units
* Move move free notifications to separate procedure. Fixes issue
gitlab 0040638
* Make TComponent.GetObservers virtual and protected for Delphi compatibility
* Add TTouchTracking for Delphi compatibility
* Add delphi-compatible TPointF.EqualsTo overload
* Add TReader.SetName for Delphi compatibility
+ set pi_do_call on xtensa as well if we check for fpu exceptions
* cosmetics
* Only perform the block flattening if "forinline" is true or under -O2 and above
Add POPCNTSupport call to avoid use of unsupported instruction
* Add TList
.list property for Delphi compatibility. Fixes gitlab 0040642
* Add test for stderrtooutput
* Extra check for poStdErrToStdOut
Add fcl-process to TESTPACKAGESDIRECTDIRS variable
* Remove some hints/warnings, add extra check for poStdErrToOutPut
* Properly handle stdout for redir
* The order of calling class constructors is not guaranteed.
But LookupExtendedEqualityComparer is called during class constructor of another class.
So it needs to init tables, or it returns a nil result.
This results in a crash when the comparer is used because FEqualitycomparer is nil.
+ lazarus project for a loongarch64 compiler
+ set pi_do_call on loongarch64 as well if we check for fpu exceptions
* Fix filewriter.WriteBytes
* Add EnumModules for Delphi compatibility
* Add support for vaDouble
* Add TReader.ReadStr for Delphi compatibility
* Fix signature of TReader.SetName
* Overloads for TResourcestream.Create
* Add scCommand (command key)
* fix
gitlab 0040634: correctly check visibility for child classes in case of a mixture of specializations and non-specializations
+ added test
* Virtual key definitions added
* Add Clients property to TBasicAction
* Added Delegatedcomparer for Delphi compatibility
* Add TList.ExtractAt for delphi compatibility
* added cnDeleting, cnExtracting,cnAdding to TCollectionNotification for Delphi compatibility
* x86: Minor efficiency gains in OptPass1CMP
* TLoginCredentialService for Delphi compatibility
+ set pi_do_call on RiscV as well if we check for fpu exceptions
* x86: Fixed "Cmp1Jl2Cmp0Jle" and "CmpJe2NegJo" optimisations
being applied incorrectly if another jump follows
* Patch from Martin Friebe to implement AutoCloseCustomHandle and CustomHandleIsInheritable
* Patch by Martin Friebe: mark duplicated handle for close instead of original
* Fix compilation with DEBUG_NODE_XML
* x86: Fixed error in "LeaLea2Lea 1" optimisation
not properly accounting for the first LEA
instruction having a repeated register
* Implement status support (Delphi DUnit compatibility)
* More differentiated tests, part of webassembly implementation of invoking
Explicitly use testu version of GetFileContents function
Handle seperation line even when combined with last line of previous log
* Add get routines for unicode and widestring
* Make tests more granular by doing them each in their own routine.
+ set pi_do_call on ARM as well if we check for fpu exceptions
* Fix in overloads of GetFieldList
* also add stack note for trunke
* move the checks for strict private and protected into their own nested functions
* use check_strict_private and check_strict_protected in their respective non-strict checks to avoid code duplication
- remove no longer required check as that is now handled by check_strict_private (not to mention that the check had been placed incorrectly anyway...)
* fix
gitlab 0040634 the 2nd: a (strict) protected symbol in a parent class of the owner is supposed to be visible
+ added test
* fix the internal error of
gitlab 0040639; however as the test code in question will only compile correctly with the next commit no test is added yet
Restrict use of A_MOVE to ufromsize and utosize = OS_INT. (contributed by Jinyang He)
Fix issue
gitlab 0040648
* Add optional parameter to get methods of only current class
* Get extended methods, fields and property info.
* Fix latex error due to unescaped dollar
* generate specializations only of no error happened so far to prevent further (internal)errors, resolves
gitlab 0040646
* Remove uses of exttypes
Fix msdos compilation failure by using CodePointer type for GetCodeAddress TRttiRecordMethod function
* Add CanObserve and ObserverAdded to TComponent, for delphi compatibility
Avoid warning about unintialized 'ba' variable
* improve pretty printing of symbols
WPO: handle classes defined in localsymtables
Can happen since the support for anonymous methods
Set ba variable upfront to avoid warning treated as error
+ thlcgobj.location_force_mem now supports LOC_JUMP as well, resolves
gitlab 0040650
rtl: add two defines toallow disabling the verbose error of the stub unicodestringmanager and threadmanager
m68k: disable verbose error reporting of the stub unicode and threadmanagers by default on Amiga, Atari, Human68k, and Sinclair QL
m68k-atari: mark functions and API calls related to exiting the program as noreturn
* Correct TCharArray declaration, disambiguate between widechar/char
* Add Logging of tasks under define
* Properly handle finish state
* Select proper stringbuilder depending on size of char
* Add IsUniqueGlobalComponentName
* Add delphi-compatible constant (including the typo in the name ;))
* Use correct error number for missing widestring manager
* Added Delphi-compatible overload for ToString with UpdateCapacity argument
* Add operators to TMethod, for Delphi compatibility
* Add function reference version of TComparer.Construct
* Add UnicodeFromLocaleChars for Delphi compatibility
* RectWidth was not public
* CurveKappa, CurveKappaInv
* allow type = type ... ; syntax only for previously declared types, avoids also internal error for
gitlab 0040566
GetMutableValue and TryGetMutableValue for fcl-stl.TMap and rtl-generics.generics.TDictionary
* fix
gitlab 0040655: apply changes to packrecords, packenum and setalloc using the recordpending*() functions so that they are applied correctly in case of them being used directly after a {$POP}{$PUSH} sequence
+ added test
* Delphi compatible TCollection.Sort() using helper
* Fixed signature of insert_init_final_table
JVM: fix system unit compilation error
Apply same change as to systemh.inc in bccc0b195e
* patch by Rika: Fold repetitive scandir.pas cases, resolves
gitlab 0040660
* Fix wrong assigned check pointed out by Gareth Moreton
* Return delphi-compatible output for TValue.ToString when empty
* don't throw an internalerror in case of an illegal assignment to an open array, resolves
gitlab 0040662
* Avoid index out of bounds error
* Force VMT at first position in system.tobject
* Set monitor structures in place
* ensure that "type SomeName = type reference" is still allowed when function references are disabled
+ added test
Also reset check_valid_var after calling var_para_allowed
Be sure not to add a symbol with empty name as an alias for function return variable
* x86: "StcClcSet(c)2Mov" optimisation now checks to see if the destination register is in use
* fixed fpu_x86_64_v4_flags
+ support a_call_indirect in TWasmValidationStacks.Validate
Add objfpc mode to avoid compilation error
Rename test docat to tdocat to allow use inside testsuite
Rename test doexit to tdoexit to allow use inside testsuite
Rename test dols to tdols to allow use inside testsuite
Rename test dotouch to tdotouch to allow use inside testsuite
Rename test genout to t_genout to allow use inside testsuite
Adapt utcprocess unit to name changes to allow use inside testsuite
* Fix test compilation, broken after unicode rtl changes..
+ Add Simple MonitorSupport implementation
* Handle potential double defintion of INFINITE
* Remove haiku from list of targets for monitor support
+ added a second TWasmFuncType parameter to the CALL WebAssembly instruction. It
is not part of the WebAssembly syntax and binary encoding, but it helps
WebAssembly stack tracking and validation.
+ support the CALL instruction in TWasmValidationStacks.Validate
+ introduced TAsmData.RefAsmSymbolByClass - similar to RefAsmSymbol, but allows
to create a subclass of TAsmSymbol even in the case of external symbol.
+ introduced TAsmData.WeakRefAsmSymbolByClass
+ introduced TWasmGlobalAsmSymbol subclass of TAsmSymbol. Use it for all
AT_WASM_GLOBAL symbols. This allows in the future to add extra data to the
TWasmGlobalAsmSymbol, such as the WebAssembly global type, which will aid in
WebAssembly validation and stack tracking.
+ added the WasmBasicType to TWasmGlobalAsmSymbol. This will help WebAssembly
validation and stack tracking.
* Fix use of wrong memory size when getting extended property info
* Create and correctly typed variable for fieldsym instead of using typecasts
+ support the global.get and global.set instructions in TWasmValidationStacks.Validate
+ support if,block,loop,else,end_if,end_block,end_loop in TWasmValidationStacks.Validate
+ support the BR and BR_IF instructions in TWasmValidationStacks.Validate
* Fix overflow in initialization of return value
* Allow use of attributes on fields and properties in records and classes
Also add %neededafter as the generated binaries are used by testprocess program
* Small optimizations in FindOptionIndex by lagprogramming. Fixes issue
gitlab 0040663
+ perform WebAssembly validation, if the compiler is compiled with the
DEBUG_WASM_VALIDATION defined
* Fix TExtendedVmtFieldEntry.GetTail
Take care about endianess in arm eabi attribute section
Take care about endianess in arm instruction binary code generator
Add ogmacho unit loading unless NOOGMACHO macro is defined
* Get Field Attributes + tests
Create TMonitorData initialized.
Set ‘TMonitorData’s without locking.
Manage ‘TPulseData’s as linked list of structures allocated in ‘Wait’ stack frames.
‘LockCount’ does not require atomics.
TMonitor.Wait temporarily unlocks through recursive calls.
Use exponential backoff in timeouted ‘TMonitor.Enter’ and explain why it’s still a bad solution.
* Do not prefix with unit name unless necessary
* fixed bug in thlcgwasm.a_op_reg_reg_reg_checkoverflow that used to generate
code that fails WebAssembly validation
+ support the native exception instructions in TWasmValidationStacks.Validate
* stack checking is actually 'S'
* arm/a64: Fixed bug where shifter operand was not preserved in AND/CMP -> TST optimisation
* Fix wrong type for threadID
fcl-js: parse power token
fcl-passrc: fixed precedence of multiply and power
* Add codeaddress to extended RTTI for static methods
pastojs: convert pascal ** to js **
* Implement TRttiField.(G|S)etValue
fcl-passrc: delphi multiline strings as separate TPasExprKind pekStringMultiLine
Alternative implementation of TMonitor for Windows Vista+.
* Attributes must be assigned only to elements before the first colon
* Implement GetCodeAddress for TRttiInstanceMethod
* patch by foxpas to disable use of crc32 instructions on x86_64-darwin as they apparently don't work, resolves
gitlab 0040344
* Flags specific to TVecNode have been moved to their own field
* Clarity over blocknode and VMT flags. nf_usercode_entry doesn't need to be cascaded in "firstpass" as TBlockNode.Simplify already does this
* Flags specific to TAddNode have been moved to their own field
* Flags specific to TModDivNode have been moved to their own field
* Flags specific to TAsmNode have been moved to their own field
* Remove additional memleak
* Fix wrong return value in case of multithreaded initialize. Fixes issue
gitlab 0040676
* Fix compilation with -CriotR
* patch by Rika + test: Don’t explicitly change GetMem(0) to GetMem(1), it works anyway, resolves
gitlab 0040456
* Flags specific to TAssignmentNode have been moved to their own field
* Flags specific to TArrayConstructorNode have been moved to their own field
* Flags specific to TDerefNode have been moved to their own field
* Flags specific to TInlineNode have been moved to their own field
* Reduced the number of expensive calls to "GetUserCode" in DFA
* Atributes for class/record methods
* increase ppu long version as the format changed
* nf_pass1_done, nf_error, nf_processing and nf_do_not_execute
have been moved to a new "transientflags" node field that
isn't stored in PPU files
* patch by Rika: Don’t pretend optinfo^.index can be aword(−1), resolves
gitlab 0040405
* arm/a64: Bug fix where instructions optimised into "mov r0,r0"
could leave registers undefined in some circumstances
* force correct strpas overload when using unicodestrings
* Indentation and casing changes
* patch by Sergey Larin: Compile dynarr := nil (and, preferably, SetLength(dynarr, 0)) as fpc_dynarray_clear, resolves
gitlab 0040309
* a64: Several secondary peephole optimizations that clean up CSEL instructions
Don’t misalign FillChar pattern.
* Fix duplicate registration of existing RTTI
* Do not search for files in directories that do not exist when doing distclean
Try to implement UnicodeFromLocaleChars for java
* fix compilation with 3.2.2 rtl
* fix building of llvm compiler after node flag refactoring
Fix post_load_or_compile tppumodule method for SHORT_ON_FILE_HANDLES code by adding from_module parameter
Fixes compilation of text mode IDE for go32v2 target.
Fix compilation with -dEXTDEBUG
Fix compilation with -dDEBUG_DEVIRT
Use varints for TJSONScanner.FParts to save memory.
* Initialize firstwaiting, after remark by Pierre
* optimize also -(x+1) and -(1+x) into not(x)
Non-nil-aware fpc_ansistr_compare(|_equal).
Add efuse library to default list of static link libraries.
* Handle rename of module during parsing, rebuild hash list. Fixes broken test tb0406.pas
* Fix tgeneric91, need to postpone some additional generic procedures
* x86: CMOVcc/Jcc pairs are now changed to MOV/Jcc if the register is not used if the jump doesn't branch
* Fix from Werner Pamler to implement missing method. Fixes issue
gitlab 0040685
* x86: Improvement to CMOVcc/Jcc optimisation that attempts to remove temporary registers storing constants
* x86: Additional optimisation in OptPass2MOV to help with sub-optimal MOV/CMP/MOV triplets (and a minor refactor).
* Only consume semicolon after uses clause when units have been connected. Fixes remaining failing tests
* Fix ref count of interface during cast
* set packenum and setalloc to defined values when changing mode, resolves
gitlab 0040056
* transform -1-x into not(x)
* do not copy sets in fpc_varset_(un)set if source and dest are the same
* optimize additions of empty sets away if possible, part of
gitlab 0040384
* x86: New Op/TEST optimisation that rearranges register usage for the most efficient execution
Be sure not to consume semicolon after _USES twice
* Add parameter to skip inherited fields
* Synchronize Method/Field treatment. Correct parent for fields
* Add all dependencies for consoletestrunner
* Complete erroneously partial commit
Use rtl/java version of objpas.pp source for java OS
Fix make variable name error: OBJPAS_DEPS_SPU => OBJPAS_DEPS_CPU
* Added missing "override" directive for XML node dump routine on TDerefNode
* Adjustment to "(v>=x) and (v<=y)" so it also optimises its inverse: "(vy)"
cat value of TEST_DATETIME variable into stamp file
SSE set operations (i386).
* Added support for 64-bit min/max intrinsics
* Allow to call constructor using Invoke()
* Invoke testing on linux requires libffi
* a64: Fixed bug where unsigned min/max inlines used a signed comparison
* x86: Min/max intrinsic support
* x86: Added new OptPass1CMOVcc peephole optimisation routine to dust up min/max code
* i8086: Local variables unused in "second_AndOrXorShiftRot_assign" on i8086 are now not defined on this platform
* Check component is not nil prior to calling validateinsert
* overflow check abs(...) for x86
SSE4.1 IndexQWord for i386 and x86-64.
* Min/max intrinsics now simplify deterministic results
* Support PKCS#8 format for RSA private key, add demos
* Write correct number of characters to log file
* Add FCM push notifications
* more overflow checking for abs(...)
* patch by Rika: fix incorrect exception handling if an exception raised in TThread decendant class's constructor, resolves
gitlab 0040677
* overflow checking for ti386inlinenode.second_abs_long
Fix missing configuration for namespaces to make rp2040.pp build on main compiler
* CLI example for FCM push messages
* Fixed namespaced compilation, rename sender to client to be in line with class name
* fix dependency on rtl-objpas
* reenable chmls and chmcmd building
* Fix compilation in unicode RTL
* Properly pass on FUsePublishedOnly to properties. Fixes issue
gitlab 0040702
FFix compilation of compiler with -dTest_Double_checksum
Re-implement (for debugging purposes) buildrtl.pp unit for Linux OS (not used in regular RTL compilation)
Regenerate RTL Makefile's after RP2040UNIT variable addition, and debug buildrtl.pp unit for Linux OS
+ test for commit e1297e085928a274220a6d5d6da7d8e4f7a2dee2
* Add dpktolpk unit plus example
* Correct dependency for SYSUTILS
* Small improvements, quiet mode
* improve test so it exits with the proper error code
* use destination location instead of a temp when constructing sets, resolves
gitlab 0040384
+ optimize s:=s+[e] into include(s,e)
Added missing RP2040 definition in Makefile.rtl to make sure that regenerating of Makefiles does not remove rp2040 unit
* a64: New B -> RET peephole optimisation
+ extend test to test overflow checking
* write correct type name in error message
* regenerated Makefiles after last commit
Ensure register to be eliminated is de-allocated before applying optimization LdsMov2Lds.
* AArch64: avoid false overflow error in case of -2^63+0
* AArch64: overflow checking for abs
* tabs adapted: also abs(longint) must overflow check on 64 bit platforms
* restored overwritten test
* avoid to generate bts/r with memory operand
+ thlcgx86.a_bit_set_reg_reg
* thlcgobj.a_load_regconst_subsetref_intern uses a_bit_set_reg_reg if applicable
Fix generation of i8086 CPU code, as BTR/BTS instructions require at least 386 CPU
* Patch from Thierry Gayet to fix crash when no options are specified on command-line
* proper fix for 9056ab80257b71fb8bcdf90be2f71e2fbbf912b9
Add $EMUL also for sparc CPU GNU linker call on solaris OS
Add -32/-64 for sparc GNU assembler calls
* use bit_set_reg_reg also to clear single bits in thlcgobj.a_load_regconst_subsetref_intern
* Patch from Thierry Gayet to fix compilation of tests
* Fix access violation: module can be reset while loading dependent units. Fixes issue
gitlab 0040705
* Patch from Thierry Gayet to fix double prefix when using aliases
* avoid CMPs with constants outside the range of signed 32 bit values
* fix simplication of max(double,double) with both values being constants
* fix i386 building after fb3c4ff75be75c367f4f4d505563475ef7accdb5
* "tminmax" test now prints out 'ok' if it passes and the error code if it fails
* run test with different options as it is tricky
+ MMXSupport added to cpu unit
* mmx unit makes more use of cpu unit
* compilation with -dEXTDEBUG fixed
+ 8086: overflow checking for abs()
+ arm: internal abs()
+ arm: overflow checking for abs(...)
* improve TFPSList.Delete as proposed by Alexey Torgashin, resolves
gitlab 0040718
+ generic implementation of abs()
* overflow checking for generic abs()
* fix overflow checking on arm for 64 bit signed numbers
* arm uses generic abs()
* all CPUs use now internal abs() so overflow checking is possible
+ added overflow checking to generic abs()
* i386 uses generic x86 abs(long/int64) code now
* compilation on 64 bit targets fixed
+ abs(long/int64): overflow checking for xtensa implemented
Better i386.inc:fpc_ansistr_unique.
* Minor improvement of TFPSList.Expand
* Fix result of TFPSList.Expand in case of early exit
HTTPClient: check for changed host/port for KeepConnection
* don't remove align directives before case jump tables (they have the type alt_addr)
+ comment to explain last commit
embedded, arm, stm32: Fix CAN register definition
- bxCAN controller only has 2 RX mailboxes.
The registers behind were misplaced.
Refer to RM0008 section 24.9.3 and 24.9.4
Fixed missing section for Raspberry Pi Pico
* fix min/max intrinsics on x86_64 for non constant/reference/register locations, resolves
gitlab 0040721
* remove unused variables
* sparc: overflow support for 64 bit operations
+ avr: overflow checking for abs, together with the other recent abs-related commits, resolves
gitlab 0040694
* don't recurse findfirst/next if filename = . or ..
closes
gitlab 0040722
* another fix for min/max intrinsics on x86_64 for non constant/reference/register locations, resolves
gitlab 0040724
Increase default stack size to 8Mb for i386 and sparc solaris systems
Use correct check for unsigned size in a_op64_{const/reg}_reg_reg_checkoverflow methods
* arm / a64: Extended the AND; CMP -> ANDS family of optimisations to catch BIC as well as AND
Disable _Plain versions when compiling RTL for newer CPUs.
Shortcut Compare*(a, a) before entering the aligned loop.
* Fix parsing of mozilla ID
* Fix [EnforceRange] long
* Long long with enforcerange
* Allow more keywords as argument identifiers
* a64: ARMv8.7 through ARMv8.9 have been added as AArch64 CPU types, along with support for the CSSC extension.
* a64: Added DOTPROD and PAUTH support flags to relevant instruction sets (v8.4+ and v8.3+ respectively)
* a64: Added "ABS" and "CTZ" mnemonics (CSSC instructions)
* Add sequence types (FrozenArray,ObservableArray)
* Parse complete browser api
* Fix parsing of type with attributes
* fix internalerror 200502052 with certain min/max optimizations on x86-64, resolves
gitlab 0040730
+ introduced cgbase.topcg2str and topcmp2str for converting TOpCg and TOpCmp to strings (useful for debug logging, etc)
* second_abs: don't supply a separate 64 bit code path for high level cpu targets
* Handle maplike interface definition
* ensure that left and right have a result type set in tx86addnode.pass_1, resolves
gitlab 0040727
* Support for enum return type
* Correctly create constructor definitions
* Correctly create constructor definitions
* Guard against argument names that are keywords
* Remove some useless warnings
* Support ArrayBuffer(View)
* Do not generate definition for aliased types
Simplify shortstr_concat(_multi).
* Test for sequence result
* Sequence result support
Check bounds in SetLength(shortstring).
+ test for fc3d71bba38e2c91813b224501eef9966544e18c
* Definitions marked [ChromeOnly] are not available in regular Javascript
* Do not generate code for types that are used in a ignored definiton
* Add dictionary-typed result support
* Better support for Alias types
* Correct InvokenameFromAlias
* Some corrections in GetInvokeNameFromTypeName
* Remove some debug statements
* Handle complex nested types in arguments
Use non-conservative Fill thresholds.
* Better callback and type handling
* Handle "object" as argument type
* fix
gitlab 0040708: when creating the sub-arraydefs for comma separated arrays, ensure that the new sub array also has the generic related information set up correctly
+ added test
* check that the corresponding genericdef of the adjusted def is indeed valid
* extend read_anon_type() so that it can take a genericdef as well
* fix
gitlab 0040721: correctly set up the generic defs when parsing fields, especially important when dealing with anonymous fields
+ added tests
* Fix
gitlab 0040716: only add helpers if the type doesn't belong to the current object/class/record hierarchy
+ added test
* Add some callback types
* fix
gitlab 0040725: pass along whole array constructor to the Insert() so that it's converted with the correct checks
+ added test
* Fix writing of union types
* Use writehelp to display error
+ propagate pointer constants
+ also fold nil nodes when used as pointer constants
* run constant propagation multiple times if needed and if slow optimizations are turned on
+ propagate also widechar/pointer constants
Integers are 16-bit in system, replace with SizeInt.
+ fold also constant pointer operations on nil nodes
+ fold also divisons involving pointer constants (those nodes are internally generated only)
- AND and DeepMovOpt optimisations upgraded.
- OR and extension optimisations upgraded.
- Const and ref merge optimisations upgraded.
Fix compilation of i8086/n8086add.pas unit after introduction of get_int_value function
* x86-64: Bug fix where RIP-relative references were made absolute in minmax optimisations by mistake.
* optimize x < length(arr) and x >= length(arr) as proposed in
gitlab 0040292
- 32-to-64-bit zero extension optimisations upgraded.
* x86: New reference support methods to detect modification
Update after commit b0076a4709 to fix jvm rtl compilation error
- Mov2Nop 5a and Mov2Nop 5b optimisations upgraded.
* x86: CheckMovMov2MovMov2 now sets "Force New Iteration" if it optimises
- MovLea2Add optimisation upgraded.
- MovOp2Op optimisation upgraded.
* optimize x >= length(...) also if the operands are swapped
+ add a batch file to also regenerate the RTL makefiles on Windows
* x86: Bug fix in OptPass1MOV long-range optimisations where
the wrong register was checked to see if had changed.
* do not limit the number of interfaces per class, resolves
gitlab 0040268
* workaround unsupported -march=...+pauth for some assembler/clang versions
* avoid range check error in TVMTBuilder.intf_optimize_vtbls by early bailing out if a class has no interfaces
Changed the implementation to allow await to accept functions that return a promise.
Checking the compatibility of the procedure with the await function.
* allow swapping of operands for three operand instructions if they are commutative
* Resolve all identifiers
* Now able to generate code for all browser APIs
* i386: Fixed issue where the peephole optimizer entered an infinite loop when building for CPUs older than Pentium II
* Allow most of fcl-web to be compiled for webassembly
* Allow vcl-compat to be compiled for webassembly
* Fix callback interface treatment
* disable (type ...), it did never work and there are not test, resolves
gitlab 0040562
* ensure that Insert() of a single element into a dynamic array is typechecked in a way that the user is notified of errors
+ added test
* revert the changes from b0d61558e38f7e9ceb3918dbbaab13bc49496320, as 61397d40ae0c43083844e850d87c60ba74b34d28 fixes it more correctly
* Add wasm-job for webassembly
Add heapmgr and consoleio dependency for all freertos CPU specific units
Remove obsolete/unused rules inside rtl/freertos/Makefile.fpc
Remove SUBARCH refering to non-existing units for arm-freertos target
* not automatically committed...
* (hopefully) more consistent message when the compiler is stopped during showing the help screen, resolves
gitlab 0039455
* accidently committed debug statement removed
* more debug statments removed
* Sample unit containing all browser apis
* Add create_object method
* Remove unqualified string type, use UTF8 string or Unicode string
* Create objects directly
* Calling "internalstatements" now sets the "bnf_strippable" flag on the result
* Handle dictionary better, use actual constructor
* Some fixes and simplifications
* do_optconstpropagate and do_optdeadstoreelim now set their
"changed" parameter properly and is now an out type.
* Optimisations on calls to said functions
* x86: The ADD/SUB peephole optimisations that combine adjacent operations are now much more careful about the flags
* x86: Arithmetic combination optimisations are now much more careful about the flags being in use
* genlinearlist and genlinearcmplist for case blocks now allocate the flags properly
* New test to evaluate i40756 optimisation problem
* Generate code for JSClassName
* Fix code generation for dictionary with parent
Calculate the amount of ansichars in argv with one call to WideCharToMultiByte.
* Fixes so job_web.webidl compiles again with new dictionary conversion
* Better OS selection for some dependencies
* Explaining comment for GetReadPropertyCall
* Support for dotted units
* Enable namespaced units, only write namespaces when needed
Shorten win/systhrd.inc; fix SetThreadStackGuarantee signature.
* Enable socket-based implementations for wince
* Fix dependencies for some platforms
* More complete example with dictionaries as objects
Fix compilation of rtl with -dDISABLE_SYSTEMINLINE
Add support for DISABLE_SYSTEMINLINE inside heaptrc unit
Do not set USEINLINE macro if DISABLE_INLINE macro is set
Faster Insert(ansi/unicodestring).
* x86: Improved "Test2Bt" peephole optimisation
* Block nodes are now marked as strippable when created from "begin" statements
Import Heap* functions on WinCE.
* Bug fix where copied block nodes didn't inherit the original's flags
* Inc/Dec nodes converted to Add/Sub now remove
the "nf_modify" flag from the destination so
constant propagation works more efficiently.
* Correct location of new error message
* Replace object with record where possible
* Blocks of statements are now pruned (within reason) if a raise, exit, break, continue or goto node is found
* Fix creating thunk class when inherited interfaces are used
* hlgcodegen needed when creating module info (fixes AV)
* remove do_compile, clearer flow when loading ppu/pas files
* Fixed bug in "fpmkunit" where CompileReason wasn't set in "TBuildEngine.NeedsCompile" due to oversight
Fix off-by-one error in syswin.inc:setup_arguments.
* Wasm: generator for invoke helper now handles overloaded methods in interfaces
* Emit better error when not able to load auto units
* Add constants cPI and friends, for delphi compatibility
+ store pic references in registers if possible
+ do do_consttovar optimization on i386 as well
* allow sp_generic_dummysym for procsyms even if there are no generic overloads
* fix
gitlab 0040764: declare procsyms of a class/object also as sp_generic_dummysym if a symbol in a parent class has it set so that the parser will treat it as a potential generic
+ added test
m68k-palmos: do not try to write section attributes, they're not really useful, and lead to assembler warnings
+ enable cs_opt_consts on arm as well
+ cs_opt_consts for sparc
* Added new node utility function to search for nodes of a specific type in a node tree
* Node-stripping optimisation in "TBlockNode.simplify" now uses "has_child_of_type" to determine stop point
* "no_exit_statement_in_block" replaced with "not has_child_of_type(..., [exitn])"
* "checkcontinue" replaced with "has_child_of_type(..., [continuen])"
* proper alignment information for constant addresses stored in registers
Make use of CPUX86_HINT_BSX_DEST_UNCHANGED_ON_ZF_1 in Bsf*/Bsr*.
fcl-css: TCSSParser allows to override css classes
+ cs_opt_consts for sparc64
Cover more values in the [0; 1) range by “random”.
* remove debug statement.
* Use correct stream type in TBase64Encoding.DoEncode, fix issue
gitlab 0040779
* Allow ToString for object value
* Add missing PAlphaColorF
* Add StreamOriginalFormat to ObjectTextToBinary
* Add TListRemoveItem, for delphi compatibility
Simplify constexp.pas and fix certain edge cases.
High(uint64) - 2 - High(uint64) now gives correct −2.
* arm / a64: Factored out common conditional checks in "OptPass1UXTB",
"OptPass1SXTB", "OptPass1UXTH" and "OptPass1SXTH" to
improve performance.
* arm / a64: New optimisation for removing the number of necessary S/UXTB/H instructions
Do not set default target to system_sparc64_solaris on solaris OS for sparc64 compiler as this target is not yet supported
* Allow to create browser API stubs that will work on non-webassembly platforms
* When raising error, display missing key value as string, if possible
* throw an error if varargs is used without appropriate calling conventions, resolves
gitlab 0040342
* More routines need to display missing key name
* Fix compilation for targets that do not have variants
* unified g_concatcopy_move
Disable jvm-android target for wasm-job package because it requires sysutils unit which is not available for jvm-android
+ CPUX86_HINT_FAST_SHORT_REP_MOVS
* use FPC_MOVE instead of rep movs if possible, partially fixes
gitlab 0040785
Extend riscv32-freertos functionality for esp32c3
Fix exclusion of ogelf unit using $ifndef NOOGELF
Add -WP option to help for ppcrossrv32
Add insert_init_final_table method
* reorganize Tcgx86.g_concatcopy
Group linker scripts and search paths
Add support for esp-idf v4.4
Simplify required link libraries and move libc, libm and libgcc to end.
* handle complexer references in tcg8086.a_loadaddr_ref_cgpara properly
Move .data with fpc specific information to outside normal memory range.
Do not pass esp32c3.rom.newlib-time.ld to the linker, it causes the ROM version of _isatty_r to be linked instead of the newlib library version.
* Added nothreads unit for fake thread support. Currently only WASI
* factor out tcgx86.getcopymode
* x86: Minor change to lineinfo in "MovAdd2Lea" so debugging is more logical
nothreads unit depends on objpas because of objfpc mode
Makefile regenerated after 'nothreads unit depends on objpas because of objfpc mode' commit
* Fixed DeclaredFields for record, should be the same as fields
* oc_blue properly named as noted by Don Siders
* arm: Disabled "inline" on "fpc_ansistr_decr_ref" and "..._incr_ref" until arm compiler bug is resolved
* arm: Re-enabled "inline" on "fpc_ansistr_decr_ref" and "fpc_ansistr_incr_ref".
Implement length(PWideChar) with IndexWord.
* Option to warn about not found resource files instead of error
* PAckage name can contain package keyword
New string for new parser option
* Stripped down and refactored TAsmNode XML node dumps
for better platform-specific implementations.
Let “Trim”s return string uncopied.
implement TProxyAggregateStream (Delphi compatibility)
Add non-empty UniqueSuffix also as string prefix to all Verbose procedure calls
Set Result to false at ExecuteRedir function entry
Allow to pass antoher exitcode to fail utility by command line first parameter
Low-level optimistic implementations of SysRelocateThreadvar that directly read TEB.
* Add TypedArray constructor
+ CPUX86_HINT_BSX_DEST_UNCHANGED_ON_ZF_1
m68k: also allow TST from before Sxx instructions with explicit .b size to be optimized away
m68k: try to fold two consecutive AND instructions into one. This usually happens when a zero extension is followed by another AND.
m68k-palmos: further fixes to assembly section. also actually use aout, as we have aout binutils for palmos
Add esp32c3 units to namespaced.
Initial support for esp32-c6-s2-s3. Support for idf versions 5.0.6 and 5.2.1
+ check for tf_init_final_units_by_calls in trv32nodeutils.insert_init_final_table
+ do do_consttovar on RiscV
* do no generated debug comment in assembler output of RiscV if not requested
* extended with a Chi square test to check if the random values are equally distributed
* a64: win64 implementation of jump table now
uses 64-bit absolute references.
* Add detection in fly, better detection of KDE DE. Fixes issue
gitlab 0040805
* Fix memleak, objects created directly are owned by webassembly
* set method for typed array
* x86: Reimplemented TAsmNode XML dumping using new framework
* arm / a64: TAsmNode debugging info is now output for ARM and AArch64
Make idfpath and idf_version macros available as replacement vars in fpc.cfg
Add -Ff to firstpass options
* patch by Marģers: patch to enable ENTER asm instruction
+ test
* patch by Marģers
- Rename 3DNow instruction (fixed long lasting typo in mnemonic). PMULHRWA --> PMULHRW
- Add vpclmullqlqdq, vpclmulhqlqdq, vpclmullqhqdq, vpclmulhqhqdq.
- Fix "typo" for SHA1MSG2
fcl-css: fixed string to CSS - no quotes needed, as spaces are converted
* patch by Marģers to bump version
* correct change information for some instructions where the change
information cannot be modelled in x86ins.dat
* forgotten part of last commit
+ set CPUX86_HINT_BSX_DEST_UNCHANGED_ON_ZF_1 for suitable CPUs
+ more change information
* Allow to specify used classes
fcl-css: fixed parsing -0.5
* missing AVX-2 change information fixed
* fix
gitlab 0040563: apply slightly adjusted patch by byte bites to use fixed range of 1..Length(str) for for-in loops iterating over ShortStrings
+ added test
* load 2 on x86 stack by fld1/fadd, if pic code is generated. It is more efficient as two memory accesses are saved.
* fold the MIPS tabitype into tabi as the former wasn't really used or hooked up anyway; this way the ABI can be set using -Ca
* Corrections in used detection : treat partials
Fix for locating the exception type when compiling with the units with namespace.
* also optimize loading of -1.0
* Add constructor to TJSArray that accepts array of const
* Add EventFilter, use SafeFormat
* use fld1/fchs regardless of pic
* allow the COMDAT selection to be 0 in which case we'll simply assume that we don't have a COMDAT section (but we'll nevertheless look up a potentially associative section)
* the COMDAT record contains the section number which is off-by-one to the section index
* move setup of secrec outside of the if-statement as it's the same for both cases
* exact-match COMDAT sections are already supported since tdynamicarray.equal() has been implemented a couple of yours ago, so allow them
+ test for Sysutils.Trim*
* extended test
* fixed error numbers
qlunits: added a support unit for the QSound sound card's ROM
Set ALLPPUDIRS make variable
Rename ALLPPUDIR to ALLPPUDIRS to use same make variable as in packages and utils directories
Regenerate Makefile's after setting ALLPPUDIRS variable
* small fix of change information
Remove compiler/msgtxt.inc and compiler/msgidx.inc from tracked file list
Add missing information about -T option for embedded and iphonesim target OS for aarch64 compiler help using -h option
Respect alphabetical order in -T listing for aarch64 compiler
+ more change information
* Remove debug statements
* Promise implementation and demo
* Make methods protected, so one can override
* remove unneeded checks in generic string routines, resolves
gitlab 0040816
Avoid unnecessary call when length(s) is zero, which avoids range check error
Postpone setting of prevline to correct message when prevline not found
* Make getters/setter protected, add flag to make them private methods
* don't throw an internal error if a procedure is passed to a const formal parameter, resolves
gitlab 0040817
- remove setting the vpath for the PPU tests as this should not be necessary due to all targets being available in the corresponding variables
* regenerate Makefiles after the removal of the vpath settings
* restore original content of utils/build/Makefile
* rename utils/build/Makefile to Makefile-no-regen so that it isn't touched if someone uses "fpcmake -Tall -r" in some upper directory
* we want to call fpcmake, not fpmake
* restore original content of packages/build/Makefile
* rename packages/build/Makefile to Makefile-no-regen to avoid it being changed if one uses "fpcmake -Tall -r" in an upper directory
* patch by alligator: avoid unncessary calls to CalcTotalSize
* look for sub directories of utils that contain Makefile instead of Makefile.fpc just like the one in packages does
+ add a distclean target for sim_pasc
- remove file that's generated again by the Makefile
* bail out early in tcgaarch64.make_simple_ref if possible
* Allow to cache reject/resolve
* Allow to disable monitor
* Getters & Setters for typed arrays
* Corrections for Float64
* Forgot to commit last version: allow to use thisid from function
* Hosting example for webassembly module
Fix reading past the end of the string in Unix.FSearch.
* Properly reset state when (re)compiling, by Artem Izmaylov. Fixes issue
gitlab 0040825
* get rid of unneeded -dGDB
* (lsighly, added safety check) patch by Евгений Савин, resolves
gitlab 0040784
* Extend and Correctly handle aliases invoke class and function for aliased classes
* closes 40829
* add pointer to return value type of libusb_get_version
* Corrections from samples
* Fetch example, demo how to reconstruct object response
* patch by Bart B to make SetValue delete keys with empty values as SetValueFromIndex, resolves
gitlab 0038214
+ initial compiler support for WebAssembly resources. Requires WebAssembly
support in the fpcres utility, which is not implemented, yet.
* Implement TJSArrayBuffer
+ started working on a WebAssembly resource writer for fcl-res and the fpcres tool
+ added the wasm object format and the wasm32 arch to the fpcres help screen
+ added wasmwriter to namespaces.lst
+ write the WebAssembly header in the WASM resource writer
* changed the resource object extension for the WASI platform to .or (similar to Linux)
+ added units wasmconsts and wasmtypes
+ WASM resource writer: write the Data and DataCount sections (with 0 data segments for now)
+ implement TWasmResourceWriter.PrescanResourceTree, based on the ELF
implementation. Call this on Write() to prepare resource stuff for writing.
+ wasm resource writer: start writing the data segments, also the import section
+ wasm resource writer: write the linking custom section
+ wasm resource writer: create the WASM_SEGMENT_INFO subsection of the linking custom section
+ wasm resource writer: create a symbol table (empty for now)
+ wasm resource writer: added FPC_RESSYMBOL to the symbol table
+ wasm resource writer: create a list of relocation entries (not written to
file, yet). Add relocations to the list in TWasmResourceWriter.WriteResHeader
+ wasm resource writer: actually write the data relocation table
+ add symbols for the data segments
+ use R_WASM_MEMORY_ADDR_I32 relocations instead of R_WASM_MEMORY_ADDR_I32 in
R_WASM_MEMORY_ADDR_I32
+ wasm resource writer: add the file data segment offset when writing relocations
+ wasm resource writer: implemented TWasmResourceWriter.WriteNodeInfos
+ wasm resource writer: implemented TWasmResourceWriter.WriteResStringTable
+ wasm resource writer: implemented WriteRawData
+ wasm resource writer: implemented AddEmptySections
* Define JSJSON to as to use static methods
* Small output improvement
+ test for Math.RandG based on demo provided by Rika for mr 692
* in the WASI system unit initialization, call InitSystemThreads even if
FPC_WASM_THREADS is not defined (but FPC_HAS_FEATURE_THREADING is defined),
to initialize the nothread manager. This fixes various regressions when WASI
threading is disabled, caused by calls to nil pointer functions.
+ WASI internal linker: add the 'fpc.resources' and 'fpc.reshandles' sections as well
+ wasi internal linker: also write the fpc.resources section to the file
+ wasm internal linker optimization: write only the non-empty data sections to
the resulting .wasm file (the 'fpc.resources' section specifically can be
empty, if the binary doesn't use resources)
+ wasm internal linker: count the 'fpc.resources' section towards the binary
data size
+ wasm internal linker: count the 'fpc.reshandles' section towards the bss size
of the binary
* split the sections strings into groups and add comments about the importance
of the section order and grouping. No functional changes.
* wasi internal linker: fixed crashes introduced by previous commit in
GetDataSize and GetBssSize
* fixed another crash in the wasi internal linker, caused by missing resource section
* Add new constructor for typed array with length
* Made AddToRows protected
* change information updates
* workaround for WebAssembly resource names possibly residing in memory below 64KB
Make int64 division helpers “nostackframe”.
* corrected rte number after last merge
Without a copy in most cases
* Reflow code for clarity
Taking advantage of fpc_ansistr_concat_multi
* make GetProcessID inline
* fix TSC support bit as mentioned by Rika
* more change information updates
* fix naming (no functional change)
* Update interface to be compatible with Delphi 12
* empty Rect does not extend the rect in UnionRect, based on patch provided by Werner Pamler, resolves
gitlab 0040680
* Add TCubicBezierCurve for Delphi compatibility
* Correct Cast class functions which were recursively calling themselves instead of JOBCreate
+ introduced constant MaxIntResource, use it in InternalIsIntResource
* Add some utility properties
* Properly release procdefs. Patch by Evgenij Savin, fixes issue
gitlab 0040844
* Some routines for list index error, delphi-compatible
* Delphi compatibility: ListIndexErrorMsg
* Copy function for array helper
+ add missing instructions
* x86-64: Workaround to permit CPU types in command line with dashes in names (e.g. X86-64-V3)
* ensure register size is set properly by AndSxt2And
+ introduced WebAssembly helper is_atomic_op
* fail with an internal compiler error in case an atomic WebAssembly instruction
is generated, while WebAssembly multithreading is disabled
* TARMAsmOptimizer.USxtOp2Op sets register size if needed
const array - reducing unnecessary data copying
const array - reducing unnecessary data copying
* Fix missing data event for field change
Immediately set the capacity
Immediately set the capacity
* set operand size properly for STX*
* Correctly unregister all routes. Do not call register routes when already registered
Partial revert "Immediately set the capacity"
(capacity assignments of type TFPHashObjectList)
Only add '-bu' option to FPMAKE_OPT if DISABLE_FPMAKE_BUILD_UNIT variable is not set
Regenerate Makefile's after introduction of DISABLE_FPMAKE_BUILD_UNIT variable
Fix wince compilation using FPC_HAS_SYSRELOCATETHREADVAR_ASM macro.
Replaces merge request !705
Move varutils.pp from src/common to src/inc directory
Add dependencies for fprpcclient on fpwebclient and fphttpwebclient units
Fix directory for varutils unit
Add dependency on variants unit for rtti
* properly define esp32 helper unit names in inc/Makefile.rtl
Use single main file src/inc/varutils.pp for Windows and other OSes
Adapt namespaces.lst to removal of src/win/varutils.pp separate source file
Fix syntax error in last commit
Add src/win to include path for win32/win64 targets
Move EqualsValue/LessThanValue/GreaterThanValue to unit Types, refer to them in the Math unit
* use an empty TThread implementation in rtl/wasi/tthread.inc, in case
FPC_WASM_THREADS is not defined
* Add property to better simulate Delphi behaviour
* Improved ToString for TComponent
* Shortcuts must pass result on
fcl-css:
- renamed TCSSUnits to TCSSUnit
- added a css registry for attributes, types, keywords, and function names
- resolver merges shorthand properties
- resolver distinguishes stylesheets from user-agent, user and author
- resolver now parses css itself, it adds its own types and customdata
- attributes are now checked at parse time and marked invalid
- started skipping invalid instead of raise
+ started working on a WebAssembly inline assembler reader. Not ready, yet, just
includes a basic tokenizer for now.
* fixed some WebAssembly instruction names in the wasm_op2str array
* Fix error out of bounds
* Patch by Evgenii Savin to avoid IE 2010021502 when calling generic from other generic. Fixes issue
gitlab 0040770
* really all TMonitor shortcuts pass through the results
+ WebAssembly inline assembler instruction parsing work in progress
+ added else clause to silence warning, treated as error in CI
Use IndexQWord_SSE41 directly if -Cp RTL compiled with supports SSE 4.1.
Move Int128Rec to System; remove i386 and x86_64 CPU unit dependency on SysUtils.
* Do not free used units during reset, they can be in use during load cycle. Fixes issue
gitlab 0040852
+ parse the instructions with integer parameter i32.const and i64.const in twasmreader.HandlePlainInstruction
* changed twasmreader.HandlePlainInstruction to return an instruction
* Need IFDEF, compiler stops "with unreachable code"
Simplify CPU units (70 LoC + 500 b code + 500 b data).
+ support the f32.const and f64.const instructions in twasmreader.HandlePlainInstruction
+ recognize the memory access instructions with an optional memarg operand (not
parsed, yet) in twasmreader.HandlePlainInstruction
+ handle the local and global variable instructions with a constant integer
parameter in twasmreader.HandlePlainInstruction
+ insert plain instructions and parse nested instructions in twasmreader.HandleFoldedInstruction
+ call ConcatInstruction for plain instructions in twasmreader.HandleInstruction
fix ffi_cif record for loongarch
The ffi_closure_alloc return fCode is real do
* started implementing twasmreader.HandleBlockInstruction
+ actually enable the parsing of WebAssembly inline asm instructions
+ set result.ops in twasmreader.HandlePlainInstruction
+ respect the nostackframe directive in WebAssembly inline asm routines
* don't do anything in postprocess_code for WebAssembly inline asm routines
* don't create block..end_block around WebAssembly inline asm routines
* make warning on unsupported esp-idf version a warning string so it can be translated
* Do not generate RTTI for generic methods (delphi compatible)
Sink lnfodwrf.pp global variables down to their actual scopes.
* Inherit extended RTTI settings from parent object
* Small correction in property resolve
* handle adress registers properly in tcg64f68k.a_op64_reg_ref
* write dependent rtti for non-published in case of extended RTTI
* WebAssembly temp gen: introduced localsfirsttemp and localslasttemp, use these
for the locals temps indices, instead of firsttemp and lasttemp, which refer
to the temps on the linear stack
+ support OPR_FLOATCONSTANT in TInstruction.ConcatInstruction
+ added basic WebAssembly inline assembler test
+ allow referencing '$__stack_pointer' in WebAssembly inline asm as argument to
the global.get and global.set instructions. This will be used in the future to
implement the thread start routine in inline asm.
* Do not try to export symbol if an error occurred, avoid internal error. Fixes issue
gitlab 0040858
+ support the call instruction in the WebAssembly inline asm
* fixed the WebAssembly inline asm call instruction with the internal assembler writer
+ added test for the WebAssembly inline asm call instruction
* Add possibility to transform strings (code page changes) and add auxiliary methods to TParamMap
human68k: sync h68kdos.inc file between packages and rtl
human68k: enable building a handful of simpler packages for human68k
+ added WebAssembly inline asm test for the instructions:
i32.sub
i64.sub
f32.sub
f64.sub
+ added WebAssembly inline asm test for the instructions:
i32.mul
i64.mul
f32.mul
f64.mul
* fixed WebAssembly inline asm parsing bug for the global.get/global.set ID instruction
* WASI: preserve the initial value of the stack pointer on startup, so that we
can later use the area after that, until the end of memory as an initial heap
+ WASI: use an initial heap area, that exists between the end of the stack area,
and before the end of initially allocated memory. This recovers some memory
that was previously wasted and delays the first call to memory.grow
- removed debug printing from the WebAssembly inline assembler reader
* Allow to create arrays and lists
* Allow to create arrays and lists
human68k: add interface function to h68kdos_super call
h68units: fixed dottedunits inclusion
h68units: added an initial version of an IOCS API unit with some graphics related calls, and an example program using it
+ support the atomic instructions in the WebAssembly inline asm reader
+ allow referencing TLS_SIZE_SYM, TLS_ALIGN_SYM and TLS_BASE_SYM from WebAssembly inline asm
* properly write info if GDB is not found
* Some minor rewordings as per 39349
* Use interfaces everywhere
added SyncIpc to fcl-process package
* Dictionary constructor accepting dictionary record
* Update debug info setting
* Correctly pass UsePublishedOnly on to sub-contexts. Fixes issue
gitlab 0040828
* NativeInt size depends on platform.
* distclean removes msgtxt.inc and msgidx.inc, resolves
gitlab 0040861
* Implement DataView properties
* Redefine (T|I)JSArrayBufferView
* Correct interface ArrayBufferView
* missing ^ in pointer declaration.
* x86: Fixed an issue where invalid typecast errors would be raised in the peephole optimizer under -CriotR
pas2js: rtl.showException: show stack trace both in alert box and console
Postgres: add support to missing integer param types
* reduce iterations for RiscV32 for now
* Disposed is protected, does not appear by default in RTTI
* Do not include class and array properties in RTTI
* API to show objects in webassembly runtime in browser
+ riscv32: trv32shlshrnode.second_64bit
+ apply OptPass1OP also to SRL/SLL
* fix commit
+ S*LI x,x,0 to nop optimization
Reuse DWARF buffer on seeks.
compiles cube.pas example
* better zero extension for Risc-V32
* apply OptPass1OP to more instructions
+ added WebAssembly inline asm tests for the instructions:
i32.div_s
i64.div_s
i32.div_u
i64.div_u
+ added WebAssembly inline asm test for:
i32.rem_s
i64.rem_s
i32.rem_u
i64.rem_u
+ added WebAssembly inline asm test for:
i32.and
i64.and
i32.or
i64.or
i32.xor
i64.xor
+ added WebAssembly inline asm test for:
i32.shl
i64.shl
+ added WebAssembly inline asm tests for:
i32.shr_u
i64.shr_u
+ added WebAssembly inline asm tests for:
i32.shr_s
i64.shr_s
+ added WebAssembly inline asm tests for:
i32.rotl
i64.rotl
i32.rotr
i64.rotr
+ added WebAssembly inline asm tests for:
i32.clz
i64.clz
i32.ctz
i64.ctz
i32.popcnt
i64.popcnt
OpenSSL: add support for OSSL_PARAM, EVP_PKEY_encrypt, EVP_PKEY_decrypt
+ Risc-V 32: optimize QWord(1) shl ...
DynArrays works
because of InitHeap3, malloc3 and free3 functions from the psy-q-sdk
+ Risc-V 32: apply OptPass1OP also on ADD
* Allow to set event handlers
h68units: fix copyright year in h68iocs unit. no functional change
* Set event handler-type properties
h68units: added some more IOCS calls, mostly related to hardware sprite handling
h68units: also credit Federico Roviralta for his X68K related work
h68units: new h68kutil unit, with various constans for now. more to come.
* fix condition to match the comment
* INdicate required dictionary fields
* String must not be shortstring
* Handle tkFloat in TValue.ToString
+ implemented CheckInitialStkLen for the WASI target (just returns the parameter
stklen as a result value, unmodified)
* fixed WasiRTLCreateEvent to actually return the result
* fixes to WebAssembly RTLEventWaitFor:
* correct conversion from milliseconds to nanoseconds (multiply by 1000000,
instead of 1000)
* use a negative timeout value, instead of 0, to indicate infinite wait
timeout. Using 0 with the 'wait' instruction indicates no wait at all.
* fixed WasiRTLEventWaitFor_WaitAllowed: second parameter is expected value to wait on (0), not wait to wait for (1)
* WasiRTLEventWaitFor_WaitNotAllowed: treat timeout of 0 as zero wait time,
instead of infinite time, for consistency with WasiRTLEventWaitFor_WaitAllowed
(and other platforms, such as Windows)
* fixed WebAssembly InitMutex() and DoneMutex() - pass the parameter by reference
* optimization in WebAssembly's MutexKind() function - mark the first parameter
as const, to avoid making a copy on the stack
* WebAssembly threads: set M.Locked to 0 on UnLockMutex
* fixed conversion between milliseconds and nanoseconds in LockMutexTimeoutNoWait and LockMutexTimeoutWait
* get rid of a couple of more tabs
* Risc-V: use OptPass1OP more
* add cpuriscv to be on the safe side
* WebAssembly mutex: treat all negative values of aTimeoutMS as infinite, instead of just -1
* WebAssembly mutex: changed the aTimeoutMS parameters of LockMutexTimeoutNoWait
and LockMutexTimeoutWait to int64, instead of longint, since they're called
from LockMutexTimeout, which takes an int64 parameter
* WebAssembly mutex: changed the timeout parameter to be in nanoseconds (these
functions are only used internally, so this doesn't break compatibility)
* WebAssembly threads: bug fixes in LockMutexTimeoutWait
* WebAssembly threads: fixed race condition LockMutex in the check where Locked
is 1, but Owner still holds the current thread id, even though another thread
has just acquired a lock, but still haven't updated the owner thread ID. We
avoid this problem by setting Owner to nil before unlocking the mutex. And in
InitMutex/DoneMutex, we store the creator thread ID in a different field -
Creator, instead of Owner.
* WebAssembly threads: use atomic loads and stores for accessing TRTLCriticalSection.Locked
* WebAssembly threads: also access TRTLCriticalSection.Owner using atomic loads and stores
Remap .data with fpc specific information to outside normal memory range.
* factor out TRVCpuAsmOptimizer.OptPass1Add
* WebAssembly threads: reformat code in LockMutexTimeoutNoWait for better
readability by removing begin..end blocks and replacing it with an 'else if'
chain. No functional changes.
* WebAssembly threads: fixed bug in LockMutexTimeoutNoWait, caused by the use of
Result instead of Res. This stupid bug broke WebAssembly critical sections,
causing random spurious hangs and it took me quite a lot of time to find it!
* WebAssembly threads: don't check for GetThreadState(MyThread)<>tsRunning in
LockMutexTimeoutWait and LockMutexTimeoutNoWait
+ WebAssembly threads: initial implementation of the WASI threads proposal:
https://github.com/WebAssembly/wasi-threads
Note that the WASI folk have already declared this proposal 'obsolete' and
only intended to be used for engines that support WASI v0.1. On the other
hand, the WASI v0.2 threads proposal is an early draft and not implemented
anywhere, so we have no choice, but to stay with v0.1 at this time, or give up
on multithreading for who knows how long it would take for the v0.2 spec to be
completed.
Regarding the WASI v0.1 engines that implement WASI threads correctly and can
be used with Free Pascal, I've discovered only one that works:
https://github.com/bytecodealliance/wasm-micro-runtime/tree/main
Wasmtime claims to support multithreading since version 15, however it doesn't
seem to work. I tested all versions until the 23.0.1, and none of them works.
Caveat: using the internal linker is not yet supported with WebAssembly and
multithreading. Please use the external linker (the -Xe option), if you want
to give this new feature a try.
+ show a message and automatically switch to external linking if WebAssembly multithreading is enabled
* WebAssembly threads: protect SysOSAlloc against race conditions via a critical section
* WebAssembly: allow specifying the initial and max memory size via the $M
directive
* WebAssembly threads: fix threadvars with the new WASI-threads implementation
* Small fix in saveobject
Decimate rtl/i386/strings.inc.
* WebAssembly: optimized SysOSAlloc to use memory area left at the end of the
page (64kb). This reduces memory use, when SysOSAlloc is called with sizes,
smaller than 64kb.
* WebAssembly threads: fix TThread.WaitFor (use -1 instead of 0 to signal infinite timeout)
+ Risc-V 32: tcpuparamanager.get_saved_registers_fpu
* WebAssembly threads: simplified (optimized) the implementation of
TWasmRTLEvent, so it doesn't use a Mutex. Use atomic operations instead.
* WebAssembly threads: use the stack size, specified for the main thread (via
the $M directive, or the '-Cs' compiler option) as the default stack size for
other spawned threads
Faster path for IndexBytes with a match at the beginning.
+ Risc-V 32: tcpuparamanager.get_saved_registers_int
+ Risc-V: apply OptPass1OP to more operations
* proper implementation for the function Sptr (which returns the stack pointer) for WebAssembly
+ WASI: set StackLength on startup
+ WASI: set StackBottom on startup
+ WASI: enable the generic stack checking
* WebAssembly threads: pass the stack size to InitThread when starting a new thread
+ WebAssembly threads: init StackBottom (used for stack checking) more precisely
when starting a new thread. Precision is not that important for the stack
checking itself, because it uses a stack margin of 16kb, so the previous
value, set by InitThread is good enough, however it's easy to do it precisely,
since we allocate the stack and pass a pointer to it in TWasmThread, so why
not?
* WebAssembly threads: disable stack checking for the FPCWasmThreadStartPascal procedure
* Install error handler to examine exceptions during callback
* Correct callback handler for object tree
+ Risc-V 64: tcpuparamanager.get_saved_registers_int and tcpuparamanager.get_saved_registers_fpu
* Print clickable URL with start location
* WebAssembly threads: free the stack block and TLS block in case wasi_thread_spawn fails
* WebAssembly threads: use New and Dispose instead of GetMem/FreeMem for allocating/freeing TWasmThread
* WebAssembly threads: destroy the event and mutex in WasiBeginThread in case wasi_thread_spawn fails
* WebAssembly threads: implement WasiEndThread using exceptions. There's no
other way to end a thread in WebAssembly, except by ending the thread
procedure. Therefore, the only way to implement WasiEndThread is to have it
raise an exception and handle it at the outermost level. This, of course,
requires one of the WebAssembly exception modes to be turned on, in order for
this to work.
* WebAssembly threads: call fpc_wasm32_init_tls from inline asm code to avoid
race condition in branchful exceptions mode
+ added some more comments in wasi_thread_start
* removed TODO comment from WasiThreadSwitch
* Explicitly specify path to include files
* Correct dictionary construction
* Risc-V 32 has also a GC variant
* Fix wrong raise statement
* Use correct class to construct dictionary in callback helper
* Do not load font config if it is already loaded
* Make sure sentences end on point when needed.
* Implement DropContext/KeepContext for Delphi compatibility. Patch by Artem Izmaylov. Fixes issue
gitlab 0040884
* Reduce number of warnings and hints
Fixed work in ThreadMode := wtmNone mode.
+ enable WebAssembly threads with the internal linker (which still doesn't work
with threads) if FPC is compiled with the FPC_WASM_THREADS_INTERNAL_LINKER
define
+ enable FPC_WASM_THREADS_INTERNAL_LINKER (not stable, yet) in ppcwasm32.lpi
* WebAssembly threads internal linker: fix validation of R_WASM_GLOBAL_INDEX_LEB relocations in modules that support threads
* WebAssembly threads internal linker: declare the __tls_base, __tls_size and
__tls_align symbols in the internal linker script if threads are enabled
* WebAssembly threads internal linker: declare the symbol __wasm_init_tls in the
.text section (function will be generated later by the linker)
* WebAssembly threads internal linker: add the .tbss section to the linker
script in case threads are enabled
+ WebAssembly threads internal linker: create the __wasm_init_tls symbol's
special WebAssembly properties, such as FuncType
+ WebAssembly threads internal linker: debug print threadvar relocations,
instead of stopping with an internal error
* WebAssembly threads internal linker: mark the __tls_base, __tls_size and __tls_align symbols as WebAssembly globals
* WebAssembly threads internal linker: import WASM_SYM_TLS symbols as AT_TLS, instead of AT_DATA
* improve Risv-V optimizer
* WebAssembly threads internal linker: set MemPos for data sections correctly
when threads are enabled (take into account that the first data section with
threads enabled is .tbss, instead of .rodata)
+ WebAssembly threads internal linker: create a global symbol for all AT_TLS data symbols
* WebAssembly threads internal linker: set objsection properly for global
symbols, created for AT_TLS entries
* WebAssembly threads internal linker: create double relocation entries for
AT_TLS entries: one points to the AT_TLS entry (the data segment), the other
points to the WebAssembly global, holding that address. This causes the
smartlinking optimization to keep both the AT_TLS entry in the data segment,
as well as the WebAssembly global.
* WebAssembly threads internal linker: ignore RELOC_GLOBAL_INDEX_LEB
relocations, pointing to AT_TLS entries, because the actual relocation is done
by another relocation, overlaid on top of this one, pointing to a WebAssembly
global. The reason we use two relocations, is to cause the smartlinker to keep
both the AT_TLS symbol, thus reserving data space in linear memory for the
threadvar, as well as the WebAssembly global variable, used for holding the
address of the threadvar.
+ WebAssembly threads internal linker: introduced TWasmExeOutput.GenerateCode_InitTls (not ready, yet, just writes some dummy data)
* WebAssembly threads internal linker: set the global type of threadvar globals to wbt_i32
* WebAssembly threads internal linker: set MainFuncSymbol of the section of threadvar globals
* WebAssembly threads internal linker: starting working on TWasmExeOutput.SetThreadVarGlobalsInitValues
* WebAssembly threads: don't do anything in TWasmExeOutput.SetThreadVarGlobalsInitValues
and TWasmExeOutput.GenerateCode_InitTls if threads are disabled
* WebAssembly threads internal linker: introduced TWasmObjSymbol.TlsDataSym
* WebAssembly threads internal linker: set initial values for threadvar globals
* WebAssembly threads internal linker: implemented the actual code generation in TWasmExeOutput.GenerateCode_InitTls
* WebAssembly threads internal linker: set threadvar globals as mutable
* WebAssembly threads internal linker: set initial values for __tls_size, __tls_align and __tls_base
* WebAssembly threads internal linker: use imported and shared memory if multithreading is enabled
* WebAssembly threads internal linker: create a startup function for
initializing shared memory (dummy for now)
+ WebAssembly threads internal linker: partial implementation of TWasmExeOutput.GenerateCode_InitSharedMemory
* WebAssembly threads internal linker: generate passive data segments, when multithreading is on
* WebAssembly internal linker: moved the DataSections const array from local to
the method writeData to local to the class. No functional changes.
* WebAssembly threads internal linker: implement memory initialization in TWasmExeOutput.GenerateCode_InitSharedMemory
* WebAssembly threads internal linker: generate data.drop instructions in
TWasmExeOutput.GenerateCode_InitSharedMemory. This drops the passive memory
segments, after the memory has been initialized.
* WebAssembly threads internal linker: use WriteUleb instead of WriteUleb5 in
TWasmExeOutput.GenerateCode_InitTls and TWasmExeOutput.GenerateCode_InitSharedMemory.
This generates equivalent, but shorter code.
* WebAssembly threads internal linker: micro optimization in
TWasmExeOutput.GenerateCode_InitTls - skip generating instructions that add
zero
* WebAssembly threads internal linker: use signed LEB when needed in TWasmExeOutput.GenerateCode_InitTls and TWasmExeOutput.GenerateCode_InitSharedMemory
+ enable the WebAssembly internal linker with multithreading
* WebAssembly internal linker: add the .tbss section size to the result of GetBssSize
* WebAssembly internal linker: reduced exe section alignment to 16 bytes
* set MaxIntResource to 1023 for WebAssembly, because that's where the first
data segment starts, after commit 3218f25d130f9e3989ee3a8c6e3079aacde55c8a,
and even before that, when using the external linker
+ Risc-V: instructions of B extension
For connections list TThreadList changed to safe TFPHashList.
* Check if action is assigned before calling update on it
* Add SMEnuSeparator for Delphi compatibility
* Additional check on action.
* Add RangeIndexError (delphi compatible)
* TStrings.InsertObject is virtual in Delphi
+ Risc-V: make use of zext.h if available
+ WebAssembly internal linker: take into account the min heap size (specified
with the $M directive), when determining FMinMemoryPages
* WebAssembly internal linker: the PageSize constant, which was repeated twice,
moved to the class level and renamed WasmPageSize. No functional changes.
* Risc-V: make use of sext.h instruction if available
Fix compilation with -dDEBUG_PPU
Rename conditional: INTFPPU => DEBUG_GENERATE_INTERFACE_PPU
* corrected alignment for Risc-V on Linux
* Fix compilation under unicode rtl
* Explain how to run full tests
Support Windows root-relative paths in TPath.Combine.
* FCVT.W.D returns only a 32 bit int
Don’t crash on empty path.
* fixed test tw0882.pp for WebAssembly's memory requirements
* get rid of WebAssembly constant DefaultMaxMemoryForThreads, because it was
repeated twice. Instead, set maxheapsize correctly with the default value in
init_parser.
* Rename keyword info to avoid confusion
* increased the default max memory for WebAssembly threads to 256 MiB
+ WebAssembly threads: initialize the ThreadId threadvar for the main thread
* WebAssembly threads default maxheapsize constant changed to more readable form - 256*1024*1024 instead of 268435456
* generic second_addordinal can handle swapped nodes
OpenSSL: add EVP_CIPHER_CTX_new and EVP_CIPHER_CTX_free
+ WebAssembly threads: set IsMultiThread to true in WasiBeginThread
* DefineProperties can have dot in name.
+ WebAssembly threads: implemented basic events (both manual and auto reset)
* WebAssembly threads: use high(uint32) as MaxThreadSignal
fcl-css: resolver: added colors, replaced filename with name, registry stamp
fcl-css: renamed css units
* Correct compilation with namespaces
* Add overloads with offset and length for typed array constructor
* Objects passed in callback are ours to free
* Fix behaviour of AddObject when duplicates=dupIgnore. Patch by Artem Izmaylov. Fixes issue
gitlab 0040898
* WebAssembly threads: RTLEvents rewritten to implement an auto reset event.
Previous implementation did a manual reset event. However, at least on Windows
and Linux, an auto reset event is used.
fcl-css: resolver: all and origin
* Alternative approach for AddObject, which does not break backwards compatibility. Fixes issue
gitlab 0040899
* WebAssembly internal linker: allow specifying the max memory size also for
binaries that don't use threads and shared memory. Unlike the shared memory
case, in this case the max memory limit is optional.
fcl-css: resolver: test warnings
* try to avoid incompatibility with lazarus (and possibly others)
+ WebAssembly threads: set FThreadReaped to true in TThread.WaitFor, to avoid
hang in TThread.SysDestroy after .WaitFor
+ increase WebAssembly max memory limit for test theapthread.pp, because the
test runs out of memory with the default memory limit of 256 MiB
* WebAssembly threads: moved the thread stack and TLS block free code to a new
procedure: FreeStackAndTlsBlock. No functional changes.
* WebAssembly threads: made FreeStackAndTlsBlock set the StackBlock and
TlsPointers to nil
+ WebAssembly threads: call FreeStackAndTlsBlock in WasiWaitForThreadTerminate
+ WebAssembly threads: introduced TWasmThread.ThreadHasFinished boolean
+ WebAssembly threads: initialize TWasmThread.ThreadHasFinished to false in WasiBeginThread
+ WebAssembly threads: spinwait until ThreadHasFinished becomes true in
WasiWaitForThreadTerminate, before freeing the thread TLS and stack block, to
avoid race condition with a thread that is finishing (i.e. the main threadproc
is done), but still executing internal Pascal code inside
FPCWasmThreadStartPascal.
+ test runner: allow forcing thread tests by specifying the TEST_THREADS=1 environment option
* fixed compilation error, introduced in a0ac317aae017c1bf828084410210324448661c9
* Make sure reference count is properly managed
fcl-css: resolver: var and custom attributes
fcl-css: fixed parsing --var
+ increase WebAssembly max memory limit for test tmt1.pp, because the test runs
out of memory with the default memory limit of 256 MiB
+ increase WebAssembly max memory limit for test tw11006.pp, because the test
runs out of memory with the default memory limit of 256 MiB
+ introduced method tscannerfile.readval64, similar to readval, but returns an int64
+ WebAssembly: allow specifying heapsize and maxheapsize larger than 2GiB
(WebAssembly has a 32-bit address space, so there's still a 4GiB limit)
* ignore the '-gl' parameter on WebAssembly, since it's impossible to implement
this feature on this target. WebAssembly is a Harvard architecture and allows
no way for inspecting code addresses in stack traces from within the program
itself. Maybe a future extension to the WebAssembly spec would allow that, but
currently, it's not possible. The '-gl' option is ignored (producing only a
warning, instead of a fatal error), because not having line info should not be
fatal for most programs. It also reduces the number of test failures, since
many tests compile with '-gl', but don't actually require the line info, it's
just there for debugging purposes.
* fix compilation error in test for OSes that have no HAS_MONITOR defined
* fixes
gitlab 0040893 using Otherfiles parameter to fpdoc with CHM backend.
* throw an error in iso/extended pascal mode if enum types are passed to writeln, resolves
gitlab 0040896
* fix bug in thlcgwasm.a_op_reg_reg_reg_checkoverflow when either src1 or src2
is the same as dst
* WebAssembly: fixed overflow checking for unsigned subtraction
Remove most of the VER3_0 conditionals.
* WebAssembly: changed the generated code in a_op_reg_reg_reg_checkoverflow to
avoid using a label
+ WebAssembly: check for exceptions after call of fpc_rangeerror in branchful
exceptions mode. This fixes catching of ERangeError exceptions when using
SysUtils and runtime errors are converted to exceptions.
- disallow enabling regvars for WebAssembly, because it's not supported, yet
* WebAssembly: fixed crash when attempting to generate a functype directive for
a generic function
fcl-css: fixed parsing attribute value hex color
fcl-css: test scan -10.2e+2
* estimate complexity of ordconst node better on RiscV
* Properly nest beginupdate/endupdate in doaddobject
* Fix compilation when using unicode rtl
Redesign RTTISizeAndOp to return more useful information.
+ AArch64: apply OptPass1FData also to FCSEL
Implement regeneration of compiler msgidx.inc and msgtxt.inc files for IDE if needed
Add missing Makefile for h68units, testinsight and wasm-oi packages
* armv7 should a synonyme for arm7a
* patch by Alexander (Rouse_) Bagel: TArrayHelper.BinarySearch, when searching
for an element that is obviously missing from the array, should return
the position where the element should have been, but instead it reset AFoundIndex to -1, resolves
gitlab 0040867
Add msg as prerequisite for compiler to fix 'make distclean all' failure
Recompile rtl before trying to compile msg2inc binary
Add '-f' option to gparmake, to redirect dotest output to separate log files
Use MAKEINC_SEPARATE to enable use of '-f' option of gparmake, to redirect dotest output to separate log files
Rename separate logs to use sep_log prefix
* make typing more consitent; cosmetics
* Webassembly HTTP request API
announce start of each chunk
Use seplog name for separate chunck output file
Add SEPLOG make variable, and add it to LOGFILES value
Faster RTTIManagementAndSize -_-.
+ apply OptPass1FData on FRINT*
* Allow vendor specific registry XML files. Patch by Iluha Companets. Fixes issue
gitlab 0040910
Remove the rest of the VER3_0 conditionals.
Exclude AW flags for sec_fpc data for embedded and freertos targets.
Mark beginning of selected text
select to beginning of the file (ctrl+shift+home)
Select text in code editor by mouse when Persistent Blocks not enabled.
+ WebAssembly external asm writer: workaround for the 'missing functype' error,
produced by LLVM-MC versions 13 and above
Close/hide compiler messages window by pressing Esc
+ pass '--no-type-check' to llvm-mc-13, because its type checking is broken
Block insert cursor. Block cursor for overwrite mode in xterm
Auto-Closing Brackets and Insert or Restore
+ add explicit support for LLVM-MC versions 15..18
Improved Debug - Evaluate (Ctrl+F4)
* fix standalone compilation
* cosmetics
* WebAssembly code generator: don't emit a return instruction at the end of the
function, because it's redundant
Improved input line of Find and Replace window.
Microsoft copy/paste keys for Input Lines
Overwrite selection block
Indent block when Persistent blocks are off
Do not lowercase executable names in Unix systems.
* fix test for non-x86 platforms
+ disable the WebAssembly type checker for all LLVM-MC versions since version 13
+ emit a size directive for the internal dynarray const label. This fixes
WebAssembly dynarray consts with the llvm-mc external asm.
- don't generate .size directives for function symbols on WebAssembly, to avoid
warnings from the external assembler
+ indicate which LLVM-MC versions are broken in the compiler help screen
- WebAssembly internal object writer is no longer experimental
* WebAssembly wabt assembler id as_wasm32_wabt renamed as_wasm32_wasa
* WebAssembly WABT assembler ID changed to WASA
* as_wasm_wabt_info renamed as_wasm_wasa_info
* TWabtTextAssembler class renamed TWasaTextAssembler
* unit agwat renamed agwasa
* renamed the wabt assembler to wasa in the compiler help screen as well
+ cosh(800) should raise an floating point overflow
* ensure that the final assignment in the hyperbolic functions raises an exception if they overflow
* WebAssembly threads: in TThread.WaitFor, call CheckSynchronize in a loop,
while waiting on a thread that isn't finished, but the waiting happens on the
main thread. This fixes the hang in test tb0636.pp
* WebAssembly: fixed SysUtils.sleep() with large timeouts causing incorrect time
delay, due to arithmetic overflow
* WebAssembly threads: fix race condition, which causes sometimes an abandoned
basic event to be reported as signalled. This should fix the test tbrtlevt.pp
sometimes failing.
* Add some utility methods to TJSarray for easier pushing of values
* the fpc_invalidpointer rtl function declared compproc to allow easier calling
from the high level code generator
+ added an optional nil pointer checking for WebAssembly (similar to
PowerPC-AIX), that can be activated via the -CN option
+ added -CN to the help screen of the WebAssembly compiler as well
more elegant way to preserve original exe name
Revert: do not lowercase executable names in Unix systems.
Opening same file in a second window don't destroy any changes
Revert "Opening same file in a second window don't destroy any changes"
This reverts commit cf81682bbb0e0d28332c8bf2371c538d7afa2477
Opening same file in a second window don't destroy any changes
On exit ask for changes to save if one file open in two windows.
Revert "Microsoft copy/paste keys for Input Lines"
This reverts commit 660836e027ffc0940291abe39df6c5e9e30d3430
to be reverted utf8 char mishmash
Reintroduce Microsoft copy/paste keys for Input Lines
Revert "to be reverted utf8 char mishmash"
This reverts commit 471a735fe61eac749ace9d95f990ec38f006c89c
* Patch from Iluha Companets to avoid crash when registry XML file is empty. Fixes issue
gitlab 0040912
+ check argument range for cosh/sinh
Import TzSpecificLocalTimeToSystemTime.
* improved cosh/sinh argument checking
+ added several missing targets to the help screen for the -P compiler option
* another fix of cosh/sinh overflow checking
* WebAssembly internal object writer: generate the symbol table after the
section numbers have been calculated. This is preparation for exporting
symbols from debug sections, which will be implemented in the future. No
functional changes.
+ WebAssembly object writer: record the custom section index for debug sections
in a new field TWasmObjSection.CustomSectionIdx
* Webassembly websocket support and demo
+ WebAssembly internal assembler and linker: support exporting symbols from
debug sections, via a FPC-specific extension. Unfortunately, this is not
supported by the LLVM external assembler and linker.
* fix warning (second attempt :) )
* Regexp support for wasm target
* Rename some identifiers to be more unique. Fixes issue
gitlab 0040915
* Added missing i386-win32 target selection
* More efficient condition checks for "tnodeutils.has_init_list"
"tnodeutils.has_init_list" is now static
pastojs: fixed else modeswitch
fcl-js: escape unicode whitespaces in string literals
* Regexp for wasm (using browser API)
* Delphi compatibility improvements
* generate debuginfo for WebAssembly threadvars like for normal vars, when
WebAssembly threads are turned off
+ WebAssembly DWARF debug info: generate DW_AT_frame_base entries for functions
+ WebAssembly internal linker: support data relocations to threadvars, resolve
them as relative values to the beginning of the TLS section. Will be used for
generating debug info for threadvars.
+ support writing R_WASM_GLOBAL_INDEX_I32 relocations in the WebAssembly internal object writer
+ generate proper reference to the TLS_BASE_SYM global in the WebAssembly debug info for threadvars
+ WebAssembly internal linker: support the R_WASM_GLOBAL_INDEX_I32 relocation,
used for threadvar debug info, among another possible uses.
Properly mirror InitEnhancedVideo with DoneEnhancedVideo in FV.
+ more relocation types added to the enum TWasmRelocationType
Restored array of Sw_Word to array of Word as those are ment to be video buffer cells.
Message box have to draw some blank lines.
* create a TWasmGlobalAsmSymbol instead of TAsmSymbol when generating debug info
for thread vars. This fixes a memory corruption error, when later the compiler
tries to access the extra fields in TWasmGlobalAsmSymbol for the '__tls_base'
symbol.
Save and restore user screen original cursor position for every unix terminal not only xterm
On return to IDE screen resize IDEapp if needed (Unix).
* fixed blocksize when generating debug info for WebAssembly threadvars
Branch to save Enhanced video buffer or Legacy video buffer (Unix).
Remove redundant ctrl-c enable and disable.
Ctrl-C in ide does not generate signal SIGINT (dos).
* fix the final entry size in the .debug_aranges table on platforms where the
ALU size differs from the address size (such as WebAssembly 32-bit)
* set procalign and loopalign to 0 for WebAssembly - code alignment is unnecessary, as this is a VM.
* WebAssembly internal object writer: fixed helper function SlebSize()
+ WebAssembly internal object writer: added safety check for catching bugs,
caused by instruction size changes between Pass1 and Pass2
* fix generation of addend for R_WASM_FUNCTION_OFFSET_I32 relocations. This
improves code address accuracy for WebAssembly debug line info information.
* WebAssembly: generate the final bashB opcode of a function via the
end_function instruction, instead of adding it magically in the object writer.
This makes the WebAssembly debug line info more accurate, covering the
end_function instruction as well.
Add TEST_FAILLIST, TEST_LOG and TEST_LONGLOG variables, and use those to set LOGFILES list, to avoid troubles if LOG, LONGLOG or FAILLIST variables already are set
* avr: take advantage of sbiw in mod/div_word
+ test
Change prt0.as and cprt0.as to allow to generate FreeBSD aarch64 13.2 executables
Fix compilation of heaptrc unit using fixes branch bsd compiler
Set DynamicLinker for FreeBSD systems
Align Win64 CONTEXT to 16 bytes.
* Remove superfluous initialization of local variable. Fixes issue
gitlab 0040917
* use also an FNV hash to shorten interface wrapper names
* use proper value for Fnv64 initialization
* PPU version increased
+ AVR: dummy thlcgcpu.g_intf_wrapper implementation
+ avrsim6 controller type
Import tlhelp32.h functions.
- WebAssembly: removed tai_local.name, because we don't use it
* WebAssembly: refactored tai_local, so that it is a single directive,
containing multiple locals, instead of creating multiple tai_local directives,
each containing a single local. No functional changes.
* TWasmObjData.DeclareLocal renamed DeclareLocals. No functional changes.
+ WebAssembly: insert a tai_local directive also for assembler functions
* WebAssembly internal assembler writer: generate the function locals header
when assembling the tai_local directive, instead of injecting them manually in
TWasmObjOutput.WriteFunctionCode. This makes function code offsets correct
and avoids the need to manually adjust relocation fixups by adding the locals
header size. It also fixes relative relocations, used in DWARF debug line
info.
+ introduced LINE_RANGE constant in the DWARF debug info generation unit
WebAssembly debug info: use different LINE_BASE and LINE_RANGE on WebAssembly to
improve compatibility with WasmTime's debugger support
* WebAssembly internal linker: don't remove unused code sections if smartlinking
is turned off. This is needed for debugging, because FPC doesn't support debug
info with smartlinking on most platforms, and that includes WebAssembly.
* WebAssembly internal linker: also don't remove unused data sections if
smartlinking is turned off.
* WebAssembly debug info: make wasmtime happy by not emitting line info end
sequences for procedures that lack any debug lines emitted previously
* make UpdateFnv64 closer to the original algorithm as proposed by Gareth
Cancel exit if Auto Save is ON and saving new file is canceled.
Save and read correctly Assembler Output options in Textmoed ide.
Textmode ide: in Change Directrory dialog can copy and paste in input line.
Implementation of Kitty keys and xterm - ModifyOtherKeys (Unix keyboard)
Enable mouse in pterm (putty)
Autosave before Run with Breakpoints in Debuger
Compilation error fix for Assembler output options.
Handle cross-endian case inside TCoffObjData.writereloc method
Save All is enabled and disabled as requiered
Assembler Reader Options for x86_64
* revert check for boolean type when handling LOC_FLAG in tcgassignmentnode.pass_generate_code. This makes pas boolean the default,
resolves
gitlab 0040908
+ WebAssembly internal linker: create a name custom section to help debugging
- WebAssembly code generator: removed the g_fingerprint hack, that added 4
useless i64 constants on the stack with random numbers and then drop them. It
was used for primitive debugging, since previously it wasn't possible to
identify the function name. Now we can produce DWARF debug info, as well as a
"names" custom section to give each function a name and most WebAssembly
environments support at least one of the two mechanisms. Therefore the
g_fingerprint hack is no longer necessary.
Handle floatx80 records with gaps also in InternalAssembler
* handle except blocks as normal code block with regard to specialization of generics, resolves
gitlab 0040890
* Fix compiling system unit
* Allow message in ShowAsDebug
* Some minor improvements
* Fix compilation in pas2js
+ added extra values to TWasmNameSubsectionType from the extended name section
proposal and the gc proposal
+ introduced private type TCustomSectionNameMapEntry to class TWasmExeOutput
+ introduced private type TCustomSectionNameMap to class TWasmExeOutput
+ introduced method TWasmExeOutput.AddToNameMap
+ introduced method TWasmExeOutput.AddToGlobalNameMap
+ introduced local method WriteNameMap for writing name maps in the WebAssembly name custom section
+ WebAssembly interal linker: add global names to the name custom section
* as shared libraries without glibc on linux currently don't work, link those tests
on current fpc versions and linux always against glibc, so the shared library handling is tested
* Fix warnings, hints and notes
* WebAssembly internal linker: add the data segment names to the name section
* properly unlink unused type symbols from their defs to avoid
internal errors when generating debug info, resolves
gitlab 0040886
+ add tag names to the WebAssembly name section
* WebAssembly internal linker: refactor writing the name custom section - group
generating subsection data with the actual writing of the subsection data
* WebAssembly internal linker: only generate the tag name subsection if there
are any tags in the module
- removed obsolete define FPC_WASM_THREADS_INTERNAL_LINKER from ppcwasm32.lpi
+ add optimizer units (empty for now) for the WebAssembly target
+ include unit aoptcpu in wasm32/cputarg.pas
fcl-res: fix missing field initialization in the coff writer, which in turn fixes fpcres randomly producing broken coff objects (rejected by GNU link)
Add missing %norun information for dotest utility (crashes AIX testsuite)
* RiscV64: better code generation to clear upper 32 bit of a register
* fpc_varset_load takes a ptrint for set size
Fix 2nd compilation in Textmode IDE
Ctrl-k-t select first word in line correctly if line length 49 or greater
Selection start and end move along while indent block
Contra intuitive: TEditor.SetBufSize should not change BufSize at all
Windows console mouse - scroll up and down events
FV Drivers: change name for mouse scroll up/down
FV TScroller and TEditor respond to mouse scroll
FV In ListBox mouse scroll function as Key Up or Key Down
Mouse scroll (fast) Compiler Messages and Messages windows
Compiler Target and Compiler Optimization Target Processor lists are scrollable
remove of the build scripts
moved the psy-q-sdk to the rtl/ps1 folder
if not ps1 setup FPU defines
* Minor improvement, fix by lagprogramming. Fixes issue
gitlab 0040922
resolveReadAfterWrite moved to aasmcpu.pas
* RiscV: fix AndiAndi2Andi optimization
+ RiscV: AndiAddwi02Andi optimization
if taicpu(p).opcode in [....] beautiy fix
thx god You seen it! (reverse)
hlcgcpu.pas: uses unit systems + t_ps1.pas: correct Message3
check if next instruction exists
Also accept EMathError exception
Add %norun for tw36544a library
* Optimize ExtractFileUnitName
Add try/except block inside try/finally block in ExecuteRedir function
SetSize with output dimensions depending on orientation
* fix RiscV32 compilation
Use FillChar in InitializeArray.
SetSize with output dimensions depending on orientation
* RiscV64: don't use addiw for OS_32 to OS_32 type conversions obviously
case statiment insteed of ifs
set_source_info behind defines
Fix display of 80bit floats in cross-endian case
Adding some convinience functions to TNullable
psy-q-sdk lib duplicate named *.o files excluded from link
strt.pp removed from build
* FSRM works only with movsb
all packages witch are not able to compile REMOVED
Add CC_OPT for riscv processors
some psy-q-sdk bindings added to the rtl compilation
+ Add license header to tuples, add to fpmake
+ added dependencies for the psy-q-sdk units to the PS1 RTL makefile. Fixes
parallel make.
* fix alphabetical sorting of targets in comment
- remove Makefiles that shouldn't be committed to the git repository
+ PS1 system unit: include the softfpu code, in case the softfpu is enabled in
the compiler (it is still disabled by default)
* MIPS code generator: don't put floating point results in FPU registers for
function results, if the SoftFPU is enabled
* MIPS code gen: don't use FPU registers for function parameters in case SoftFPU
is enabled
+ added fpu_libgcc to MIPS
+ define cpufpemu for MIPS in order to enable (optionally) FPU emulation
+ enable SoftFPU by default for the PS1 target
* MIPS: don't generate FPU code for abs(real), sqr(real) and sqrt(real) in case
FPU emulation is enabled
* MIPS: don't generate FPU code for int to real conversion when FPU emulation is enabled
* PS1 system unit: moved constants that should be public to the interface part
+ define FPC_IS_SYSTEM in the PS1 system unit
+ enabled compilation of unit iso7185 for the PS1 target
+ enabled the ctypes unit for the PS1
+ enabled the sysconst unit for the PS1 target
+ enable compilation of the uuchar unit for the PS1 target
Adding fpsockets unit to fcl-net
+ enabled compilation of the strings unit for PS1
+ RiscV: Addi0Op2Op optimization
- removed /psy-q-sdk/lib/* from .gitignore
+ enabled compilation of unit objpas for the ZX Spectrum
+ enabled compilation of unit uuchar for the ZX Spectrum
+ enabled compilation of unit strings for the ZX Spectrum
Add -msoft-float or -mhard-float option to GNU assembler calls
Adding TNullPtr to types
Additional changes:
* Now using TNullPtr instead of custom type in TNullable
* Adding assignment of variants with TNulPtr to avoid name conflicts
* Adding comparison to TNullPtr (Pointers, TObjects, TNullable)
* RiscV: extend Addi0Op2Op
Adding pointer access to nullable
fcl-css: test display:none without spaces
fcl-css: resolver: parse value without registry
Completely disable utils for ps1 target for now
* Addi0Op2Op has to consider both operands
* Handle case where there is no handler
* Ensure FPSockets compiles in unicode rtl
switch all optimizations off
link all the sdk bindings .o files
removed InitSysInitUnitName
- MIPS: removed functions get_fsr and set_fsr from the RTL in case the SoftFPU
is enabled, because they contain inline assembler, containing FPU code
optimizecputype back to cpu_mips1
+ first batch of instructions added for Addi0Op2Op
Fixing bug where in const init no typecheck for symbol was performed
Disable ps1 target OS for all failing utils packages
* improve RiscV assembler optimizer
Typo in comment (windirs unit)
Rename function to reset_all_default_types
Added missing keys for WinCRT unit
Additional function key escape sequences for rxvt (urxvt)
In console enable mouse buttons browse back/forward (xterm Unix)
Go32v2 and msdos mouse is zero based. Fixed GetMouseX, GetMouseY and SetMouseXY.
make file gitlab web interface friendly
Silent key apostrophe. Fixed problem for Windows Textmode IDE in Linux under Wine.
Console keyboard shift states in Unix
Multi byte mouse report format for rxvt (Unix)
* reduced the default stack size for PS1 to 256KB
+ PS1: initialize StackLength and StackBottom
+ PS1: allow creating a linker map file with the -Xm option
+ PS1: show linking message
+ RiscV: FOp.sFsgnj.s02FOp.s optimization
* PS1: initialize the heap with the proper addresses - between bss_end and StackBottom
* PS1: call InitHeap to finish the Pascal part of the heap initialization
* PS1: initialize exceptions on system unit startup
+ PS1: initialize the unicode string manager
+ PS1: implemented debug output via write/writeln (visible in emulator logs, same effect as printf)
+ PS1: set the IsConsole and IsLibrary in the system unit startup
+ comment (no functional changes)
+ PS1: add const AllFilesMask to the system unit
+ PS1: initialize the thread manager in the system unit
* PS1: clamp the stack size, so it doesn't exceed the maximum memory available (minus 1k for heap)
ordinary malloc doesn't work, so malloc2
all the strings.h functions are in libstd.pas
* generalize FOpFsgnj02FOp optimization
* PS1 target name in help screen changed to PlayStation 1
* apply OptPass1FOP to more opcodes
* do not generate lea with 16 bit references on x86-64, resolves
gitlab 0040936
* accidentally committed with a set debug define
* Allow %o, let %p handle object pointers and class pointers. Fixes issue
gitlab 0040762
* Implement TList
.pack. Patch by Alexander Bagel. Fixes issue gitlab 0040927
Backspace Tab character correctly.
Long long code editor lines
* Only flush when actually writing
pas2js: added path to fcl-web
* partial fix
gitlab 0040934: don't remove the DEF file if cs_link_deffile is set (thus if the user explicitly wants the file)
* partial fix
gitlab 0040934: enable def file generation if only -D is provided as argument (as the help suggests and which also makes sense if -Dd is not set as then a default description is used)
* add procsyms from exports also to deffile if user explicitly asked for one
* ensure that Default() symbols that use management operators are properly initalized/finalized
+ added test
* extend use of OptPass1FOP
* load 64 bit constants through a register into memory to avoid store-forwarding stalls, resolves
gitlab 0040945
Restore previous behavior of draw full line selection
Do not wrap fp.ans file lines on load
Add missing Compiler Modes in Compiler Options
Nested comment syntax highlighting
* apply OptPass1FOP to FCVT.*.*
* Add readfromscanner, fix reading type
* Generate correct type name for procedural type arguments in thunk class
* patch by lag programming: Code cleanup at function TAOptBase.RegInInstruction, resolves
gitlab 0040952
* ignore the -gl parameter (and print a warning) on the embedded targets
ParseURI: a colon is a valid character in the path or the document part of the URI
* set proper expectloc for dyn. array comparisons, resolves
gitlab 0040947
Force shortcut boolean evaluation when rewriting length(Windows widestring) = 0.
Move charset unit to implicit units list
* fix
gitlab 0040259: global managed records with Initialize operator need to be initialized no matter if they are referenced in the current unit or not.
+ added test
fixes the psy-q-sdk dependencies
removed unpreaty line endings / beginnings
added OBJPASUNIT dependency
* MIPS64: make use of DMTC1 instruction
+ enable strength reduction for -O3, probably an oversight for years that it was not included in -O3
+ added package ptckvm - a console driver for the keyboard, video and mouse units, implemented on top of the PTCPas library
* fixed ptckvm compilation with dotted units
* unit ptckvm renamed PTC.KVM if dotted units are used
* do not set the addr taken flag for nodes to passed to const/var/out parameters, if
the code of the callee is known and within the callee no address of the parameters
is taken
+ added unit unix98pty. Only enabled for linux, for now, but can be enabled in the future on other unix-likes.
* Add GetMethod(name), patch by Lipinast Lekrisov, fixes issue
gitlab 0040953
+ print all sub nodes of call nodes
* properly process all child nodes of call nodes in foreachnode, resolves
gitlab 0040957
* fix memory leaks after ptckvm finalization
+ add printing of all fields of tcallnode in TCallNode.XMLPrintNodeData as well
+ started integrating my fpterm terminal emulator (from https://sourceforge.net/projects/fpterm/)
as a part of FPC's packages, for potential use and future integration with the
console IDE, Lazarus, WebAssembly, Pas2Js, etc. This commit adds the first
unit: System.Terminal.Base
* forgot to add fpmake.pp in previous commit
+ added unit System.Terminal.View
+ added unit System.Terminal.Model
+ added unit System.Terminal.InputOutputConnection
+ added unit System.Terminal.PointingDeviceInput
+ added unit System.Terminal.Logger
+ added unit System.Terminal.Controller
+ added unit System.Terminal.KeyboardInput
+ added unit System.Terminal
* fcl-fpterm/fpmake.pp modified, so it includes a function, similar to
rtl-console/fpmake.pp. This is to allow declaring constant sets for the OSes.
+ added unit System.Terminal.KeyboardInput.Keyboard
* mark symbols used in conditional compiling expressions using sizeof, resolves
gitlab 0040955
+ added unit System.Terminal.PointingDeviceInput.Mouse
+ added unit System.Terminal.View.Video.Base
+ added unit System.Terminal.View.Video
+ added unit System.Terminal.KVM
+ added unit System.Terminal.View.Video.PTC.KVM
+ added unit System.Terminal.PTC.KVM
* use lowercase strings for the dependencies in fcl-fpterm/fpmake.pp
- removed commented out code
+ added unit System.Terminal.Pseudoterminal.Unix
+ added unit System.Terminal.InputOutputConnection.UnixPTY
+ more fixes to mark symbols used by preprocessor expressions properly
+ made MarkSymbolAsUsed more fail safe
+ tests
* system.terminal renamed fpterm
Remove unneeded, and possibly wrong typecast to fix cycle with -CR option
- removed unnecessary (unused) virtual constructors
+ enabled compilation of unit unix98pty for OpenBSD
+ fpterm: enabled compilation of unit FpTerm.InputOutputConnection.UnixPTY on OpenBSD
* patch by lag programming to replace bitcnt by popcnt, resolves
gitlab 0040962
- disabled compilation of the fcl-fpterm package on the JVM target
* set ra_addr_taken for addr. param only if really needed
* fix
gitlab 0040305: with type helpers now supporting inheriting from unique type aliases, declare a TRealHelper as a descendant of TDoubleHelper (cause Real is a Double)
+ added test
* fix typo in tests/readme.txt
+ extend test framework with ability to specify certain expected compiler messages using their ids
+ fix
gitlab 0040963: print suitable messages for local unit, include, library and object paths if -vt is given
+ added test
+ enabled compilation of unit unix98pty on FreeBSD
+ added FreeBSD to the UnixPTY OSes
* fix fpc_frac_real to properly thrown an exception on +/-Inf/NaN
+ enabled compilation of unit unix98pty on NetBSD
+ enabled compilation of ptc on NetBSD
+ added the IPC_PRIVATE constant for NetBSD
+ enabled compilation of unit ptcgraph on NetBSD
+ enabled compilation of ptckvm on NetBSD
+ added NetBSD to PtcKvmOSes and UnixPtyOSes
macOS: fix make all
Conflicts between FV and UnivInt units (Keyboard/Mouse) break the compilation
of ftckvm/fcl-fpterm
* always try to load libGL.so (which is a symlink), instead of libGL.so.1 on
NetBSD, because on NetBSD, the GL library can be either libGL.so.3, or
libGL.so.1, depending on how the GL library is installed
* get rid of the hack that tlabelnode inherits from tunarynode and stores a statement in left, resolves
gitlab 0040964
- exclude fpc-term from compilation on MSX-DOS
* Pascal code generation starting from json-schema
* Fix compilation under unicode rtl
Remove fpc_varset_* indirections if SSE support is guaranteed.
* example does not need cwstring unit
* Patch from Lipinast Lekrisov to implement setting method-type properties. Fixes issue
gitlab 0040970
* compilation fixed
* cosmetics: trailing spaces removed
Return MemSize from FreeMem.
Use TFPList.FreeAndNilDisposing in four more places.
Allow MemSize(nil) to match FreeMem(nil).
Unit ColorSel reimplemented (partially)
Namespaces in ColorSel unit
Enable Color select dialog in Textmode IDE
Pass -ll option to prepup utility to include longlog file into tar.gz testsuite results
Align htypechk.pas:is_better_candidate to the left edge of the screen.
* bootstrapping fix with 3.2 for arm-linux
* Refactor to use jsonwriter
* Remove references to openAPI
* properly reject function calls as target of absolute, resolves
gitlab 0040977
* better error message on invalid expressions for absolute
Fixing a bug where an empty postfix for enum was allowed
Implementing `TImplementedInterface.getcopy` to allow copying of interfaced objectcs
It's probably not fully correct(see comment about procdef copy) but
seems good enough ¯\_(ツ)_/¯
* do not eat the semicolon after an absolute expression to a symbol, noted in
gitlab 0040978
rtl/amiga: fixed missing charset unit in implicitunits
rtl/amicommon: reduce the string sizes in the IllegalDevice list of DOS unit. This in turn reduces binary sizes by almost 3 KiB.
rtl/amicommon: fix some comment typos in DOS unit. No functional change.
rtl/amicommon: fix some comment typos in Sysutils unit. No functional change.
Adding support for indexed properties in extended RTTI
* unnecessary directives removed
+ added a missing 'br 1' instruction in the code, generated by
GenerateCode_InitSharedMemory. This should fix the loading error in browsers,
when using multithreading.
+ Allow customization of response through callback
+ Allow customization of response through custom headers
+ Log error conditions (403,400,404)
* Show info in a more structured way
* Allow to compile with FPC 3.2.2
* Fix --coi option.
* Allow to specify custom response headers in config file [Headers] section
* texrtti18.pp is no longer relevant due to 59a1199110f4b4f9d937817994c2f369365ffbbe which adds support for array properties in Extended RTTI, so move the new texrtti20.pp over to texrtti18.pp
* clarify purpose of texrtti18 and texrtti19
rtl-console/amicommon: added a way to redefine colors externally in the video unit
* Build on top of new fpsimpleserver
* Move simple server to unit so it can be reused (pas2js webcompiler)
* Only build simplewebserver for oses with sockets
* Bridge to allow system.regexp* to work
* generate fmrx instruction only if the cpu has the vfp extension, resolves
gitlab 0040985
* Some cleanup, fix warnings/hints
Postponing building of VMT until inheritance chain is specialized
This commit does 3 changes:
1. Introduce new option `oo_inherits_not_specialized` indicating if
somewhere in the inheritance chain of an object there is a non
specialized generic parameter
2. Avoid building the VMT for an object which has a generic parameter in
the inheritance chain (fixes
gitlab 0040983)
3. When no vmt is build `insert_struct_hidden_paras` usually called as
part of `build_vmt` will be called seperately to add missing
parameters
* really fix bootstrapping with 3.2.2 on arm-linux
Use “set of (op_unary, op_binary)” to check for supported operator overloads.
* avoid code duplication :)
* Tests for code generation. Change type handling to create pascal type data for all data
Added TRttiIndexedProperty, the whole property handling infrastructure has been significantly redesigned
Fixed TRttiRecordType.ResolveProperties (records do not have a published section)
Remove conditionals that rely on not defined(FPC_HAS_CPSTRING).
Remove unused cutils functions.
* Rename version constant
* fix compilation on systems where SizeOf(CodePointer) <> SizeOf(Pointer): disable ToString for tkMethod on these systems for now
* in the Win64 ABI all const record parameters are passed by reference
* fix
gitlab 0040992: correctly handle padding inside the FFI Invoke manager
+ added test
* enable gtk2 for android, based on a patch (adapated to 3.3.1) by Alfred Glänzer in
gitlab 0040994
Add missing sub-directories from test/packages directory
* fix
gitlab 0040993: "inherit" the default RTTI options of a non-System unit from TObject as that picks up whatever had been declared in the System unit
* Make sure it compiles with dotted units
* add getfilesizeex as per 440BX' request.
* and redef with int64 typing
* Calculate dependencies correctly, only generate definitions for schema types
+ WASI threads: define FPC_WASM_WORKER_THREADS_CAN_WAIT. It is actually true in
all known cases (command line WASI or browser).
* OpenAPI, initial commit
* SetFilePointerEx, requested on forum.
* remove functions commented in the commdlg/ctl spinoff of 2008
Make SysUtils' TSystemTime declaration on non-Windows platforms compatible with the Win32 and Delphi declarations
Fix directories for some source files, based on suggestion by Alfred Glänzer in
gitlab 0040995
* Attributes for methods. Fixes issue 41001
* Attributes for methods test
fix AtomicDecrement(Cardinal) overload
* fix
gitlab 0039407: multi variable initialization is not allowed in any mode, so don't say it's only not allowed in Delphi mode
* pass all const record parameters on aarch64-win64 as references due to the habit of passing records as pointers by using the const modifier in the Windows unit
* correctly declare KNONVOLATILE_CONTEXT_POINTERS.IntegerContext for ARM64
* fix encoding of ash_savereg and ash_savereg_x
* on aarch64-win64 do the assignment of the exception frame pointer only after the SEH prologue has been done as there is no SEH directive for assigning a register to FP
* on aarch64-win64 we need to restore the stack by first increasing the stackpointer and then restoring FP to match the code from the prologue
* patch by Rika to fix position reporting in macro redefintions, resolves
gitlab 0040082
* don't generate pdata and xdata if there is neither a relevant prologue nor a handler
* when removing the STP FP,LR and MOV FP,SP instructions, also remove the corresponding SEH directives if available
set stack top to 801FFFF0 as in system.cnf
clearing the bss section on startup
this allows smart linking
* Patch from Alfred Glänzer, fix FindComponentClass to use actual typinfo structures. Fixes issue
gitlab 0041000
* Patch from Евгений Савин to fix missing ansistring conversion in TryCast. Fixes issue
gitlab 0041002
* made dblib/fpmake.pp to use the same structure as other fpmake files => avoids hint on unused variable during make all
* Fixed bug in "node_complexity" where a TLabelNode was put through an invalid typecast.
+ AtomicIncrement/Decrement overloads
* tests extended
* don't restore SP if we hadn't stored it originally
* also restore SP on aarch64-win64 if registers had been stored
* fix encoding for save_freg_x
* fix
gitlab 0041004: correctly determine the instruction pointer for leaf functions and set the CONTEXT_UNWOUND_TO_CALL context flag
* Avoid calling copy operator when moving data from temporary objects
When a function returns a managed record, a new temporary object is
created for the result, which is then copied to the real destination.
For managed records with a deep copy implementation, this can create
immense overhead. So instead this introduces a move, which basically
consists of
```pascal
procedure Move(var src, dst);
begin
Finalize(dst); // Finalize existing data
Move(src,dst,sizeof(dst)); // Shallow copy
Initialize(src); // Clear source
```
* nld.pas: use MOVE when assigning the function result from the
temporary return object
* rtl/inc/systemh.pas: Adding new macro to mark new RTTI version with MOVE
operation
* rtl/inc/compproc.inc, rtl/inc/rtti.inc: Adding new move mechanism when
indicated by the compiler.
Show proper dialog title for Add Watch and Edit Watch
Open fp.dsk for load in Read access only mode
Fix for backspace in empty line. Textmode IDE
Show line indents in Textmode IDE
Save and return to last directory in next Textmode IDE session
Markers move along with lines
Larger Change Directory dialog for larger console/terminal dimensions
Larger File Open dialog for larger console/terminal dimensions
Bracketed paste and OSC 52 in FV
Integration of bracketed paste and OSC 52 in Textmode IDE
RawReadString is limited to length of shortstring, don't read more than that
Global clipboard support long lines
* Patch from Евгений Савин to fix passing records to invoke. Fixes issue
gitlab 0041006
* Simple example for JOB call
* Adding new generic Extract and Swap function to RTL
These allow to move data from one variable to another without triggering
the copy operation. Extract makes use of the newly introduced move
semantic for function results and Swap uses System.Move to not trigger
the copy mechanism.
Fix for undo if chars are add in tab space
* Correct names, needed for fpmake to work
fcl-css: fixed resolving function
fvclip unit file name fixes
+ RiscV64: apply OptPass1OP also to addiw
* Patch from Евгений Савин to implement TValue.Cast for floats. Fixes issue
gitlab 0041011
* Fixes in array type handling
* Add request ID handling and callback-based result
* Reinstate ftlongword support, accidentally removed. Fixes issue
gitlab 0041014
Adding static properties to extended RTTI
implement missing TryStrToNetAddr
fcl-web: only disable some CGI related things on Amiga-like systems, where the current code assumes Unix or Windows
fcl-web: fixed a wrong condition in previous commit
* Add newline after uses clause
* OpenAPI to pascal conversion tool
* OpenAPI helper units and classes
* don't mess with boolean and/or operations in mixed short/full evaluated expressions, resolves
gitlab 0041012
Specialized fpc_copy_with_move_semantics for destructive copies.
* test that SysUtils.Swap<>() doesn't hide System.Swap()
* write additional info for the tests, might help to identify spurious failures
* move aliases of fpc_copy and fpc_copy_by_move_semantics to aliases and adjust their names to match other aliaes
* missing part of last commit
+ more RiscV extensions
* make use of F and D extension flags
Update errore.msg
typo fix and correct position of 11068
Update errord*.msg
new messages and other changes in errore.msg have been translated or ported to the German message files.
System.NetEncoding: Delphi-compatible Base64 and Base64String encodings
* RiscV: more reliable use_fma
TCustomBase64Encoding.DoDecode/DoEncode(array of Byte): no UTF8 encoding/decoding
* Corrections when writing file: write in 3.1 format
* Allow to compile with dotted units
Type maps signature changed
fix TCustomBase64Encoding.DoEncode(TStream)
* OpenAPI support for SQLDBRest
* Correct command-line working
* DWARF line info: only use the cached module if the base address also is the same; this can happen if the initial exception occurred at a random address outside the module, but the next stack address can be found inside the correct module
* Delphi-compatible output for tvalue.asstring for float value. Fixes issue
gitlab 0041027
Darwin: disable new assembler fill*word variants
They use interprocedural gotos at the assembler level, which is incompatible
with auto-generated CFI
* correctly calculate the number of labels of a c boolean in case statemnts, resolves
gitlab 0041025
* Fix TValue casts, patch by Евгений Савин, fixes issue
gitlab 0041030
fcl-passrc: started test for method param attributes
pastojs: added resourcestring
* patch by Lipinast Lekrisov: fix building ffi.pp on macOS, resolves
gitlab 0041035
Darwin: re-enable new assembler fill*word variants
Work around with an extra jump to an extra function.
* adjust comments to better match the situation with aarch64-win64 added to the mix
* ensure that the section with the case-labels is 8-Byte aligned
* on aarch64-win64 the case-labels are a list of 8-Byte aligned 8—Byte values, so adjust the alignment to avoid 2 32-bit loads
* use a static data label for the case-label table on aarch64-win64 to avoid the linker discarding it
* Add Delphi-Compatible new findCmdLineSwitch overload
* Add IsType with aEmptyAsAnyType param
* Implement some GetValue methods
* revert for loops also if the upper limit is non-constant
* Some fixes in handling of headers
utcfpmonitor: fix compilation on targets where TThreadID is not an ordinal
* increase stack margin for x86-64 so back tracing a stack overfow with line info does not cause another stack overflow
* Add missing methods to thunk class for parent interfaces without RTTI
* Patch from Евгений Савин to fix TValue.From
. Fixes issue gitlab 0041013
* Allow to parse internal symbol names generated for generics.
* Do not call parsing if JSON is empty (e.g. return 204 with empty body)
* properly take care of tempinitcode when calculating def./use. sums of tempcreate nodes
* avoid that types of limits of reverted loops are widened
* System.Types for Delphi code
* Search for correct element type when checking array types
* Correctly get callback type
* Patch from Amexander Bagel to restore Delphi-compatible behaviour in TThread.Queue. Fixes issue
gitlab 0041043
* correct TValue.Cast
, patch by Евгений Савин. Fixes issue gitlab 0041042
Editor load files in read only mode
* Fix issue where refresh causes access violation in TBufDataset. Fixes issue
gitlab 0040987
* less strict condition when a loop decrement can be moved to the end of a loop to increase code quality
* Last patch did not contain all changes...
* Typecast to pointer of self() needed
* Store session info only for project files
* Make names unique across modules
* Unique names for imports
* better code for ... downto 1 for-loops
Don’t use explicit Move in Extract and Swap.
Allow to use ld64.lld if -XLL option is used
* don't see illegal calling conventions for procedure variables, resolves
gitlab 0041041
* properly calculate the size of enumeration types having negative elements and a max. value exceeding the upper bound of
the elsewhere matching signed type, resolves
gitlab 0041019
* Localhost fallback in case no DNS servers found. Patch from NiteHawk, fixes issue
gitlab 0041047
Add missing fpcssresparser unit in fcl-css package
Check that a normal real division does not generate an exception
Add explicit -CE option and check that mysqrt returns zero for negative arg
* Allow Boolean -> TValue
* Remove erroneously commited commented line
fcl-base: less typos after 5887b1fe
* draft of improving Addi0Op2Op
* Patch from Don Siders to fix typo in CSS attribute name. Fixes issue
gitlab 0041050
* Int64 support for AsType
+ SysResetFPU for Aarch64
* ensure always an exception is raised in genmath.inc if appropriate
cmpxchg16b instruction uses no size suffix in ATT syntax
* switch i386 RTL to provide the atomic intrinsics instead of Interlocked* functions
* switch x86_64 RTL to provide the atomic intrinsics instead of Interlocked* functions
fcl-passc: fixed GetDeclaration of specialize param types
fcl-passrc: useanalyzer: fixed marking inline specialize expression of a record method
- remove unused variables
- remove unused variables
* switch Aarch64 RTL to provide atomic intrinsic helpers instead of Interlocked* functions
* switch ARM RTL to provide atomic intrinsic helpers instead of Interlocked* functions
* switch M68k RTL to provide atomic intrinsic helpers instead of Interlocked* functions
* switch i8086 RTL to provide atomic intrinsic helpers instead of Interlocked* functions
+ zen5 architecture for completeness
* switch SPARC 32 RTL to provide atomic intrinsic helpers instead of Interlocked* functions
* switch SPARC 64 RTL to provide atomic intrinsic helpers instead of Interlocked* functions
* switch MIPS RTL to provide atomic intrinsic helpers instead of Interlocked* functions
* switch PowerPC 32 RTL to provide atomic intrinsic helpers instead of Interlocked* functions
* switch PowerPC 64 RTL to provide atomic intrinsic helpers instead of Interlocked* functions
* switch Z80 RTL to provide atomic intrinsic helpers instead of Interlocked* functions
* switch WebAssembly RTL to provide atomic intrinsic helpers instead of Interlocked* functions
* switch RISC-V 32 RTL to provide atomic intrinsic helpers instead of Interlocked* functions
* switch RISC-V 64 RTL to provide atomic intrinsic helpers instead of Interlocked* functions
* switch AVR RTL to provide atomic intrinsic helpers instead of Interlocked* functions
* switch Xtensa RTL to provide atomic intrinsic helpers instead of Interlocked* functions
* switch LoongArch 64 RTL to provide atomic intrinsic helpers instead of Interlocked* functions
Fix TJSArray._GetStrings: exit once you get correct value, do not fall through to raising error
* inline nodes can specify whether their result needs to be used
+ add tests for atomic intrinsics
+ add support for Delphi-compatible atomic intrinsics
Base64: UnicodeRTL support
Pas2JS: showException with stack trace for RTL Exception object
* Patch from Andrew Haines to add EC_* functions. Fixes issue
gitlab 0041056
* set types of start value calculation correctly when doing strength reduction, resolves
gitlab 0041054
* with all existing RTLs switched over to the atomic intrinsics, the define FPC_SYSTEM_INTERLOCKED_USE_INTRIN can be removed again
* test failed only with strength reduction onm so compile with -O3
* Append extension, needed for Laz codetools. Fixes issue
gitlab 0041061
* Add service module creation
m68k-amiga: fix typo from commit e94d02a0 that broke the build
* Add overload, needed when specializing in Delphi mode
* fix
gitlab 0041062: correctly handle atomic intrinsics inside generics
+ added test
* ensure that any Boolean type can be used for the Succeeded parameter and that there are no unitialized warnings
+ added test
+ add test that checks that the Atomic*-intrinsics work correctly inside generics
* apply Addi0Op2Op to more operations
* test might not be precise enough with fastmath
* skeleton to unify the RiscV paramgr
* first routines unified
* more RiscV paramgr unification
* Correctly handle missing extensions for dotted include file names. Fixes issue
gitlab 0041064
* more RiscV paramgr unification
* correctly disable the Atomic*Lock functions for the fpc_atomic_cmp_xchg_*() helper fallback of the CPU size
Add more specialized atomics for i386 and x86-64.
Shorten i386 and x86-64 atomic implementations to offset the LoC cost of the previous commit.
Shorten generic atomic implementations to offset the LoC cost of the commit before last.
This also fixes wrong fpc_atomic_sub_8 and fpc_atomic_sub_16 emulations.
* Add all test files to project
* Allow assign of pointer to TValue. Patch by Lipinast Lekrisov
* Introduce AsRecord. Patch by Lipinast Lekrisov
* Allow to cast pointer TValue to class pointer. Patch from Lipinast Lekrisov
* TValue.From with buffer and typeinfo. Patch from Lipinast Lekrisov
* Delphi-compatible ToString for TRttiType. Patch from Lipinast Lekrisov
* Introduce AsOrdinal. Patch by Lipinast Lekrisov
* Get method by address. Patch by Lipinast Lekrisov
* Correct TRttiOrdinalType.GetIsOrdinal. Patch from Lipinast Lekrisov
* Introduce IsClassProperty, Index and Default in TRttiProperty. Patch from Lipinast Lekrisov
* Fix compiler warnings and hints
* Introduce TRttiMethodType.GetMethodKind. Patch by Lipinast Lekrisov
* Read/Write static properties. Patch from Lipinast Lekrisov
* Invoke for record methods, refactoring method rtti by Lipinast Lekrisov
* Improvements to TValue.ToString by Lipinast Lekrisov
* Small improvement in setting method prop, by Lipinast Lekrisov
* Patch from Lipinast Lekrisov to implement indexed properties
* Forgot to commit, main part of indexed properties implementation by Lipinast Lekrisov
* continued unification of RiscV paramgr
Reducing indirect addressing to out parameters
Replace tkernel_timespecs by TTimespecArr type to allow compilation with linux RTL using libc
* TBasicActionLink.Update must always return value. Fix issue
gitlab 0041070
* compiled by riscv64-linux-gnu-gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
* major parts of the RiscV paramgr unified, improves code generation and less failures in RiscV32 regression tests
* proper naming
- remove readln
* partly revert 8cd6606970c8fedda95a3411d684dbd57379b46d, resolves
gitlab 0041052
(cherry picked from commit 854d4e6f4a5b53040160f8921d0089167f6b00be)
* formatting
+ test for issue
gitlab 0041066 which was already resolved previously
* libraries must be marked with %norun
* TValue.Asstring for double
* Small change in indexed property .ToString
* SMall optimization in TRttiInstanceMethod.GetParameters
* GetDataSize is 0 for empty TValue
* GetHasExtendedInfo returns false in TRttiMethod
* optimization of TRttiInstanceType.ResolveExtendedDeclaredProperties
* Extend error message SErrInvokeArgInvalidType
* Fixes after re-running test
* Order of parent/child methods is now same as in delphi documentation
* Correctly set FDeclaredProperties length
+ SMALL_TEST define for slow CPUs/soft float
* fpu type must be fpu_soft if the cpu is rv32ima
* RiscV: emit an error if fpu_fd is used on a cpu without f and d extensions
* RiscV: floating point registers are saved only for hard float ABIs
+ RiscV: vector registers
Do not add abi-call0 to linker options for esp8266
+ write .option pic directive if needed
* make use of LA pseudo-instruction
+ apply OptPass1OP to LA as well
* fix
gitlab 0041072: proc_to_procvar_equal_internal() might be passed a procvar in case of "procvar := @
", reject that as incompatible
+ added test
* RiscV: unify push_addr_param
* fix
gitlab 0041074: adjust conversion level of class/interface to pointer and class to interface conversions so that sub class to class conversions take precedence
+ added tests
* fix
gitlab 0041063: don't add classrefdefs or objectdefs to the WPOInfo if they are declared locally (e.g. capturer instances)
+ added test
* RiscV: push_addr_param unified
* fix
gitlab 0041007: only unlink typesyms from their typedefs when releasing an unused implicit specialization if the typesym was created for the implicit specialization
+ added test
Remove one of two CPULLVM define macro
def_system_macro -> undef_system_macro (fix oversight as if then block is equal to else block)
* TList<>.Pack() with method pointer parameter already passes Default(T) to the check function, so use R instead of Default(T) in the Pack() overload without method pointer
* compiled with clang-1205.0.22.9
* keep track of the current specialization state of the current module
* keep track of the current generic def in the specialization state
+ add utility function to check whether a generic belongs to the currently parsed generic even if it's further up in the specialization stack
fcl-passrc: parse and resolve attributes of method arguments
* when parsing generic parameter types allow the use of generics that are part of the current specialization stack (this can be the case if a generic is used inside itself as a type parameter for a specialization)
+ added tests
- remove unnecessary subclassing inside TCustomAVLTreeMap<>
* fix
gitlab 0040653: don't allow the use of a class during its declaration as parent for a nested class (Delphi compatible)
+ added test
* apply OptPass1OP to SLT/SLTU as well
* reset oo_is_forward object option for external classes after parsing the parent classes
* RiscV: write also nopic directive
* fix compilation on i8086 where depending on the memory type code and data pointers may be different (Note: this does not mean that the code works as the RTTI data generated by the compiler does not seem valid either)
* extended RTTI now includes static properties, so adjust the test to reflect this
* use dispose() instead of freemem() for consistency with the allocation of pmessagestaterecord
* ensure that flushpendingswitchesstate had been called before the start of replaying tokens
* apply message state to the pending state so that they are applied at the correct moment
* when restoring the state after parsing the last token of the token buffer append the message state to the pending state so that they are reapplied at the correct time
+ add tests for the adjusted message handling, especially one that checks that messages inside generics can be silenced correctly
fcl-passrc: fixed forbid anonymous range type as proc arg type
fcl-passrc: parser: forbid local types as proc args
fcl-passrc: parser: forbid anonymous/local types in proc args and result types
* tai_eabi_attribute -> tai_attribute so it can be used by other architectures
* write basic attributes for riscvXX-linux
* Add YAML parser & converter to JSON
* Allow to read YAML files.
+ add method to TMessage to check whether a message is valid
* don't use tmessage.setverbosity() to check whether the message is valid as it should only be applied when the switches are flushed, so use the new tmessage.valid() instead
* ensure that current_settings.pmessage is reset when doing a replay and when loading the current message state from the token stream
* Some formatting fixes, make sure string argument is const where possible
* Handle case where there is no end-of-document
* Fix extensions in filenames
* Add possibility to scan single document in consecutive calls
* Use IsYAMLFileName, detect other extensions
* also (re)store the pending state when replaying a token stream
* reset the message state only inside flushpendingswitchesstate(), not during $POP itself
- current Lazarus IDEs can handle generic methods, so no need for NoGenericMethods anymore
* store the current verbosity as part of the settings so that they're stored as part of a generic token stream as well
* ensure that only the newest message state is applied
* disable notes for the Collections.Generics unit
- remove further unnecessary sub classing of a specialization
* don't use $MINSTACKSIZE and $MAXSTACKSIZE on non-Windows instead of disabling the warning
WPO: don't crash on TP-style objects with only abstract virtual methods
* the message id might not be at the start of the line, but after a visibility specifier followed by a colon and space
* use StartsStr() instead of a manual copy to check whether the line starts with the message id
* declare Msgs parameter as "const" for better code generation
* fix trvinlinenode.second_fma
Extended RTTI: generate RTTI for Objective-C fields like for generic pointers
Resolves
gitlab 0041034
+ as-macos for using as from Retro68
* fix
gitlab 0040876: correctly check for generic constant parameters without concrete value
+ added test
* better checking of valid addr_no
* write sections/section names correctly for as-macos
* Build unixsockets for linux
fcl-passrc: option to parse directive rtti
* MacOS Classic uses apparently very similiar mechanisms for the TOC as powerpc-aix
* .toc sections do not need a .csect on powerpc-macosclassic
* write " as octal number as well in assembler output, it is more compatible
* Some improvements to proxy server module generation
fcl-passrc: resolver: inherit RTTI visibility
* fix
gitlab 0038122 in a more correct way than previously done: instead of adjusting the methodpointer node when it's a deref node adjust what value is stored in a temp if a call node is encountered: store the pointer value, not the pointed to value to avoid the reference getting lost
+ added test (note: the test fails at least on x86_64-win64 due to some different reason :/ )
+ added header translation for the JACK Audio Connection Kit library
* RiscV64: optimize 32 bit shift instructions as well
* fix comment (was refering to OpenBSD, instead of JACK :) )
+ added libjack example program simple_client.pp (translated from simple_client.c)
+ added libjack example program latent_client.pp (translated from latent_client.c)
+ added libjack example program transport_client.pp (translated from transport_client.c)
* TAutoObject.GetTypeInfo function should return DispTypeInfo instead of ClassInfo. Fix by Korba812. Fixes Eventsinks for openoffice.
https://forum.lazarus.freepascal.org/index.php/topic,68806.0/topicseen.html
* cleanup merge artefacts
+ added header translation for the jack/ringbuffer.h header to libjack
+ updated t_jack.h2paschk with the new ringbuffer structures
* if an outer capturer is required then that outer capturer must not be optimized into a register (fixes compilation with -Ooregvar enabled (e.g. in -O3))
+ added libjack example program impulse_grabber.pp (translated from impulse_grabber.c)
+ added libjack example program showtime.pp (translated from showtime.c)
+ added header translation of jack/uuid.h to libjack
* dotted RTL compilation fix after 9a7d1ad07cf35568b61952d9b725468b1119000e
* fixed compilation of libjack with the dotted RTL
+ added header translation of jack/session.h to libjack
+ added libjack example program simple_session_client.pp (translated from simple_session_client.c)
+ added header translation of jack/thread.h to libjack
* libjack: fix include file dependency in fpmake.pp
Use correct defines for ALUSInt, fixes problems encountered in webassembly
* min/max optimization is carried out only if -O2 is used
* test also with FASTMATH on and adapt for tests not supposed to work (they include the use of NaN)
* use HAS_MINMAX_INTRINSICS define
+ random bits for quad support on RiscV
* apply OptPass1FOP to FMIN/FMAX as well
+ min/max optimization support for RiscV
+ OptPass1FSGNJ optimization
+ added header translation of jack/statistics.h to libjack
* restore old error value
pastojs: extended rtti for methods and properties
pastojs: default property rtti visibility publishedpublic
* Better fix for atomic operations on wasm
Avoid wrong typecast by checking explictly that hp1 is indeed an instruction
* libjack: use external on haiku and aix, because they don't support weakexternal
+ added header translation of jack/net.h to libjack
+ added header translation of jack/midiport.h to libjack
+ added header translation of jack/metadata.h to libjack
+ added header translation of jack/jslist.h to libjack
+ added header translation of jack/intclient.h to libjack
+ add missing cpu64bit defines for consistency
+ added header translation of jack/control.h to libjack
* fix
gitlab 0041091: apply patch by @yoozaa80 to use the length of the WideString instead of the single-/multibyte encoded string
+ added libjack example program midisine.pp (translated from midisine.c)
+ added libjack example program midiseq.pp (translated from midiseq.c)
+ added libjack example program metro.pp (translated from metro.c)
cpuNbitalu is not the correct type for fpc_atomic_cmp_xchg_alu on webassembly
* New fix for fpc_atomic_cmp_xchg_alu, as suggested by Sven
* Patch from Andrew Haines to fix creating signature. Fixes issue
gitlab 0041058
* Test for es256 signature, by Andrew Haines
* make small test lest strict
+ add intrinsic for 8-bit atomic cmpxchg for wasm32 (this way the fallback for cmxchg is no longer used for wasm32)
- remove unnecessary defines
* apply patch by Michael Ring to fix compilation for ARM THUMB
+ fix and enable compilation of libjack for Win32 and Win64
* fixed compilation after previous commit
Window list dialog windows size adjustment
Browser information filters
Browser information mouse scroll
Command line parameter -C affects names of *.cfg, *.dsk and *.ini
Small editor draw optimization
Screen width more than 255 chars (for Unixes at least)
Make TFPMemo view srollable even if no scrollbars are attached to it
Correct mouse button mapping under Unix
Detach List scrollbar value change of focused item change
File open dialog file list adjustments after resize
Remove some redundant code
Message window can be scrolled beyond second to last item
FV add mouse triple click
Mouse double click select word, triple click select line
+ RiscV: make use of the fneg.* instruction
Save As option in browser window
Every compile gets actual current directory (fix for Textmode IDE)
fcl-passrc: fixed proc arg file
- remove what appears to be debug output (will otherwise lead to exceptions on systems where Output is not open (e.g. Windows service))
Fix compilation of riscv32 compiler
* Fix aggregates calculation. Fixes issue
gitlab 0041018
(cherry picked from commit 7fa6fa257b0db7472a5261721abff092ef59eb9b)
* Correct typo in class name TLocalMenuOutlieViewer -> TLocalMenuOutlineViewer
* updated copyright year to 2025
* fix compiling binaries on JVM: the entries list contains pinitfinalentry values, not tused_unit
* missing Copyright year update
+ RiscV: make use of the fl* rd,symbol,rd pseudoinstruction
+ RiscV: make use of the fmv.w.x/fmv.d.x instruction to load 0.0
* factor out TRVCpuAsmOptimizer.OptPass1Sub
* remove accidently committed debug statement
* RiscV: check for cpu capabilities before using fmv for loading zero
Check that index value is not below lower bound in TMessage.Valid method
* TProcess.ThreadHandle should reference the FThreadHandle field, not FProcessHandle
* reformat statement for better readability
* don't cast the succeeded node succn to a tcallparanode (it's usually a tloadnode or something similar instead)
* change some getglobaldatalabel into getlocaldatalabel to simplify code if pic is used
* don't move the output/stderr handle to the end on Windows and WinCE as that is handled by TIODescriptor.CreateFileNameHandle()
* the null file is called NUL, not NULL on Windows/WinCE
* leave GetFileContents() early if the file size is 0 to avoid a range error if the RTL is compiled with range checks
+ added example program capture_client.pp to libjack (translated from capture_client.c)
* factor out TRVCpuAsmOptimizer.OptPass1SLTx
* fix
gitlab 0040979: don't recurse further into the nested hierarchy for code generation if the function is generic
+ added test
* package sndfile (whose compilation has been disabled for quite a while) renamed libsndfile
+ fix fpmake.pp and enable compilation of package libsndfile
- libsndfile: removed the ctypes. prefix from all types, in order to fix compilation with the dotted units RTL
LoongArch: Always emit la.got for global symbol
* first complete working version
* New testsuite database structure
* Fixes after tests with foreign keys enabled
Use '__global_pointer$' special linker symbol to set gp,
because its value can be different from __BSS_END__ - 0x800.
Details from binutils-2.40/ld/emulparams/elf32lriscv-defs.sh
// We must cover as much of sdata as possible if it exists. If sdata+bss is
// smaller than 0x1000 then we should start from bss end to cover as much of
// the program as possible. But we can't allow gp to cover any of rodata, as
// the address of variables in rodata may change during relaxation, so we start
// from data in that case.
OTHER_END_SYMBOLS="${CREATE_SHLIB-__BSS_END__ = .;
__global_pointer$ = MIN(__SDATA_BEGIN__ + 0x800,
MAX(__DATA_BEGIN__ + 0x800, __BSS_END__ - 0x800));}"
Fix compilation failure of tests/utils/dotest.pp
* Rename testlist to tasklist
+ RiscV: write arch attribute
* fix duplicate identifiers
* upated syscalls
+ RiscV specific syscalls added
+ support for RiscV hwprobe syscall
+ test
* fixed and extended test to support all extensions
fcl-passrc: fixed error message when namespace not found
fcl-passrc: useanalyzer: fixed typeinfo(Result)
Fix compilation of riscvXX-linux targets with -dFPC_USE_LIBC
fp parameter N - no long file names (DOS only)
* make rounding mode and exception mask thread variables as well
Riscv64 linux also needs _STAT_VER_LINUX to be zero for correct libc rtl behavior
Browser information for generic records
* factor out TRVCpuAsmOptimizer.OptPass1SLTI
* Add possibility to specify UTC or not
* Fix compilation when using threading
* Loop variable must be integer, count can be -1
Fix _FPC_xtensa_exit first parameter passing
+ add an SysInitFPU implementation
* Patch from Eric Grange to fix TRectF.FitInto
* Generate also string (enum) type definitions
* call SysResetFPU and SysInitFPU in InitThread for the time being
+ added function fpc_wasm_invoke_helper to the WebAssembly RTL
+ WebAssembly internal linker: rewrite the fpc_wasm_invoke_helper function in the linker, so that it becomes functional
+ initial implementation of System.Rtti.Invoke() for WebAssembly. Currently
only works with the internal linker. Not all types have been tested, yet.
* unify SysInitFPU and SysResetFPU on RiscV
* RiscV: unify memory barrier functions
* Reworked testsuite database
* RiscV: unify stack related functions
* proper handling for boolean results (especially Boolean64 and QWordBool) in System.Rtti.Invoke
* also handle enumeration results and integer result sizes, other than 32-bit in System.Rtti.Invoke for WebAssembly
* couple of wrong test runner directives fixed
* better error message in case of illegal test runner directive
* fixed test runner directives
* fix test runner directive
+ atomic operations for RV32
+ RiscV: support ZMMUL extension
* Fix naming for string types
* Correction in naming of types
* fixed WebAssembly code generator internal error when passing real constants as
constref parameters. Also fixes test webtbs/tw41011
* Patch from Simone Tacconi to fix GetDeclaration for specialize types. Fixes issue
gitlab 0041095
* Patch from Simone Tacconi to fix GetDeclaration for string types. Fixes issue
gitlab 0041099
* Patch from Simone Tacconi to fix WriteProc. Fixes issue
gitlab 0041100
* Patch from Simone Tacconi to fix set getdeclaration. Fixes issue
gitlab 0041106
* Patch from Simone Tacconi to fix set getdeclaration. Fixes issue
gitlab 0041107
* Patch from Simone Tacconi to fix alias type getdeclaration. Fixes issue
gitlab 0041109
* Patch from Simone Tacconi to fix alias type getdeclaration. Fixes issue
gitlab 0041116
* Patch from Simone Tacconi to fix alias type getdeclaration. Fixes issue
gitlab 0041115
* properly write RV32E/RV64E architecture tags
Interface unref should zero the pointer first.
* Fix wrong format specifier
* Complete TPasClassType.GetDeclaration. Patch by Simone Tacconi. Fixes issue
gitlab 0041114
* Fix parsing of system unit
* Patch from Simone Taccone to allow to show accessors on properties. Fixes issue
gitlab 0041123
* Fix by Simone Tacconi to fix with..do writing. Fixes issue
gitlab 0041124
Shortcut declocked on refcount = 1.
* Fix from Dokkie8844. Fix blob access in Firebird 4.0, fixes issue
gitlab 0040506
pastojs: extended rtti: strict private, protected
* Add TJSAtomics.waitAsync
* Fix compilation for unicode
* fixes in test test/cg/tcalext6.pp for compatibility with the WebAssembly ABI,
which does not support calling an external cdecl function with different
number of parameters than it was declared with.
* WebAssembly codegen: fixed access to absolute variables, pointing to just a constant address, e.g. var a: longint absolute 5;
* WebAssembly: also handle dup=true in thlcgwasm.prepare_stack_for_ref for absolute address refs
+ added ref2string debug helper function to the WebAssembly code generator
* WebAssembly codegen: enable -CN nil pointer checks in more places: a_cmp_const_ref_stack, a_cmp_ref_reg_stack and a_cmp_reg_ref_stack
+ added option -CN to tests tabsvr6.pp and tabsvr7.pp in order to make them work in WebAssembly
* override tcpuparamanager.has_strict_proc_signature and return true for WebAssembly
* check for 64 bit registers in TX86AsmOptimizer.RegReadByInstruction as well for sanity reasons
* added short name for fcl-hash
pastojs: rtti flag for class property
fcl-passrc: fixed generic templates as string
* SubLea2Lea has to check both times for equal super registers, resolves the second part of
gitlab 0041126
Remove NewAnsiString & NewUnicodeString.
pas2js: make typeinfo(char) a tTypeInfoInteger descendant
pastojs: convert exit(ComIntf) to setting Result variable, issue
gitlab 0039292
pastojs: fixed refcount for-Intf-in-something-do, issue
gitlab 0039293
* Test from merge request !312
Fix NaturalCompareText for string = unicodestring.
* Allow to process .fmx files just as .lfm/.dfm files
* Allow host environmentto get main and self thread IDs. Needed for inter-thread messaging in browser
Change CompareChar uses inside compiler/RTL to CompareByte.
* Call correct newinstance when overridden. Fixes issue
gitlab 0041090
* TDirectory.GetDirectories should actually only return directories. Patch by Artem Izmaylov. Fixes issue
gitlab 0041137
+ a_bit_scan_reg_reg gets a flag if src cannot be zero: this simplifies the generated code
* Patch from Lipinast Lekrisov to get/set record-typed values. Fixes issue
gitlab 0041129
* Correctly write labels. Patch by Simone Tacconi. Fixes issue
gitlab 0041133
+ function node_not_zero and make use of it
Make use of not_zero in x86 bitscans.
* extend node_not_zero and make more use of it
+ extend node_not_zero to take range types into account
+ aarch64: if no FPC_DIVBYZERO call is needed, div nodes do not generate calls
* apply OptPass1Data to UDIV/SDIV as well
* node_not_zero can be apply to int->int conversion only if no data is cut off
+ apply OptPass1Data to variable shifting/rotating operations as well
* WebAssembly: optimized the number of nested blocks inside the invoke helper
* WebAssembly: impose a limit on the br_table instruction length, when generating the invoke helper
* WebAssembly: micro optimization in the invoke helper - omit the last 'return' instruction
* API to share JOB objects between threads (if browser allows)
Disable high(taitype)<=31 check for LLVM compiler
* allow absolutes on open arrays (use of this is doubtful though), resolves
gitlab 0041147
* make use of not_zero in tbasecgarm.a_bit_scan_reg_reg
Fixed infinite recursion in `ASNFetchOID` in fpasn.pp
* Object ID must be controlled by wasm side
* ID is now handled in webassembly
+ RiscV64: make use of rev8 instruction
* WebAssembly internal linker: invoke helper code generation moved earlier,
before the relocation fixups are applied. This should make the DWARF debug
line info correct again. Also, the offsets in the linker map file should be
correct now, as well.
+ WebAssembly internal linker: add the contents of the type section to the map file
Add missing allow C like operators to head of utcstrutils unit source
+ WebAssembly internal linker: write the indirect function table to the linker map file
* x86_64: Extension to MovMov2Mov optimisations to allow more MOVL to MOVQ zero-extensions
Check for refcount = 1 first.
+ x86: proper flag (de)alloc in a_bit_scan
* RiscV: fixing spilling_get_operation_tpye for LI
* improve complexity calculation for tempref nodes
+ WebAssembly internal linker: write the contents of the memory section to the linker map file
+ WebAssembly internal linker: write the export section to the linker map file
+ WebAssembly internal linker: write the import section in the linker map file
* WebAssembly internal linker: write the memory section before the export section, so it appears in a more logical order in the map file
+ WebAssembly internal linker: write the global section in the linker map file
* fixed warning after previous commit
* WebAssembly internal linker: refactored the writing of the memory section and
the memory import section: introduced a TWasmMemoryType record, and structures
for holding the memory entries in the import and memory sections, instead of
writing them in an ad hoc manner. The memory information in the linker map
file is now also a little more detailed.
* RiscV: play safe in taicpu.spilling_get_operation_type
Make functional fp parameter return to last directory: -R, -R+ and -R-
Remove TFPMemo flickering of selected text while mouse button is still pressed.
Fp Window->Tile - enable, disable correctly.
Refactor menu change code.
New window arrangement option in menu - Stepped.
Fix TGroup.IndexOf. Report Last as last not as 1.
Complete ColorSel units load and store procedures.
No mouse up events for mouse wheel.
Implemented dedicated mouse wheel event in FV.
Update Textmode IDE to new mouse wheel event.
* Remove outdated version number
* Example from Margers from merge request !953
m68k: new CPU capability - the TST instruction supports address registers (68020+ and CF)
m68k: do not try to optimize CMP #0,Ax to TST Ax, if the CPU doesn't support it
m68k: refactor - use the new CPUM68K_HAS_TSTAREG capability where applicable
* RiscV: fix AddiAddi2Addi optimization
* Extend GetLocalTimeOffset to return Dst or not
* Minimal TTimeZone class for Delphi compatibility
* Allow TFormatSettings.Create with string (using callback)
* RiscV64: make use of zext.w instruction if available
* RiscV: handle more instructions in taicpu.spilling_get_operation_type
* fix typo
* properly pass zba, zbb, zbs to march
Disable all packages that do not compile for jvm-android
Try to solve compilation failure for msdos OS
Fix ld.lld options for i386-freebsd target
Disable limitation of nonlocal setting for LLVM compiler
* RiscV64: make use of sext.h instruction
* x86: Fixed bug in "MovMovMov2MovMovMov" optimisation where a register wasn't properly tracked
* WebAssembly: fixed type conversion from pointer to qword (fixes bug
gitlab 0041092)
* WebAssembly goto support: skip unused labels in resolve_labels_via_state_machine. Fixes
gitlab 0041093
+ RiscV32: use sext.b if available
* most of tcgcallparanode.secondcallparan's code was moved into two new methods:
secondcallparan_do_secondpass and secondcallparan_after_secondpass. These are
protected methods, meant to be called in secondcallparan's descendants, to
provide alternative parameter handling algorithms (needed for WebAssembly). No
functional changes.
* On WebAssembly, when calling a function, first generate code for evaluating
all the parameters, and only after that, push them on the stack. This avoids
problems with our 'goto' support.
+ enabled compilation of package fcl-res for WASI
* fixed WebAssembly goto in case statement crash with internal error 2021011801
+ WebAssembly: added support for using saturating (non-trapping) float-to-int conversion instructions via the new target switch SATURATINGFLOATINGTOINT
* the FPC_WASM_SATURATING_FLOAT_TO_INT_CONVERSIONS define shortened to FPC_WASM_SATURATING_FLOAT_TO_INT
* increased the max string length of ttargetswitchinfo.define in order to fit the new define
* fix compilation of ppudump
- removed wasm32 from the NO_NATIVE_COMPILER_CPU_LIST
fcl-css: parse pseudo elements as unary or binary elements, resolver: pseudo element
* WASI: workaround for FindFirst/FindNext opening the current directory, by using its full name
* WASI: avoid using inner preopened dirs, that escape to the parent with '..',
in case there's an outer preopened dir
+ define EOL_ONE_CHAR for the WASI platform
* Fix compilation : implement correct GetLocalTimeOffset overload
* Various IsXYZ functions for TValue
fix KeepConnectionTimeout loop
* x86: Fixed bug where flags register wasn't tracked during
long-range "AddMov2LeaAdd" and "SubMov2LeaSub" optimisations
* New test to catch Boolean added to QWord on i386
* x86: Refactoring register update code in "OptPass2ADD" and "OptPass2SUB"
* x86: "OptPass2ADD" and "OptPass2SUB" now force another iteration if "OptPass2MOV" returned True
Fix compilation of rtl for mipsel-ps1 target
* x86: Fixed bug where "aoc_ForceNewIteration" wouldn't update the registers properly in some circumstances
* x86: Fixed oversight in LeaLea2LeaLea optimisations where bad code is
generated if the intermediate register appears in the first reference
* New test for detecting faulty "LeaLea2LeaLea" optimisations
Fix compilation of mips-linux rtl using 3.2.X compiler
* system_wasm32_wasi renamed system_wasm32_wasip1
* the name string of the WASI target changed from 'The WebAssembly System Interface (WASI)' to 'The WebAssembly System Interface Preview 1 (WASI 0.1)'
* system_wasm32_wasi_info renamed system_wasm32_wasip1_info
+ add WASI as extra define for the wasip1 target
* wasi renamed wasip1 in fpcmake
* wasi renamed wasip1 in fpmkunit
* renamed wasi -> wasip1 in fpmake.pp files
* ifdef on wasip1 when setting the source OS info to wasip1
* wasi renamed wasip1 in the compiler help screen
+ compiler support for a new target: wasip1threads
+ for consistency, added ps1 to the commented enum in fpcmmain.pp
+ support wasip1threads in fpcmake
* fixed compilation of ppudump
* WASI renamed WASIp1 in ppudump
* wasi renamed wasip1 in the utils/*/fpmake.pp files
* increased string size of tsysteminfo.shortname in order to fit 'wasip1threads'
+ register the wasip1threads target in the compiler
* Invoke helper also needs generic ids
+ added system_wasm32_wasip1threads to systems_wasm
+ added wasip1threads rtl
+ added wasip1threads to fpmkunit
* factor out TRVCpuAsmOptimizer.OptPass1Andi
+ added wasip1threads to fpmake.pp
* Add delphi-compatible TList constructor with array of values
+ added system_wasm32_wasip1threads to systems_internal_sysinit
+ also handle system_wasm32_wasip1threads in the compiler anywhere system_wasm32_wasip1 is handled
+ added tf_no_pic_supported to the WASI platforms
* fix dotest.pp after the wasi->wasip1 rename and the addition of wasip1threads
* test/cg/obj/wasi renamed test/cg/obj/wasip1
+ added .o files for the C linking tests for the wasip1threads platform
* moved the common WASI RTL source files and includes to a 'wasicommon' dir
* WASI system.pp: check that WebAssembly threads are always turned off for the wasip1 target, and always turned on for the wasip1threads target
* avoid that not explicitly as vectors marked arrays end up in registers where they are handled not properly
* factor out TRVCpuAsmOptimizer.OptPass1SLTIU
* More specific names for detailed test run results
* Fix error in version sorting
* Remove extra spaces in field names
Use default URL for sources if CategoryId <= 1
* Some corrections in output
Fix ShowLastLog and ShowHistory methods
* Add tsutils to uses clause
* Handle "internalerror generated" suffix found in log file, but not in longlog
* Try to handle mixed separation/output lines
* Do not call verbose if EscapeSQL does nothing
* fix further instances where reallocmem instead of sysreallocmem is used to allocate the cmdline buffer, resolves
gitlab 0041168
* another ; after then removed, hopefully finally resolves
gitlab 0041171
Change branch and jump destinations to byte based distances.
* test for last commit a43f1bc1
* better error reporting
* indentation
Check rjmp destination range.
* wasip1threads needs 14 characters
* Enlarge target os/full variable for wasip1threads
Remove tscgiapp.pp from dependency of testsuite executable, as this source was removed by last commit
+ tests for b0003f71dda8388ad74292edb82ba401296fc106
Add/actualize CPUX86_HAS_SSSE3.
* Allow to specify list of banned classes.
* Add GetTypeName, GetPropName
Add help for -Q/--sql option
* factor out TRVCpuAsmOptimizer.OptPass1SxxI
+ write more information ttypeconvnodes
* Fixed internal error 200411013 when typecasting and dereferencing nil into an array
* Adding test to catch internal error 200411013
+ RiscV: SltiuAndi2Sltiu optimization
Add System.UMul64x64_128.
Enable -Aas-clang for unix and embedded targets for aarch64 compiler
* Add support for int128 integers. Patch by Lacak, fixes issue
gitlab 0041178
* fix SltiuAndi2Sltiu optimization
Fix UnicodeString ElementSize.
* make TRVCpuAsmOptimizer.OptPass1SLTIU look further ahead
* Make CPU/OS/Version fields longer
* Cosmetic changes & correction aDate param
* Correction for creating maps
* Correctly count all fields
* Introduce stInvalid test status
* Add CheckAllRTL explanation
const for TFormatSettings
+ SltiAndi2Slti optimization
Inline polyevl&ldexp in sin&cos.
* Define for mormot memory manager. Speeds up by 66%
+ added new target to the compiler: wasm32-wasip2. Not working, yet.
* removed tf_under_development from the wasip1 and wasip1threads targets, since they're now relatively stable (unlike wasip2)
+ added wasip2 to the compiler help screen (marked as experimental)
+ add support for wasip2 to fpcmake
* enclose {$define DEBUG_AOPTCPU} in {$ifdef EXTDEBUG}
+ initial wasip2 rtl, most things are not implemented
+ added wasip2 to the NO_NATIVE_COMPILER_OS_LIST
- disable packages that don't compile on the wasip2 platform
* Remove MMM after discussion on core
* some RiscV optimizer improvements and fixes
- disable Slti0B2B as well
* Create proper unicode string for single char if in unicode rtl
Fix for the visibility checking with the correct configuration.
Handle executable extension for WASI OSes
+ RiscV: UMul64x64_128 assembler implementation
+ test
+ Aarch64: UMul64x64_128 assembler implementation
fcl-base: blowfish2: Remove unnecessary destructor from TBlowFish2Stream
Simple Stepped menu entry.
Revert: Refactor menu change code.
* IN case of IO error, MD5File will return an empty digest. Fixes issue
gitlab 0041194
Disable of utils packages for wasip2 OS target
* Change pchar to dynamic array of ansichar
* Replace labeltable with dynamic array
* Use new instead of getmem
* Use dynamic array instead of pointer for character map
* Use dyn array for bitset
* Allow to write tbytedynarray
* user dyn array for Superregister
* Dyn array for interference bitmap
* Use dynamic arrays instead of getmem for spill temp
* Use dynamic arrays for compiler messages
* use dynamic arrays instead of getmem for resource strings
* Use dyn array for input buffer
Add missing Makefile and Makefile.fpc.fpcmake files for fcl-openapi package
* source linebuf as dyn array
* Use dyn array of byte for CRC buffer
* Use dyn array of boolean for isHandled
* Convert shstrtab to dyn array of ansichar
* Convert strtab to dyn array of ansichar
* Convert symversions to dyn array of word
convert lfnstrs to array of ansichar
* Dyn array for ReadArchive variables
* Use new and dispose for asmmodeinfos
* Dyn ansichar array for fcoffstrs
* Dyn array for FSecTbl and FSymTbl
* Fix range check error (len=0)
* Change buffer to dyn array
* allow type casted pointer constants being used as arrays which address can be takes, resolves
gitlab 0041177
* Use dyn array of char for macro contents
* Change pointer-to-array of deref to dynamic array
+ RiscV: FcmpAndi2Fcmp optimization
* Make compilerwidestring a class using dyn array, rework tstringconstnode: value_str -> valueas, valuews
* Undo changes to lpi files, committed by accident
* Do not enable new debug define
Fix range check error inside tsuperregisterworklist.addnodup method
Avoid range error in tbitset.clear method
* Call free instead of destroy
* Do not set strval for unicode strings in tc_emit_stringdef
* Print unit name, flush output in status messages
* simple clean ups after dyn. array conversion
fpc_cpuinit: add destroyed register lists to assembler blocks
Otherwise the compiler assumes no registers are overwritten. And while the
regular code generator won't use register variables if assembler blocks are
present, LLVM is not restricted like that (and it could still cause issues
even with the default code generator in case PIC-rebased addresses are
accessed).
tai_aggregatetypedconst.add_to_string: fix off-by-one errors
LLVM: fix compilation after rgobj dynarray changes
+ RiscV: handle rol(w) in the assembler optimizer
* Correct allocation size for IsHandled, index is 1-based
Avoid long wait on this Windows OS specific test
Remove tstunits/go32v2/Package.fpc file introduced by error in commit a3dd6acae4
Fix emit_ansistr_const: its input is not guaranteed to be #0-terminated
Also cleaned up all memory leaks where pchars were allocated, but never freed.
Before the change to dynamic arrays, these pchars were kept in the tai_string,
but now they got copied. Changed the tai_string constructor to support adding
a terminating #0, so we don't need to create intermediates just for that.
tai_string: remove useless #0 terminators
The string data in the array alrady includes any necessary #0 terminators
and the length of the array contains the length of the data, so there is
no need to add an additional #0 terminator
+ RiscV: handle ror(i)(w) in the assembler optimizer
Avoid range check error in TObjData.writebytes overloads using dynamic arrays
+ RiscV: ROL/ROR code generation support
+ RiscV: flags for crypotography extensions
+ RiscV has internal rol/r support
Add dependencies for units of utils/fpcres package
JPEG: support custom CMYK conversions and reading custom APPn headers
decrease restarts_to_go only if restart is enabled (solves runtime error if compiled with range checks)
Disable libjack package for beos OS
* fix rol/ror instruction usage and spilling on RiscV
* more aggressive cse on thread vars
Add definitions of ALUSInt and ALUUInt types in java/jsystemh_types.inc
* patch by Pierre to fix spilling and jump handling of pseudo-instructions
* Allow wasm guest & host to be notified of wasm memory growth
Handle ADR LDM and STM arm instructions
in taicpu.spilling_get_operation_type method
* x86: Fixed bug and refactored optimisations where SHR instructions were
merged incorrectly when a condition appears between them
* RtlUnwind destroys register, so save and restore them afterwards
Add missing dependency on types unit for math unit
* Some additional thread debugging statements
Revert "Add missing dependency on types unit for math unit"
This reverts commit 1f01ba4bc0bd8dd7ae41932bc21e7a94fba24c0c.
* Correctly set current thread
* Wake main thread when a thread is auto freed
* x86_64: Bug fix in "PrePeepholeOptSxx" where shifts greater than or equal to 32 weren't handled correctly
* use for threadvars on RiscV always the size optimization code path as loading addresses is expensive
* Fixed oversight in TStringConstNode that stopped it building under DEBUG_NODE_XML
* align stack to 16 bytes on RiscV32 as required by the ABI
* fix two wrong lpCstrs in gevolumeinformationa overload. Part of bug
gitlab 000041221
* align stack to 16 bytes on riscv32-embedded as well
* don't use arm assembler md5 implementation of thumb code is generated
Fix spelling error in several Makefile's
Move pop compiler directive to respective ifdef branch to match with push.
* Fix mem leak (stack memory never freed) in wasm.
* Small optimization. Use SameText instead of uppercasing both strings
* Patch from Eric Grange to correct TRectF.FitInto
* use sametext instead of converting case
* use sametext instead of converting case
* use sametext instead of converting case
* use sametext instead of converting case
* use sametext instead of converting case
* use sametext instead of converting case
* use sametext instead of converting case
* use sametext instead of converting case
* use sametext instead of converting case
* use sametext instead of converting case
sockets: implement NetAddrIsPrivate6 vor IPv6 addresses
* Add reference to local IPv6 addr reference
Change resource string extension variable RSTEXT to '.rsj'
Regenerate fpcmake.inc after: Change resource string extension variable RSTEXT to '.rsj'
Regenerate all Makefile's after: Change resource string extension variable RSTEXT to '.rsj'
Regenerate also all rtl Makefile's after: Change resource string extension variable RSTEXT to '.rsj'
Add unicodedata unit to rsts entry
Regenerate several rtl Makefile's after: Add unicodedata unit to rsts entry
* Result needs to be assigned when doing FindInFieldTable
* constref does not mean that a variable is written, resolves
gitlab 0041206
* Avoid access violation. Use internal error instead
* Use linear mechanism to check whether function types were emitted
Allow freeing EHeapException and its descendants.
* New benchmark test for floating-point functions
Return NaN from sin/cos(±∞/NaN).
* don't do MovOpMov2MovOp optimization reducing bit width of the operation if symbols are involved, resolves
gitlab 0040269
* Dwarf: write enum symbol constants with the size of the enum, as proposed in
gitlab 0041021
* x86-64: New optimised "exp" routine
* Dwarf 3+: write always a type for enums
* Determine publishable property type only when specializing a generic
* State the purpose of the test.
* Move heap to oldheap, prepare for MR !694
* Switch to new heap by RuneWalsh (MR !694)
* Inline some heap manager calls
* fix line history part 1
+ fix line history part 2
* fix line history part 3
* restore forgotten oldheap.inc
* x86_64: More support for transferring directly between MM and int registers
* x86: New peephole optimisation for improving newly inserted (V)MOVD/(V)MOVQ instructions
* x86_64: "a_loadmm_intreg_reg" and "a_loadmm_reg_intreg" now use VMOVD/Q if AVX is selected
* Patch from Peter to fix memory leak in QueryServiceConfig. Fixes issue
gitlab 0041224
* Fix compilation, probably also bug with mem size
Sha512 speedup ~10% (only for 64 bit CPU).
Calculate sha256 using dedicated x86 SHA instruction set.
Fpmake update for sha256 new files.
Avoid out of range access to instab array
* Fix compilation using namespaces
* throw an error if a second forward type declaration is found at the place of this second
declaration, resolves
gitlab 0041150
Pass huge chunks directly to SysOSAlloc/Realloc/Free.
Set ITERATIONS to the lowest possible value ($10000) to avoid reaching individual test time limit
Skip iterations inside testsuite, only correct value check is needed in that case
+ add balign before commonly used label
* unify internalerror
* Aarch64: handle ASRV in taicpu.spilling_get_operation_type
* Fixed minimum iteration count in "tests/bench/bfloatfunc.pp"
Check that sizeof(tppuheader) was indeed read in ReadHeader method
Use same order in writeppu and getppucrc to get same output in debug files
* Renamed "IN_TESTS" define to "CONFORMANCE" for benchmarks run
as conformance tests and minimised text output in this mode
Check index of CRC tables for Test_double_checksum_write code
fcl-passrc: useanalyzer: fixed skipping generic members
Add information about different CPU or OS in CheckHeader local function of tppumodule.openppu method
Give integer value of not found ppufile.header.common.target in CheckHeader
Add all CRC values into .INT and .IMP files
* Better RaiseE exception class handling
Fix usage of DEBUG_GENERATE_INTERFACE_PPU together with Test_Double_checksum conditional
Avoid TOO NEW instructions if OLD_ASSEMBLER is defined.
* Parser buffer are ansichars
* Reduce object size, use ansistring. Results in faster compilation, less memory usage
* arm/a64: Be more careful about hp1 and p_second being null in "TryConstMerge"
* Reduce memory usage of tspecializationcontext
Fix TSAXAttributes copying.
fcl-base: Fix mistake in TStringWriter constructor
Other improvements and fixes for PPU debug code
+ API to get exception info in host environment
* Make sure BOM marker is correctly compared
Fix error in substitution character for commit d79db82ca2
* Make OnLastRelease event available. Patch by michalgw, fixes issue
gitlab 0041247
* handling spilling of (v)movq/(v)movd properly if the mm register is replaced by a memory reference
Add -L command line option to dotest calls when make is run in parallel, to avoid GetCompilerInfo failures
Avoid calling compareword with maxi=0, as this generates an dynamic index range error when comiled with -CriotR option
Fix previous commit 105382b8 by setting Temp to zero if maxi is zero
* when handling spilling of mm registers of (v)movd/(v)movq consider also the destination operand
Fix resource (handle) leak when connection or database selection fails using MySQL connection