Security Research
CVE-2025-56386 Notepad++ DLL Hijacking: v8.8.3 DLL Search Order and CWD Fatal Combination
Thinking
2025-04-15
6 min read
Research Dossier
#Vulnerability Analysis#Code Audit#Malware
Notepad++ uses Windows’ default DLL search order (including CWD) when loading DLLs, but does not use SetDefaultDllDirectories with LOAD_LIBRARY_SEARCH to limit safe paths — attackers place a malicious same-named DLL in the CWD where the user opens a malicious document, and Notepad++ preferentially loads the CWD’s malicious DLL on startup, completing RCE under user privileges.
Unlock to view this content.
ad8d9422966c73fee42096dad808c6448a272095349f41facc28f3d18d1ee66a0726fb5aaffd9271b6702e0ae53f6961031443030e63d37842b7356b4a67d1f44b648f709f84d99b1640e6f7a87a3d44129b61502fc0c5c728a88c67798e6cfb7bcb30fe880464fad1a2cf9635735fbd6e964b402ea4ed27e494f7c87c72f1c586b333a4d4b6d4ade7253d06d61bf923572a6b8c253d117e8b63642be9ad8c68eaee7d4a02592bcdbd3155abcc6a953135deec61ed6729ad92ae056a76758bfc9dbe3a6985cd8f376d1a15fe321ad5bb4a1f33f10f2ddc88395a87bbea7eebd5eede59617c8020e289805e9802012254b902f40b5eda76cd1c378e835cbd69263abb24e3a5c9eb372bcccbfeeea148f4997537536d184d67fb5eaf427fd80185f2e38635885a33a83da6454229213e5957d0097e0bc46a594773843f5cdda2842a34eabdf30f09922ec8b6ca77ba6b9fc7dfe9e074fed3c0ca5345ddbf22a949691693253ee49e02944401f86343765f50740833b3f1dad3ef72ff95cc3c0bb295f0533b41885ab1996c827e5a9cd35baaa8e033a446f96377578af476bb0770cd8bb123398fcd39f09759e579ee20cb22d0c9630ee75f8e0ad09690f0c9cad9c2aad7b1d80c0f4c5c96c1ff0f41bbafd205cfe1627127a4dc38b637dbd7f06857727fe5ff7f1ac2dbc94cdf310ebbab974f454863c49b3fcfa6f67364b0fb5dd42e4450a2df933e1e0cecfeb6917b047f20213fdd80a34f10fb75dfabbf78597e2c7d26b6c8fba2439d6dab0969cece1849942068c6057d2acbfb4057f1ccbd2f5c4459ee8ad298aa91b7088c2694583d159d3eeab6233836bba3cfe1a1db4f6a7cd062188085bf2bd9068aaa158b088bf8c2589ccd35505347d7d5f5de954c5b63884ae974e09f6a93dc128058ab19dfd2f642c63b3673a0e1b0ef2ab4fafc604374a16c46805c1b7cec170f0e30808b49a065322169010f396e5e1ebcc795648cc07066922318cc27b0bc8f955bb1c543ad61da5086819db56bf5f7eaf016c7fc7d60320dd13d7d0e0d9d13774bd8f21ed98861ed2903ed20e0e4963446324f239c3078141c26e593a8a85027a4f383ad262027155795e23a7c5bb70767c2992a2640ea7fafafed9304cf3adfc8fbb9b94dba37b9103de02a468e748616cdc89b8d300d740a63aa4bb98ad43ecb85c85b82d149395c3e9811017d33e292964f45774d1cd4531b2a411c2603ea98bb9247610754dd6b3484d7984184ca5f7a90de8901c9f0a72f58b74d05ef353732c83d1ecb79b8d6f3c390cc1314d9f2c77a27bcf74572c883cb520b13e4135b6988abe7c4706824e361963491f7e0a038879a3f655d8f3d164c9bfa4e54bdaefb6b4075f3d014342d50a2e314d0ca759557545b2e10d35cd9fb5048d6f580c64125fccb2b1f06107490adab5808e9c1b131166270ed9352403a4b286c6b7d0f02503808199328d08d70269ef38b0de95ae8595cff7c68d45ad1e49de3e0091c77cbfcfa47839776530f956d116fe614cb2b36371307767dc3e6124e8e77eb6626291b048eb0ea184d1cd3538146099923d37ddad98ec9e4392e14992fd7a694683a1a74fdfbdd147117b82037a70ddc0ccb6e45ab13706f64f5c51867b5c46fe088d7e9d2f4d85fe56e1dfa0e89d6af3d5af9be14374a363d2991dd9f2873891912f4e03521e5bcaf52e83cbf6d73eea6492699272a2fdd640b3aa6413c8f952331932c6d0c3a14e59374029072f14830b9a95231ede056e273b8faf7ef7a9396ec7954543732d19d78bfb7d1611b2a660055d8519f8d4d39da627353eeb5a133d998a139dde71da8eb42a879eaae08c048934d29c2d8a619d6aaa55915d7c834b6fea8b98901ab567f8bf87e8400dbc89e9e0741a7497f9b8c3c06d703aa78d2fd46bf5eb20fa526320d87824675432f4d664bb12a2eab16f720ef77caef356975e29fc7b45365133625a6530e3ae3ca7dd4bc4741eadfae818bfad290ced012d7d9f66008eae93e94f1331b72dc3484d65428e20f8c507bfe43b1ed7ccf260447598cb4ff6585265a58147b5769ccb243356ab34a6816796cfeba83680c7f6461c25b8b6208bb10ffbb091d0853e9768fddd95ac282396983d5d393284afd239c9fd6dce3a94d429d6d99ca7301bf948078b0105750c93e6f109f56f83b8d407b69d37566edcdd7e152c3cc001e0fb7efdbb2a997629f26922447cd8d0375de4f7ba86e8ef19c7e7f0c4fc6753d170c153dd2f1c97e460d370228446189df1543621c909b9c3a883d634b24ca0c7bb4c35b69bd3f6820008b444b561793e4e3e4765e43c2101d85e46f7f1a4e584585374e3d8347984cf8b540a4690b018c9a48d82a3ab2dfd394ad42f9b392f517f0516de11229678f1b6636be1e16a992a18f5c3f9ce5dab6e6fac905a47b95c5d1f9c164cf25e5d8b0b250a83e6b71914528848544183c5b6d8b00aa3647eee87134dbc8c2e706036d0fc11ebedd7b2278273e7695e3223ef5f339f0ee3a812623546c59e247b4bb74a311847fbe94e762a02295f1714b327810ca9b6a68e1a8ea69db9aa35932fca69cac73466eff11e4d480c11bf2bba018d060c4dbaba92f0074aa94050a53210d90aec5e2836a96c760cf2b918bcc49d13fb0614056db76e39a673c479dd28370f04151692d7a8a68f23d60009f20570e09b64e96667346efccb00ded0b0068af7114287ae6b9137f96292a9e715970cea6c7b69429579719821fe46e9e9e8e10ba5cc861556d0eb040bf8efa6d99f74d76c0ccac651ee2a13ec88ccbda4c5953f004944c7ddc764906356f3cacc1e3c46beeab7b7adffd62958a5750f5866c90011cb2b3ba54049fc899f2bce41d98262e4825097aebd833fa0dc666bd5645ba33c9b6669bd880c7ea1125b4c01a6cc6f04a66712c826b6a784aaee4023528e2e3ddf3df25178704dc8902e352f05af7465a321a1be45c2da6ad1682f70956add49754f3a8964ff1f216076b77b24802f15ad514a2cd5b350bc1a2b9b6b1d24735a9412b5d942536fa5f604833e1c44a5f559a1949f46bb88b0be011d93cd71e949c1cc66f30d239c98f4418bfeef659d9cb5f0e882246f2de62802717d610c173a95f65cf440789b953aaefb87d6834cc6f3fd731488bdd33cff4699fb63528398abcdf27380fe81ff1b3305dda94011025001b1fa7a08db6520f72038e0d33eb73c512cb4b3aedd2eb992b67aee677d81325434c7f4b054c1119ecb29945b8dd1782d4448826f459bb51f9de2da1dfd1952222745c1ba5146d15c1edce033bdf86708a6c8fd59204e721c82c5c85a1625c8dc8c33a759b08ce3d1758c439537a7063c8d6c33c3d90cea47e1e9608fe0b216466a98e70cc04a395f8d15b138c930f702c344e92bcc10a2d85a6370b800d210a0e90cdcefe2629243ea84c7c078a0e5385b6d93e14c5fa51f203bf78197402fb32bf6d4f215d8eb82c62912471260f995350c0c78643cc7eea63ace0b53d2889441700e0cc1b4dfadb84883d680914d11feeb62338dfcf7d99033256fb512d3b43597c0430295fa05514debf0612f9a7fccfa197bca106077c7e7768bae1ab5a2d03a865fdffa47dd9667c7fc97d4a1c3163eb8df987c5588815efe2de40e0c2d365d43c26ea8a5007c0c9df3f50ce2c9480e4c07ff01657fc5dc130b17ba02e2fc43e6183d8f2fd267329c73e80ccd403840b858c962031593e9c5644ff42bc4333d2c22398746b2376afae0d7105c4c2bc8c4f42687df1f6e82ffaadc8eab49b2fed40ffd8d96b2fd80ba78852fdd396c1a755b2f01e88b63d49c7a5d6e38a828c6e49823c64f166b4ffe959062dddb1651cbdbdd189391e60df938ef665167273fe581f5c757aed299028d3d9c9904b7f6363e0e46b39307f84074a65795aa931e3fcf595d2ddb16ec105b2f5d7403e4ddaa2889ec472b0e3a4bcf06ddf25defcc02b99e97955e72cce6e4badab0fdc6097186c245b2e5bb2faf6086cd7456c700c8081655fa3d0716a96cc9968e66395dcf5f1258d64cb5dddaa528f84785a0f28717102a95ce518a92e0e01fa349a8e989a85a224619561eb0010d7ac9605a7155ae082f77324defa5570498c543028e3395f69537d837fd097cb0280d98452de0ec2a867c4429ed974f9aab24bfa7628635fd6db102d7acfd8be1d9bdbdfed88a4b50d565eadfdab13cd4adfb6d8d31bfb1a104e80c11882a977dddafd7cf760429848b603acebe7db88539d869f1170cd15bcb019d7b777a337b018e3f436575c3180a18af15f4a04d2aa817a6bcf616ae20e040baf43c8cd8c84314e7137204088de8c758391f15c18c40422449058195dcd07e5ff6f427e0b1d1360357abd205f5b34d706e404589a6b62f3bec357f9a9ffbdd0ec2dca9343b93f12c057bd340857986c61b46ae5083d03df49f1a119c9ee1d977333493f28693d177043edc9f711ccd5e644240d08ca889542878f891c3f1ce8cbb63614c98173e837e459898015138659dbb123ba9f8c91cce9ff43d9506e8ff04ece1ae3d2d6c82da02135a5f7c3bc596ac3bd09ee4aef082a7db960ee6dc7c68793543db4c6c1582b80ffadae712db0b3a00ecae2fdcdd833dced371ab1181f92da054650d84a48288c28dcb6bebbb9acf61557c90810e946b0c69c80401c201d4822b2726ba2c95adfe0338c4a9c0f8ee2b393f968ab9cc796a390eff00caac4ef9a8672e72d368ebab7fee08fcc79b72e9bd303f0e1313a6a26edf4ad1c50c5337cf6b4aba09d40d058ffe3c5589248590ccb4d6fc19ce39b5c1b4a52ee6a5ef34382f7cf7d7ff2c2c5ae71b5b2b04921d4af594dd13153d503e0cb28979db378f7d019763131984b332a59af82c15593fa14c9b4d25364b9d95773b02bc8fad002ebb53efbcc27b1b9c73ddf82d89f221293664e700e4a45f784cc18e4e0e1888bfdc5863b76b2cf50a4526f51f381099c8506c0b559b00341f24c7b00263a0233667427b4e4903060fc7024cb5517221e7092efcb7889f551b604403e9ae216abc407ab3ed80f56324aa489b392a80359f75797b65fbd5d229680d6de231bb1939f3a94c6432e4b474319aed4fefe4e65072233ff8beba6ae8ef4ed93bc79cd33148ba1cc4043136a31ebc728d34c2812459f37942408b8449856ad4e69ec21efa0eeccfe261abac151d53b2783d367a31f4c98dfa77af7053306d134d587db08e1a63e06dafae208c760f61a12332f8a4939069f5f922a275771c7fb7e68dceefea34f0ed30f95bc0f8213efd730ac0cc70ae9ff9c3215ef1155cde01cfc35999fb3d9a3968f71f369e2853644d42a99e944f0e3acab34427ef2fc588ec54a3711792e734b6d503132f0e9deb0a808b5d55922ef650d4f0beaddce18d9e86fbd4aa39bcbb623a9dab84f149b8a5f1d2ee1d4d7dbc6a085b59a4111fc0b2c559c79f3d7b8e44f5e917588827afd085fc54eb86fb4121a0ecd68b83befcbe1dc25b9358ff58de43e35b9c673c7eda6dab7b0a3bed5d7f140d4f34383546383fa0c403e1d48d83aa98648957b043b5c666c6d58863437e7f032110d196288dfd5df1294281979f3d31e48df12c4b89b6ab2205906f2b84020e9e2e322615999a05a05bdde5d7508b3ac002753f584c934275e61701049427404fcbd88a39f7a2546e7b36eeb09b6a49fe0b8665c0aa923266d7d9da384ff01c11a12c52e44aecb55f9d2c6b5a7de78b6d3eaa582e7f954b62628f86365e261cdc08d15cefa1bd11e7ea31b8da5f390b75e2441abd96733f10e6ceecd556b8821621604a5b97e81a0c25fcb3382e26d4d5eb5247345c3841b5bcb00964397c2290343f827c5d74379081788962d95c465b49442d5757d4f5b84b3145cc5c19e0364aebbbd382a743580d3628b358477b754bb6490a206435e6f1e264941c16fc735d8ba1c6289d9ffb0db33844eb674206f0b208cfa37ee6fe33503875e78622b004df03cb98fed85fbefb2f13bb7d16e1575c21f4df94931740abe2bf9db9eb5ed0c653c119b9b006429da77277463ea6fb24e809e57e844f5e6769753d4153898362d2e166c42a417dac309b5dfe2b1cadf793a4de42668f94f953beb6ec3e68b1295534a17a9c3bcc96b1ca51b26e589d201713aec8777b38f779df4fec73fd0a57f8a1d6cbd813d7fcbb39f8943a8582a36c4b5c377ad0ef3584e92bbb7d4710afd928cd0047461135ab9c778b18cfd690af87b9298811feb15f39bbdd02ad41f4e73372286f05a9d1716ad6385e5748efc3be699a3adc9a8c1fe68bb4ed4faebf9c40b84051e48032b5778d382868755cf24caf1053e5beaa7aa6ebec11fde11ee5fb3aad3fb86e040d6cb49c0685db4ee4a3a274748d1798ddb19f247f5117f588aee5f4e438bfcc467db958dbf06a32c16f2e3415387f82992ca06311209edf31bfbd08742ebd3020871e3d8e8e7dc1f2d0ddb63591328980a732313e523bfc2c5a8015b2ac69eb2ddaf2fdc65c3864d1ac1c500afbea1cf51835d2be95f64958521c7b13e257fb8ea7d721be6c53c3c495cdd08e96e655b85771559eb34027f97579f23b94226b8b424ea0e8401d8717a731f0ce7fa8ac97e457a3c979dbb018565eed6fa2f5c667df50d9808b0e815e18781a215f4b427af218a1185e3f4b17dd1c19a2de5b27031fdae09eecb0e07fa9d819dbfcd3883a83579fd4c56613da7d0d0c4d3688adc5d1a3eae0f1dd3c9fd178cc00580746087b8db80c1ab304d33c1c1b4dd23437bebe782bef5e38c602761f81e8cabe49421e5700b202dc5457bb18d775b8aa76bfb678622ff84830e063d061cec6e10a9296b312bbabb51cedc525ad209ea838415ab9b070172a22123182dc29fc3cb766bd4ed28ad355e70965a676864dc0c4afd93ba0ff823e1ee04e5fd081ca666c03b6385f05860459af16cd382560716235f13e3eb2c9f1a44498c3d6c8d3d40995639a672ead2f44ed4f3a7068ef372dd76cb6e0bb7bbe7f062bb51b29865c0677d22ec180fda9461f9911ba9cfcb59737ab9bf8fe73fc170dbc84a57f459b46bc4d77f7c54cf1f94659063306f01dcfd2d77443318f6afb1ae8f5d1b5a0b3897274abc25399fec8f4e35103e983afb7d026b8eb79c4ebc998a6848c86d5cc74ca9614206d1e60cf2bed5be8f6421473ce0e2a4367a76e562aa7f850b7452c21f7e414e2853d4a8dce2bdca112fe07f1bfc7fec69d2a294996e6138f71a6ee088877556357d723e2166767c666413908927882cb19e58a9980b142bc93b1518080b6f6897a5d91fd6dc273c3d0049bd7f897e515e885bb92c4e92fc188ae773c86f18d09463cb07825e1714cd881a1ee872560778e35c609912cc28a242ffaffb5655753902838f9dffc6fb9e17d88d829bccdf60c7213ec906cc253905e70489fd4c993382bdc70ea876ae7b138c14affba817e8a7441c428616f92d7c288f2fb7e963c785644744b7f88c3af05687a9c2b75d388815f77f9fc653a86782084e9074f3891f166e3cf7dbddee56950457b049932806cdda7ecc648794fb0346a5a7b4bd81bf244456b3d5db7f6e46b8b22a27d142fae270fac1488c9312c046b89eb5a80b36ca340ebecaa8e8578f82025e8c8ed26eda078fcba3b7dd72742ce43b29dda101181fe4bcdac5daab1b814d8a0a5d2520b7ebda833b7c0f8cb7356f83820a912569823600a40b7e568d479f6405cd48eaec2bfb78e1321511178314780ceb892a9276edd5dfb4012400e6a1e72b6ea3d86ea2baaf846c8a780f31a885bd4d46586a15dc6d5d4d95c9da5fd3d9af50b69534c23378fb29ee9acfeea3ed9f1602a64e155a61aa181c9ab430308cc1333e32270ac0a61f159e17a932fbf38a35c30a8560966f235b746b6db9c23038d1eafbd35acf87443b793961b08c77f4fa6acf29c10af9f076a5e0fd8897167665f30b149f12d9d78daf5613e3662d0183173fffed34aee28415aab73d7ffc7b2d342d23ecf6f75c6b4c7a7f0c69602487271ea3e3438aaf8e34d1681cd872889489f0a30ee974671cdbdf8597f3f32cb23fb0aee1cd1e390e5003a589c61dc7d5e64bb6d53184d9fad8531650d44178275de9a0bcc9f6e57b29ec954320e13bee42fde981287342bd6071b95ca93dc576c13754a8e1a378d71959147bcf418085373178949ac615affb348d2d45ee14e86e9683507b1d25e243ba2ed208b378b689d6d4b8819e702664d4aea47eb584e0fb6257193dbab9e150a2139fe7268dc1898ab0cbe1c8e93df3033727bfce8a84532d3a209962e8e3b7ff9b9324b545642da8544f890cf1996568ae5f6a8cab914ab379d5f3ccce58d60451280764f45df8ad5896793aeff0aa01d717f4f62cb570e9a70595a6e18d8fa1edd72f1a5b94db9aa6cf0bde68038e3b6f89b1ccf9873eb22dae78eca2c6bc17f96796d4f8f774efa3ff1fa2bf4db38e6449270846c55825f099ce77f2e66c52b69431e748b2484dfe7bf9562966a1ffea27d15e564b3f02ee0c8ba10117e824a282ee9340f2ccaad7b88e11831449d7628a132b8a0ef31a89872636e2c98855873f05ba5d550cd3fa2f5399defecd31a4701060ebdd0a24e2a63fb828cbc4a6a2f4589fb801fb4dc06ac1fe52ca21574350d84536b94862f18d269fd4e740f8ae46d6c1d8bb0632f7a5bfe49e30c2c97a9eb4e5f2143d48f84a01609d1c3dbb364fe8292fe10718b970a487af65604c45f41c3aaece59870057ec677b9e30943a0b284b169d859b17845f405e75264907ba95eba9b0297e98a9053463bfef5e79974f85143d0b9ec38566e273f65564bfd79f43b4029e2712f6b0edc7261e1dbbedad2719c798efb15576573244b17379d54f6b1169e5be326d136ea3f5f533fa3e5f4d4647ecbb93697d6eeb21549636854bd63160f49cf598b603d30e391fa28877d539284a55ffa3299ee0b10273fcecb9b6e50325676b44cdf7dd316726a7bae688a1a134d44bbad0adb3aebf75b649f61c265130a0fdd6910ae75eb4e7c2c57f8d152f0d88a66628679477e3d02e78f1ecd789018db785a4dfd504a5c41469379f63a9ac7b2365252a3cd2f11309c0f75ff10e9fbf413c0d7909fe82b4a545e83111f333cc07b894c4ba01b7723f128e4d84628359faa3a67781073cb5197302ab654369dbe2c188d38775eae8a37cb814a5bea71cf4a3d9988dc2a37f469ce2c0a0e3a6a93b7699bac3573e2507763a9c910014abda98c1557b787e2e4a03a7a59c83d90d97b844ade2560dcd47888a4a001937400904a9c43d49699b6fd9e6094c751a75eed2f053e6f01aab46f045fce02175a99f60a5351458004bbf400c0000e9ce003a1467aa5faba2bc5f381d35865965a4ae4eb30554decd2e649461f0f7228de82a1cbc3963c5500068246c913c3a464fff9440892dccdc9ae57fd8aa67357fd1ce0fdd1362b4c5037ae54dbf99da247bd04bfa1787b0e64b0c3b9e0cd92ae3abebf0a92365a46cdfe55c419374548b7078954bbcbb17ddd437d66c9136db135b181b217b69d0d7f8d3661388e45664f80e5dfe92de448b492adb5cee234afe9eac1b26bfc20fdf4affbb20701d043b0a9b758cacff50e2975779bd7d679edcdb75ab3ee6d2c0416814e144a825dd772f5f0a8992f7284fa206480eadc10eb92fd9fbaa2c52006e61607c2340d094686039e1cbc11f0b3ddf7330f57541ca83ed0ae0a19f51314b9bc355c887f0a74d0a3edb64868503c19a38ff85ebe3e15f6095f3842756af3467ba5586c165812253450f17a893dc14914ee478381bc8f59bc5abb8b30a9b5663e6eac49506ca683ac4eb789296c8baa255117d7d9825445795ba732e778a46fa17d99971033fda207f83adb2095bd19c89e2b711bc839ac735700e1b75cc42002418dd1cd971ae3d224baf82770da8846a66030fd34648697b1affed49f26e70d40a1c0e9d4614bf9b40c6c39545dab3af765bdb9e95bdac993fd8d8853c03efae8a56aebf1d65ff0e3d1b1daa86138062dc4c4c1540935a40561b99335c535849a8e0905a4edc40c3467ed3dc65165e3c61269634e413d8d9259a31c669293ef784304550a3152d50968ae1ba892659fb8b6ae3c8a5daa06d4d3b0b4324221dfd35e09b7f7b8e3a1db872e1f21d24b8e3fb88df87b849fd64cb6c4a128637c5f43d7f329b675cc53157202f683057bdef63630909b3a9d17dd0ad57fb9b1fa18004aa15612027ae1031d2b63a0ac1421c3d1a9345635f45afd6a38bdf5cc940ece8ad11c104ec6466ca575e9e744959a210752ef012d41e8da7fbbee52805f33c865db2c167547b9a50d4f562dc0541cc4c621fd9d8e290b277043c9efb3db9e50c4514d11b1eaf8cdb4584924fc63b6b5f4911dc65f8b89092177193361ed151e059dda4a24a06cce4551dbda25edbfdb91a55a8a1b64e1f863fa7ad159d3f325b26f9300b90216bc5b5154f9dc0c583f85ca2f7190ec6441e2cae61712a11934bdacccf53974479a34b36ad6ceaa200c396e0e8bf965d3f436adb5baae5766d0421881d4b7bc97fc0b0b68005c55b9990339a565fc5bf1eb5c54862e40c133104742b163de95a87a681dd9cb8316ed2294c7936bd0874759d5df7e14c876d9b9b7826b392ac58f396f27d6f20e9be291438089fd64bae37270ae533a17ae66888d938e8735d80caf8891848371bd52de16e4a551772936c26d470691442003bda47cc2c1772e7f84a308bacb37ad32c9bc9c1a2b22276be007b2071c6c21f5072c0b5b9533b682355fdf93df7f3b0c25c95be4e8947cc17c4f71cc703f0108833d089fefee43173f33d002eb20730302199e4f121509b6b8b8470347900de82a0674411c2df8c49c4751a995397ba363f36d30600859d0fbf1ed4762a2545fecd0c2c4f715e401e6f62aa4fec6a9650127649ec72c0099919ed9f1c329ec0f6a447cf3141d0bafe96e71fb8297ebfd03467e182181dfe5fd76ae83a1c9b9188070195a0260eebde23624202956336e96c6d723b5025584668703cb84b4e2e7c28b8cb1bbef474331c8c4240ccf67c032331a45c42be31e5b3e868ab3632db5160c7b9a403fad7529e3933d020e4097cd9dd5aaf45d637ba1d516ef46588d0242deed34847011a0c0bc52a87dd87073cc086ef07132984aa5f55254fc1454055ef90e80b80a3b17eb95c65f6f64583eba7d69bc9fead60071905ec894e84fb639e33253deb0f2821d8910d7d2235c950aabdb50f5cae9ab5cf53074da7730e17bcc179284d945e517325ff80cdc7bc374d513fc1ec811445d27ee712c413516bd4660caf43d20b6261d267b64f660d29a163579de1c4bb0c7c6133a508c0699b731e7481af3bc5899620d25b907ab54e29e87dddc0c59da0e3835ae60f7bf19cd4b5603300c1789d28fb1f1efcae19e4e46cd10965f479777afe2646c95908c6f9862f8a2e29d0f0f7d68728d8ae7adbc6071fda0a74afa8134328caf3ddbdfcefa9b02c5408aeb3339b8771560fdeb3b062c826f94dbdbbfdaead8400ea01fa2c77dc65f2687f3912b983110d8c150b2359bd7d4ca375f73e482f731ad1ee2b9ee90d37835248c5cdc330da8f09d9e2e176d256bb075664d852b2ffe1987a72fdfeb21d2298589aba25b2ecdf8938836907e5bd528bb7d9406de66ebb1accaeacff7e57c3a1c8ca4a064c613bff9154c3a05de36c5443f68216f0e3af35a02ec2b05fa5c7fa754f8c4cb7ad9d19ca5f478c76232f00ae9066452eb1863c9d975d8ecade77595b93d5b952f77061b9dd6efc78afb1587d3325b9ab282a6867a3c05b5f7d519d254751815936c797780eab6b177f0201c7806b1c656242046fbb504c105e8861334a1e3e1002f11b0a6f3b18737b4862b3397010cb2267deb617d75bc421116e68f9652bdfaccf146234a2d05bc84d04f4bf1c77a19bc2635abffdb523f8783d0b0cfbaf984b2a912d91b76604f0ead7120a0d2f92cd4482fdd71b64bc77b54120e02eca8373f1e31b8bd0145a04b3a2f67722be45517482e4af5f3bdc3535b59a8528822b0c4a34e393c445ee590e31a00079c05545d59321fdacbb69714a9ec841587c71843b3ae6aff7404b69c6e11fb2198bd52c398a26eb70a07006f857f627506f09abac146255e5d1a5a9cc0258283917393547a79e24256324043b5d61bf8068a1786ca31e38d1243d6b55fd494fde40e9b7ba3c093bf8efe839cbfd5e38fae0272c4a67e9c39cb4f3179cc0bdd61d84a0a27e8e29c913faeabaf157228464f2908535da33cde53de75c061f0655f01bc79122ac142a618d5ee979c1d04f22eeace79c763696847bb4e7bf653fc7bd966e3386d4b8a5b1f4a241b02e007e47aa13d826d0ddbdf5850f2025127ce0e9db056c08e16e97be5c9bd73c55ae44a54ec3bdb40e1bc066bae192301597cc2cced2b28641bcaeb1678d8b91a0bdfec73d24ea142fa3226e6b644130322df07d31f41e005e6649e4d017277545b2355e65f05e236b647ecea4fcc0894cfc0944633e6d700a28266f3b417b02976166c06413ccde6bb38dae6396515941560569c817c3158d29433da4de3e674e0cd9e95765e24578412a65543522fa16d466429d462afb5086501f08cce875bbb6ccc6c695fdf5598621ccc516b2030e845fd6781f81cd9c8c32c07d814d766717fbd376f67891556bb580d4b557022186ac0c5e2e03f1937fdac3ecdd1eda73b56069352cacf3d4b4d923a5457c94df1c9a73cbdd4f60b8073b6dd56cd44f773f8456c9a4fd7e952714c3d716fcb793039bd22a0ce12ff02a6d607c5a0074a97b4cd320373277e5484631d20422999b81dffad12983d1996148ce6b8e8e7af37ceac9228562429d2dc16fc28c95e1ca9541a525af63ef011fe2b5eb6cfd69cbb0049e4c4c139c9beb4dfdd4e1edbdb633ad31f6f2b63937d5e3d497f09e6323e74cd94942069e13e3f4500fdb1bd803a9631cc990f18cbd44e6612294ae5ed90538da6dae7f094018ad7be9781f21a742491ba2d39e1a6a80a3a59f4dfaa9bee7451c58b4f20359ab343606bd5acdd68d45405581da64e9671efc02cca3272eade126d55aa427940ba26082df6f011852a76761e35b46aa9322603970ae5d21e57b11d2ab609c0b5c8ce551298d6d1f377ca08ef36c3502ff8032f8b8211f52762e8e92d3dd4f0153bae99b1da26dc2327d70fc81902f7f193d5d5871e26a949eee3fa01636d9a4e347093477339e49ae0c813ae8dfb36c669caf94ebc889df78ee24d04776e2f09becab3898e46c02bde7494511f09ae1c777ecb781d3e68fd6c4