Security Research
CVE-2023-51766 SMTP Smuggling: Sneaking Forged Mail Past SPF and DMARC
Thinking
2023-12-15
6 min read
Research Dossier
#Vulnerability Analysis#Code Audit#Network Attack#Email Security
The outbound SMTP server treats <LF>.<CR><LF> as ordinary body content; the inbound server treats it as the DATA terminator. That interpretation gap lets an attacker smuggle arbitrary SMTP commands past the recipient, bypassing SPF/DKIM/DMARC and forging mail from gmx.net, web.de, Exchange Online and beyond.
Unlock to view this content.
ad8d9422966c73fee42096dad808c6448a272095349f41facc28f3d18d1ee66a0726fb5aaffd9271b6702e0ae53f6961031443030e63d37842b7356b4a67d1f44b648f709f84d99b1640e6f7a87a3d44129b61502fc0c5c728a88c67798e6cfb7bcb30fe880464fad1a2cf9635735fbd6e964b402ea4ed27e494f7c87c72f1c586b333a4d4b6d4ade7253d06d61bf923572a6b8c253d117e8b63642be9ad8c68eaee7d4a02592bcdbd3155abcc6a953135deec61ed6729ad92ae056a76758bfc9dbe3a6985cd89376d1d11f0321ad5bb4a1f7d95102ca8b070438bade670e9dba0cf0c7b67893ce6998850981a117644f74bd4446fc76fc1583ac9d711a573302dbf26f2c8bff7117f968abfaee526c8a04417127a561431eb5fb91177c825b3b9c59e28c00977833eaa555d347229584fa01e374af371520f7d983c5c8fcdc22f33e7b4af4b109d3a9be2847eee33a6f38bebfa3bf082c3cc036fe1fe65b91b3d1f846a1dd0c14cc00849e9651175455678413ca7f1c6d8f86ff4999e01679c89b80a6c4b935caa8976d6311b87d75ba8aae009af50d2737f52dfdd7a96063cfd90a6272e888222edd24bb62ef33cc622d8c7760b9867a23aefbeacc8e2f6eea31a146da74a4a4c47dfc3f14249bbfbc007c2e1307266b9da21fd74ee83e57b56706ee5ed2d008df8fb71e16b3f8cdba240636550f5d828cfb9e23269bbe609d4294e19aad7c1385b41e0f3b69e320d783c6c6cdd83bf421af575dba6f11c7d5d642934ba8dfaec178160ee5c7bcdda5d4590206295556e2bc4b2425befdab36671327ed5cb9396fdd4e51b8a318f453619fc26bf8c690914e5c4cb91839364234ceb3d38dbbfe4129a3c908855a356b4f7f70ab7c34a287309d2cb929fd905182ac703b530cda51883981e8e1dab00cac8eb18c4282162acf4b0ed30e0b4f07b423ce3754787524b6293444a5c30d0d900f63036772e0710763d7b46fdc19f65c9e0543fb62137e06999beb3a6039a8634da18fb12a5d4a6ff46bbccf99644bced367a5a03cd3239475b9f7d3e1dd8b15298c73db46207b66fe1ec92774d73403f9b687705163bf497b4bf1a348fe49ea52b64270e0fdef42a4f4cb9167cc2e9435639ce05c185cfb557dd69999add828962831d9f7a73ea2657c676941dc7caca885326582e4de458a4dee546a5b9db06e79c0478127acb0a010f32e681c5455a45733bb915496775341f5ec09ff8935b3c5959fb7c3998d39852c3d45e7b88d2970596fbdf5f68a02776884b2356d21522ec2deff69ed38ca0600ac9f4d27526f2ff1745ce9085142d368e0f526a95e6f99d293b70a62c853a9eb5eea23d9ba93f7d198326041fcea0181df88ddf5e7a3fa0dd293e2d71eae719cac56af305323f6742961f8db4021ddbb5808a0d08c0f95262383c45a78d8b623f97ea9f17300743a6d1514079121032323027217a285d598e68cef4316bdbfec54ca41fb01d71c5102b904dc7e5d3a8fd024176c6e2b50fca8e74461ad1201a6dfe5d853a606a725b393fd9e019588e7ee56c3f6412059de3ae125017c446875a19cc64bd34c2c8c5e4c6346240d2739ea985200a683ef5ee825b7304a30f19e003c619d73244b3102b0b27b0960367f89929e8c1c9b28ff4d45bb62d02f3128d82e3281fcd962d6a60317e288d89b35562c55e43aef02519f7aba143fd32ae786fe3e10a6bdc662e35942e5932bc57309c822874982739245631c8d1573cfd019a4c27fdc05b00f1b159ee2feb91bea12988969f093248233ad4ce7ea0f6c0675228502867ef73cd8f497dd3636a53ada2ee3bcc94a33edfb63de7eb4fbd38fce040855197473887d8bc5ddffee45c5ccac67ab2faacf08854ac5c7f89e53ae03ff2c9c89d070eb90c52a8a172119611ad2adac055be44f718bf6019079b8e5c6e116b0d2b7aaa2b3eee12ed74cf7fc7a4313b26e991dbe01c70093d33bf411c21b7ce6ccef35143e6d2e7abb4969e95cad456cdd2f26d18e0f63884f3245031c431c1ca1105e8129f4974fd48bda461cf22045d4bdbb39c5fa06f55171c7d596d82a41b326eac412414384cc3b4fb0b24653277be1ed93141f45eedf00118524db1658bca89508087267692d7c692321cae7f9b9b9792e9a94b41d62190c66a03f2e7d32cf55d5734a55220438c03e8329e13603b9c6223b188d2fc52de8c0b1f0ff2a6dea1ae917ad26ab22c448c9d1f26860729f40ac1a3d13f330c2baa052a455a7b31caf5ca6c1f046e47324c6d9ed8140f78168887912a97326040399e4d2d9cc3536988356e2e45de5b5a1e17c6acaeb62a4f10df1f0d9ebf3d345e544b09f9721c6e9847de1fa5b64ca02e170a83cc0fd63e75afc99a9aff50efb4dde311b81d6dea46233c88052934f55141cfdee8c0123ff5aa94e5fde48109bb6e83d2ccbfdc6cdd29ead9e8fa1ba9237871ce50698986085b6c6b209f0ea42312afa03779b88685e7635b2e47804cbdd12d4d7527366b83fe6f39e4e233e4f23dc97c255e6a59ef50b3b020b41a9338e9a3ee7ca03389f170187c621783867838dfa8ec788bb983334de7f0c6fb3b092eb754f680a7f03eb9bfbc0fd07dc289b7b3250d74b99d1f1c486827bacff2ccce2396866fdf369e8f844dda71b07a055d927cee966a715092d2cb71eb134062387bd862a235634ad66c5a0918a831c5232146bb83ac4df907186db3473e1b7ae6ba1f7c89717c89670a60c1b0c1ac99324b860e8f0dfa688b9cc04bd7199b615d285df301ef87bd2495f50c61d681eb791fe2e430d4cfd684474407e55b915b76d57f0c5d072573e5dee88a37efeb311591a962d7cb141bb1d5678b5b1ca3baba4357d7998ee5efe715862035496b0a6ffa9022f40f926ebc5402e903d7a5348ed3c58ec11d29ab8e0f6fc6aa012b316dc1203e2a24adf113203bbde886a1d22201d545bea122c515fa0cf55815143a23850929abba4485b60a5cf287895ffba88d1ff1f3070b706bbd4002d47ee230ebcd0e350a93b7aca7bd8a131880356d578a3424fb5f335722facc403512864b0db364a7d926d517df3bcc59d88b48e74479db6d112fab1fb5a7a45ccc9c3329cd2657ba83a76cdc0cee33847cb30d34c94458c0f359a0fcf54c68778321799e6a129dd16584a66487b5706b00b9838c69731ae305fab56255d7c01c5f370a445daaa382fd05421d51dd0d3bad3c9712854665acc5e29c7850d29225de08214b506f0a13021b03e8fd9941fafc36e1b846cb22a044b007b3d56abfb49fd1226f3b1252f1477b5cd6a1c40834c19023dc3e8cc79e09e030c5721cd6fa63189899a76e30d55ccc237e07c72244202927efcf973a2190d9fc681c9002ad1878383def97358319abd5ffd95d1193d45d032c3c03d3f2854b79d6bc7d02d84125171ccf83d9bb06293108ae42301c890e72c4b6fc3503ccbb1bc910bd780b2311e77de477157c23c7f76262d76b23267d924e4390c58e09942da733b1e6a32b3adb0f1e5dfecf064bb6cc8289272d0f018145dfb02f76ca8929cd562252fc023c694d56323e131a35a042168bb60e0ab0a6eb8aa6c4efba1a03357470279cc2cd11062b9445b7d59d1cef4c2e6ec26c481d3d6aeed3aac2c94c9e59e3aca95de6c39c76ce6a07fd8b5007d08cc47165f812b6d2e9d56ce01a56fb13c96db162a72566c3307ec699f2ea3d6464d537d1dbd4058618cc819d20314a6ab05645f456fd46769dc23a847967336bb8ae127b16d6cea0984fe3bfadf1d38400e6f89be7a29f26ec5aa681df783ed818a6c443e696c2def549a5fe13c7a96853dabcd9ef8892913a5b97386eb228b9f3f51c304fb1962345b2bfd187277d33dfc0daa42c492937f85b55027e66f56dd322dbc6cec81b646877a9a570343a3d9f065a201140ac33a0e2a7ccaa9cf52b9209b2b49918761c88ae859bd273ad839298d728df33d2e4992c99f33058e522d82b57e6f932d36cd21675654f7d06bfe9a977389f00222445c3c02d52a5c871649fce827ab52894d4f5ba78d063ca068dcf06ca893b1541603b7b1ffd5c8d5fa8670a509f4a99ced9ad97a46f69812edd3831f094f57ac6684ffee2a62874dbec55494080187313ff2b5869417d9f3cf9c5d40480d8875b9a0ec4bd6746e27dfc51d9aab55cfa6a387b10cbdd54387a8091f10b87d28da48eb8b21e4a54a5b1a31f815b97b7919047a05e0c10d9830983a57c8fdce72555b38ef1e316e3e9ddfc8f8e4c918fd55434df4aefa41ad6e42493129007e3e12c575c3f8ea385f65404089ce5942371d57062b00f131bea54898c879d6b4e677e3a5d97c09c33cfd5c7772de14825018a45135ed6598a862f61493b544b75512fb36168433cd103f55648d57179e4b397c75953e4f5c6a93bd58454fa630ddd5ce93340008d3626e72dea5275519830e3b219e9de34bb290f6d110b2c741a6b55e78de71cddd4bfced0f14dcf80eb1e89ceaa7d24138dad900b308e9573ee6ae479898015068a4f9fbd2290c5cdc5bec0da648d2454dfe459db0daac8d98d43bd3033bce6cef21c32e9ea52ba2eda340e7da86cf129d9dcc2845978f7c4c94937dbb8b8ef6721bceac35589a7dbcbdd3e99f52b48f7511083de0c5c13ce57552fc234f785f2e39084a1550caa710ea079938ab6c31c5d18266818f5312cedfb6ce09267cf0ff830a7b1ac95f7628191c898c0eed4ed0cf196f38d917db37e3481adf6acaacbc37de6499b9a4ea0a463752a2ce5f6fa4e18813b64b19ec5ecd301fb57b0a8d642981d5e06a53252da9affcb5c1b0e09ba6649f35884e08a7739b3c3d9a334b6a9aa5e60d0a946569d3c408c09e2dd7c9abd8c4ba59b0a373e37984f672a4ee682c642c0a918c9f0c34921d0fe1860bb2e81bcf41fa59c10c5f3279885e409df82d8ac002fb6660723125e4ef684c31ce4f6a08088fdc99f3070f7c004e94c6a49f2ce0692e101e7eb09b6044eee4d7a113b3a1f29607d22f7b69e266da67c6bc41b076a3f1db2cefb2dccf740ae1e476c8bf95799964ab276d54a53394ca3c4b790b54443f257d9b70caf467691d0e0e0161481b0b31ac7c740354f5d0d03f4daaac55536072f32b2d970064ec6f3eb82bc79cd2802cee0d3524f1b6836a2ca2a9c4630124b9f2990680ba353934aff55358940eaaeaed1f57e1ad8e727d44d4be0ed4be44c1fc185e428e6416655b516f1bde71ccb997055b0d8e213c705c776779dc52a444002f157ee3742287ebfe71317c688b09c0634dc3bdd9b54bf4ccdd810e5628e1dcab4cb6153bf585adb965ca671b3e0c5bede4004c5fa4d82f610448d7ea5d6ff1c59be907b6936dfd60ca5e07a054b3d0b075904534a31eacf949df66fe8f9000fa952522767c7d4df2092ac3bf4d67275f5f431a0c5ae054fdecd002f0afad9c487e7b59bb5079ce9d12b0901b63cdfc0b8e40e7f8a6280fa50e62c61f40da06baf127726cd75bc77f4d9efddb925c6d3b6cfb86164f9a57cc9adcaa2e6fdc284e2ebc814c3f5468343719bb606016b0e47d173a489091e95b0725b2e686d478e2d33eee73216001d2e8bd3d5c4539e7a1979e2d10b48c5598fb19a79a8641214e7ab5326e7eaf461711c9aa70c23a0d54d3002aef3292149fd82d83b5b6f575a434c46684dd0b78ab89e3a6bc35a013acd03e2a780f3b128050abf2f37736681a7d7b301d50a50c9334ba38a1c75363be09ed336b6d5eeb7c5d1d07dfb3023ed3169e461d6da8c50f89b67f95069aa1c84a5f396e372012b88f3d1dd060e66ffc0146c8a22765405e0a47c89e58358cf2dc7ab6e0c5ab3303a45c692497ef325d8c6312370345bf107d79e592b081888c438dccf78f19259c5757c460a90995149d1c4980b73a9c5ca3837302e9fc578ca20d034fa1dfe79d9f14f15402e1d384408c273da709cb60063998de7abd679845a9008797d6702d7b862db58af6c2be116312b571331ee7a8c8ed982bc82defd38a3c0381534960a0cb80f7e310ba42bffddcddccf5b6f730a9c990a25289463263b79f36ff3429ca578a202e9de47c65388213fd80d3027754f0bb50684d948b59fa898fe923e6960987c38d9698b33f56ed7a3c513801e4d52e8c2f9ca4741972535ee899d177146dede70a29877c7a8c3c535d0f6749c532dac9933709ebf8ed169ff117e7ec4f49723ec0fed491cd8a9ee847216b18f88d74b727c5a54b4c678b09ab37401f460ced6847bef55f2b1dfe630dc1d0b612a2289f74b9e1c0ea629d1ee659ca47eddd7abaad4ae89b360ac0affd293b7c40bbe08160d05314159b9a5f687139a36c7e75b3844a3a4fd021a7fa5c226d404f6c6fab583ae14dfd75f95695cf8ea1973261558d07e9f8904bb57ff1672179bf81d1a718ce68c28db8ec4961bf32117a0ef5d119be83385ca013c055fcbd67ff3d79d01f79b020f71e4d4e8f6de022c5fe737100a608b01211e15fe28bc8a81f7581e38c68ce0c0a8219d5f8d9c400d8cee328fdfe8c814bf5f36e24e719edc26c0b676041395be657c19e9c9207b0a51dc4fe96336dc77971544f77d153081418071a80c26bcf821a41ab844d85d7a35131cf8fdafc2772171219687e14eb662f2d1ba0a7d4019cb27a52f908933d0bdf29431d7820a9e11b662b8d599f62794d39a11d89c570bc2942ed8aa3e2785baacb9cde71ebe830551d83969501095fcf0b79b7b8ac6574d7d922c3af79bff118f8d10867533d43f3a6682af754926dcc7a0d1775871ebe6baa5f5e4ab6c3733ea1c90e0af843db762102d2a9f5376afd67e76eb9946b74aa74dc6cc874035743a3bd34d43dd02227739aab94187dd471ed65bb9cea42d81df190340ab22360f259fd98f8c7650d8e425b62b4031dc1f150955f94403f0d3d425b61687f31ef3a94e06a176d77e7899e60d640c9def399691520b58250b08eca800b7303e129c7924982351db4b7ab779e19ef44e939e802ccbfa9a57c1c82e06b5f7fae36ab60d9fb74ca517691fc0307cce86788db135cac29a5a3b7dbeaa8fb450c671dfc34b349f79b9629d893a6d48c45b956e812a3e7555cdff327a16700ea5ac94ae837d071f0136977c02b9463895f88948004238887fef6b0c3e94a99855abcacf655fcd6546c117d1120216c3fd0aefb9acead264064c3fece3f0276033a4379e57af0c6a13db0175585f641ed4a0d7e2f3fb0d63e07b19fd38fe62dfa3948061206ccc3e4990e1dd3a1f12336828737b383d32303af6d168d71bc3d40c84aa154030c96a3714080c653f8debdb2ff2f527223d1248bf70cc3141558950913f17d3c875bdb575da7214de8d61d607c7751317dcdb1502c91f203b79be5c6490049f2ca112e7aefd1752792719c6859bec83e39915d28ac583aa8a2d824820d900cf2a29408238acdc1fcd2889fcc715ed3fbb2b02935db8f2b95ec38830390b8016e8347a349779f4bb0b87df644a44ade99935e05dcde8c5f244719219b2308a8300b16d8d0f0bd264a0c10e166572f1c7caee5695034dfc7ffe123780dc33816a899efa5c6cf0e9f0be9ced704d13fdc4db302340a4af2f29c021a3a2239b975d9d8015cc57f999aca2067fc83419a88991c66cba822d7fe3ad873ac61199cfbeb8ff69746cea746cc1e8767c1fafb2d8c2d4e2029b199710567774bbef8ea554080fa78276728f891ed42e17c06a4ed72f5013dd539f7212991be2db2be677f02f457703cc0a6540ed866e9633eb92c9b445234fc788816272b2d421b1fee5e130c178383abf9eb4060d164a5dca28594ac1c99916dacee85dad992acd6069f96cfb8bcaedeaffcd1801ff0f1d586fad3b4b9da3797480a573103d5965e4af1e1ede52b966e1e5c6278b8971d4f156131e6c2566f7d92c7a9de1ec8146d0c6577e2d3e7db69a61aced6b8e12bc16b5bc64f0b7b5dbd04d2c74af4b05de5ad983b9e8115bac703045cf0f3bf9a622e7e5965b9dc70f37eb676e383e29eceff55e694d3e7b1169752a9a2004ed8a76dcb89d2396695548977fc095edfa4ff33c6348dacd838eb6e26daf7abfa9ebc60a6a462866eb8aa11dfa96f942b1d027c9b59ffe5c1a1ed514632e1fa2bca982eaac4248c6b1020fdd54d117e0eec82d7142ab6e77b819a969f356f4237ef6e9a638d01d4c05519200c7ad20657a9887c615fcab299e3856bc10bb239b864e77113fad55ac799302af6ef795dc87adc49e393b6f9793a462a3d7ad9e060223078496af47e30d8dee3cceca938be39fffc8bb23fb053529b2d1c6e80e717d018f50b0f3e9b3848a21f148682ee94353c409f29b22169e437b93a3964ab37b99fadecf0898124b3f4267ee4af8e857c53e3dfaade408ca1ebca42cbc38e9ed5ebff5a0dc8ee8ff9e3e135993c7d5fdb651942d7b933169ccf5caf89339a336e32882e7d3bd18b0619ad9b1df31b4e2df3eb2b04eaf913e26275c12c41126a39fd036f5fa7114aa8a3bee0abd4319fa38fe192862a1ffbe71873d054b7b4bd9118bbd0f0bf64bb6e3a0bb65d089e2cba18a01c8094fd562bc2503b949f507818e7d78f181c578ef242485716b2a97b47c078fc4ecd62ab9751060f18e122ee2a66cf70aa7cc94d6dc165d6ffcb56beb5ce6f916cb275d4357d14236ab4323e6963ed3d2f64de9fc2e8f959dd83d13b9a4a2fecd308d0b9869f8e0f01c2d48e1430829931021bd2408fb607df31818be3aa985a465f0afbbbd2f1788a119880e7d925b76db2c9c30166d1657cfce910c8955100d3b49310ab39bfeb8a72f5a95cb27292db5ef5d2ad27dac2a645892cc956aff3dfd0773bfd7d3068575a9725ca68ce6c0215b32cc9ed92219f182a1b9556f43321be20357ef62415020c5ba66610d2fb3b6bb33fd395b570809ebaec02a3a6ee370729c79ae5bc4327aed86d5d4a932ca0c330ea29425fe181a3e0bbab9338ee6a7187eb3f1c7f2a922647e7142d7b8ec031311e4baf190bba0219c07a59db0b5baf36fb943b3553b102daaaec48b48f842e9b3e8dd2b971f3215c1af616a779d69b092676fbeecdbd14184b1db86edd305a491593b328436efc77d10797b3677d8ec120f8ab84ffd5acbb94b6858360fe3c6beeb06ea360ad606ca14beca8be808a7691d33885e822cd641ebfce051c7004284040725884d063b946125759d943de8f4e27ca569e8f6f452e4a3cc9596c5a7690dccf8cfecc9cdfe6c37adb8c8417121183f0ea3fd4909e0b1ca82017473653c117b91809d90d01d97fe3aadf05b0dc55a88874017724949060afad265590ac42affea0f532c2c67f4dc9a1dbbb545e601aa00b8ea3c62afcb66b92e711e400fc55a0b000abedb4c3f0a1fe21c988096061a4e76de347eb3a802fd101acd822b6a9f21f3b27cc4e9271eba33759c1f5d5f1147cd72bce0968f8618dd21dac38af633d1ab373f7fcadd19b64420f18b4728cf58ae84882c3ece02ff15ce8fc93f20749603c62de2e4edf2bf3974e03ad1f915699e765ef22a389427d0891cccdf73b8758c328b3c5a5e55727e75e2fedfa37160d6b07671bb2270dc869b08ad4c239244ee6b19fe9fa15a2fa3c2468b4ba8b9347416452a089379caa2f74db4d71073b63d6bdccccd34ac25a382ec655f5dea5bed5b95326e4d18858ea32f4f8f326c34e5d65bad30d5fcb32052136e776c6d234ad29e686a1fec9fe814527cc26933f96b4adc84cd67c790d24779578ccb42c8b7d48a1943349442a2e14dc79d38e09ffaf7eb4934d3d8b21576bb1e1df602c3ff7eab635400005ea888d11c9124e4785272febbc78c8cb2e10cd75876b5ba878a06cd6478dff72c81d3c9a0af5f523d76802c631899b264603ce403fa17ca99694733c1322298ae9a7070fab6e8ac993590ebbcf6064d4b2d3b9e4e123e138627f95b841c5221eb834c5cc6d1263f4b46e13164575e49feb50af2687a9d073e31bf6c7098d442c2f49e429dffd3331fd29ebadfe9997b9dc197740bf2adcb51a9b84e78b45b15393487b723a64df06b666a67a67c21702bd376423d0b49e1b4c35a1d891d8a0758ce97262c447935239278fe05c3d0318a74856f397bbe80784f50e6712464df8eb2d9b30c03bf8760c998f79be33904784e34243878ec3df3df347b822a56ae2ae8b34020fdb4e395d19cb80da6369d186336bd77b9ef005070de4a1ddf26502262260720a7df494f2d4eefc6d1129ee11eb5de1f6c2fb0c618652766af0b31d2b0370ed4421c2c0895452e030287c2a98cc251866792acb1128e1cf0682bca1e43837b475be7566f35e704d2048da2b7b1fd3078f370c309e1c1260047b67cfbc55cea054ff15b6416d9c3aeb8ac630f4b96f736f8ff1a7748963c0497bfe14d839806c32c467675538131c9bdcad36b0b89371dd757b4479fa1ba404b97b27251f8f41b97fded480ff4f5b813598124a1bf068a3f325833b57148822469d1d3504fd48dc8e5bd11e7b91f0ac658032cae514a1932cd33c2a8cc56d13c17f11d79c429f7a610de92e6eff09124155762de0facf163144666cb684869cb6ec8acbbad02d05787d13ad8131bc2b54ae38d1435a05d5b65087d661c37f454d3a680c5d5fc7c7cd92e587f30bb0873758f53eb8b468f79c9f4645ab7958159f0c98d1b3847a59404056a0c92c604983b241cab32a103987a81da38e46447aa9db9db6d763f1dd139e52a24065e6fc1772a9137340d5d4f7a8a44d76f1a67faf2561ad1e3e14ec42794c2d4abfa5519ca75672b238fd80f5e6ec0b8f747643a315fafe472f7bcffc05c9feb5e9914ce1bcbf712dc13b554883e8590f3f5b05556ce0e4539a31a2f302a8b9aaa7d7aed2bcaa969253b38c282a028400790ed8c5dd23b138952c3db1607169a0d159b804ab71ed66545624be2cc257c0839726000324c821eb227cb70742a02b85ff05eda4ba884193cda9bace172c0340897ffaea0c53d8f192def812963ef8e150efe7dee4ae8133fb98bf65e5d95852f17e0df37275517c76477f27574652d035b02483b462eb34b49336a7882e52681a1547e1a8a484988f67a4e1572817e60a849f2e9a70db63431d91439ffa5b847fad74f9e1223c227e51877cfdd77b25fdc27db0b2c3bd27188d02a2dccc443460d0d0a08866bb8ca82053aa3cab807273298aa5649251afe4f5d1cfd8df546d4b8f472bb412ceef05cc6aab6dd9796f0a362542825d4874184f70d973d223d814c6b0b94c4026f2771f818a6a4b3145be0b2ccf25f0740bb731506bcd171395bdc1051616081bff0f0f430021a5286a0d41e4b8437f75ecb0f56769f7b459876b94a495efe07f16e4a281e90611db1e1daa31d7f6776b758d2708630166ec8b43d80c5973ad7518c21ff4434be2ab99480d3b4f8900ee41773ed81c9f8757a10cc30d334ee1756bfa30ee4e422d64e2a8b3c3939bb484bc41c17d2e9cf6bdf293ed0f0b9c6de31dfaf74c2881556ca1b6fb4ed0e56286c3f05bdf5a6a0be214c08b3a07694907c170bd4b0b0e13c92ad44b4f7adb8a78304fd01e62c7fc165f264713d08a48d0b17c30e582656a33869e43bc001797c2309cef63a90a64820c6474cdec5d262be8a15d5b1c05ce978f351587ad553a1abe28a3974b2e4ae1d6c9f1984b662aee4d89764c60049d59561a986904569f927ac13d7beb3bb3a4cdca5c0d04a13486d7ce2954980a414648fa543f48117b2f8fd67b52a96b244f6dbfa7d0aca51bebcd818d60c1fcd70367f1ba680275f28aac868949b5f8fddd57a174bda8af107eb6733eac469fa76adbd523a7a60b99e09075434e1943d3d113e9f294315d2592cce996008b72c1c281412de92674f676f40047aa0024b140d9d6c295757325206fc1e5f7d2b5c6e670d068c103313ca2723dabd038458c62c507172b63567d5a586016735e3c75187000ae9bf1e73a0d0d77f0aebf4a073fd7f3c050dfca4d64b6fcb159bb1231de2ae9f56484e1cb3e04e82b6f13163a170f94e24fd2283c77ec5e51f878018420ef3ecf8126cbe1411628eb2f020739b3128a8978377fc4840072f8096df16ee444962a01a7fd6460dce955f958098423858c89318012c35de6d6bedfcbe4c4061d4ea08e67c9fd9326a9038b622b57c06ab59920a722b5aacbf096059a0ccf78fed312c357806252041e392256537100425116fad897fe0686aa30877852e22731ce11b55d451f5b1aa6a5078fef2bb3eddff5e24b9f8277e4b6dff8faa899551abab97f45fad828d0ca467882af7a4b8f15236c174b5c38320c13788f66d75b0fb5c0e55b91ddac26dac362a7b8f0eef7c879e4f37f5bee6d16120c7b55e8af1ec242ecdf38e683c97dea9f6f8fbee5bae33197e44fe51cc23dcc3e4a7825a396a2b7cfae2c61b7148ed2a86aa5c8dd0211ba00aa847c1b5a85d5fea429da1dd221e97cc3dc8c9a78a49b6b0e226949c8aa9e8b5c73c24b95c66b029693f7b563b7b36fc7172a11e064d2855b4da1f742c17e722066fe44577657366c9ebeac18909b005447c3f3a726b253e7e26127b1ede5249a5371ed3da69a09aa56315a2a612191e769143c2509c250a27a0de3b60411c9af81f74aa412c4038634d7024af1699414f96142efb5d9c020e03dda769a7eecc898f98e6fd5b9a36ddd457942924c475b8451182888880248371cd4f1202aebe7e18654b701190c33dcbbdf8af6c