🔒 HTB: Rega's Town Challenge

Some trivia

For christmas I got myself a license for Binary Ninja after having used Ghidra exclusively for the past few years. And I gotta say: it is a godsend of a disassembler which just works. The intermediate languages are awesome, the debugger feels good to use and the UI feels super intuitive. If you can’t afford IDA Pro, this seems like it’s the way to go.

That being said, this was the first challenge I solved using Binja. Although there was not a crazy amount of reversing required to solve it, it was pretty fun.


The machine or challenge is still active, so this writeup has been protected. Please enter the flag (if it's not rotated) or hash of the root user (/etc/shadow) to view its content.

6ec4c2248fce2cbc-ac85712a1df8916270693204-7d4cc7cbb545d1ee8ad8ab07ffb9a2b8f698182e767afdc7adcdb393bd78c45950ba5cc9158170b55d6b2d31e2fa3e3a4c7d8a535eb8a5e8d41479821804d16360f479a6f47b6f69d9c979bd6d672ed9e1d882d702510705c2deb4fc547cffa1ec311a4051ea6516e89b5f03bb8ac9188d5b1f5998e33b26b07a8d5bc21a576daf063b4e858f4f79702508c5b26ac0f26d53b160f5fb91c9f04aa0e3a6031486723786188cc009b0a71eb40d0d0652a2bb03bc6b12e01254bb927a6b19820947e4737f42dae718e2f059a39690b5e89228d752f309367c9c993a8cea4f3113af499181c2bbfefff89f0a7c248795fe99da957896fa0bd07f09df6e6733cdb1049ae6e917c45d83544551f201e7c297fa3c1ccf7b83f62d31a55a794f0793e2e818a1256b6cb30e185d413a6feb0f02712a7a46353c8eaab0719d6dba59feab61730f83bfe34a8edd15350256263e49bfd899fa9c8bc10b8ed5c1a3de427e6beb53f48a834fc4d9b89ccab24d89f246a99d834d485b50a33a20c2d7af8ffbc85969bfb2b96542f08043fc44d5c10e9b53e056e05fe99ba1137b0ef9d7b7439fbacdf0f862fa4b52dcc453000068dce30fbe5d216e5c5b42e4374e5e959cb5f59141ec04ef79fed5d02a5e917cbb159b5195012063eb683cde877e47a7dc76c77375c46094e6e36d66ade1a2971a16a35146ca9d17fec03029b25857a5bd7c3244c17db50aeed3aaf6d20d293a419d77f742fef02196fad12c1f78c41289deb4e4be44af2ef85fb60e442ed3754c70dc679cd60080004176c74059b21c13ff8f0563707a38232bed279c19a6973f5e5b5b32fa69dacd60f3ef336667815104f33289da2933bed3fd3da7ee948df2c7c589b60da5f33c2bcd253f2ddfcc2ca6f5621f974d0a7cdb1502a311908838e790188233dd77194f39bf4937788c00ac693db80205ba102ffc1e182b1709e88320a6f100d02df9a3ab3f008e67ad83a58e0b8549a7bf6d6857544e12d76a325ba9c51ba191a5c5e5a9b3e8d6150638806860c5fe71a4ccd4632dbfd573029ba5206325e1ccf2514356605b623be7396a6d19dae4e193350fb22709a6c8045b47f89d2537ba59885b85b3249ce1ae79a2912f94878e3af3955003ef7195bd280e86c07b6010857fd74d1c66f7067595a5b0025ac8bb884466f0b445f4ec261898a903c177fca4d42b9232b77a58e46b6af57fbd2c82968463167740459d6e24adb1462c8a859f7f5f31addc1950b2b01d505a7783962deaa0314fac491ff8535e3a8b91348b1a21eb451183e6e5d1e40c1270895cd2ccf4e2e35cfa76cb431618246f8865be28b8941c270aaed811597cb8f6a2e3a7e01087c123fd6d1679897892af2247a09f38e03766c7dbd26015acd275094c0f01cf214513fcf6f453d4c84836d19575b2328f860464dc2d1a8411aab70538ed7bab0a1979c62e63748667f6a37183a11c30c660977dbc57ecac167a8482304e9b7d1697d2c67383f9410a061c4b9adb7384b2540a8229f43ac9bd5247d105a66d89c95a0f5378e030641263e1868bfbcb064fce285fdea0fabe221ff3d71f02508ff1dd4f33afc5b5dabee3f62db1391a0c0ae07c75af6671303fb809d0cdd55254e695585e5bb26ae70170e0d0c04bbfeace6aa5cb61bad3ae0debec30228a07cc72e0307144d618ec6311fb5e7abb769db1d4cc67379bc432d559f8a74e3de8e94d47322ef9bffbbffa7b27f6ec7e738ced9939170e8547540825cf3e47eb3a672b030e1f1e97fa254d0fb6cac6c9f372a2e816c9956496513544e1b040326f332f5d8d81dc0b52d51740b8cc99313810e3077232b853318cb4ed2859b198759c9d26edfd250189026dd54fa26929242b7cd7dafdbc3234bfdd996026f49ee6508f0352bf1cd2925a02216a86bb1ab4373f91d516754ae7ba351dc48364e21ed782fec5e1e0b6a495bfca06da7398b8bb6b18dd9ac9723c4b50ce8f2ff3219f75be9f2fb9a52cc80ee37c089b44843b9176538724d8ae23419fcdcd19cfaa020df26975daf58e1d1465f26369f116d4caea92f81c009ba7d38eb32b1acf5c520d93ea56242295cbcc5589461a75159623dde5f01457ac45d3aa46ef64913dc79402b2d2f8ff2c0c57c78a4ebe758394ed88b803238e89906b90a072aaa90a3e607ce9a5c33fbfa4db199e5f7f949c68478e5dfeef12fe5dbd21037412c9d163ba6a3137277f5f04b8307302b776d847ae76d335241803b8e4fcbdcc5d61ada235300ca0f3ce0c5920ce9f97cbe8ee233cd5c5849918e006c3a3000493844b802cde621698b03b93ae283a9fa86750aa1fcda320a28548d68d0e75ec7e8469dad811dd064350dabff2d767bd8585bc9e8736eaa352bacd9ddfd13e5666afa8f6c872cb4de1b9e7ee1f45935581378c86904159e82352ec42221497e894de432e4abd54707f3d643def8f51e0b0d3a5adc1aeacaf00bf0af32702f232ecf2deca73f6ac8d0e6cb9b5102710853bc50631d675cfcff4c9329604e70d505f73ed07194ea3a293e00ab09793af4deecee907b21fbef43a39c78c926f5c302384f19c7bf6c73d4a53ecf2006dca5d3029332de6d0c070436746f1362dfe1521f39dcb440b7b9d225c42220ee67040a5fa9091d730d3458bda256cbb889da2d538636a5cc3930e9ff5f725e75889f0d74b1eefeb06c9f5fde5fdf9932985f45e828079bfd1a22e37547b964622ff47b455c4c4fd127bbaae21a6bd4f72cc505a5c988c829b46317df09952b53eb08f8c27d2ea9dce85fe08a5fcfaadcd192e01300f460df338faf6fbf2ac3e2e2e0456405665e9920f111eb92ea473ce0caaa4a23b087ec950b8d5225886ee3f7d5a11a905fc6b3c779cc2c0f12df6bc79965fbc6970842c126bff0f34bb6e189be97d5a80d8802742af6d58257e46d73db1c15e369cdbd84c039908bfa3ee7f5bdf8856312be9e63d7c29d73329460c609931635a63a641799c393ad8f1570a5c38f30b74deffcd13fe8462f10c481efb9bb6884d197cd8d0387c3ab5ca5ed56ea4caa9be7bb730d16b33ced02705d2e785b1802fc1bec4976c6985cc21c90209564c7cdb5e250850ba835c0582d7127af301214413361ad18d277603424e974eae9dfb57d189445a5484e9c7dc83014c0eff69c5ae3af7298cf058f1e02b62fb3b76b0c501a026749dd6a0f8084418df61d7edef95f2ff293cfb45f1dd987d5f9ec6474c04d4213b809acdce09a39a57395ab88d64e9c2b78939aed3b69a4d8f7b95e3cc5d54bbeff944de51a105fa23fbc38c08dc1721bb793734be483bbb5f6556f452a06b80e5ce3fe3f9928466ae75d64822c14948ec3c4265beae60bf4c12086fad3e75fac8519455bafbd774eff4cbc736c1d9ce682a229d923c8c9954683dc102d28506b4f58a319438ba9ed1a4dda81a321c86451ce26ca06b7c0a7c8b165a1f47b74c4474fa0c18eb6dd74f304226e08fa659ff99434b7a29ce8ab8b7abb75fefa173831009fec5c8169b65dc9ed5d61c8879f32d09b5b8f1d38df8f6f577ec058b981762d21529f40c5ee0a6cbf36dee0860ce6ef233b215ac6e2d8eb04e00e06787ad8fcfd4ad7562e3f42966ed7a8e73fd94f80f1331c1087589553afaaf4468f71f6b21882a02fdccf24e72a2065d52daf4c86f1ae389619828e1322826f05ea48c9d251c328d3017572e9214b8b75f20c1db5540a88014f024ae88447d4719aa9fb38e0b4b997797869b8ec4cd70a05756eb29810e8a27ed16818d6075016ddd660d7fb60449aa5959f13836bc897c14e64f750c1cc0038449e65ed9177290c98e3bf90431c101d2eba77f005123d0d6c692af08915f21087a7963043a5d5d0f7a0185582a9ae0743fe692c1dadf2de9c4c6ad587a7f6ce274c28698c6cfe73f31b0e9efff3e5df6a77c7144da964ce06cc07fce73aa0223bb7b2a2f8dd972503d0dcf94dd5e57a021af2d416007214440f0d34d249ee04e0f61cc9ca5bd6cc4ec5f04c8718883f07092056b1d41b5407598e3cb9a56c685e1e45726e640901fb95f1aa5d8b2e9254425f629348c6a2ea0627c356ae9bb39ee395c2b761ba5acfc621bf21ccfce9a04318bfbb4cbe239a535078e92d35ff00b1d7a74a08793f43485effa32ab749d555c8dd63671bf3f25375a34b91a036d9200ab7ade517fc5aeac013485d57081ef9145756591322b6ec7ad23154b2b98b48ea2ed10c73175a5cb516daf80b20351aea21463609c42649bc93d963786aa788cc4c2a9ba9713f04d391feb521c125cfe12906dce08c98a23b53965af2613cc754c9c6dce2b7b9939253ace4b45c11684a2b78996ac5d9ff2b025c63058829934ec99004caa854b2d59a2ee248d43f6c84898599ed9835866fc757859917533d9bab168cd8033c7202103ebdef9733d964bad2c9887ec240a6b77b3e59b9ae0859739b01ea7a47d82c216a39008933ac635447b372d1e6ea1fdcd7195af0ba8b50b7f029065afb9c7b4a4642adad2c015d330bf24c03e0f2f70047fcb95602b4bc2b3b7f1dd0b2935bab74e801661c67a69d9cb319cde983095be59a215a18dbed184c93bc5989066b02f94eca5d9d9741345185c479ec1676f4d826c959b5bdd65cf89361b2de3b77eef1f84ede09cf79c1b2dc4463a11fb64e8e1aa9d10ad043741274cfb449ad11ff1a969ccaa1197f5897b44fcea096206327e0984bca3a77309a06e6f33d1f53febec1182664d2b71084398be60d8ba87f07c5dd3be5f29f9161e5c4c94e3a1a8dd707c8380c5c5974941b4dc94eef77506f20a1510c3b8e51e36e82b07c7aac51a451a44af57e7794ce4fe1d73133f3df24b8558ffd8623c651eab3845eedd03c87a35c71a1d1ba0cfc4498b7ea1d18b79b6a2600fdb98db9f5396c06c13b16d3981d8b0a76d87118fe9dae1c4625826fc0832cbe21f4bcd012e789317a367bf156e2097174dc64880445c533a5c55ccf1d886fd50ca359b1487596f1c1a3905e7afa34c73c13e71d7de7dfb1454bae7ab2c84d9a60a8288bab005267a316ae942f24c7b96d7f07e6701ed5750ce380eda0afe0f451234bae44324520c0acd92566b5b817f80b4952f768a40eb5fb1c99ad7b8fb65154bc9d59a8154a58ae3e7620f2484e8b411cfeb86caaeb7ec7c6a18497bac052e412ad7ca3d70c12c2851d46c97e3d5843afba9c2db38eb0f8728eb0663e006bd19846338a9ad7b5b5f1824835f8b873c1ddb7feee0d90da68dd24e61996ea4a620c416f13e3be6eed65c41a4e130fc6064b79a92bcc0d7f3188f258fac1cbf97f4cc7fe24d1afd6e514c4a60c69dab2f43ead9ba1fc1d22d4df8baf9845f108797bcb27e88634198f946ff6f42504ceb4dc095018035480ef4eb54ad2a405e1bd78b1a9505d8769a65b7f7b1fd4a9e48303a6d77f98d371779c383a70e9f178ece1f351201a09961462eae392a970fb75dccb438213dcf2ad30c6fab34119b8ddd3253c781a74927bb2c2f07d1dc5a460e7c14c0631aaace887b4d66b5f3d91960b08d0292fc8d00c00f80fdc94f4e8ab67b26a47fc81c910ab9cc0ec549250f94cc5716351a07f32979f817abd9e33c7b16346cc991d4587dcf31f3293f69eff7e0b00f1c106acdfafc00db3fb391cb632397ec3683f877e055350c2bbbde257a1e83832e05bab36ebde6100a8b196dd5c95e6818287b7b48dc58fd8d555dc42533632b75fda5cdc6187af6eabb8105647dfbaca0d2335bea20be6f87aadfefb45e369df100ce7dd883ec584c89067747febd032e46c19996441ef89e4bae479e596e26ceb62682fd44001e45f91600ab4de7d8aaf8c090607ec9dabed18e9dc35f6dcd9e37c6f14c7486b31058629e6ac8d8f8819cbcf4034e82b784806691b8d639fbbb6a12f4002c63ad0d55a49acf2801d25345d6fc613f58c295636e89d1e4a94343703fd6858a017593a0815f719a9b77c3e6d53b1e5442f3a1c09277cf5fe2c9719ca15f54dde1e0e14fcb3fd48ec7c80c3b1c72ef220cacee9abeca4d0c49640783a3e9c976757f82602f35e4d38e1934bf1b71b43f7450dab2114157b1c3484940282528412206e0bedb3c8995326016b731d17bccd84064098830d703712f064f5e7f3614733de7528e55e924fe60a1f874ef9836f430f0d08655190578d91dbd25869f2c5b6ef10f43fa923e119932d5696cd8d23649b7ff15ea9ce014017a76d9c128af68f974ba6fd0e281960dd631109627619d62cafe17b7fc5a1e2d9205cd7f870c7aa775f2cf0eecb90c9ce45a6ec6018c62aa1b4275247f8848feba8a8d6a9eda99abffe45cf2f6ba2854f7e3c4728c0b5373cb5fc320984739800deadcc6327b37a91d3a0b6adac8249b92447575fc1c670b8b5e39bdfb53799fadb08020ca04ad82eec7fbcd6ae123d34493381cdc0700f771cf8c812602fa7a8307cd9cc0be5547a0c98a16dd79360ea7da8365fd784c060d112cf22ca7aa1d8dfaa9e6c506eaf872e4aa0a6c463144d384139c0d82ef925a57ea6acf396066e96da6a77f0b94a43d16e265c3fdd9484a489f6d1107cf3eacef8c0bcfc8dde1e22a15e4d98deece07e983c3356718185d07ada4afc0f58fcf903d87c1198356c372323093af47f2b981d6d1ce5e0b2fa53a9a9e433a420f61d30eb1049581bdb4a003bb2a0a470819957894d15b8dfc07560046df018749bdc5341c0b343a0ec90770eae0fd373f95262cba01196787af27dfcabc1d57f99583315729486b8c67a273ee6e48cca0323b9fd27de22d5c87c6e12d96be54b20ce7233c41518f6ef233b5a8cf74a9d798697652923ddd23428cca23cea87931173ae97239ed54a3e480b8464cfd431b91b9e7d01e184b010595c030ed4f2633bcbe30e62a6f270ff29c7c39045fffabfc012f84de0cb470922a7fa4bacf87ef5fccfb83ff04be07239e64c86dd988aec964830924edafdc831a2b4cb43d094961ceda7b94d5fb3c053ce0ecba4b8a6a1f711f0e106aed4481180627481c7ec45fce41c006cb8b5de8a409063d28af3e2ef695924c3a4f0e66b4d8fae1f709379fa5ca121ee9e36bf480e1e86a73aacce9183951cb9ba3da3c5bdba7128b341383ae8eb4546af2da958aaf72f8625fa3996fc85bd10090ef4e5952029f60a108db6fb8dfef62a9177ddb66aed7d6967ceb3777d271ebe4fe34dab0fbe8e1bf4697835cace256f9dcc64fcf53cca313cd7b62909f1c4ac240bd5be51a96fd711519e0e7c993232815516669df767382b68ec4d9db256f9f5f74f99a0abc08bda6f8164f40c0e44dbb47bb0980f0a5be0c0c4b03d0fc54c339eb8c132c0cda4c78ccc117c81a52c55e802e8c01b06dc447ecf45cf1ba229217480d1fa2d310cc96ed5636f5ef0008ad939884ad60909463890a271d8e1b8ca2339a1425bb151de5b59fdd00bdb321449e97332084b8f938c54c1d666eee6c1ef491367c1c4f99b9e18da2348ba72dcc61831309e5a59e476d93b26a9fb681ae807ea2ab7fe58c1ef28a0838bc5623d4e9c44f07dcdbe4f79d8cb42ad0a29fbe60a49d6c8915b5124f9f8b70c7ab3e462fbc9b33f40d67c11118f667b144174d6e12d2ac41480589558146a1cc64159123fcc638177b835ec664942651a7e039492ec4ee7628246d3934dd90acec90ab0ab0e0ba220d4c4a8adb0509541a530953ca6860d84cd778aa470322b40400e49c0bc272465083be8cee9c9cfece920e47e7311656e406104d3e5f5ba7e94720bf6db29a383e09f585e614d8b39d827b0eb232d16119b0f4423f5f1c285ab973b149874355e1eee62879276aec93136e4fbad5c38664392b1cfe49159b34f644eb4a6a90104f9288321c0bb754070edeed8fdb88d0816a583c7457a4b1865b36e9c5d38eb2309c1ec6a3990fd948373d040cc78be4a98701888599ac67e0a6b6c9cf21e281ad7913e7310900dbaf617e423b0a20e9aba4b9ab0b6f360e62c78196e3bf0ab8048abe5c9179df5ea250c6634e4dfab92db93d4d458c2f73c6b91f19c8cfebe0a83920b30c2788d8e3c37382227db625e56d2ff0d86e0bb854bc4d89360dc7ee0eaf7dbfcd67cb9ddb2216437d7fb071de48b5878d3c76d9dfc9108e27f541cf18218fe4c55ea1e0b1e4263444d9cb3c92334210f842ec7d13ce090fe3b0b46f4b2c629be6fc868b3242d8058589870a16d3cd38b9887f93ab4a01f7e7896a5bb6a682f272a29ab1426a8f272218242246fc79737f0dcec1e66812cddd73e2f97cb00495e03b5ee90413efc9418f5fa0d09ab252a63fd6d89ae5571ffbecba331d89cf353f7479c4e6648b17ffa304d2035f85f3caeb9090dbd9b54c47aff717c91cfd725189c5d694412af106ef8711293d4ba206f678e7192db67c127f0ac9f86f5ac9fca7320c63f05a42e52d9961d0700b1d344309e135b868dcf506af807474590b253d07d7f7e8f299b1d662850069053b24895f872d003fab679d5783ab6703034174f0c05581d95e26227960b83f18146ccfe6c2e32d58738b810e504e9766a2845986533a23a3d6dd58ca60bad7b9623c7769818a66d4bde610f62003771a69d9685aa21837e4941629f759a5d7381b88ad0f72313f4290ec8ed600bcfc0478b5f095de0b6a3f8db25556d5f9c255ca24b6149032f596e0d8c97ac1b4e72c3bcd3b3e244e2a166ac1109adf6f9933ba264d6c58382c51aa93f02d15768810a2e9a068be246477d7b1358e56365497ddc75496b98da9c905219f173d71f30551256a13c8b6b4786453d9607aca8dc9121478777af4a946ec937ad5e4e0d73059cdfe47d765e0d2026238c4f4c0f801f69598d6b6b542d03c03c3bc3c87a7f84c618eb1777e5728ee43bc35aee939d3dd4d77abd0b2d11a8e343bb9239049fb13f676d52a4184fc46ab4f5fd12b7a3a5735537b233a6c22495f50a671ec26a9e640adbcc2e25f48a18544a51499437898c9141b2d3f0fa09b5231b56056c80873707754ab684cd9e9263858390b653aa78cf4d58473c26425d1dc866164b7680b02a0d686fedaf628cc2f97f9182247d93cba524f9911f3aeb4530663fff10dada32e31ef966176d57f8ba0c908ef29dfaafc063292927eec60075fb360148462585241401b416e510222bbeda463e9d9baca3bea84b23297a245f7359be6f820b7bc1a57b5c255278f52ab66d7c73e5803b27061b10af0f744e9c074038e0933165140c1f6673bd969805da037fd480c7c5ea9535e4542fdca4c2f4cb55a97e72ed9769cf5fd177570a872a4530a245cb8c39243577fb98e253e732f769ef290103e5b98d73fd568a8ef0168516213f0fb542425bf0c773bd4d897e66344609e3b79f37ca0dff4f364abea044a34f5f46995ccaaad96341fa4205250f27b26929db13524759a51701c378182a9e2c825126d61bd5b2b6128a978c10d7d0f212b9c56073bf9ca623cd5cfc156526b173f1c033b67eb499ee394900955bcddd8b96f16be8195da90f9fd2772551df85e79f66a64c32796d0de225f45cb6a3d463742133bb82227def6f90afa0459d7df7ff42a108faf2a4abf8989f744c12feb49e132d682daa972b611c97f00ba85b60110c3f5def8ae93d3d6a747bf4d1fcb4fa875838420547203f4cd033a433f6a5a269e578713b883b4803f16b4e19db224d311957e246a32b17e6d0f585fbae1aa612e7d8987d32563377efb16c52ce641e47fb7ea8cc4bc81f4aec4435f96483922847cbb51bbfff8280e13d32664dec32e2c7b6363103094acd51bda3281944bd2fd7390dd48352d52840c72f01eca27eaa255e6909fb228c5c900c67ee1e019d3d70d690485e8f516784a8de9fcd6e785a953103387d16a34d6d5a9e3da8abba4e1d130a47cceae92168e19ba07174f65afb5604fe87ccc277a762ae59b6b8cb4c9a722e4b5585037d9fa58bcba9e08b0b3fd76d253dd5d021128c6f1658ca1e6483936d9bd4f2211147773c6ebf6976a52303a43a73116be64f3b49a92d2a21d81a6317330ecd07b45a249f546c0fce8b0307923e1bfd710dc90ea662a004386e66cca6251b4258bb59ed00a07b3a3a0e493e92058ff30d81f3a3ddc3167e895e26b34436c5f66151626c0da6e50c0e55f422ba948095c1679708e4e9ec1cbcaa61c02c9909955fc24a85395540cd735e2fb91e7a723affcd5c52168ef53055247c9c7c6e5db5ca43320778afc3950548880da2bbaf9594a54ecec5ef65a07bf235551b10383cb00ce7c82d4f8c92caa4129080a99df6130cec74fcab6644666c019a27b7c26f1643cc754de1fe3111cca73abd5b421afb3513168dcf4d5d168735760b5b04106d77f74e030073f2b3eed58e9272690ceac2f97e514d09cba0ce0946186edd614b57082fbb8669fbe83a16d7936cb7a33fea5730e418009b8421328fa85203ac2f1ddc5b4538b22f4bef355c0528e7bdf275805aaf9511f68d0ef0b8a367bb79ed3957a93c56142febaaa8321bff05f71aecaec84367bd6c4373bd26c4ed17641202939c3a896693d4381ad057ffbebcc81b57ae525c7895c1441ddbbe0c55574a84b4b541b999d9c99ffe581af886d9915d29f42ba40a76d5d3fd37ba79ca9284de19e8abb6e761bd343f466cdf8d744eda9d1de4d8ec891c5ee13a728047d71e8ad8228e9fb171e5b06be4ae49986f98f9a8e1f5c5e20362dd95ff351cc19c12322a2fc131827f45bd2e871219b329863afe37ef1bd501ee6bdfb47f65397b461ec075411994d85a2b89fd19b678f3d4b058dfa7368a85eb02b9b3cdeedcaa3a8c0db425433b38c1ab28a75c92598d6549afc96ede94f82e5dda2b7b1e250d4284e74c687d8c3ecf3cd1749c7f07b6d898aaa8572fb7309051c866266e1b2126723f46cf6219a4b12b85709dbafb9ba0ce5cacdaf863d35f2d0d7cf321888f3c5918a4d0dcec8be581126bfbee6ed53d8843f913971ad1a8a4d29d022c4ea56e8f977480d817e303454253abc12c58776e854f4e9171a57cfdecfae4d2c1793c034b20e8d1ff71d2f9208f55ca98cd7173ad4a5d8d2b8772453686ca0468946aa4db81a48d8b28adeeec3279928641d228f74f23d441abf6088e92e37dc3375b16c95cad007a3905644fc8a771bdc2d74629accdc6d3598ee2028e7cdced11baf13ecee7aecfa1286c115a0d2edb4fd49922c9254a21329b6d359509d6af1e9215a1b7724549b6f5b0c64d1075a91ca4213e539dd8a743a08c046b5c13d96f8bc89c2037e6f04153ebbff18d998763d033629a00e74e387c1401e83a5561fe7891efcc8dfd4d06c8414e657fbe0f1dd73ffb308c734d90bb1f8cf6c36e865dfbaad7c6abe4d6a3b1f9676940be6b3be8bf026e7b08754131b7203f99adc079ed7f6cfc3f54a62cb2e47889ca6ee1fe1acb72601060363b7867dbdf849ce92dfaf8816355612ba7e2bbf0c4e5f9e8fa517c69806fb5585e79c08979e1de01eaf1173f9c30757bd7e024eb6e451199df4ee2e50b2aa8e7c6113a9e650ab09e89d44575774020ead2c9020002d2ae0cd19217df16dcacd7cb899517b3110b00ccf3017b53b5a45511593b0fce134eba5743fc35e17da6e869fe96567d49378152d606120707ffdf1c7a7a84729a06cd9980a58d3dbbfd2238c3e654458f5c3cec12574091ab4aa8d889833e501abc28720181eff8ad63b1117e9ed1d7abf853a6981a0ecee68c75233655785fff6698507d96d977f738fd20fb16971ed31b4e9acfb7fd3f94619d3f976717193f1e6e269c310556461af82958e371681afaef0afd93773ed0bd1e9ebf99a52b282f671eb8b8a6c58a5dfccfc69c686a5f3e61d78aed7320ae9aaee89aee3a065a8c87023fbd822865a289004c68c5f712ed8e15000d0c3b0076fa54ac57c3587890889c55a6947caac36fc0446858ae306db3bfd33e8cfd0db37232543912f39da21273f412e8fc6024aeb9757012651658f66b9a8d5613e15884e09fd6efe94a476c95dd920485dc4ae5f053dc8796889a6516bbd13ecc0a956098127fa060a46a128fbb728417e60ccc97299fd08ff8b283c1b1f748d3024ba23fbee51e8ac2512d33d68c85da94acce6f5e25b27a1f2af28acb33882dada6fbec57853635bea7cdfe68f4a21ce6d959adfe6ab162388589777cc997a701e7c36155a4a698fdbd87533d213705e21beef973fca611908ba7d6691a351f196a96c3cc7fd54fa5aa8ec951980c016b4ae6c16386d3a90625d48fbd9bfb2dc71e1996eb02e28c16825cb5f8e71877ef8e913feba3b2592d20c6ca0adab1d056b2b0d41eb9ef9f2a35102964701dcd9d04f9a89b08b5f30a60ac3989fd1a3f9c71a4ec96455d206b5db270d569285b49d0b8034e721e505d417f52338655d96af6bd1efc05c2c835ac0a7340623ca00a6705fab59862fcb584a5eaa7008839d45e6311a24cadd03a1cdbb21849ae0fe28876dc0c227dbcc1d1b23a5917ebc3557974293cea9f5dcd8c2a13fcea5fb2ef615a3301bd87fcb5172c5855906a926b4e55b4d14ada2d05c12113276a4b7c6adfad966bd651ee8c59b3722a09249e8c40eb0f09541b6fbb06af28c40734ee12215aae2437936dd1db84f7753818ce7e994b903fcc38c74ea78bc8860632a859af090edcc89d45ce692bcf1a17a7f319f83fc810d0cbad9bd6f784b1ba3af0674690b2e2a72532e8391b35f68a333870cae02a60092fa4c9e327bc189aae991c82589a65641268e2c2ba7b757bf8f574feb3a8a701f21ad841d4fffeb4ea76a3a715486990adf9cbb95a5bac30459e85f8cb32e14864003861fa8d69e2dfb81f4b69f46555df450b3b1c54df5564ce2f1113a460580a6b340e66ebb03a1091b75b144952c6bd2dc94749db7ca056860feaba3a2f10cae8b1d74ce2c1fa4943f28deee80fde775ba5d4ff8a00c28792a45bb5109f360b5e8c9ab26dcd0dc835a6de2090505bd903d702766738a9bec6c8eb0e104740bf0b7f2e0c3946314a042f4b24c2a25e9f41095acce8ba035b8033bf83761a802ac84dbc24533473ade8818b5f90cbc85b6fa7937107827528dc8053d68f3f4af43daf052576bb859ea6c84c1244cdc4e7f316a17963b1bb1d0bbc444e82bd4aa70af89e558c210a031d108d456e5cbb421f2e836b072fded4f838180a7ffe6a3eb3128a26216d375098497b535e65009656b78e5108ad70382dd8c3f8fd1ad0a0433fa16bcaf892a442f9262bd7444f1ecee6905b43ed362fdb9bfca40ba1aca8caec0b33db5666179a173fd814693db7a7d17066bc29061beb47f943e3f562b23dacf54ac47e52770a9fcbe54d31c90e47f56d2f1cb38bed9d8f1c62fdc1a39adecdb0226d3648b0702f38e2c4fa1461b1f69ca2b0884c9aeda4107b8c5d5d9d9624e357a04ddba75cccc264a4e79f81a5d64d905cd5c166e11054320fac8a0ac9b485ced8346f5272cb805fc52f41848e5e77da0f98ff02ec20f475d8268c562977fbf612bcd673559c96973260a98b451d8ea5f6c61f7221defd45957e6fc0529e0bb8ac8df8e994f49f223b15fb4c1e38381065b025a7019a9b706bd021f26dd64f1f24c832c803ddb2a21645c32c0e59ba5b091cfcd8bec40663a776afc2103f7740a4d51e9d250ee9b57f16f8a370e0ce563f6ede7788df1e7f71ebbb1086f7ddb9b9f8fdbf9e9200b807c86d30634b966b286c6246a6146113eafa776626e8db12a6c1a20fbad0d608d4adf29ce07f05ec35e1ed4940ba33d6303480bee8eb658e47312caa6277a0c79e18b13861a3c2da42eac028048b458827c98f4db95189f0dc372fb036f3784a42cbb7bbe1d78d19ab8a1b5de2f8364f8ef607145f39e56e680046215b2d142e80c48c1e732320f252a7fd4ff257e68b3e2e13182f85cd420879a4d6b6af553182a114042726b630e36199f5c8eecfa8b0afffe57dc9a0fcd9693d6a919dd665484c193aac11a4fcfb02e2975d6f41a62bd2ca9b5e695d68565a64d795928de5f1988c9a03da70c888dc4f0f34c8d40a6d198bd13d71239cb00fc3021d20190fe81e5ba2a6bfceba59abdb9ec06b339944aec26a607274ac4b537156e9e3b3b139a2522a16016062612b3238a0c10c2b3b3a5c8f3fbba28be287c4418446193261969cdb8d4cae3ff3732edee337b140f3b45fa7657c3ccd45775c854325624b0a06a0d59f2fac281fc9b3246bf511b804dd4e689f73761a9d1b96ab1496f5b04dfda9ec66943ab65633a407e82571f6423136bcbbb80ae5b65505fc88e7c6937c4f77d6ac7a83a2e16db06d4f6735280103e1f1b697da0f9852454ba4d84fe59d9ede968b5a9488c40419726e8e8d9ff779cc05dffb4bbb9ebdff6884aff233f18e66e84d9f7d023147df9bfc40ce763a52926b594d80eab917ff83cb4392f7864e3aab40e92bcc7eaca4ded325094aab1081a0ad5768160ca7bd9119c065064e23f797fcba87982df86bebfb899a65f956bed5a7468bfa05f9b274c3a1e9a774c11676de5dc8c5a5033c7fec5c8c199a1bd580c4c2a983dc9957dee0f5dee98ea13d226fec4a05ee0d42288cc8e6af3dd159c0a24714a7afa7bd9979c195203e556a2c6e198bc3fc5b0f5b1699df0c7641e4d68fc3d940286430a08879152f40c2680318d1238da089ff9c2364d0ae8854d169264666ae0b130496b84437e54d3893639e9022b1833add6d4959201c67a14bd2f774f8856a391802662c4534085bd0ce2217bd5b8b22dae7a90ec55ece81afd3d3a2debf9549a340afb896d56dc054f1a668a5100d6888fdb526bb461de4f2f85ab4a49fc93015aefbca1de4f8ed28809b4e2fd09993d9dd03374e24385c70ea979f7ee302e4738af0d5c1e5b51d1f017ccd84577a4b19eada0f5a60a0ac6c973e0280ac75200b512e8f018fd766bbce0cd39adf9b9ef2482b685218880daf30dfafbf0017f424fdfa2697161b446ee6fb3b4ebeddd5a58f1dae379d24b96f3bcd02f39495d6032ede9ad3e310dac04f3cfc9687b48aefce4681c86ca044cdc7fa9b936c8f33718d56de385c439ad678e6471e8c8040134b218c9b5942d3f8d0988bedfff259439e1f0cb955f5fd2b7e8fa805b46c0c6a873110825f585c98fd9f70fcdbb4212de55d0b3e835d621302383d0d7236a77bd656d1e3213b063f6044423bc7a84032421ca79f8ae1610eae6089c9b04ab6bed4a448f6df1d121c8c0f2db327ff0ae175635a97c694cad1c30b2f91e5c00aeaf8a89ad9b21a885aecdd81a9cd47737b74320f699f097d8be7cd1514c90f0e1fd1ecc6979d7f1e38307b758584a4b2620fe29f408e66524a5003c106d3b15b5972a68f4ba641fba425b463bb4a7a27dfbb22d5901aed40de4160e02dc7876e0483653d3ee6452a6a34baafae2e23d496071b2a84bd254ec062ef4ea57cd0752cd57edacb49780eccd95b93abcc8f5da539304bc2a0e656b2893ccca78ec39a0cb2fcd5bc815c63b8edbd655a926accc0bf77c1be88631deebf351695edc024b1b34fd923bfc69b505f920b9835ea6b3f96653d8eb886ae3385a294cb63bd742b07db2700852a3d0bcc946522f6c775a2949fc0ffc1677e7da7624de2ee9ba6ca5517f37146d95a5b83a509ce8803ee68a0109c1ba77f4a0b5d9ce326e0afb5044f571ac94f72ed10b919c9c5fc8504358bf24f4fc91edfeeac54ded566eb9153114665039776896239c318da3850232d014e962416bd420b915e56cf128d62826e77e38ba452a5c1ac685db705e6f7e7175a71f0f145fc5391902daa020ece9a9c2587404135f391ce6f0abe6a3d0b441c2b120b02019c7b6bf9d986e1a0e430f8b034d176004c1cfd0df1cb554ffc0a09d6ba8a09ecb403b0c20909dde7e80dd97e51ced816d79a99cfc299544e14256be0de1317e26113b24ab454b8b2b661200e3256ab5897d2334efd540062c7fcd3baeca07f5badcbe1e1bdc1793fc930aa1cb88c509f4be445794483673f213ac5c2433b2977382843fb85fafa73d3044d1eb61ab176933af383c9686111c280197b7b25d11a3048f11d51018b5cf07ddc239dde935c84890be018e5e87a681cda7bee5b669c102224983daf99cc806629b8dde0cde18148f4564e3b8f928cac07c1290fb9a709095b644ac954090eba37b0b96728aeaa43f2942164a9a337443b04d20db4201ede99e5232b02d972849af5f1ffb4af5b5482b149a4ab187355f4b0003342ca7b8db36918d4f9a54959ab2ab52936b5b31d77832be614d5f2eab15ba5b436dae549828f7f7acf53125c292bd202b384ffbe641ca0b1f823b5def7df6ddc9754d73143feeb924946366247ce63451be9883270e91fb1d72cebcb978398900ca0d1d3e6424aeccb7570a411a95ac08f4b051774bc1f11a00858af1e6f5b9d4117b5a86bf580faaf3a4160f3331f9d216bafaeb1171a2cbac63345d78eb6d98282e94491ab670e31d10fe04f0a9fe59328404a2325110c456f13bb288828879ba15b6afd91e1569728e7abb8799e63f6fbbe4ef9db38948db99d9003c212d9e0e0c8c241a8377b78acb79af94813c44ffb77d7217f7a0f8a05db408be23cb237945423b073aaf72dc51090cb394359f249ffb063d617b89e0069b10e5d17c0a88145d9827a4831ffea2086f4b78f9dc96cc5e35d11b6c192644ac2edd8cd08bdc3d00ed878cb31ec6fe43c5041124cb0f8535ada55243b51ee42c0359205721bd79b455242937c2001bc23bc103160bb7439af9cfb37399ab8b8536b47bb355ce639a927b7d4baac401798f6dbad2b191dafb5b1eaea522a0580d070605bc590d903fbf8a5f1862b2c0a1940f005dcabb477ecab48528497567f534e9222311ee4e0521b4d23a1187590714f69978ea36612a4c67d7c4966fa0adab85368509fea660d6dc9f88cc13a25b2e3fbab20c8cdb3981eddf8822289269592c1064fe2e67f621a016d1ddbca0e0d3edb676ab652d5a5922b1aa6fb3ebd0c96af5cc2224f1efe99dfabddc50e77b1672af751a563abeef8971fad521c14bbd6a96b358b7117896b68c9fbc5a1cb593f614ea904ae67c07e14d74a274f5e5e2e1da80730ba9364a3763caaf3648e985e42644c43d952a7628673d83b514dbaefd4a0fe8cbb4a8c4ce1089cd264f319c2d9527b29798f143a191d293512b0eeb8155ec5c14086af7a066d0f50d4bb6a8febf2318d7656980c18736ae322ba2f619cd6803e9e636437b8a3b4d3da69944599182486c8e7c9b6a15c2719abc3e5967b9a86fe5b542d138b0d6ce884b119e4f147ef90f3a0359d156c9899cba203cd869d71aeee57efa03226d5b334c55784d015da419794dd9292a9546bde2447f19cd19772ab22d3968a8c79ae9b5a21752e40e5479e674eb3c8414f2d6a268ca508b008a276de27a2a060b7c41bb64f8ea362accc1e69c0dc373804e41145006656bfa5336537f1ce4ae01d23fcc95adf7e667104e627eac7f26e1e5b93a6d1e3e4cd9f64a1cedb75788741ea244f3d709a0125fe6518b42692fb78b4f52bf6b3e6b60a8bdce99c02465402f4cb4807ed3b04ba33580d2f561a523df01244a318c1233f21a15762d679884490189d214