Security Research
CVE-2019-15107 Webmin Unauthenticated RCE: command injection in password_change.cgi
Thinking
2019-08-28
5 min read
Research Dossier
#Vulnerability Analysis#Code Audit#Web Security
Webmin’s password_change.cgi does not filter the old parameter when passwd_mode=2 is set, letting unauthenticated attackers inject a pipe into the unix_crypt shell path and execute arbitrary commands.
Unlock to view this content.
ad8d9422966c73fee42096dad808c6448a272095349f41facc28f3d18d1ee66a0726fb5aaffd9271b6702e0ae53f6961031443030e63d37842b7356b4a67d1f44b648f709f84d99b1640e6f7a87a3d44129b61502fc0c5c728a88c67798e6cfb7bcb30fe880464fad1a2cf9635735fbd6e964b402ea4ed27e494f7c87c72f1c586b333a4d4b6d4ade7253d06d61bf923572a6b8c253d117e8b63642be9ad8c68eaee7d4a02592bcdbd3155abcc6a953135deec61ed6729ad92ae056a76758bfc9dbe3a6985ce8337691917f6331ad5bb4a1f33d62c0c91813e54c6b1ef7de0d1bac14363328c3ca3bc8c509c1f16221bbb5681590a8e28954a2c82d00af5266d67ff67b182c0db0c6a9a82afeee261f2c13004645a60467ea015ea722de61c82f5ed9d688f3323ed29a2415b34731f663b84127e4ac37a54153c863a4adcf5c3313ea9b2ee0a0e9b2cc8a4c773ee7d98d08df8e120bcc18fdd564dd1b467a9003303912222e18374d95c0df8305136105e7e413fadf1cdcffa67ef949858259b80b3012908cd1ce6d5288b331bb1d112b1a1a115b55ad868655f9cf9769a0f3ce896b7273990c739b99b44af6be420d022fda65223c876e721eca3ad89e2f1f9a397f89da7564e4a52dbc8e2075aeffbce44ddf62b6621b5c66bec7fff83f1675d6145f4fe2609d995ca59d92c4dbbe3971b015364cf8b6bd3bcea3f6bfff646d82a4b57a8cb9d7f6e0eceb2ad97730f79732e29c88ee91116fb7cd5b8b31c6747792e71b7cbf6ed599361ec503acad25c06942a76c6057d64dcbe525dfcddbd34571248f498c398bd90a001837cc7052050cb4e8fe2666877ffa8d8eeb5c05c3225c66e00d48fb226c60c97e4088f1f9db9c45391c0186863058997f4d09a4e1a34ed1fba7484f3069fdc4b900ee80fc7daeb56db783674baf0a3fc3ba5f7f1605374ac7549865c057ea7270511609f9745b8782d78210c4f2944285bff93da368ca11a38b77a79ec719de0acfa438d8f65813ae61cbd96a6f55caa92a6d642fbb6522e581dba777b0a12cd3971078ce903d98560b07245e83ce9e48e7d563b5c26c16e35081f75f093a9b84f6e95f198ac6e7f7941148ea177050cf85523bdda626712e529a1afe69b57d96999caf1a3b258f374b45330fd2753d7479715dbd7cedc0106391b62a00ea290ce7abb8e891cf8854970123ed9524d6e36e8889b404074101f854a491f570b2b51f888ed81087c0c0fd1673b84db995b9dd4647b85ce8d08c8b5f8664dee1758a5264446cb0450df77bbcdfdbbf3e45a11829995396fbcb8172a8295820c7678c45a0b2e9ffca6e47a2672f469d663d0a3e4bc2ec9a2226e1482260a0fd6bf0465bdde9a1f287ce8d07b396a34a4e914d6d53cf3495d6c2203c45cc5b94c4ec7e38d85000bd6e64d7e013c4fe2a5b6422486ab98506b200fe793140c7b0c7b6b2f79184e5a3700059566d28c74389ebf970fec12e2166cd61d2b9342c0f380fead594760c2e2f61786936845108e275560e2598529277458402c3fdaf013078e5bd05103642e25a9c4ae055059c0469d4707cd71f94dcdd49fc6e7772b578e3483e59e772d1a68f3e8d8107a04fd317fa50bdc5696284fab0b294538f5865026e79923f084d3eccebfd45da62202f31c9e84fa6f4defba11654b3b782688c095772ac50603f0a16e58b6f9fc52bb6cfe3a21e3f149299c2d3c7c89201a30bb42349ad6643c942739463716e7df2d41d625cc1343b9c03d52befc45a524ef86e9f33edac0ec3a180920289a9f69b6a5c773546b7c4848d24488c34778db6e6c14fddcee7d8dddef6ddff96fafac07bb74eff650dd1a934739c2caa75ad2e8aa5208dc8278b4f4acbcc51f9153609de82afc63ff8880f2550eea491cece83c4ad21eb47899c155a34eea5ea4630c07889951721c610d327eee2622a011e16ed33497c53c7775d69bcbf95569403a39a342466fa0ce6c9aa45c58e393fbb6a2c4d28cc0c205c9d8e3245becf02a9ff8355e37c53d83d41102ad53cf4c6ea148abe3378277565c4497f6c512a5635f560f63422c82e7043230e30f74562038abbaaa452e7925259d05d9640fb50ba5b7001f501aee6096d9cd13bea5103e8f94c083201aa4688ad3c899e7b95d4c9b288bc62e52a48c9763a2515761f51e734adb50ab3fdf177664cd7823ae819fae41d9d116501ab7f9d7b6a98665957488295181924b7cc61d3aac758defd16c765e7def4b6e4f433526d4fbd5311e09784b371706cc9b5c023659c0cdd8208e6228413e9c4f70b1ce4c3af06f7526169d565c465fdfecf8f5615352da1e0c9ae86d5a5e070e5baf374e3d9f0f8b50b4bd48a1240a4797891bde2729a2c4c3d8b053effb9fe616fd1021b0272f3e84186769fa541b9db8a18f5c3f9ce5daaab2ad8010e8798ad79fa88e23ce25f7cfb2a81eae7c717bc84c64858f464e677c74d95f9c321cb3e1266ff19c8de771462f42884cfa85233b287b743ec6bc652afff239b1e9298e792c5f7152a804bfbc73a71d9c38a0a0f86bf27796f5704b656211c7d56e20cea9f9698bd3b4176dfca0c5f1381f399b5ceac4919d48b9b7bc4b9d7dc2c0b7b93a1e7ab993021f1b2711d7f8c9eec256b3ce3a9b2d9598c845d734e442050f9732fd81692c0284cfd77cb9404d792d709539be3d7d10c3635f0e0ab64c8d6a7503f7cae316bd1a0636af4c3b097af5b70c6e97292a9e704225d2a7d1b0c63547864b8d1ff7749b808d07b966d8291c661ab60fb088e72482f64d66d7c9ba7f1ff5a13fc3d8c9c65b4000ae4ad25e7dc62d2443666627ac91ba997ceeae3123d5e034d788585ae29a3ec05f59b3b3ba4247829692efe8e759962f32076e4725959d61bb41c62bf2001cbf6587a12a8ec4d393a61725b5cb1a7285f6027c6937952d3d3966a4fc457b1de7a393b2c0251d9b4a94d65d9b15b55ab00a15705b4ba04028e3bc5a81e5090ea386854ef2acc45cf6ab1d066b7bfe474de947d30ebf82450528f6e9eae5e5d04a45cc243b09c62932a91e35583aa0f3757a16d21342e66df38d03a75098229e1bd093168b642ad27a5e66a51ff1f2f155dc871601cb3554ee8df16cc954c706826fb2447ad34f4e95f717a0ebff073c7bcc3f6d9e600e9bdd3394e86498b47a6b34cbacc377771ce308b4b73a5bd1cc1b163e0b160db9a683b404580e46800d47a336c5549e5b29bfd4f7943977f6b725cc183b5f1e6f4b4d4e1240eaf09b50bfc00f808964873eee16a204a2de3eecac82c1676f7c1052f65c205cc7a1d81c7adc943fc9738fd29217b535c868468fb96e029acec3293cd50b846a2140832d47707122ebdcd92d2c9dc6f6755c9002bf166a6a2aefdf7b880ca09ff8c75d078bd6067879755592bec0053a8ff42c47cf5a210101d2c0c5fe1c22200fb90a6e069413798efafc390280f84bbd14ae78092104ff23a77a0621468aba232c93653f29259f510bba86c248c77eba2dece7b9386595431219e69e7824b88ccda5322b0a12d114feb62e5cb2b123db1b285da9182a69431065083c6e08e15f1a99b40403b7bcacdaaed9aab855117a6f3e52a1fbf31e230eb928d4f8be28c52f7d7fd87f401c2b26efdfad8a8b58ca15ebb0ee4caecfd261d37d0ee3cc5708d7c9833f58e913e6c0fcc07ee70456e757f968f977a127239e3274cad9b0f6276534c93bceda910a891183949720325079b55c54b75bb3076d8a8721993b7c2925bfe6007003c58ba6830a684d19bec5ca43f9f79bfda68431e619a8c9dd776e9809b39744f997bdc3e842b4ac42c8e5214997bfd0fec5df90201a812821b86db3f3f9153641f8ac6b77f7bbd59669347cdf8280ee7c1a74399d2441007167fe71874ee5cfd8c000632660f7e0346b766ad3581e3a744db63bf2b7a7caab8ee6219341b2b69f1d38199fe18191d663e1a4b2f9e1719e33d8f28c309ae9162fee2fc16249afa4758532c2523b6502324efaa4bd7138d707297049d8d13552a9cf2565838d8f75ba238bdce2b42d9127f415d1a84f8489785a0f3a7d787ceb02d17ac6305c3afd259a9f9c8393b165608761c83b3c94f7d552e04e41b5dea1236497e51c6a44c91d2067ed3a5769546f8943c4d8df15d2898819937edfab6a16ec28a40895fea947e824276211dc890720619f95fb0cc8cbc3a384a6b61c4a45a4f5ea18cf0f8bbad4811afd081e4995954893af76c9daee3e3486bfd7c716a6a29db19fcd4c9295d548348c0fbbe51cd3b7779314dc09a6b5255618388be08bec4b0604dfe3866f61952453aa00024fb9588a8a8294650d4930284d80899d3bd7d5fd4959c500334489441f52d70de4e53b6846211147693a6abd355e5d3bc74dc2206e972d27b0e9ce854c16bbe295aa3bcc8c06bb6b09da4bf2320546d17a73bd38a6082305d448bfbc50c2e217d46767582f21217c016b4fa8bbd13a98c2f1d3d6fb08d3898843d3ce05bcf97fcc85bb3015c78871ba74a579828d5c1b88018fb035ba9e8f8189f1aa54c8167a8afb488f0aefd1c18402bb3070bce587f20a368fb015ee0bf90c2a7dab7ab633d8c08cd0506ef7ddc45f64d7beb3ae622bb5f6a71787f7f6d6cd67d0f26e48ff591d8acb0b435697342b64c128e2a2a0b1b9b0fe1959854a44e51598d1df9c531320004c46df0628e7a86be6d533cb03ae26b1e2b692b878e394889ba580e5a25ce090fedb807ba62a7599b5f5abab8ad16afa04cf9b46f0ae7d626532e5f1e05710d33e2aa1d081e3ce01e14aebe7d04ea25e5f09af2044808be1825d456b73ae634da74994e6e52337f2f7d9bf30bbb6a64f21d7b54b55d42452d53cdffd129a9ab32df5d20f2525318e4a4c2c55a798c942ceb91aceb4d15275f18e4d72b93dc7bdeb0faabf34fb8e28b0b2dc76fc9cd6c80907982d4a3e1f1950e4d7dd1ce4a5b58f88fdc59c3a24e2cf02a8566649ff9c47c6ca6fd1a81ab11f52f36162152c691833707563bd9cc66d34ea3e28d70c133e242092efcb7a8bf741ff084f7282f957aa8a4ca709de5d4b2d5df9cddcc8f20358f15bcf9c4faa56728dd0dade245eb7959b3b8bda0f2d5d511050ac8cf1f11b621c6725b8ca6d0615cbe2fbc8ef65c43e08dce0d95c445e7529e685369256284549823ec43e0ca048904ef94574ed40bfe0eee4e4720fb1cf14e35702cdd16baa0a5cd3d7e961f7153802cd34c49ad154cbc53012d5aef318d64ada2033fce371780e2ed719c76a184c6ad198232c90e1ecef4d198805c7b0039315f48334ac0cf334cda6cb7442a81c0694bf48a06be0fc91e295594fcbaa34f6ee4052df3b9af78b2f1680906f6035b9df02a2e0105b0b63694322376e7f12b9cb9e81f61ff9f40204a741196466c2db880ed5e978bac03f6deaba36b8c3b6451fd9c4094561ba96cbb0f1b5d8bc1c9fa5c82b0055a66fb2d1b3e94f7d8a7f8e982adc0f1546ad4726ba007e23dc44b825f9c8f0d8ea6cdc9da6debd7f60e9ec71c8f9c4f0efff90ecdadaff5dc5f95a975267cfe6141f6d1e4fcf7eea86488f7d4d3c48666c234fcf3f28f9b5661b1d4d2d88de8cc7128b7b0178e49a494ace57c1bfd83dfb6f5b13eea90130e3eaf42f63499baa5809a0d5193002bead453157ba9edf786b74585310484c6e08b5b8c9b4882a75d00e013ec412aae18eefb86d160aa93f227365c5a0d0e107ce1912d62751af8b554f3c31b586c27abcd9efb7c0cad971e22c6df06226fe29c7928f11d5b646ca153dbb01c9a7f892e73d076ded8ae095175962bacb5b648637304212f5ab6d8db18a11cb2ac7b6684912ac26684bdb924f7af56cd4ce643e6d265ded44aeb4793108598e8138d0d77cbf8317f179604d59c9fc3f4c91c8830160aeefef3e2c332984cf6286289b73f44bb67fc4eb2c6b536e123f4f5ac2109735ddb002288bcefcefce78c648a3364d325e26c9e330f172ce3315de586523706b4da074f091fcccbdace2e37af69c715478c2420ca7011c4e5fc02bb6899edf806f733a129c940e696d8a683c757aa03bea1adb941eee59bbe1219b12d45d7e93253d210c6a03a90c97c314b591bafab28c307503e96250fd4a957cf46b8ef3ca0e95534a43adc2bcc05b0690223bee9fcd196e07cb9b60e78374daa982c532cba536961b27b581717c84bf9e981bab3b7e7ec4f4da7aec49fb4f45c5bcf2c0304eb18c95cf4774661301b4d63bfd90fb7c0bf9789bc4c05fa11bb2c6eebb7899530b72217693f051dc5718ba3481e9658ae911d2fde3b9c1c7ebb022ff6fc0efa7ffde5f91191207187871629598c8e930ee2ecfe7082b42efaaa43c3d23e2920cf243eae2ddf8c3ec05d2cb10896057b4fe0e362d4755d730a58b0ff45ff5117f5391e410016287e0d927c293ce961bba6d0de5eb431f95e93892b75a31035dded765f48b8f0bebd3161e7fe4def7adcf192d15c72c0d03298e073c1b19e33fe0cdd4e0461e309f8ba5c4ac6d9d58c89b0148cdc417fbfda9d251af577fed5a719ec36b94ab7d005f98b3316b1ff0c534320c54921af3642bde25b85b45fc780379af0c9970b91236e3f767ad07a30cd95731761114a4febcca7864703a9697bc0d987aeed7ab4c7d525ac624b863d8a34dd8b8b28535d59f659e07b02eb4cf99af3bd1feec2487c1045f88ca7a89bb6c698bb7a5b181ae5da9cc184bc869201a4d97f8f0f09f7c90d85d4829cb010ec7b19638978c1dc87f3597b1df9b82a7754937d6ddae9e6d1060aeeabebdf5f3a5334f19f90c95faa78f289d6a067563a87752f09d6e0a93fd3ba23dc53581e68f40373b5272a3390de8206b6d6a98b24783da4e1e8b46ea9ae97bdd8b190c018e3c36083499c88d813f5fdcf729a6627f35c515434c10d74a07f19cb04bb708b9ff0ff5a9071aba1f943b6a9ff410675ed4a22e81c652103c620b14e7fe2288011743966b6a8d275d9f5b76ae14a6d2f94587d3822bdca7f9328cd12e18beb5c7f865f545cbe507a6051f438f342fa9bd55c1ab3f98e68055363ca4a2caf5718868d8cc5b4afd48bf73d4983e695fcf1f9268982c257e55def12b7f577a0ff6aa9ea2826d17560736977e03bd463f92e8db5b041030963afc6b106bdaa8915df5cac3671ada655bc65ab46a0629c0e10ef9aac3f59f233d0752a5b0ed2f6272a663e33a8b262752924d4442442753c0bec9b9f1be1c32b07618f06cec73d8a8dad667276ceb1b74b3cb9961533538692c63667435667556d1832a842fe2ca42ad814414268c7a3605070c6b7a96f6db2ff5b062373d024eaa7289705158845de96d4b8aaf5b8af877ce6812c2d878db53871b0415d6dc5c01e83b020271f21b718259e669f240f6abfd53487d2205cc85c2a9df9dd1479ddff79bc7cc62c6646ecf009a132802aa29ab9149dc289ff4dc08ed67e13250d05da3e8fc12e6bd010a0b801cba347a2e9f6afabd6492852c6058e3eb8937fa18deefd3fe5a389208f91ad9c603a16e861e0b9c6eb6db74442a31b49999e346c1124de6039c3602cecb399f73c693f14248a4bbffbd8bef3c435ae7d283540b6394930063f24ef7e16ab4ce18c5d14e8470b78ba9b30d73c02915b8c8a8e241dbf00e40c394d837b91f90cfb6b8db335476a1737c8b8b393211efa7d9ddb1e255d24dd259502374a3f994cd363e598afc38699d9357d6686bd8321be8113957c8468d681bc5789ced63ba23a464480f66dd53216aa4c86ec17ba9d4d9a5122355bbf7b03577f9d236b3f6a3827cc23c0871bf98a9400d004e11d624484ace9c8e06859b8514f9d067813464af38e6d08caebdeec8591cba000d5075b7555f97ac7964978076082d3f00d9b30811f1728605c7d8cb04868a689dd8367a073f7b2f82c0286dc7edeccf41d1c4446f683525909d63b6f76a83188308f8f538a5a8de9187197731f30a5ac512c89ab6cc1857ac317301870c2aebb269adb28418a5f23d64ed6d7f3a3f28aff3e9547141747d0d241d01ab6b12beec17c9fec875c42322cf75868988afeb00a42e3211fcc98d8aa7f5609f70b5a8afed152f432f7defc5887ecac2e346d29c628abf91ff481a16db57753f14e3b6f6afb9ac2f29ec8b513aa276f943e1f3c23227429859579846e9679129f35b64ecae825b99300e3023c4218f910a7f57d8a29932a0c87ca0726da639b40fc8a2283e5e71ad52b5678146b27eb88fd6cef998d4215e2197faeb6fbac1aefd681958178295a205b24fc7a67edb99d6c8c9cbb78dbb2ded097460bf98c6cd36463753d307b8e3fabe928a34af07623de74245d059acd23225a3492ceaead20fb37d85e8de9145df13413e493ee949e9b757867960a6b9bf52b45bb1f665b820f8f540d6a5e5dad8afba843c454f85d685b6ab02872d3490377393f298b7c877fc6efb3ceca88aff4cf308db95fcfe20a1e7d726efa520e6c7200c6a1d568d0a35f289d924f2b36c07d3c37fab07a54903fb7aef4c6661a1f3a73ad73d054b7b4bec1b87b11b06e514b6dbabb561d782c89ef2cf529b1548d423904c33980ce411d6c37462e1d1c34fce0506ab02071ad2b3691a8488959f65f77c5666f99c4b3af6a73ee156a7fcbcf6f15382cd1ff04bc274dcfb788e64110242db5e71a6482ef29b2bcdc2af04f4b2389f95949d6b54a0a6b4fb842ac021dc2ce0e8fa066348f65d08259d0337fc755ea7602df30d1cb22ab39fac37efe6a0b12c1482aa15950338ca58768d3c9a3b10245e129697de15985c402745443713aacf95ece87054c7e8256707fba0092a972bea523d58db82d725a773e52d20fa858543d775fa576385b7b49b221a03fba8e26b5dcf92e9b45466413c19f64a18c953356c669aff7702432fe7fefe33be717251155db9efc871546df47569922fa453cd5a35b8c891d4fa679a3d3f1fb39771867c2f0f5feeff3598e4be5a7be3f2dff2a62f30626d498be0c0362a3ce9b0f88de2ae6ac04bbf93a4a6b4f068f85cfe50734160f5f38ece00bb0dfce29a9871c37a7d5ec1e9282623d849a6d43e7eb4fa84cf1c938781b9cea0309cd70a177ed02d83a17b572d036536cfe6181e99cc54f84bd1f7456c086605efc3afbc4fe86d49b7379b04e797cabc09fe272c0dcb5795789448fbcda637c147169f180866925a067789f1ca8ec9982daff0a378eb6fe2e2f10ce4aac6c19dcea36f48c3e9d3eac6dceb6b25b9b78b5d3425456b0ab5ae5455e8d58fd50f666369395b438bca8493d00b97a40d95d9720dac17d88b42171b2b4c1419a3d4724364807ed3fd08042c7129a4f8830ab5a412a701a10dfdfb202ac0cb2ff76c3e4b034b9c50120155becf4539186dc51cffedee0612093bd47f77b3a411d7515489827c2fdd2fb7f76bc4b83d10a7222b925a121b4918823ed2a0bfbfff3ea929c2c793f62bd8f2643665cad919ed0617d7d72f25b21efacf857c2b925ba457de81ca7319339316db33e2feaab2ab2465ec6fdcb9564f9c3741f37f729022c28816cbd978ee66972a841c4a505c647e2bc5d6e683790b8ff54026ba267ed0ce93498b4c60935eff2116f487a7466de19e12c601cb80042d461a6e5fda6899faab0effdc1870bd3841b4bfb776fc76d393f7754414e959ec71f87b7b431e8d94b93401c77c6206aecc4db421d6aeb7284817262521592341c992743924ef869a4a0075910d5bbb3e76ddd4f24bf0a5d2546d5d81d350c8b4d59f054330885ea2b546c5c174fa99feaee41b219dfed62443f35f00fc02c3e363b867320d5660a395cc14f72df76c7818adb6d085c8a7a01dda5460b2e2d7d906c77120c5b8709492c9babc550d373997212f069db76427709d03b545c289366d7d8d12358fb3d16d69eba7e5a19e2496ada7b3065d0e2b71c52f0c24189c27f14c9c48026ff68f4868c6db2c574a42e77e755a4d43ade541f56879995e3931a57a7dd3d949d0fe82539fb4a9744d93da8b9ea69325f2bbce3c6ff4b88a47adb41d2db14b0b772194a532b84eeb7b3f2969a6606670699060422d5809f8a1c30919983081095fce8436030a302f6b9a31e319c2d3229f3fc669233dddde78725bf0251375d597b2faca3959ec9d79869ae1a5e3250c754c71632f3fec30a3c732388a3047b878eab35e67f6f1e790d198ba1ac969ce6f4e19f660ecc4287b66de6700de3903627f284360c4c70a477740a8c3d53dd0ed17fbdb1feecf048f1420306fbf58349da83b0b8d120e36088a457a0905f9aae5da8c71c35aa7efb5148e1ea32565cf1e789f7b545eec110a4abe46975bada3e3a0fe2364f370c704f7936d5e09f772ffce47ed4a5bbe5c6d128c91aab9b362091396ed2abcb7254b6fa72b04dbbee30c999353c221586d3a0bc07ef6bcc6896b598a730c8d48ee4480b7a15440babc375cf3e51bd5befe531a8dacb84a1ba120a5b61d8c3a665325fb3004903462c4951f559d87caeca85ce2ba0205db420930f81b40103ace2187a0c041d72e03e11b65886dd8aa0bce92a9b3b0f27a150920f94aa7fc740e5a7d88245a65de6c8effacee07de50808538c35d28d4b253aa93462ab8575b741e6a230079f34b92b483cdd2f77c6f932f446376bc193d538f13b9c742ca2f979c3906bec6c554f5fdaa31314ecba70e112f04dcd641b12e2e18b124b723b820c1d923ec7e5acec9b79b1776391cc32aef780521546a806d22d42d795303016bdf45c43a026eebf9507980acb57bd26296c2d2eedb6531f13b28326a92de4d417adcbdba51752d351ab5f227f1baacc65098ed37f6179f5ee4f21cc119be13c704cd8beef7f8656490453125a34830362b9ecea66e05ad60ca897a711a01f2c1f638025bcfaadc1e912c5e955297950a0744991b1283d948bc1ec962497e0cfee90d32537111445f6269a041ea6e9852103404f07bd340851fac9e1e73a2cba28261eb75189eeae196fc5cbe3664fcd498afacc75618ab68a05db81b33be84eb524ed9883a5ead9b2e2a5e438a6b65ee6a64372716716703697f7aa54b5d2a7723acc852a1ed72604f8c0f4888fc79022331866560ae4fbbf2a60da6363cdb5124b0b6b808f88055c91276d52ae4197cd38968f11b9974b1486c72fe5c8ac1387dc8d60c5b114e1017ce6ef5ca841627ead8ae55633e85aa485f261be545401cfa91fe0b92a3e333b95e68afe956d0f9b2d786dfb3ba6d4b342dc1dd4b84f42bd72e2d17ea01684aa6d90d6d2034de50a6bfb8050ffbd9b586430d40af751416bcc6782908d65e5b2730b386cc80a32b0a1d50c1b8d5150ccd30f40bd1404033957a08ae55df166570db26fe5e621138fd4b63e7a4f9bf0c762b33b010d52581711265c8b03491919621cf14922fec4f33be22b99992c9a1f8905ae44376e3818ee2723d0184349f2be00d40bfb21ff5ed6e88582f8c30393dfe0b46d35f19d3f8c365de2e359eb1b6d1de3991bd7ac5871c13cd1b6fabf21d5161e1d1b1f0f1e5abb0215612adf4f17a67256724e5e0f0f331c1ad49bcfff4aae4d73be71ae263788c75f172322b1fa3981a13844918661794327faf3bf3325735390cfdef2c9eb14820951a4cc8c4d470b0e31191f4a471c94df34e4a36dd5bb7befe8a3963b5effa0b63865ccdff70b3e08c8e7fd05849e1b9529aa8d5476de73de813cdbfe0f53b55d4b689d90552506c69e38d4b86f055a67c5906f9815598862ef3d0161a3b1b4630973dd29cc45014