Skip to content

Instantly share code, notes, and snippets.

@alnesbit
Created February 8, 2012 01:51
Show Gist options
  • Save alnesbit/1764256 to your computer and use it in GitHub Desktop.
Save alnesbit/1764256 to your computer and use it in GitHub Desktop.
~$ git clone -b release-4.12 git://github.com/echonest/echoprint-codegen.git
Cloning into 'echoprint-codegen'...
remote: Counting objects: 665, done.
remote: Compressing objects: 100% (280/280), done.
remote: Total 665 (delta 428), reused 612 (delta 376)
Receiving objects: 100% (665/665), 1.40 MiB | 578 KiB/s, done.
Resolving deltas: 100% (428/428), done.
~$ cd echoprint-codegen/
~/echoprint-codegen$ cd src/
~/echoprint-codegen/src$ vi Makefile # edit BOOST_CFLAGS and other variables as necessary
~/echoprint-codegen/src$ make
g++ -Wall -I/opt/local/include `taglib-config --cflags` -fPIC -O3 -DBOOST_UBLAS_NDEBUG -DNDEBUG -c -o Codegen.o Codegen.cxx
g++ -Wall -I/opt/local/include `taglib-config --cflags` -fPIC -O3 -DBOOST_UBLAS_NDEBUG -DNDEBUG -c -o Fingerprint.o Fingerprint.cxx
g++ -Wall -I/opt/local/include `taglib-config --cflags` -fPIC -O3 -DBOOST_UBLAS_NDEBUG -DNDEBUG -c -o MatrixUtility.o MatrixUtility.cxx
g++ -Wall -I/opt/local/include `taglib-config --cflags` -fPIC -O3 -DBOOST_UBLAS_NDEBUG -DNDEBUG -c -o SubbandAnalysis.o SubbandAnalysis.cxx
g++ -Wall -I/opt/local/include `taglib-config --cflags` -fPIC -O3 -DBOOST_UBLAS_NDEBUG -DNDEBUG -c -o Whitening.o Whitening.cxx
libtool -dynamic -flat_namespace -install_name libcodegen.4.1.2.dylib -lSystem -compatibility_version 4.1 \
-macosx_version_min 10.6 -current_version 4.1.2 -o libcodegen.4.1.2.dylib -undefined suppress \
AudioBufferInput.o AudioStreamInput.o Base64.o Codegen.o Fingerprint.o MatrixUtility.o SubbandAnalysis.o Whitening.o -framework vecLib -framework Accelerate
g++ -Wall -I/opt/local/include `taglib-config --cflags` -fPIC -O3 -DBOOST_UBLAS_NDEBUG -DNDEBUG -c -o Metadata.o Metadata.cxx
g++ -Wall -I/opt/local/include `taglib-config --cflags` -fPIC -O3 -DBOOST_UBLAS_NDEBUG -DNDEBUG -c -o main.o main.cxx
g++ AudioBufferInput.o AudioStreamInput.o Base64.o Codegen.o Fingerprint.o MatrixUtility.o SubbandAnalysis.o Whitening.o Metadata.o `taglib-config --libs` -lz -lpthread -O3 -DBOOST_UBLAS_NDEBUG -DNDEBUG main.o -o ../echoprint-codegen
~/echoprint-codegen/src$ cd ..
~/echoprint-codegen$ ./echoprint-codegen ~/billie_jean.mp3 10 30
[
{"metadata":{"artist":"Michael Jackson", "release":"Thriller", "title":"Billie Jean", "genre":"", "bitrate":128,"sample_rate":44100, "duration":294, "filename":"/Users/andrew/billie_jean.mp3", "samples_decoded":3244310, "given_duration":0, "start_offset":0, "version":4.12, "codegen_time":1.413048, "decode_time":2.272895}, "code_count":7200, "code":"eJzVnQ2ypDiypbcESAhpORJC-1_CfOeQnWRdKxTWE5PWNt3veVddApBc_nPccbmWZVnyMiHrmJGQZiSeM3KUGan7jIxrQtatzcieZyTHGWnrjPQ-IZtY8k4053fS-oSENc1IDDOSxoycZUJiHDNS84z0fUZGmpBdC_1KUigzUsKMtDEj1zkhR7lm5GwTkrc4I7VOSFnijOQ6Iy1NSF3GjIRzRlKekXObkLa2GTnijNR1Rs5rQs49zIis4Tup54z0PCF9HzNy7RNyhTEjJc_IGSZkxDIjx_5O1mXLM7LHGel1QtblmJHcZ6TVCdnWbUbSOSPnPiHhOCYkbnVG9jQjOcyIvN0r2cM-I2mbkdZm5MoTkuI6I6XOyHnMyAgTcgBY3kkGGkwIzn9CcP4TgvN_JyWPGRE7X0kVw95JumZEA38npc3IiBPSYp-RHibk3M4ZyfuMiNnvRMx-JR0INiFaineipXgl17rPiBbqnUioX8nYlhnp64wAk1_JtmBaJgR2TgjsfCcrDJuQvs0IxuOdbLBzQhD5CUHk30kgWJkQDe2dXGVCIqZlQsTOV7KHY0bw0BNC0PBOUtxmhLBgQjAPE4LbeSfHNiUYjwkRs19JJrCbEC3yO5HYvpICFJ4QLcU7kQi8kipmvxMx-51gHt6JzPCEEHxPCEb6nchIT4iY_U4w4ROCY3knMtITksKMjDEhl8zDOwGSTMiZ3sl3WZe_l1dBXSZkjAn5i1mXeV4FVZuQL_Iq21Un5P_HvIpCswlJaUbqMSHHmmdENvydTHMjh1I-r-SbzEnux4R8yKuEdUa-yLqUa5uQutYJ-Xu5kUYI9U46wHBC5hmM7ZgRKdM72fcZ-ZD9iBMyljQjSgi9kyPNSK_vZF3qNSO9TciH3EiIMzLNjaxXmpAtjBn5JnPCQr2Tb7IfsZ8TsqPkEyKf9Eo-5DdSn5G2z8i1TsiB858QnP-E4N4nRGmbV5K3MCNA3Qn5kDk5J-RD5uRsE1KVxHon09xI2_YZOeqM4FjeybleMwLwnxAN7Z1I5N-J0mOvpEts38mZJuRSUuedKF30SoZSPu9EyaR3IqF-J-18J0RXbUbyNSGrQop3ouD7ndQ-I_Psh4LCd5LbjCgofCcKsF5JUGj-ThRQvhMFlO9kmlf5kDlRyPhO5nkVBe7vZJ51SXFGFNa_kqSA8p0ADN_Jh9wIhmdCapqReV5lTTMiwXwlVWm5dzLPfkj0XkmT6L2TefZDk34nI0_IN9mPLuF6J_MMhob2Si4x7J3oAe-k7hMyNLR3IlP6RoJSxa_kf1eRwqQnJI8ZmWdOrjwhKyI_IXGdkXTNSGkzMq9mUWD3SrbYZ-SoM9LDhATlqN9JTjPSx4R8yKuUbUauNiG7gtF3ciwz8iGvUmYEZZuQvc3IPCdDSPFO8nLNyDEl0rR3cl0TUuIxI0eYkTImZJ5XqSrTeCVNCaF3ktuMtDwjV5yQU6mId5LXGakz0nOfkStNyLVPyRcVKZfs7CsZsc7IPCdzjnfysZpln5Fv8jnzjM281mWesVnDjPy1fE7UT95J3mZEAeUr2TW0dzKtSNn15fuVJCWT3knrE3KofOCdpDAjKnh5J9_kZMo6IQXwPiEKoN_JPOuCU5oQMeydSBFfSVOp1DsBYk9I3yfkDOuMfMi6_N9XpHzIycyzLvOqEonPO5nWnHzI2PyvcjL9mpAVNzwh84zNvF5FQ3sn84yNPtS_E31AfifznMxXWZcwIVEFEe-kbRPyKXMSZmRezTLChMzzKl_VnIhh72SeV1FxwSv5kFeRUL-SDxUpYtg7mVekfJOxmVek_MWMzZiQU8bjnSgd-Eo-ZGwk1O9E6cB3oqV4JyNMyKVk0juReXglQ-bwjXzKySjH8U7mOZlvsi5_L68yz5wgthMyz5yIJe9knjmpaUKCef1K5nmVeeaEkHJCtLHmnUzzKvt6zMg8c1L6jKiU5p3M9xCpWOaVHJLqd_JNTqbFGbm2CcnpmJF5TmaeddGWnXeCXE7IeU5I3fYZOcaMfJOT0Sq_k2lO5lzXGQl9Qnq4ZqRuMzLPuiip806-qIT5kHVZ-4zMczIfsi5lRuZZlw91MnlGpnmVD5mTb2pdWpmR65iQqMKTdzLPukzzKlEMeyW7SkveyZFnpO4zMs_JKKx_J_sxI9c5IX8xJ6Pg-51oU847EeZ4JUUbmN7JPGMjZr-SurUJaYTQEyKGvZOyzEiPE_LNPiDB8wlRUdI70dBeyYedPto49U6-2ekzz6sADCeEMOiVbIuChnfyYR_QPCdTZ-SLKpoP-4DmdTLzXULTOpkPWRcFo-9knnURs9_JN7Uu85zMdJfQh2oWJSreyYc9ROeEHIjIhExrXRyovhOVabwTJd7eyTwnM98HJHa-kiqGvZP5PiBtunolMtIT8veyLvN9QEoWvhOx85V8VUUzzbpcYvY7ETvfyMfMyTojH6pZ-ox8k1dROuGdqEzjncxzMt9Us3yTdfl79Spbn5FvqlmU_3wn84xN2mdkXs3yRU4mbWFGtMfsndQyIR_yKmVKlGx4JVnJhncS6oyUOCPf1Lqo8OSdjDwhHzIn8-4r32ROPtS6HDMyr3WRAXklH_Iqyim8k3le5UPmZJ-RsU7Ih9xIDTMi-_5ORN_Ix7xKmhFtvHglH_IqaivyTvI1IdsaZ0RbZ95JKRMSlbZ5J9_kVebVLPO8yjz7sdYZUUrgnagQ45348W_kQzVLPmZkmjnJWsZ3Ms-NKPh-JUWJqHcyz40oYfBK5rmRDzuMlAB7JR_yKvPMiYpl3sk8r_Jhh1GakQ-1LteE9KXNyBc5ma5Jv5OrTshFCDUhBKMTgld6J5_qZOo7mX9n3RYF_e9EIdQ7mWds9Gn6nZR1Qj7lZMKMzOtkzjwjY5-QEK8ZqceMfKiTSTMidr6SPeQZ-ZCTqRMyz6sklQC8kk9ZlzYjPU7Ih5yMBPOd9DEhRQx7J9OsSxHDXkmVYL4TsfOVfMq6XDMi0Xsln_YflRn5kHUZEyIjPSFi9juReXgnYvYruZYpkYq_kiFmv5G_mbH5JifTzhn5X1XCfFPr8v9hTuZDJcw869KuCfmQdflmh5Fa276SdPQZmeZkPtTJzDM239S6zHMy80qYecZmnpOZZ12-qWZRm9hX8jdzMl_UuqQ6IV3Net_JFxmbT7UuZUb-Xq3LON_Jp6yLUgLv5H-0h-irWpdp1uVDJcy81kUpgXcyz9h8qHXpE_JVrctfq2Y51JDmnSgV8U6-qXVRc9N3Mq-EmWd71L7lnWj7yyv5JttTxex3oq1Cr6RJId7JNzmZD7Uuy4zMsy5a5HeivTev5FNX221G_l4lzKzWRXHMjMxrXaZ5la-qWT7sISoT8qGaRV-g38l8D5FSTe_kQ2-Wc0a-qWaZZ04Ubr6Tbzq3zPcffVMJozTVO_kmJ6NE1DuZ7z-aV8JoKd7Jh91JbUY-5GTmu5NmdTJf1bpI5N_JtCPup_1H04zNN7Uu8_1H81qXeceYWa3LdrUJ-ZRX-aqvyxeVMEonvJN51uWLSpgP3XT_V3Uy32RspruTNpWWvJIPOZlpJcyHnIwKT97JN11fPmRs4ozMdyf5mKM3Mq-i-Wp3Us4zMq-x-aZjzFdVNH1CPnSMme5O-irbM83n_MW9S_Nsz7zGRoVFr-RDPkdtVN7JPJ8z7-Jb-4zMu_jOMzbHMSPzCpz53qX57qRUJuSrLr5nmJC_t3dpG9uEhLTOiBJC72SeC5rX2IwZ-ZDP-WZ30nz_0byfzHlOyLGMGZnX58wrcL7ZnfRNTubD_qNpTmbsE9K0oeedxGtGvtm79E22R6Ul72Se7VEK8538tfOPPuWCzhn5ohfNh31Palz9Tj6cfzTPBcUJWRVgvZO_1m1mi-uM5Bn5phPvVycczfvJjBnZ1RrknXzY2XTOyDf5HBWAvJOvKnCWGZn3oplne6anI_3PTjia7l36ix2Arxk5VbD2TuY1Njow6pV8k7Hpasf7Sj7sXZpne-b9ZLTx8ZXIDE-IUvJv5FOm6JtuM_NM0TwXNM_YzGtstnNG5tme-dlJH86kviZEBZgTguhNSFlmZF6fowTJO5mfrKSSlndy1gmJymK9E6VPXsmuRinvROUw70QpkFeSVLTyTuZ7plTS8k7mJ1bPewvHNCPz7sHTTFHe1xmpbUbmZzYpBfJOSpqQSvA9If7JK1F9yCtpOhf5nXw4d6lNyKmjtt_JdM_UKd_xSnoIM-JdoK9kvqNqfmJ1Omfkmz42mtY7me_VmueC5pU_01zQh2yPEiTvROHXK_mQ7VE5zDv5UL2TZmSaC_pQn6MEyTuZZnv2kGZk32ZkXr0jdr4TFUS8k2ubkLRPyVkm5JB3fycqD3klgvYT4p-8EgXf72SeC_qmU423c70SMfuV1CXNiD5-vZN5lqkeMzLP9mx9RiQC7-Sb3VgfMkXTqqH5WdgEdu_kq6qhb_oSa9vcO5nlkfTmGfmiamjeP-dDTdE0F_QXz13yN-BX8j-r_PlrZzZN91t9yMl8OFlpVp_zVaea-WnXEq5X8qE-Z57tEcPeiRIV_9edh6c9cL7KFG0T8uFM6nl9jh7wTo48I5r0K7m2OiPfVO_M-wNvYUZkWt6JhPqNhBWA9kY6ErDHEyA29j5wX0eI4ex9pL2Fy1dxHqOmfoS6hXUfe9bm7LD25co5ZN9x_ziErZee0nWUgK7sa-2prNySUjzCUgL_2UOrMR3HADdUX23j4oquMpj18NV2rV15rHL5aim15Oeqnyy5rh6Gn1K2ekb_-L-6-ozKj3_G7DvW9QpxxLaUM-0x-LZnpOdxYWou2LYPBuw7wrH16kGGkkLoOqA3hpa3-226mvczr35o7qHos1Os5Q6Dee_qG_SOVR9-_SjfayZ6CikcBMV6bxzp2D3mxgubihtS7yXnK42RlqHVCLUEj9RvO9ZyjRJb4drRcl4uopW9oawa5HFpR8PR1u3KWh7Nch1nvCd4rm0veefy3vM2PKotRX3BLGcOxzWOHsdy7ueSe2vg1XTC2RAG184tJ-aS3LR0NJ2dFvd4nWeMF-NpZVekj8DVtl9HC_HIo4ttZev7lbZzLWDJM27x5rOWbB9Xy-bkvp_rzckfvAppL_Fg-rEu5bjMK6-qDnvePD7zate2U7PdvEIQ0mZe7aH2xYPMVzv3Z0ELupKuC5FsZyuHtSKMUpr5XGMfLei7g_ns4VoiLoJD_idfRz5Har7XfEYJsbfifV1i6cy0lr7sx-57PUtP0DO61-jYj3uWXqNw3cD2TDEvsXlGf2hZd2bhH1qWmVt_tEysjpYrS7s1fvQtppvjmtvD7EcXLKeWurSkfHqCXoBHcR5d6PC8-pVRBZy_NIX3-nfPCt7qJ15vaz93P9ny7BV8tPZey3DEwyJ6m5sSz91P9lXzxVc9y5MIPB0A9bEuI1_lRAp91U82w2x9LAce2j6EsHT12gZxJQqF69O6jxiTJntusLq1sbWrLvuJosSD1WVtk9wVS5lhZkKMx7kduTEZLCZyfx6oj-yBJxj3Sgh_FZQknGerV9uKObmnumunYcsseTrOmhfWoqIwFUUJBx5x7_6AgqDKmrBGqEdew3HAiVI9Xw2mh7MwXWz2bXctdT0kFlqq66vMYqyeqnlwoppHqdeeLZMp97Kg7Uc_y5YOT3-pfR8RU7JYYtOorR1nqr_MV77OYvWzMnlVPV_zykriRzVkLdiQeX19rzXU8mzm-F4rmFfVhsxPtoZ68R4Z971WiFsmJXVWe8saK5L3oP2M5xjttt6jV21-laEoPOU4z9L3Y_ulfll21T_G2hG5Mt6rnldbfUdmcMt5buXwQ23IuHp0z8OvtJhZDTygpY-8_vBH5vjjHP5N2h9TYGn_N1758Y9l8Msfy-D3Ph7n1gq99_nx7a0etygdPAer6FXwvdYyK9Nzr83m7e3t6E_E18Pdjt21ELH-sDn27H7KPQXZHILKkj2CXM-6Po7l9s6ntoEn4n-0DqHUMsopFk_fcmoX46sptajMV779jGXXIuplPBL23Fcfr3H7X9nYR7h-eI0i0d-3tR7Hcu23sPqq19eeTgcfleu8mIE14LfwW0p81aLyQ9pXPA4BysUdeOrhsazlGFsHmR42FPfv8NOjX6ndcCYtWJz7UQO9sigbuRmvebU6Y01-kZ9i0HbjNTAgDndZ-DHoJEatjR7gNbe8HGE7RmKZNjP2py_T8nhGOQwU2_JiWZOo2PXamgEVR3usmedxrfFsf9hn2V1ijrAfLOOwXWsjpLywLPcqoCBt8U9g0pX8E5tw675lUrv6yr0esomYX6CD7rCs2RJ68fCIod6aovfaH3n0XmTLc9yRjD-wWVnjajFjMnhoMYcFZnXlgG4n_Btv7McJipIFBjr01YOMsF5uF0ywbfh4yX1IGOx2njv_juk1XLPduM36bzHrLNaK7du7MlDh9mBHrcu4zj3bcN9Sh3u4HktYGzG8NdRu7Pawwol2Y16FmNczXFjvqKVnKkMgHz3DuVxl07qUpeLVAAflVvsKM0vsPEO6cB0rLv4KzLIca7SyR8RlNYszT76ngDgB5Vpd4x0-HMJIkibL5NJxQggEUpKJLPA2yy3PdVVgdtucBR-KHkdbgRvXBTBh0Efe20opj2JLXdp2RBuA0Frc4BxaKx1EF8NecThoyX5uQWengWzRiB0fXbaGvKGF_LKDC08CEUOcZb_ksjEKID0CB96L28Dp7rHi6SVcoNESbJt8tUf4AeeRNeYYc9tCXAbxHMjg6rfF_C0qtnCCCyCtMYpl4zGqvur19U9sRR85tZTYPt-2HRNOXHC1W8uM3F5R0H6t-762grECXtRfHgd9zVcf3cvtuREq5JozSPd2OyzFHT0xwbLfAAPMgZAg3H4HJiwej9vBpODPVGgHbhdaUI_cpKa0BCnxDrokTTd6RcaycY7txu2ZNMHb5EpnlsHyIpKA6N-ezqLnV1r0jIEtObaOxsAGNg8G3lHP-qBNI4A7PoIJp_2R-Xer-LVcl1XcS3YzR2O2Dt6eSQvvMVvjt72CojTm8zqP7jFbf21zHu9nofllLHmA9dc2zNPyOzytX76b27z6XlDfe0s2drDeMeJvGG-E92CkB7db6W5EUWP-BfPEiAdtetKWHAuhbZ1NOOKaGqbh2nfkGD5esawYMMzygn0LYFxbPduwVE9cWOr1tExuxxkAyPgfpsFCO3bGstXrApBZkBQthHOUnWhiXMDIlfEyrHXNDUSSRtv8k6Uevfd0hTuSa0WM9CpkVNerAIpqCKKq9MQ6q-5tmnXVMulsRULc-CHDGC0D-0ZL8YffX1d9AkfawX3jvG5YtsP-TfFi2zDvDwnKgPz420MOQo9USx0A6Yo4YFPg0BgYVnlhpA1dwr3nugAxeRaxeETI4naGsZaMi0FTfRUdReF1VbB9_7eruwtjf18Vogjze_kn1E1Xsfyx_tuT09nVxB7fz2oA83T1eR6rTvCsqwAspMkP1VU_CuCV9pVR4JlzKH4esgu6wICsSSt65t6Pwt0XyAmDtqkOXo9CH0CcsI439JDNkt5UAwSGxGFEYkk8gPIPeDz0afi9S8RO32PeN2JJPWpV5GbuelRA_VA8Aj_ePAjnRfyEHqUNfmBc0ECEBaGo2I016HjMI1mOEjC51ayYavU7zuVq6eBBOyKUgm9DibgqhtWA6qiP6WpGgOgQKM3X3HiWjHhbAVbGaSF00Xw--w5zQ0a6ua2dmFAecUS0XeexHmdpzPuEQTGugLsGQwNeDWSwh56Q9cQqKlmFLoOjQ9tW5lgTRnENOGzs6q54EV7WiH0F7smInV1yeaTrItTF7OAKqvLah9dcjRfLuiiZo7XcV36MBGDfdrywf7J0xOVeXzS_YJ_BJyt-F2eGPqp5FPgNk60HMHzimYYZTcA2HH1dcpKe7colrED64NU_dp0wrQUlQify_i0b5pUXasD25ZFY1pKB_jeyIYScrwFkg-G4WskGY0CDqrBRrAfGHitwMSYWsclG7lGrAjZYMXfwrWP4cEdAiuTvUz2HK4AowYZrALwkAaUaTgLLukVM49EyegXQBfVjN1jWDppqA6yKE90Z6IrINeAepgyE4fmChmAVsyAwAu8M_idvSqBhrBZc_hURuw0fJtnAVeOfTowungKDfnfFJhg-gaoNOLYqPYYhU0YD_QB-4DBBNnkrAK-MYwRegy8BZbisDbNPnEGQzBqNegx4SpTfNGZ-jcTDLVmR9eq4na3zwxJr34UpwBsar6Jn0EuzJdS2x57RBpxOZ9WFbrd4JXA3a2DbeWHaQQMYNDSiMc_oWwWCMNEnyGLUray3vQLXoJAxKS4gYj-xMqV04hDgEk9CJoH1YNQ1NQT8IPbBiwm25pVAdos7N_a9Zkw3ZhmfziocCgWOfRxL8PLg6XZCIyJMwqQ9A2YRuTEIa9EY_p4XwXscNHNHIDCauNGRu-b_wz7bvjyG0Vc9D5slX-0dO2dNsZ28Z2mTKxurvXKHTdDtOmSqrJcVeBt99bax_7TPmN7rsoECnNZfnuS3qV8xHNg-fa8kHOu-l6gbE8UcsuVKkEkBrz8CCOvijjF1IA3URxFF08Y0FgK0IxReFgs_y9Tx9fB-VdXJ3mAm9oU4B_icjpbWnrEnS8MwHw-vrI1eaWAr4YfYfXsr6SA6HBHKkobwxXZe1-FNnrfNTukC1OiqF8prdIbSEyMot7nughz5UjYorxsTHAInaLrSQtjnhKLsSVhqJd4jpE6E72jRiKF4jTDw4Gy8Fp4kpA0kisYxdwFabSus6LltXYlEhcpYgFYXhHzd0gYaOHziVg_rthFvb2qAij4SGrFCxOW5LMinGIGV4f0V4QbB7fphQGIBHFg_HCLyy1-0tUeuo50N8ZGjq115LrQf4BWVR0nXmmI8CAf6FvqlLGgHzrbTyAtThSUD-eqRa8S6lg2MsR7Y0VZW5cSIyOBJ6ER1CVMTgAGNcFFx4gbKgUG4xFww8UqBpASDVxSb4FQeHHOeKgvSAsAXk0JUFQO4nsAY4M8yaFfygPlRMSO_KseZFav2xoKDyQlWThYS4WSVGxZyOSvvD6rZvGTsDrzsCiLPeLOu6KJiQfE7RPYYZ8LNLCufZKwO_DphJX9bIoYEoLsQqwn4liUfcmJxMA_E82ysEWCyIIu4mCuBJoSN2z4iRpOhLjUlJlFYgqqVKadOntujkrqrdIygtOIHFqziJvslvHziry6A8IokyV4xjQYW7jkRROCnZevAGg1UUC3NK0F_VOZpO5j7QihE9EdQM_SctfLSA7OJFd1WH7xCqLBuxHVA-oalvbDWFYMLCFU4AdvLqDUxDqY2MNrAAm0fy0S1tapVvhAPdqgpPd3RRsS34TgwOriwGrUZX9EeoAncgBsCyTECfcbYWBtsn_Ek5njgR5ErLBiqiA_BSGNFkrD4itoozG3aEIeBBwYaY6J5-MhtKNeG0cIvxGaXQOw7iDjWUXe1JQybXOXaFQUhrduZwVO91UQAX1thGQmQWFhbb7PxhmognqsRDfAwfeuU9e7IAFjrWIetNzEDK5dBZL1ArYj8eyu2xV2G_gZ8-E_eCIuNqSNYjPgRg3W2FFZkXMAGi3VU1qErOBnriSsFpejDHdyRBS7ER5tdQnc_TAFIWK7kFJHMjRjBFPcrb1CkfruwC1eBPC0HoAl8mGT6Rjz_LSL4t3jBNvbGSPom8gPze0b2GgRzOHes--0XvEbGTQ_mB2pi9PQOz8MuBrQXMcDcZH_k5_lFnkJZnIKCN773hz_6I3KwH9R77Qw9hXvMv7lxy9rvYMrvfZyhZ_RH7LIBC9RvS_UK7QaLGWnpHulZTxD7hf8VCDrsLzEL2FW5rYotAI0QqAK5WAJgMBqBZUoSan0PvpTruz3OcK-FqGoMLeiBpbinam5UUNTIRziC0KziUMCNXMJoxy-U-6xg0i7JR49uTCi_UFhEZRD05QK7Tbi0XtajR3vwHMTKPPME7my7VShu2Gp9IsL4AoFB4SgxURYBWxuKy7eUik5WBg2CbFA191gwnGE1M0aTmYIBclhPftZBa-NWDcmL52ueOgLS96obgFuGfPXKmMB7AYA64ZE6A3DEQa6r5C2drIgZsasKBISy3gjKskF8r0C9H7vBE1H_fhk8LYqELDnbgiBmDMONllSG0B3TyUbhsQmhwL34Uzhw6cMfYUIeOzaNmEgzumXc4j12BRX6yquWTsZc-HHgn0w-lgCQiai0DEixiauWRKQty7IvnWBKjnvV_-cME3ARCkRBm5dTFLEJZyBMK-u79P10ALjyKgAlCE2ZX-Qm1tyXdizEwhcPXPSFoQu-E4dkXF7oh1qqN6xcxJxFCRxeTZ4R3y4gBK_w78J9QK-CBfUKZrA992-Yd5lNxZPHhW1EyLBcOHV1aEEphNaTg8KHmFc__vaQM4DMmQB-K8uA45s2fXerES72H1dZaHy0vCbLxvLr6rKAy7W-OxALy3EB7CqeU6hn35UlaDhLPILCpEPfRYH4KlfrB-t7bgeIVRAYE-xKUCWph_KRigZV39AK3MFrYJTH6qspn8C21FmXdDXuvHBxenKrVZ9g0Ag_WZ9amp-MwUFSde9z1U9mTYEKGm4nAjl81UNTHFl8r9_roQEJA_xkQvfQGtJRYtTb3fMWRixEssFvwzmy9giIMv9X8fj2pnIfwChKn2V_sPsIE06tscSHkjF4XOzRKAemo68YeMB-P0pJAImB7IHlVnAXUTiwQ06W542myCgVpWqT7wWlbODDmoon3fJaMfFAxqQcCVEZYBHcfjMior7qjsp0ErGyn9yUIiJmyoufLGiG2W6FpQdkoOEXU1mV5twRED0Z6QeYnFlqiH57vqyGppyxkhsGk3sWoc_QzVMPXLkATDPoGMhx9kVZCa8bluQiVIhYbh6PfI8ifKM0CPJOlJ3zEZnH1SrahfMJ1yb4vQE28bfgSH0xUXuT4K-Dyo0L7tVtKOFKTLYdK4HRciVwFIYNRCa5Asoro5MLuoR18pLB1nJ59ZUhP1rUB5Pfq3-CtG5B9-ozLILqtcmEEGDgLisQAWuAEp_MjSfWDk4ExxViX6K1vmAI_Ly6NamU0DJ-IvDXGM3nUYsy_ggSESZ37DBz5_9QOoTAgyRQw2oirnk5MJYD7kVLTiMU2D2qndA9b0p2Y_D0NQAN8FJc4PsCbNMXhQUJScoEnxW5wBGp6AZ4BDjrdSe0wKsklEVglTeBxGF6xdDlPFipU-KbtFmvbZEYRlu3DlUV5SyR0M5_vBTwQDkNnkmcqZKgUrAE29LLZhbDGpa87TmYG0MBv8Xb8_AUfHV1_EzgIT8CMJH-piiUiqe6LNkbkQwBAnaRVYfbgNWC4VDSoMj6b2Aihq_RgvUJzpRwaoRtrej7d0dJI-PXkV8wHquMKQLeVNWmHMp8w3hA5FlGRvusGtplARLZLte_hrTgq1NnYjues3S1tZLh2fXU3cIlF4LqM-UDjdQoUocpFWQcJceHbkD3iGXMaEKxetW2yvatSN3gESN1xKWDTBfM7Q7LYJGarQM0ZJFCxPfaIllirftmtnkKu45k-wJXw213raG_mC1dATuWAK7dbQR5GHyQ6fO9aP6Or0T2_LaVGKhbu6O0ltAwVN_7PNn32r4893pUt929Ldd_nvxjVIMQOHlUODL49ntU1iM_GTeC2f191aM6Yd-wvfKoYGzALWWdKYHK-slmjkfl33lUfq9_4lHZUvsdVsnHp9iOewQP6zCI2JbfnoQAfGWgxDhFXyWJ5xOSxziPiBSk6wxEMHpTqwPTyf0Kww7gAuhguXOgDUN0CYOUeJQTkKganNZrBGqceEAMzX4bMmX_mHUKCdhHmA2GWpltvVTJtKrIA3sbwCNJfQmxBivuUBYDjjO8pq_VBwYopZgithW4j6tPIITcEUOWpJ4q1B7qNILqI4N2x0qudOUfszOPtnVK6SKU168l29SXilEzfgBcx1bp0_MAGbGIixmL3zoZbz32pvKCGhH18yxFDnoDVK17y4roCZYuVQRjmbJCfRwVLI6FPxDnrCnDHRWLEVowB335IQIohTcRnmG7m1o9hhJVj6yiUCJ9WY0NVTiWmgk7UP3A6weDweiPgMcq8G7H58CaQQhwYZUAAhc2hEA-7pF5De1ZP2A0OFbfDVPB-Jxry8CpS_9y4oKH0hz45-NwXENQAMrl7fhl8CZWOq2RSA8jEPjHQ58oyrlXfZC-BMbKJR-i0lBrp7-VYZNyuFKvF_Kh-WaMh45eXzEeG7zEqB1RCf5LYU3HuaRtU2MkQqQ2CHoiFhlZAVGV1glxVMGMOUr6TBkuaZL8PFiBIGcPcLzqG-C5J5a_7frG1aqqW3kyMXS69GW_EZGBQHYEdSdsQxRUzEUMHzLPzVooOTxVReoTqrp0xZMrxDMBoC0tU0Z3MzZDHjCz_L0o47LbO8OJCpcKzkreqqnIrRYFhqVkIZOeAkOQoWvKyWOzgakHQOCoYMva4B2h09pzLxW4Q3QhuKIPU1zt6RqXHHQULsDzBTT_sQwRH3ejpQduWfdtY2_78tsy2P8-3rnJvK0Zu60XcSuea4GVUXVROgegrfYLVpxVBrejot0WHTB53v4XixBKzSM3IxRwRlOt-0XsomIs1U0c-KmjoPz6Yo6T0geM0VcgTd0S0bPKnmT_Fv4BgQJlG9Kh9HFVgcNlG6sUkL6el90-gNAo3EDuRtyGv7pqH_Bc_YG97dkfhvmqOXQDYVl-X1UG_0YFvmrW2bbbet-WX_yz87ptO5Hv6Zkbi6Z46NMEg7XXWLqwLItf0TPFkVhlIhTiPT9ZPuV5MhElwv97HqVVCafKon9V2i-MeRAM5SzHi1QUZXltzezU_bwdEAfCWH0kcCi2opiDJSlnG4UeqlR09UOZqyQXsTBeu_0Rlvf03IwJ7YXsgPwUnV8BUFwHVqUim5K6i0gZEw3zzCuLD1p3dH-sA_IgiMu1JiDAmvVFGrCMfGD4OsEurkbZX2xCqAlIqZK0LXSVjaPHmcAYg5l1AlTcErJSCMFXLzIWFswhp2mX7w2n9rBe39tF24v_1gXPw1efWC3v4BvQDayXkbPQOFZzmIZGgnjE5ypxtz0wnzdVtTlOOc7zWCyxDsR4jBAFo2LhNlXaLEoxYP0Ek_lj1Ba5ZXQ8zaEtLelQyawHdGMQwY9H6u4ZSZoe6PJADV99dMGrZbzhn_gBj7SbB36yp2CG_VfvvRkhGbql3dGTJNa_e977bxjpFbndVgD23np0i6jW7cFr5vMt7Yo0nzFbTj3mO06R8P962yp_ggD_4JVxk02ksagNgMGTh-HsgoGSR9BBKsI1IBN8fL79gqQdua6SECKSsDLwHVhDFCh80sOlws7dfmHd9C2R5d8PfTbEWQubxO3gj7hL_OQJ7KhIGpYR5LCg2XVjSIoyIhBuwdicyzgKcRJ4-TgA_YxsQ8VGxIIs2tqiXRsARDSnEkh0feD9TQgUzv7jbw_Z8xoBA0wjNvy6KoouAQzlBbVwrOsZ86GPdcCQqgFjaoO-H9a-b60PVBWZwiecKoze4Iey5PuFEvSuYiBiJ32ASXiDHBVZ6WrWt0tGrD2MXM1Lx-7EwgyLtkqDee57GQEmQPeeamr5PBkUgtGaPrkQjK0e0LFd1-WrfvKl1F3TJ7TnyUve-_1eP3n-3vvJA6sB3BjVY_Z7CaFCVsUkkdcBmANCXePU12Pd6-d5LGABVYHvVd_9zuTh-o4MmFVRA0wddZXHWFaPQB9_NkxhK9pwphMt9R1-31aPxa_0IP3KjEZgpJca_uCkWZKBOGvDmfonZoSefZj3fRmgn6ikc6kx4bSBfao_ZMEJHDe1k9bngqPxezPMtxGYgZHRh011gt2j-rG-ixq7NmKHMnwio_msNH7X55cQgYl-PCjg6PIjp0d6ymL5KqD7zEqi6cXE7MpQ-UV4ltE9XF9VrwTADEBQ-4oOHTJxEMZcG94DlfPqayk8Pq_HIyA_eIV9DNULiusuu3nl1e9qoenxedJduy4Ycs73GoHWieJRGuKADeR2hVtJdn0PjAL_KDqOTCtNZDTqBTAknruuLAQGbLpYk4jDC8CkbpVcM8qGeQmyHeikFhlH1BwTDUU0KqAErGu7A2Jz3tM_tKXhwjfdArwVLR7KsnqhBAGxlPFkEfkP-KptcpYH3NvCLRvikKov0i05SnHf9-o7que7n6qCl0xapG6Z1EYBtP_Y_N6ozWK-arG15lm4LEO-FwgX0i1mWh7z3ldRu1J81ffa0uiDkiq2MEHSGS8A4t4vX_WCxh7ztoF7N33NAxMv-73m6gAB5g3HtsqADzGc4CHyA_XrRd0rwycyVIhx77pCNPFKo-0HwkowSLQR-aX2ZuNiFDktcuk5-0NwDAFYgtNBLDf1ho4JZLsdC4GkvmKuxL_g-k1VPRLWynRRnB2LgPMhMAlgqaLaS6kVLscJSr1RlaxgahnmvKrv8E9r9ofFlNI90n7bOum5l8xa66uPBjyWwatwG27dYePmq8_6_tB9wrQI3xfEbTuscdd4LLofak3xvfeT9V7LhrXbts6mxQP3j_02TESUtAblz8Lle5-xKGex62NcVhHR_bbHfPneTV8u0MF4G3g_2RNUcQrem9XCtR6rJSdFgpZ6Hln1p6g0NgPPusprCMUBaDsqhinR1U210bVg_bnatdcCMEXEDxTVx3dA9Ibluaq9qQ2ALXVTQunfvIbHd--3I4DPAAx9eWbxLvWtQCQXfa8Yp-2LPjUgUfvSvHiIO_BeHM9bSM1uYiubcmg8wjzt6opza5SsGRqjusuTEHa7VJHM0GpQYVFWbQIALD6W8JGS28Mu_lAWfnl2-30_-XZALk35LYQoGHhqxTcDks9sqVsQ-D2BJbpX3-4Osl7E9_2XpVnxm3VdTvyHv5jHE34WYo9GYAysWjr-pCuPkSs-Xx959BFVDpWxAeVA8QULtDRtA-gnoz91aF9F_UZAIs-UhAItwDuhzJ6Ykeqfa7DqFQzVpX2x9fZlAKlgDxaCCg8Wh0pEtnZjB3BzV2n67tHXVZvHJPVJZ1EhcQc6rW95cmgHszisC4ZRBRu9I8cprs69ZpWFKyj_oUdjAdHiJdPa9-OXo1pUXYvBgrlrxUTUXZWFTJRHqghrS9otdGyCk_vQVgU1lIlaRGC4vvTKaarosq0o-UWwXrE12Efgb1qHihLwF_rkjBVmFtpJoUKZqECBH2lQCD6RG74cg6hiCERhJd5b9gAPhCxDAYbluoyRWxwaA35J34suVZdnfVCrMV-dv6HHp8qeLn3XRe68RmaduWEhtKxZaKzsths3vvqNZGwZbJZskW4l0R3-8co_LbZXYwf7-47HQD232apYih9o6lfaXjV9_n9wnRHoMwLLlbXnUZwHeNmHPn7Q9xppPQbqD_9rL_kbb_heK9gf_lf3Pvb5x3tvy6DRe1Q_NPRxCT-xt2ziD93_geqfUfnl_5Xlf7zLrYPGib_NyPNQc-PHqH7i2H-u_g8c69E_ru2Rg3_Dsd_4svmMHsm5hfCf_tdjfob2w9P5qtXPY_ZYbII8jPvJEkdfvSMqiZQRxS1Ssjk_OfnEOBLC1_X1i5713U_tpLNF-q2D5vOfmGFRHgodVIEV4L398hDuNAp63s-Hz9ZBu0Dz2c7r2ADdBMrwNebljnGaMAzAUFs8ji2Zk3VphN2KdDyPtGCGPeYLk9BuPUrq_rAooaeVAd2qXUPSQdjaOqcvg0BoEOJ6BlVpXAmgx2wVNPyQHNuNqN2JWPLxnxnBHKvkY4zuNfqtg14F71e3wfNPbrzGoG6Jtf76USERO5qT9im-1zN6VvBPiySO6b3G116FxyL9sBs3N6Q9jz14Is373n9efRTstiq_0fVjVWx9bqT6z4jvkRL_5JE6NR3oj9TdzJGte7Uq5tVjpbq2Zj1G-r_TFEJuFTnnUfX5-R7pb_6BydIfxIP88beHxIgn16kFSbkTH6G64XkvVcIB409c7tBOxBNsVc-VdcVj4LlTXoqPgUVY_C343A9tIO-oyaHm_Yrvsj6ago2kBduJKO5NZbEYvn4MuH2Eon1EBf8h5I68ajtCLlU7aoefvAJ7VPLCAJjfwRBz9lh00ORVVGEeB7GMRC6hj4SpHWgmRVxYuBTUpq2pSAnfRryCQSk5S4x21Tdr90xRjTxvikrdFSlUiIqmNpDSYFYDQVyJTS8PXJs3F9-7uKhoF5YBB1XfO3puSh8jTADQ6Ku-FxiwqCwUAWvocTr3sGhKYMXcKsMEhrDgu6921Zz6vWgpMXLPIEC9FyAfDr8XLYxKXC_dozJfqsb-jI8Ynoigpl_c9cw9PmCNBsSPn6v33DTm-_F6ua-WmIk19VBgK2Ysq8qaK4fZVGoCaVastj9UcBnYt2hjnWdO_FoCUHDbNwIJMQ-DsGrvgrj7m7EbK4-O6t2Y43sV_GQ_wO8NqocF1QDMNT6l5BHthbu1mSEB2M6raD3GOA4PyIz1QzH7iuXVuUJ81p6k0y9vqlFTNwg9_ryXtsRd4PtY-a-2RJamjbbgR4B0Q_4EltcL-6Ci7Th4HV5Be-T0mUW111skRiYIH1kbyzEZ_KH0oZadrBBQNABaweTaEnZaJnepCCHRyMRubawqa7HEqii2sJBLwrKmzfLcB_GHfwfyUhgGWy0gaSf6eiTMohLihjY_66s10qYqzN-w5TmxkQrtCWoudVzaiUKWE8zczoVo_CTqu8KGvz8WRWSYA-INVuEEi-PL1NevRXVAxqEBuSveSm0D1PD8VpxlLKDPwqqVS8VNYxAolKDSqIEBlZyuncj10aOkk7eaPot6gjgMBFVs6qHF1Xrk-VqGPN-L_wbP1zMys2-t2M4zXISDd83WLc-SKW3P2tQERIcTNXwlIGiwMmrmU_UdA5lRxfmpyKGpzOZcToKviHvFWWOaFIDgRZewZoRviyq0IUC7_NWFGWovnT7hrkZNm6JNsJMLF2olINgaYfFQR6Gh3Wz6UndP8EzaQsVE1Y1F4dC2r4fKEmygLiLkE6tc0F2lbDQjK6INgO2V9cNqFdCB3fprPvvqY-tsBVR3vP0yFGiab_PVR65sKMznf7Mq_p1H8CzKj6vPqPzyH1bFV9U7dPN7b6uCbzr8ovuqRmXZuMdioTmIWW0eNpVfrQHlsbTbwnkscdcX9iqMujZlpP6h-6vmaMGsY03jNpv6sR9lM2c-25r5lQ_r0MRL21dKrK3X6lniuDZ8Nj5EBa8Y51Vdg8YImPp68NKE11Z3OJVOjKNr_1Y5jl21jJgKlXDqlMyB4rczygYsSIJ4BdrS12B_jcXTRX2WtwG4_aAbcosNQeGrtnfhMjPqI7uRER78SkR-4EkuLh6uyKqNW-a52seU1NCu3C2Uz43w-1C1wKENiyemUS0xbJhS2gBJGDA1DskLZjmiWsup70sYGzT9Pny0CIWi6gGDgjEsqrIdal4CTysWGgCGw0bYMapMYEePuz5o4aPaSPu6HSOeS5BlSirKPLSr_xLSUmLhrAegSH0w1e0DnW9jueqm_SexgIiq-phc-MWMFquJhxZ0054RtEttTEPlWSPI_m4dM7tta1BFTlU-8tSm9bZp45cg_tWAPOKmZWOosMSycWIkb9lY4KtaU5ynZWMkff3Vnm5Mjxylmhaoi5mOtcc0IdvYBRiJO-C_qIl1YcN7pbFWVSR2li2tZQur4FhMuJKqDbnb2Lr5vABdW-sFtZFT1DZeFTnog87IBWgORiqrQH-AYeogoC8J7oClvjE4nISsq8q0IiXMYkjEUkacV7VbU17vQggw8BF45p0Y2kg8MMzRXihpT-WpOW2hI5BqEwJnYzGusxKf2iibMfdhTU1tXNQaI2LZyl5V00wkyUrBCyXG1IxHjeo2fcNEUpQ4GGdT3nFkXDTOfqnKmNeBIgbuwogutx806lsXyTx6tBvnLOLPHzhHfsEGwLoKv1BXVibZdVjLlBEvtqKPbbKRsRX1jJAS1ERXM7pwW0K42NPzoqYtSzfskc2534u-tV-2TohAltDI7bZ1Xv1_2joL0mPrfPVUSXkXsLFZuq2o7ORjRW9kJDv5PNlTsN9_XIfx6TPItahm2egrRn3alsVm8aqvsqS9PLjORvDBdR7V7dR1Mtb_5Zj_sPwas32ex1xQN_WNOoufnCP4EDmQKebJHtWNCbV4z3z95Mdpet2eJVuSyrk9c1mGGwVp0jeM-r1a9xR-RwQeweNDMULhj4hAlqPc_kPMuf3Rf-N_28KbiITqxvyvO0h6nndpc69B9E4AtfqhRsjcDF-F0u7bhK49NDPHK1OPiBM-DyC1AJrfi4Xo5y-3SCTvH3sFPZlnUQwHVeJUjMzNg4f3dVPFysC8nSs8vaeq_XUelVfQC78uhz6oHtpPziuJDnP3VI0s7zFLj5647NEjc9Kq65Uxtn28uPXoiY9ucCJevXLytt6agufrMXtlPN9nzGbdrZe_RcVTvbkhTbFs_LGqWg-LaB813IjiATaG3Q9yuzVFt9nCeUCWdnAC0NmSI02xXN1FYB6zHlAJUapXEES-3Ct4a7dPp5NIGc35vb76zOh5742qsA3j5pWCs_9qRg9G-vFka56Z7fHdhuKfevRoxS38_0Sbj0Y9aNMs8e8e-_wrhP8PBrZke_SevgXujiVtGfQ8BPps6hyHmSPesr1HX84zXiparVHbJjalbcGxqho7sz6cnvKoKm3c9SEaEwtmuPR9PKBZi5lTTm1Vw47ccuU2teeh4lD5UEAxtmPL6n1AAH5bQtQBPqmc7UTaH6J9h9uPv_1xFdOx-6N8DXi8vXeFghJRQK2-lBNvKmdJNKB-GRtzSb0vFQSpvhpX8I8J_9D1DYS3Zpz60I6OtRCDppb25KsllagsjGC1ErO6egq5zK8ueUHoCLXB4vu662PD6qu-Y2sZP-4P_wcR8dgERvRK34FZHcNXq7aBxb7E_X4HEi50ssubyP-XK_uq3-aHehhVnZD8Sv_454yY6ClLJ2Xp96hAeSr1hgcRYFkWbRUjJoyrb_Md_rGvlo77RvuBZbrDo-rgsNOjqpu2ieuq3_YwJ2ZVtgZiW8fofq_n6-EW9VS5MHEYiKxNmwzIb_MsVS-F4dUSqXzEYwk8YPGPWVV1joxhNbT1qDwWM7YQCxVtiVImr62vnNRX_uPhJGhg7wjZ5o4ZIDm992wSNyBt4FFn3ZS_AOHDoqH99tq0z4iJk1WqmVk8gpChHFU7CIaxZCegW8neipWOjPtSseyqsJkQ6kBxt0XNGrIS3rKW583Wf0pOW3D25tWl7aJeI_PK8mJOqo_Fou4I3VP1gmqn_3lqF0lSUz2_3LP0bV43L0_D1GXzSluru_XDK6imatcjVz-kDlPMmq-qMxY7f8gVAcCu3UGMNsqeaMwrU206bDT76nGkfVPPR_6FcI3fuZ_pKo9YcXlJO48Ic1rZ1KsCPB-Ueo1qb3CqpYnvVZur3e-1Oj8S6wnaPMDisyvVU8D9a3sEyap766Bm6Xs9I8uGp2ph7WKG5-upWtr3csDQ32bEHPd7rUe2OY-lWQiugkXv0bLnvdeR17rsSX06cfu3PIslFk9l3vZTaVX4h_9C-i7lcljS5VQzFAQ04UW0WbnGrs06K_bvRF7UA2OXtz94G55xSOSSkv-EIikCuYsarHRtT0eIAzFM1UZRxThqr9a21ojftDMTgKC9tchth-cYOAR5ORZ1YiQegCe4VDy9cvnqCEL8OmyB1ariUJlzRz8I3i91KlR7UJX7H11fcCw5lnGrrnXfYmtNsWH0VYuoZYiY7VInV80XG8ME1C2xq4fzmruvWpBua2Y9ksQ-HLc8217dJs1W1NZMqvHIs--97aTt82_j8XMFNWZ1844ei-947NAt2cQd0WO2ht5XcdHdU_VtO4C13eP77Qisof7dbc3-OWbl9RSkI7XA3NvyH5drO1UhqKi8n2kHu-DALvVvayECXXh48tVDG9Ni9-5FQM1Z8BRqTrPyy3rs19WPuOm7qOT5tgfyJIT6425wg6vafqkfIfKwlHi1PPOujuGEIhhvqcZ2IQdWP8yf-m6e-qzSBm4xXfW2Kuo4c09aD7ADBwMIWl9qIofB5zX5IkDr9_LcPkUL-vgPs-5-3u_lLuGAK1oFNKTf_sirao1Sh9DFahXUur_4cMNKeKKtq6tntOl05qMiztYyggu1mVFh9YIPWMKFmdh2fVcjLk9VqQH-qz4ZYDEVYKwIi_pQHTqqSn3m4qZdKfcmEew_0JOfldH65goFNCWjv5t6flxKn18xhqJD-9TWI6uln7r9nxeye8Z79dEmbcZR5ZnGbCdcEW61h1DbwaqGIRnkJ4nVdpFsxVGld8Qcp27DyCoyJnmNWwfVV1ZfyMIIarR-qTEQzyQoI9a4UUY34oQj571vEV3QTvfTnLyV2Ea1qoN9U3OYFWd6xANzjU4dSg0RaCOspeiYPjxRVZfMgHFcWJFd-SSXdSi3T6yuvT5qE40vVY8BOD72vouZRfu0rn3oC1MVB7TbXuBL9TFwV9_3sLfwksle-naQ0eAN-WKN9XGY8D_h5lWuiDxt2kq7qeQMQKTDCbt2m2U1dRTWQ4lGVq3eLzWV0be9t6nfmppjq2LHSMbi-Oj0YzKs-w--uiX2twXxj81nX_0t1OExFD9s3YMnDYr-uFdo81mj23bKDz532MZaXWxKPcuOEwv-scB8tKG1jfUdnpHV2Q-1SHlGP3TQV-3VbjtpGysB8dAeH-D5ejIe1U7oDCAVMsOOND_-_yEnfdWPCmjx8gOZe1TPi4wn_0CRv227eWXMcAuDG9OKV76Kt8zjsfx-ke81J4kCweh62-uM_GQvxQ3yFUg8tu6_8mX33GTH_SjP1yZ87iWNczwFY6kn1vgRHz3DeCIRY0ev9B0faarPqMxTv_fmEBZh80MfefbqmyUOC_w889kMs3T6qnnlR9223fhgcRsTOG4RvaclrfBVdQA7enEt8VCZ9X_8glnse_0i3_tvT368s5_8LIpH-oCTf0MU9j1PPGgOzeNBM8eSQ-AemsXn_yE3Dh-coDMQ1Irl1lDz3g81UrVQ86_xZo6v3konu2FR9lU__jEF5q525O2Sgvq6-h7Qj9X_IZM_IpFnvub4s4JWg8eqfLOCoa5q-_6PMXvmNqX-ncf8WAvz6gYd0n1Lk0fqRzEkIkv9Vf2phhdgkSNpG4ryGBTtGs2h1u2y4qQjtOxHRfXT9SBdUqomvNncwNzqCJb_ECUb04-__UGUOfCXSDX-ATw2nUcSs1qnZW48s5rJ7_Jp4dJBMJe2-i0upRfLLnVSU4W9gte9yTKoW68-0GSWLmkzflb5JvBk19Z0NdocPDTJCAAijoBtKMfS9IULqVxGUveWczmPsKoBSNcOYHCCr_reDgw9CbgvojsCVd-7SlqAR1vwe_X5LPu916mOcmpaGFtQXzLe6zvw6YjQquZ4W-36-tXvV0Yepia_3o6suIg4WqfGd48e8EdsSkBXz6UtR6gslpofJ49PDUTUtiLtOOQQ_VBf1aEU7X6A3ut7n_f6KhHTYJ2P2DY15iZIBNhp04hvc1mS4o6A71QPaGLofmAXlD0AtamKnNCtXwTbwLLViDqfBHBlQ9G1E4M1w6Zpq0Y4h696luj8qmPhitIVx0V4txAj7sR2d6MCtWV3K1wMzaZ13_xeZUEvz_LE6RdfJbTkL31Xhy1taThjWDzBdcdrqaIkanv47vc-jA1qZ7SpNFk7Y_MPTiICaWj_43kid9W8Mv-wQwtSt7WCU9nUFigXL4-vmu3mFaFmBMFqL7qep6yAPkUpRYG91WdOUHsn4lYbmaradNhf1EKwKQe97Fs9g5L0qL26qNWyj7MpO62xEdgSScNmbTdjfOBP_XhVBx9i4Ivp3Qu_1aC9-eotp_GZLyqnT9YAM1uBQV0j5jeALO4pWGLP0NZfGlDFDS93Q1ctsZZTcVgHxR-RMcIXcfInN1Rqbzkwr8yNR0SZj7pIiFdewX_KpPnipXAN1z0j8d7DwALoqyRcu7AWq8XCe7fh7q_bQh9XWbo6jrmxA4HwMNcqUYw2oWELVZzUCg6m1KT9YOpcJQTr9bXkeED36gOYsme061QLX7VePippJbHEPjMySwhSCEJwj9nvkFm7PCM_XtVV3U-2qPjxXYj4Xhk9nlham1TUpZy4CjRXFQiVRSYt6swughV1yVWvYu19Sep-LCXRqQgbXrseh23SEtwYKVzKMm6rvw4cJzFkO7bMxFWtgHw0RSNYaxi-qFfYhgSiteDBzL0Ya5Xb3jKZkCDt1tru4Zr34wBoSAvVVwVdkkx6HnhIwOe-Nm2iRLUwGrGgResWKvPCa56y4EFNMS_LFSaeaEuGu9SiNodc5b1y68hfw2IflheLgFfBcqAGtaeF4dFuy4HHhx8f3dqDl2hYF6mntRun2rUbj1Cc2O7Sl7CVd2pXg_bUIZZdX9YkNGAHfQ-SoWjqXGu5Ck279lPuSfa8N_V09HKr-Eq7zLTZRhVd6q-2HxgWQk98QulgFfX85KVr8tLuRSOt6rNHKIEkZZ3hGJp25Q18sjZeScbxxAt-esBGfOOhD8-qeAtHq_ghQU0d0qEc_qbWsnEZFsJU9LlodB2iKePRlEyVnKoVydJXoncsks6tEAOK2jPuGkhQaR0cBVCpXZy2Uw11IMB5q9cYNlbZ6KCtSVdV78CqkpihVqCp1nphtvURdyiDF5L2BClaxxZh07Q_8RSiCUAUVFhLyT8X9QrO2EptADmrUzqrWhqd2hOd1R5OBcNNxYVqT0DUDdrkdyVZNmy-LBFE9Mp56FgBPcpi4au2UpYN669NrrXWYmG5WhV7-pB71UTc6AFgpNMsnC7t2sFf9AVz96Eh26GEMY6fcN8WhDk39WVE51KWECgkU41x2AdYT4uxJlDKUFWVKgLBYGi3HC0GQJ0yg_qt6xydJn1Eyk5J41DHGp1HoiY7-t1QM01PoS5FbfPTsrtTsb4je49EdQ9KnghQ1bmO5rNNlW3shgXc1Wa7q6WgWl388h9WHEtdHL-Ssptlypw0_6xWatOOOsBaiVAwE3cVUq4ZrhyStM1tPdSv9xJ6tvakCwa1i6hbfYJV8KzNO30oe6O2hAeMFRb4j31RL9mg4mzQl_pMbEZfDUFrRl-ovFJ1SvoIBd3ad68qrmj4iLBFmWwkJSccAMgVSYjqvfXL70vWhDxu3yNRYVFUPpPGjQoqmp61RVlFRMCXPK7lJJLRwQ53h9jU1R8G2-h26W0v6uh1AN61OSGrK2vS5sYKaNvVcAKkpl06OqlHvO3uprN0gxgj5HJu-TDyZYY7IUzEmvWcztJQgJ2gZbNWSCg3GXMk4izBumDcZK-rahKEQFlX9Q619Wadw2oXY03Z1RPjKKyI_cyNAPQVya53xXFVi5k6VIR47eX28WmInd19zXjIVXQ6Q9WmXZVbuqMNYaRaL-x13EyUt7dcWeoWjJ3Se3ej8fNRyYh5DEZBcLPdq2rhsnTabRv1GW88-NmjMr66nb8MwI3-xQ2bcM_XV42-PCr7ZDt6j89SZ7xhe-Ch3YcwaHy-6kHapzhAuKXuN2L00Iw34DzAXwNXhfCKidw7moWxsA7eXqhcCt1BKTpkEqZ61z-gUpqnnXPYy1NffSJi1TNAx83Isd7djkBfAXdFpqtcrI7EIspd1GmEx60ooOo3wCSrDxa2_zVMQQB-cTJwiw2jMaEaiq-WoStfaS2xqLw5MHCsLOvB1DHm16nU3SHmZHND_TBUxIbrl7O2Cmkj2qUzuhoRgLpl88pVJ1ntm06owB3fwN_xFrAImedNUphVkr5Ww3idO45JVGVL0L50tXNX9QjP51d_oE15OkMr2zUvqD7iDwvIjXKN8AQhDFMwvT2MJMdsD6EU2wMrvLTGDAaVByPD_m-OcniXPKyaDAajTeRlBNtEYm2F3_-RWLUPTQWp4y_-Go7Q_YFyJSrWBeuRvZXHd0NiYf5dnysHUYVOF9rvwM4uleUfybGGbWxBEW7LdcdMXfUMujfohsCoTiMU6xbDRZgkcL3EqK0WmyCqvsNc7k4Apm5ySXqHdXCob5f1fGEdt1U9RS7lsoly1AYfkbI0mXWwZ13_8LAOun4jt8cTq_VPMa9ucy2EzKi2mtRQF_ynXp9aQZhUOphWfXLVC-2oCj71AafqnMKmrixImM4KkKxpF3zHHuhDCr5vbTiQGuDStfu4uO3Sua_qtBW1la1XnfST1Rig4ISBy-eiQtOg_H0yNAUCqKN4VYP_ZXFTWGxfxv2JV2NXGZ2glffc3fNlocA6vYZ7LWWLV_Xp0Rk7i7GZ0nO3Dqrb62prpgPNTu2fjY46FnXABaW13Y8inlXvGcI5HUhxYRCRVgzyZQ0NPnEILKqSzqY23GgrAfjudXOqJO06sEkDPwf-0DKpz7O7UbjOeQI4JOSgqG8RalQ1zX6HjKtKInedXaIc9jiQu6wvynp43lrQUaOE50mO7yFY_C3--NtDlNZb8Gks_apUKTCkXInZEfyuuw4X1bCGz1Ic-pCjbRWhEWyggVgctVpuq85W27WrXMdXawtcVI9q1UA2oB7gGXekhjWL4qaCI9fhWk0JDRXDYmlaVXN6dZ73j_3eoK7Sq3KAqkvZ8R9wPZ3n4TH75WpHdypHp4NZ1JOO__hedXmVlVDEPFQTqG1Qehug53AhTNNZFYRvYCrsRxESU-0tHIgq80rqqIVXiBu2AdVRL8-hk2m2qDO6AYPdMwKm6cu3cuHE4PrSpuMPiJoveEpsENpVL6HSpN4e6jx97ldmhBjEVR8S4HYHUXY1hljUJHNXk26QhIrAjkQ4k5VzYWSoa0yMI6EzgjVpNzuBNCqNIAJFyNUEWSUuqz59BlzLpc9qMANxi8Q4y9kHgAmMUAp-y5PxPAA8JwHRgRCBlqreVtJyqRuavr_thwAh2iAkpsYoeDp0WQez7j7reCNo0Z6D3bl1bU4FqR0tE9MN7THFl-EIVfqOD-06rSmpFyciqx4w6jbXsd86cWTnd0MniQQWTj5C5891eYUsfA1qkIVUjyUsTVEzabXD10ms3h1w-dguAiAFLtWc1GGHuaupiWXDEnEUnZ1Xh9rdqvm5ONkRSLXI3LSTTWebhsUdT9X0H8-ic7iTqpYO2F917IF6mutM346NAVtXs1Obs9SBjchB_NN3yGTtQex789Uz6SBPxSe4HIHwU6isK1JUHo8LhAA62ue8clnvTk-7lkIpQl3FOqnflWLa0RWoJaRxqMREZaSHgB3BGcLPKIAoOjghENCi82tH2Im0FOR5kAgB4TD_HBSEFnBTSyuWWgdDrj6CQqaoqTxPRzxqE9Seqj5xqNO0ckmACJ3So_Nei84gWZUTzOoNvrEoXTX2lzpWJp2EQrCVzSbL2j0qz6jp8AIVTSFSak0Lc5o6b3c3mjyd1lxUHYScWkTNdowW2FrHAJw6NtP6qwY-IChwltkJsr7UoTrai2w2BVkN_LeMTkT1WLMuMJs8sIT67aXimSB4d2LudLiGFcy6tRXH9xdR5yYbhLfH5a8dGAJqtyB58cLVj-SBP6twqBe99r9b5zf1tzs8IHOj4jCSV9oLqnTDatOiivdhlVSX52C-VDRkt6BbzMBI-VL7d0yc2tNiTlGOALxUI1BQOjFg1gce9LkCq5L6P-ngKLztVu5KEB1fq3xHxSDuOOmg0Eh1Gzo9uymNN3SAdNRBH7LP8gbWHkRpSxbqqD0zVqFAeIvVRPuajJItlzpIJ-sMVpxoKqk5XdiKAp4S1KYv_rI52gEo_l0ozWqhXjrz8oKauwRlRU3RtXMX7U76wmP-7drjmBRdWJR1KiKDQnGTTgRZVb6_KSa1hKkFSLMA63hBohOM0KUdPMuhE9KysyYqT1FX_8irYss-tg7vBwhAaqJ22UievYxW9tsvqNe0heG2B3IJdkBNwYAgRNa5P7dXy4KjOBAdX6xaF0266kTkrl5TrAK-_tDnJnlqLFNTsginnICOxOND-z6yGnmqX5LcsLrsqL9aW0tuBM5EXuI8llzH4ii7XbSlXzBoyWJbKEP9bTBCq0xvIibXqfJrxE7hOds5ZMm7bA2vZn0yLFIzUctGVRUgzsVTHRVcU_mRmrMgkKtaE-sAJWaXq912qR1XhQdZBv4tqS70IBZOOpZ0KKNVKspY1PUSeKj71JBNkqItm9p_BabQ6a9qKBN0PGpzgyDtl7O_BG8RLaiH1KmtWappyaFmH4er7-06m0IHBeLXMN8yqkT7Jeh0LJQUpWldO7ePskpoddYpqLCrLC6IZUEBAPcRi29Ipr64nlLxFe8FdowqNew6huoYF7Kvdk-btuifWd_JFswKkJkgatXBl0o-D7WUC9mddzF-q8J4Vl-yYbmy7z71zVYNYapOaI6Wuoo1xoAd-iCmo7Z0xpadl6p5CJZ1vrxQQVfLfHMIhQmlbkg0c9jVnD7qm6O2jALJlYlWu3rCXcBf1NkwXd9o8bKrfANM3cB_2nWKMS9ql6m-8rKHNVp3ctap5eiutiQqUlH6eNf20aImeRK0um7chVmLO6F8AtMRxii_JnWx6QvCCpf7S6pTTsUGNM9Xbb82RK4MYOB62RtU54OuLW82HvuFtGqfIRGScnKyhISWl1pW92hLuHQCSZaa-B7_hwfUGctEgwjfsRV9DRqgk0OnRK7VltAwCu5vwZZwRCKyU8cOPZbQA6pqjlldQffbEqrB72lLyDqkfKBaatm9nLaENjJhqGetbGIUFtZ28OuxG7YqtlfbpuYknTlYNvxKAzSjBxs3u0ULja_amvmq36ZiumQ7ZMdiJGMnp7bVy6lOeEYyfoDZidc7wdEb8q-PbgYxWNhN1nXVQVhw4NIHSW1W0pkxqpAjnOLdpas8DRjGcmtGVe3d4MN2DzLp-CK_0hb40t4fbXAkflfksCogRXx06MbIP3RBp9t2P_7q-7ZaNg685GYHKSW59Jmbe_VJ2EcBSmZwNcgzIU7Jp77UNrX9qCrWVPdIxaPLUOfq3Rvhik_iHBXsvGr_AfMomLTzrEVNsLguCQ5G12ovGkEVGII7GFBqwzD09wp6oSyxBFI1Ppjw0lGv4dBuC3Hcy3PEqJNyNvUUR2u8lg5HDE4sjoBd1SSteAC911e93L7tCXnsj55R-Xlm4n31d4xzY2Dx-cGxVyesMCLzT-4YTLDxjnFUNJC0twQjfd7RhM49UR9gwmz1grzAD-KNelV27EjCwum7MMp9KEGnA46q6qjyKMC3vGjfLEEfiqJjTRtun8eYux6BrMxiPKRGVzglIOsPdG1o_2Bvj_nfOCkdvx65MicfFG518W0P_3zVeFJ58mwm3o_Sgj5hlcXbq_osqFf_j1XQClp8PKpnBb2-z6j8gBtR6AE3ovjn-trcWIltGe7n_Ua-VhJrqE2Lb_M8jJasMza5WZ0-H7RpQ9F1PjYQTdEo_tryjIlr1euLVWSYTaG0Sl8W3Kz7t5-FtWKsh5qdESr2DNPVmhoboxb2V9NF4gCd27NfKsU4LuXSt3aqIFA9gLqa5Or4m6TzWrWlrHqfOWgi4CfzKluafXxL9Q6YrO4xWxpHvYo_RlQ1KUyMUY2RGUEVfF9ZPu1z1_kHubTzxi9lhGh5NsB1yHhHx70QkCu_ceJktfkQ1HSWqqGoaZ2RqqrzzxGv2_iKp3kPOWhvw2IBUTfrZJuI2VAJFYZW-MIZ6-xVxUOoXSzsPFtyvU3RWdg6yEytQbX1Se2jdmAH7kOfJZUrZAzqoaMjYk5Vr2q3mTocg5Nj1yegQrii87oeooMItx9_e8j_AXtn9k4=", "tag":0}
]
~/echoprint-codegen$
@tayebwajb
Copy link

What does the line that says "vi Makefile # edit BOOST_CFLAGS and other variables as necessary" mean?

@loisaidasam
Copy link

It means edit your Makefile so that BOOST_CFLAGS points to the directory on your computer where boost is installed. I installed mine with macports, so I edited mine to say:

BOOST_CFLAGS=-I/opt/local/include

because for me boost lives in /opt/local/include/boost

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment