Add Compare tab (build comparison feature)#9543
Add Compare tab (build comparison feature)#9543oboking wants to merge 58 commits intoPathOfBuildingCommunity:devfrom
Conversation
|
I'll have to play with it once the league start work calms down. Just from the gif you need a ConfigSet dropdown too. You could use the Tree comparison feature in that tab to make direct comparison easier. Not sure how that ends up looking with different jewels and such, though. We've previously been hesitant to add something like this because of performance concerns, but if this just compares the XML it might be okay. |
0baaae6 to
ea630c7
Compare
|
Update: I have been using this during league start and I have at least found it really helpful. No more wondering why phox has more life regen than me, trying to figure out how captainlance got crit capped compared to my character, juggling two windows with the different trees/items/skills etc of your own character and the PoB you are aiming for. I've done a few tweaks to the UI and code to make it more useful, and updated the showcase video with the updates. Nevertheless, there are definitely possibilities for further improvements within this feature and I would love to hear if you guys have any feedback. |
|
I have also used it during league. Thank you |
|
@oboking - any chance you can rebase your branch on the latest from the main repo ? I've imported my build from API - then imported latest snapshot from poe.ninja - the average damage does not match - as one side (the API) - "power charge on critical" I've attached the xml file containing the two builds that I think should be identical... - test.xml |
193cb30 to
c3e78fa
Compare
|
@mantis Would you mind sharing the character account name/poe.ninja/pathofexile.com character link? (You can add "boking" on discord) Based on the XML it looks like one of them has 7 links for some reason while the other has 6 🤔 |
|
@oboking - mini_mooo#5043 and https://poe.ninja/poe1/builds/mirage/character/mini_mooo-5043/LittleMooMo - ones not picking up the 'supported by lvl1 power charge on crit on the kinectic blast skill gem on the chest piece. |
|
@mantis - I see now, yes, this is connected to the new imbued support gems that are not fully supported yet when importing your character. It should be fixed by this pull request. I'll be sure to merge the newest changes to this branch once that is in, until then you can always add the lvl 1 support manually which should resolve the ambiguity 😄 |
|
I'm not sure how much feedback to give (as first step would probably be the main dev's giving some comment on what they think of what you've done so far) - and whether to give any bug reports against your repo, stay here or try to fix myself. My quick observation is it seems really good :) I play with 2 friends this league and we all running same build so it's really easy to spot what is/isn't working as i'd expect. Quality of life feature: would be nice to sort skills within skill group so they match even if order is different. I think there's a bug in some of the compare functionality (but not all) - if I compare me against, https://poe.ninja/poe1/builds/mirage/character/Realfoz-1321 - MH Total Increased and attack speed comparision seems to be wrong:
However lots of the others seems to be completely fine - just seem to have some inconsistency going on in the calculation screen in terms of UI - some show just my friend, some hovers show both of us etc. |
|
@mantis Thank you so much for the feedback! I was able to reproduce the calculation comparison issue you mentioned and have pushed a fix for it. Apart from aligning the data used in the calculations, that fix also aligns the way the tab works more with the "regular" Calcs tab (outside the compare feature). If you have any issues or feedback feel free to reach out and I will have a look! |
|
How would I access this truly amazing feature if I am not a developer? I looked on this page, and couldn't figure it out. |
Wires77
left a comment
There was a problem hiding this comment.
Build code I'm working off of with these comments/images:
eNrsvWmTo8jSJvr5nF-RVmZjdq_dopt9OdY9Y0hCgEBIQggEX2Tsi9jEjsbmv99AysrKrFXVp9937js3-0O1BOEeHh4R_jyOPJI__seQpU-dX9Vxkf_5AfkN_vDk527hxXn454eDtoToD__jv__zj63dRJtg1sbpdOe___Mff9w-PzV2FfqN_kkeOwH50s6byC_ytZ0UFV94f36Q29yu4vrDk5vada3Ymf_nB83PytSuPjzZtevn3vzzHTG_tHEdNwW46UZ2ZbuNX8l-56ds2xTrwgNtAjut_Q9PmR3n-8I9-w1fFW0JBgD672K_v7cS19uNqr2yKM6fLVLHOgVDsj88OXbuxc2fH5QiBwrTqZs_PzD0BzDGf_yxTe3Rr_aN3Tx1dtoClSSM_UZiCP7hqQZX__zAAt_Zob-wM_Dvh99_TWrWVnXzE1H8N-KT1L70fe-7DeFPzbaVzwWB7zZx58-ruJlHdu76P5f71bbrNm3iMo396rvtEfhFQvipcpRCyN8wHME-iWhFY6eL7f7n5txbFs3juo24iWYp8OeP9BMk8xtNUi_TJoZ53Pg_ksBQmvwNhWnqdT8_F_umedsirov8V-z75IaHfDZv0xTs5Yfaqn7tV53dxD-256vRz4vMifMfOxn5jXzZFpVvb4L74lVtL27rtd9Ufv1zA9d2bs-Lunms5davQMxpfklg77sFCFO_2sdjki_zLseB_1gfU8tHxoFgnwPIs8yvDOVVN78oye0fbffLiv-aQSoIs4-13Bdt-uP5Il_23L75QfhjkM876PLDlujLElj4w_ebIcwrhT9siaEvUSv_wepAqFcKf9QS_mxfV0yB4PuIRRE09htMYjCGUBjxJjhxwvb7thAU_eKFbTTWsWuna3uIszYD6KHZZ__7nZIowpCfF20YNTkIbg9L4wRNf5JexpX_lwTnReo9KogTBPqyhgAwFvWjkhSMf44zcS4A_sK6bgto0viDacZo5PWW_j4SfV4QgG64_5oai7n7uOZDXt3A4gdM5SsZFeziiRE5qf8IlXjbzXMw-NGyAtj6trvQz5_7HB8LgbLvuxEP3K3ajf8YADwQZiYHT01_5OA3On_R8knkMctR7GXaudyvwnEfxX7q_Wr7T6bN7fL7sfPt-F-L_3ChTdOIkjTx7X5_yS-vRX9xZg278h6Dmsds-hzQuc6ufxRWv3DbvfVjK8cHRBcIeP6j9H5bFcmUQKQPiWEk-orCZUX7fZyjyDejuLf-0SBw8ktEuOdLqu-1bvOQv16SoVkKUsWfJSFfSQFD0_QR0ZcO2aax3fOi8MKHHX7r5BGJV-vljYH7tixBRJzWxE80UNRroAPMPv4B0UGJrxtvwIL-0QanqNeA-JMOPvODz41_2sHXQP-zXtDvSPy0K-INRv_MW8g3Wv-sC-Q3Bse_mtQ1CBsZgLVbzr8uHog5S5DPPZTM3Ro-mCRuix5YH01PeeqfZy-vWwM684AplZ9fx4f1v2n-ow5egYQHmBHYDj_r47sSn7vR4gwE0rpe2I395D2zYN2uYjtvEDCPH768iN4u1r5duZEMVsKfH15_W9pp6oA4cbt6e4a1jNPGrxbg3tT_5Kap4z9-vz1qmz7tz3Ga1qCbwG7ThvezXWuncTPePVpU06V6NoKZ_fNDU7U-uBgVveyHgBtOt16em9n3wDGp2_vN3UzQcgoidy3aWPqgOSvLH151J9-fjuVFlb0w87skmzbPtrzp541Nywlu3z4TuPn1kxlPsTdZMl17vviU2s7U4f1BH_vZ6JvFfj4RRu_TUOPcTVsPkNXnjfDmIeEr2bmduvV9yGkxIbpvl0X-hDzte7BLb73_4w9g9LN-Pi0cO0VftHX3uRVBv8_uugPS5tbvjVs_XT5NCwq_PFKcPuZ2NkVrFyRRN5kn0O8k9XQX-2JAz1qmnhb3KfjwFPrZ9H3tN7YHluHvYgO8-_vk4t8_T94N77-26vV4kE-duEWbPy-AyTk_Gtbvf8E3ANor3659b3q0Uzw_2nnloFf-QV7750XuaRJ8KoKnT6J_l5PeWLYJ3qp_2Enf1vJXPCX4Q2nX9bd989o1Lw3_Lk98ofDhsX-Su4_2j99vu-s_e_fOiqKpf2nXLlM7y2wnnpz1bW-_2alvm_-bPp9GAD59S-fP3f5G6q8sMQ6gS24DLjvxxDx8JE49izx9lvm7Vt1Xxvzi6vtS_pccwuahXz0Qhp7b_T2z_kbZz8d5b_4eSv7TicBf4QBTdrT1c7-pbj-SvN5a2PcCCxB5eiPzd83CV8b84mx8Kf9fdlbYPI_i9KsZ-bwbsLebPY8_N_-7JuNbWh-eidcD-EsRP70lkZ8emky_Kt4fTtSPrNAX6adnutoD-acXBX-Xh-4z_IWpv44H3x_qX_HctvKBxUX1iJ8-t_27XLLw7SbK7Or8y254seW_7KbdtmnnV3HtP-T6z43_Lt9_pfJx379I_pUVt47z6ef159X_86Hf2z-93S5_Q_L4xoxf9MAb4f-tKxCY3Pm_lhhM1UXZD8Dirftft_6b-OFXGh8giZ9l_sqa0yo7r4O2fgwg37T-u9bbN5Q-vNxey_7S8OdFVbVlA_KGJRhn9ch8fxZ5epb5e2b9K1Me9cGXgr__ahLsy3F-fmTot8ZP99Z_XwLsv1b4WPZ7F_nfGlcEP8385pcfOPgLu46-mZAhX3v63vZv9PRrhQ96-ibyX83T3-du8Dt1-49z-7zIu8L9AXIibwPpq9Z_Vwx9Uan4_a-E0M-m_Jdz-uimt5Lln67xl5Z_k7PfqnvAy88C_7Eerou2mn40myz-FwL_a1m0qVNU-ZMWTRE1dyfkXvhVF9fRxyfVtwFmPu37ovL-xmzmW_GdeHbFnRt_2cEXd768-OeHQx5fWp_NY0DzfO9uyps0wM7jwK-bL8foP5ahPzqJn7p57uVzJ_-Js0r9R0zqgz_7fWdm_385Dwj9r8n_ez8NQN9P-8gvI7_yPj5N5zem5_FP6u2J_k9mYGr0FzfVF6lYEKSx-zCgPJxbfVb7lXOfP-795vYL_f2H-ekjgJQgDp9_YL9_ef6F_Sb2cuX5x-6nJm5S_7Nx937EvGyb2wD__DDVN8eTEZscCNe-W01xYDrukoNF7hRF6tv58yh-_1o8ezmkofh25Yxc7mfxtCbzNnP8arLhASnVrvxNdQ9Fj2n48hDQVF5R3Q4VfToM9COh53M6n4Vezut8Q2oR19OEcsJ2KuPb5LdarQdc8-LZme_nQtyo_lRHmo4PiM5A4unVt-eLke9pxeST8ScecSM7z_3bmYtnRJxH_kOGfp6NKf8B_d0OXf1sBl6GN5W5gP_Z1c8sTO_aizv0fMewbWq7flSkHoi0X5p3c4Ngp2nRT2nplEd8o8uvNfiT3HNdX5Gmqp2HrwQp-CeSbysDPwuiKI48Yvb0rNgH5Hs_PS6eT4FgCm2vLCd-YsBz0eOLAIkwNPMTmelHll80-FbW8Vwd9AvWTWe1vuwJ-5lPX-rktn7-SuxRqV8bWR2HcboJbuVjYBLCb0aX743uc43hiwzx09FNMPK5PY3_rJNXxX-P-_DVgbrPpj2wLH7J5a-KOB8f_208X84RzZCP7Ja3-_u2Z4BrsqLzvdnIpun4-Nx9Wb75CwMAVx51k3vHXEAVmspOtTj0q9smf3xSpt5-bUXfxO7nNV_FsZ-N6lMJ-GcHwgj-g5GVL2XaX4cF_Aed7SOAkPvnn_EemKy9W1Ru9B2BP35_ITU3LnT_Nn3UKt_XY79_uhbFp9pB-lMJ5L6pJlI63TL__AAhGPMbjD6XIQLAWsRBAGIyGFL9iaJNTY9gYBjyG4wzDHqvjryxypsdbyAzrt2T0wbBdBD4M43glkturok692z6a5Eb7zvdB_f1IPf-jQneaNsz9UtvBWN169T3e39-mAZ7u7kA-XOcTgeeAZzZZT0R0jub_Vqb8Dk6v9Z10_Pq3gOaDODX6kbNXiviBr-anhJ_vvuAquks7dfm3G2ZDjRMtbAPKXreA69V3X-Wndt1czty8YiWKZK-VTJdeWwoYlba6RfO_XTtkQFMA5_KYadVWX_DKc1UKguCSxzE7nObx2b9EzS88c2nk1yP6LidX34r_3zpAeH76eK30p-uPeLV25nmL7z6fO2R9eW79vhW-vnSA8IvR3beKni5XExs_iFNXOqzcTrVDXwxs8rzr5hg33xu8IDCNYg79yLQLxRuJor5cucBTWCXVLHTNl9u59fXH_HVrfT3jZtuVx4Zy3SI7Y3o_cojfn19huxtNHpz57Gg9oWK-5UHRD-xitfC92sPTsEzrX_j_udrjzjhE5q_Gf-ni49sklu4Zbsi9r6OFF_d_HcVPqfN_7Zd0yGmf1_Nl4eaHtIIGGl9_mK_fLr2F8UPza3e9htaPifFP1Uybbl_T8O08_49DVqcu01b-Q8pUL-iI-qXJOQ7kp_O2bwF608X_6L8y5mcv6zhfnLoL4vfMtNHpKf4v_CDG2_9BgB8vvUglnxb17IAjA7Qjecf0f4tXfumzRdt9Xeoug3x2xHpr7nrGXq_6bXvaLwHlfsJ-m_Ey-cbD0en7ykCvEB4lIB-V9PLYT_Bt9Pp770U6b-n8Ms_IfBvKZuOLrelnXuf1G2-xft_eRqKpgY6b0faFtMJ6X_Xh7dHh18rerELJKTPGeIfSgFY06R6uvrpyx_zAiQDlf_yyP72Tcw9f3j11P52kcubavz0e0oNkkZnGsWXp-nE-4P9L34BeL56k5jf_jiVr1RNoDdXFI5beru96NTMbXw33dcSRK_MDtW3I2asKdpLNtZC7C57x2pW0a7klH1TGiXk0wHMIVIp9fLSqHML9fJyLCtlt4QVfMazUOKQJ4bh50c-d0d5w3UBtWKPRIFH8MjK-EnLri5FkfQ2p2rqdLp0GHSWDj0WqFQSbeh1e_I7Bq8CHA3Pu8Og18M5Y9CqPRZKJBBJzEs7yYmw9irvgxIRZt6QuYJwaHdY3Y1pVc6YMCw7VS82lmX7Mc1YQblfOpizGS65iJPyIB3ISiN8TSwEPp7BCS-W7kw6rq_Q3tNYJ1kn3XZ3CVvufI48fKQMharCcnuNMf-IXFteZsRebk61sFHjJac4arzaVJQcxuO4pbOBnjOoMMSqSK3RDQERrHw6DVAsqhyRBqktwvMuya8uzmZzvSVk3OwdZhcDMw7iUe5UP7t6qJeO7eDVHnEwSNHPD5WlxUsipnFjZxFnt11Iq9WM906rTutbBjfjhWHqmdv1SnFghNFLg1XHrVN6G5xGUVnwRzZl8vKQoDJJZvX6Gp1Y_SqvPVSHlDMRXLJATGTcwOdXZeyjcuMocyLl6CyiWGPgA5ceqiStpKpfa3LedNu5GZGI4M5RfVwGlsCrJbDlvGEKWsHxvTHDlSt_dDtlv0ykE4ceXaedjYOb8kE5opkHqUtTcePcV_UWkTnXSfB0NNr9kEmdHks-SezXuq_n6m6B7-nzIjerXEyieW1Z_KJVLkiyo8frZiU2e9mU3IsC6WwoG-etOWcuaR5ilJsv9KVBJH1zOhZc2w8MHFbUaoAjfsyXqWB1QtpDUcURK3xPYlSXj2a4h4_zYVbvHCmVtWHFE1LmscfZMlaHtAp6-axQ9QonxrPpCcvTWhaXwpFts51hacO49eEobTfzPN7NtRyPOT85uH2rj7KMrQzR4dwRIdt6ESzW4ZFqwqvjnYfKttZbHOlbNVDda-k6XazR23ofjWKZZso1Hq_Ctnc4YpZ5OceqibvisoW5oeCwgKP1UNe1GM11PIK4s60thMKtdBbeemXV2jJId651SHGtuVMTntRyOmn38kaS0u1u8E-7xsPERipHON0VTL2yo6ObWRpLs4UVxOkKzXqO5FnmvDZF1HDGPdHKWQVrVr05CBd36FZpsDDm5lXUV5mH8x1PmblTteGlxTHaamqTtzG-9KUz1raIeeSi7kqIW6lHkf21sPsNddbURqrkq73Nst7pyuS8P_FLds7rx9OJjq9XIolWyzpKHFFlMny9F2xPPvbKcbwucJJxUnnneka6WHsze7BsKo02BXn0ZmuZrXLUMs9L-YzuVLKRCG85N8QuHnP8gOValkvNWSwYFLqchEa2Ik4Xc2K3HhzF82fBQGOn2ZizJ5aCNwE6X9LICrNbkzXpY79MbCggIb1ykyjeXpLVUWu2V0QPvWIGDTE56uQiM5PZcm0DrHBXOLJq1sdrvsLw2WLenvEhC1e1ilPy4rBEFzQcmMklR9nePq4q5OAOkdwo3ZmmYAOae1ISibvTXDEX1zWCLpHBiIzDqHjDuO4vB2OQ4TJazi-YNwvz0r1iO38uxhjcz2OwoIWQV0033h_7fm4waHY54hI5uqTOcELRwqv5IlHxw2FOCTEyMvompE5tTaanuWEwtI3Js9YjjZ2BIvwpSA0dR-iAp1GW5rb6tr62tbOl1vvQcReb3WC13jpi5KMr6Ok1Ws1DHVllJ7a8jvsClWx7bMduvZ9ju7y4xstNnq9nQd-GRdgysbvD-0AKhlFajXjaLjWTS1YO364o1zyveQsNyHFkSwmaGSy-Q30lESUkNTrpUurIINZYDy9UBPYuDL_eiDvXmddSqq16l1-TJSGGZ1nVzP0WWcy28YUoja2f7RcyzF72-FWXFvwywDayligcgIJjIiFq7Cp5vDnJGhpQIz-rIa3Kpf1STq76MYBWa7XfY3pvXMzZPN4L-Vj7ZJoPuXFhmW6prV2pFHesRJb1jHKNLuoIWoR9MYgJmTNFo7v2Zehx3dmrOwtdqUmtJPCZQ7XkiFHUnq-yUaRaXT1357jQtxuFa1a7_nikRbvGXXiOFDPqfGjUUZ5bJl-NFlAnintVPZgKjKerPRR3ZirKK6uNnZUOAHd7MRaUG19WRZ1ZNiKetQMU6YFFzx2vcpDxpPNKNScVTKkrGa9hrzlDvBCrsRLNTkk62hQKGYCfkAdcotH-LKENzKOXTA5MMtyYKwtMZqKR0pgpNObrBLRGHW9jdL6Ix1Xj9xrdk1dNlLFZaukWQ7bzRSp14ixA61OFNmNOuPCwonYJTWo469MDvFC41ppX8nGTiC2_NPHVVoUaazUv6KIqZV6E5qccLBSPiamdVWxwaK_uJBbPSx3jzqZjWYezkR-hVrVOoV74q_nFrLQ11m6kkht3DX2dL9dxiTEqFSbzNFz1RFm7J71BTchQeFygSSJGhrlFbQ15wVUkvd8H-1zCD8n5iNhX8-AgDrK5QIvlhsp2_pKE8UsqmHHgKtDKoHNcYFwRphJEcUmb5q-Xa9U2Y7HFdrKQtrCe8-EiyBNlNi8wOo8j3Lm2MlMyQozaKxWld7SDi603sA6r5MfWHx2RRMazqu1aoqpcqSXPzogClKwMthsG1lv6aRsk6CDFZ05hnSEn0L2fAJ_NyOJUyL42E8kwGPr5WtvoVi6Q1gLn0-JQU7Oa1RP7qDqnIzMwGVjYsTsKsuzVR2-t0CEDH4ZgPZRH76LDQ0lu7ABhRv-is8fT1sx0u1CTwxR9lp1qZec8JldH-IJfO6fpGn1ZcuWp6gbHycllMVxFy9ExtTu77AlBfZKClpSxv7b7PTP28mBs1s5godl5ntMGlp081iq5LdbNB892VjS3t2x0u9HLg-qhCDWXIX04nQKOPlbBWje0RJi5TG1C3Sh1C2d1xQ0LtxF445qKyApWymTeaTk4s-7IFbMk9HdXgc2vR1dZGPUCBBpZEfEzVXtHyo5tUe9W0VBmXcWPqbmg3aOEDwtbvYZSWBGLQb9Kq4I98Yi-8BfZwWdCmC5xfuVAyr50qBPlKgnH6Sth0UtWdEkNdNkyvq_LysFudWoxJMxWTaIFy0MyV-5a3uXcRvaTIMTnOnB4O29xibEPerbTcL2ILVHVrOSC7q8YTljnLMGGaI5W9iLR8t0BJsTa95EMl85KW13JqAgT6uqv52zazjccfKhLCSAkt-M4n9_QwnAxUKdQG8Nur-Ia8UT0lKKdI9Ly5ehiJMIXcdYMMoIt9dPASvmlQRlz3-321eFM-LzlL0YccB51zpegSZhhJQXY3h5a5_4e0rCuhk_JxRjqHJLGTV8aNLUFVCWGC1s1qXDnhgROD9ejL63glbzHmQFjIfG6plZrBDIyCRmFgy9QO0_VNJ2t6Au9Tk86y8WLazsffN7W8tNsrbd6OSJGG7SbhFTObXAZelbq6lBL2E4_7X30YFv8Tgb7j61pJgzSQZSO-6ub9ifWbWNT9OTdhkvlbK8Ni6OUHF1dpHp9N2doJjfqIpmxhz6eoRyM56JQ6tFcXZSGkxvHsISjpiS2YUduXXm9IEgB5tOYqyOwzMUmsucVbhQMuS_mhrU5rfGY9gHEycnc0efh3J5TI8C9bJ0I0nleDPDWWRJOrqr8ES6BZeh1m-ijNiuEUL4YPnWs9sRa1A4H1pxZaG_z0XiEK4eGLH23RRDJgaB1lXhI6GPSbscgYC2G4p46HWZb-hTLiryrtuXR5yRz16NdjBzbbCHr5SVEipOqbM87DrJrFAlFfpuN_AanJN3iyWqWHNRsceHn67WZqMbhohuH_bmzezaRDWqhJYZ12jkgCyATfWYOs41b7XnWsbEqqXNfyCRj3YVWKK66RkABaMl9xFruwq0LljPnIGz21TZZ9FtZLCvfYHUAAaJI-6i_SShEbN14NpMwMRTX6KqhHNFGswOl-UjcedDiyGksk9C8qcesHtXHIk5YZFaSeRkxZW-xwMlIN9Rx1dtCsaPVZYxKrEAju7aGI-ywOM2HgDeQyhzJXqkYYSNs1qJZEeE4XMIZdxziZUjy6k5WNj0pocUSsoVKomj-4COCrCoW4rlQfbKpmjCsbs-rEVhcUFasXb8eEBvykARDDovhdHABjh52TFqIFq2HdGSuy2IDCxtrnnviIuxDu1XKQ0Y6cDZr-3HrFs2IyY0r72gEk90iOjc1SLZOy3JcIht-BbgNz29WpL7qR1bSxBbRnKMmcFcjl7Ks41NphnmWMLtAw7RRj0v4Ost9wMi7tSfYYVqKZyXzrnNE7Vc7sGS6BtcOcxAy_UbSLxBlR965OpJ4M1jcONZHrisJndXpuX7Ybuelqy5Wbn6W0T3SH5VO8iqqGd1Tdz0VoQqZCV5GeYEtsJgZQEayCxLKADhytdwdA8_60zqFeZcaAOx6vbuSrP24zqJ5sxQ5bEvHW-m4oCW2hvZKpSgrTF51C6ZoSuOy0psqNBFarXZIVqPlGu4OLEJxh_31ysYCqrdZJhpEZ-5CZp01GkCn7fJkzXcWvwyzYolYgSjwi_2F9TfwJRGXRb5mLqEWmbIlLg4Gbs8wWamVo1-KylVkeC1doyUHyy59hBNxse3ns0i3CtcCKdsqC8zAULGlz2dNRFknAChnc7ZG-PniyNtbbZBDCrfa7V7hjFHskwiXBCW6yNgAQ2mniCY-i-2THZKldcYZ1AeNjDAZCW-rkuw1yojQudoAKpCt2O96lU_NMiuCZhl1lEfu-5lrQ9vjPl_XJLMqrHNpew0CV7EcKds5zcUQzkvrdLfJltwOpskginoEbHQViaNxwHAy4VqZF6xFgYi4bIFpUihEtSp67ayP7dHtWQ0-bWVC7gbM1nt01Uvd1jBXtgm2n6_IxkgyzIWuLijUZDO-pU9JNjv74yUKFCDHLYSqT9EVfBltYX4urUQA-dsc7yOENYPQhk4VtrH5pV3qsbDCMaqwroYZJ8c9hIpDnMWwfJb1TW3jS404Y0ZSlpfmdMBhEJiS0_IYh7FP7CDCnvPQ0td7PI-JpVhRotmFJ1Gh4tNw4CWpLkziILfs_hrGK6PFCAqqQ-siM87JOctZGnpiAWvxzlrnPQ4z2yV7EOwcufYdxCbQzOEiIgvXB7w1xcBjuCQ5mIcd12WQNsoqrZ6PYrtpQSLRpyZBJJBKqsp8H5HHNONZa39QXPR0zOUWm5t9uFiCDNEs6qFFoWU-LPnrKiJr-0ya1zEhLJBZhBHSBtK8GlrroHn8cTyLCcdndqotZmxRSQTNHfllEh7CZaFoC3YGq8vqtO7IY3IOkXxxCo4Ir7bJJtOuAsR4tanb_g5fYJwHoJualRy0PlrZQTugq2BernkCznYZIDglVbWrK3FlG2K5nF2My1I5evR21wf1BiudpEbBLKTNzB0Sq0mMpUKt62COdrrjhGcuNMXUbh1uNkr85loSQ03oRoZWO4zraZhkiaspt0MhDF2qUlcTW6gzNYgLO-5EVyrMVAWYwRaJkqy1CA_PrGISmHRUO2mjeMEFNy9aT-vOjp9Jblyj6bjZrY6L01Vd2CNzVCqcScfVOQHojg2bDW8uFw7RhBG34h1XtER9b_MLlTzvXdopuJk57s8HP-SKnb7Z9ntjVaYYNfOppXIp10qFXlpkDy9Tu_QPtLAYivPa4YxjR5vLqDePuBt2aH_d6athW8azVRzB9rZeB0rXoPuZAYkjRS0dugEEBsm7RLrGEZXS9bKQ6aSj7OUCBA5xtRnpvLV5TDiTDAdVquVTqzkTZJ5CCLiP2wKtp4l8MEAqT0Ubod6NO7NdEXK8ycniYHDEwYz7KFYNkurQKmStbWuSmsdkwiG8XGbcbovS3mhEO5JtZz2Dt6mW0z3BXfwAWyCZHwp22cfUZsGZrjkX7SEU3Jqwho2y3EQlKfVz6zxo8VFXbZCduZKzBjsicjbGDOJ71lvws4MQLv0E8BoDZEsDsTbBjnTnoYAt7Bg2cpZdqBgnnnQRX--u7Hyz2jmRerFssjDCmVbSJCKVwqzjs3Kx1CvczyxKc2Sav2ywROGXMNRfl61PCzEfNEV8grBO1OrA3Pd2gily0fqLgtgwWD0_hrurjhU1GXYRIbBeEEcJZqV-O9snqKqJfu8mSnyRU3rRuWUs7dP4ODOprXtWQlVVqEN9kCPVFCq1oOByv2sZpFdhN4nWm4Eec9gRZHQ38-HBrAJ-z28gZRUA-CIqo9zamdVAw1Fdm7ZqUUbh4MKlCu0u4uUI3-hkFjpbxZidvMysOamo3KO1pXJ7SwOK5xRx0RzCTV4MxVqtRFfL5pccKtiNpPGXIJxjSC0bBVVCOG4dYn9nxfGcW2tKLwX5qvNNwbtsrofxyLWkFrOA8bAafarZUaRHbO-fBZpu0z22Z-WGm6EnRPPWi3hNJ9bYYf5mDsEkvraYgD7LR5bi-41ZVhDi-ayJAMLMt3P87DOiBidbxt6Is1hYl6STHFpOw0bfZ2ES5sDesZAtLh7EfcTy2vISCyDH8K3jqEtXTGM3RQ33i05SK7bNAPlmBhU7ayPF-V2LZbIOb6CkVehoheJpnvnEfhHsSuvSITvKqdw53I9Nv1WUMZadUE-8ghiIQy5rDb8rhINkNgLSbiiy30GigMgul67OLXtiLpCHi1YMySiZETKPB-VKX9C9QK5rjQ9PNLIuSsfd0eOAYBCHbw3hXG9JTUV3UGKWaeUMke41B5PfDfkiqihfnAts6OwubLSAd8w-wGyfqclxx7NjmW-LBlbmym7Ri1m3u4TC6irkJ9eIE4hiqLIWEsVZMnytk_t4zo49eST2PjNPRCNSThfsyG6DM2k1vjuO_cw204z1wwEEQNES5NDbhloLza7OzFtz3sAMIM4uAVUxxY04X16L0lPW3ZyA-T2-tdxYFcL8MF5dgwMsa9f55IigcLpSG0RddTo-jKHVcZ0Q-COJJ2QZGdSlDsekBRm_bl5mJA0Spq1i5q6IWU1A2AY2ro6JVXeAhC9gY4malRwwFNLPUPfEX-BLLqqdcfB2_cxoskW7kLaHHVghpdoKOkTm1QHusn1LUk6meN1yu9Ojca5odcLuEZFiM0dX5FHMMo53DuvT-QgAzl1jLO6QoihQsCaGR2OnRoQnijDftWguOKPfJIVhV37dKeteRraeLDtGAC_zFUkfq0URomjnORCa2sbVNndK720ITnMXeX9ZzXh8TuwlcSuZq6GnhnXO1VqYazVLFFcNtt2YDpf8Tq0W7rzuhZluVWkew0OCetimcbeu1Ll-RKpUbBpt6PVy2DmVPWsYf5SENgaQmZmzzIazMpXguYm1IgtWI7mUrV3FRPvOKjf4FVoJrDnPtgqFb6hhWNMRnoqtvdxgomz3xn7mjUWU781yM6NCk9OCxbiyN1xvtqXXq9lGTDUlnF3mYpqe3eWCTJejN8a0LLP91XHwQVkam0ahdDlWFnRrrZlyxmaL86EU9MYLw0zdesLlJJc5TM7lHPRmgJQcOyS5jbaNASBykMFe3_ki36mzDNdGZycepMVyPZ4w72BLAg5ZDicggsPs-XG2UWJ1R4Bt4PbI9uDyR2nXsFhUOnuR5nsqmYemCRNr6cSuzKsMB2vJUpwTZvddXGKQHJAYXtnHOIcresvVQ-MVAIcXgb3qTahMLIfVqUEdWuB26zoITqDApFIFDSAsBByiS6JPMy4Sx_nRWh4SL16tduvlGmT4q0U0k9VVuHZUURbdDTaLzEqht-N8Jgob6HJVNNmQt4eKDpIllsBJdClzysolwmpmR0JfpMbQBPWBR7aRWxyrwBVxUwj9yruwIpkGF_JsdBVrWSmJo1QnorbAqf3yANIwiT4c54dtmuO2TZIdcs5d0jxLzEx27fQocRJxHila6WCx73nqWPIL97Jau2nGnA3l3LchqWgDWp4KDxXAvh_HZUNUjCt654OURGBCElflpLO7mnMmd9JLDXaRqu9prJGocS7Afh6lJ4kEEHJATgjvscQxotrd7pRAm1V3oa8C2NzZXqJngDVQKnQU0UROaKNKXXdrnSAE0dz2iCrITk6wJcdz21SJG15p8i43zq1BbllYXkD71M4cL_KSIitn8CUkTyCQhCiAOBLHz-nOc8_1GLKGOz-dGEI9-xa9DlZM5R0OAYss0mG98eGuHq-BHVWbHU8lLo0Ox8CBhEE78Tnl7k6Cn8-vcwNfn7hUjbcFF7p8EPM0w3mMn0AQjBp6M16I8mTDSbldK6JXx6rsLWMelTmFNkSjcaLNtROdnRIayEJv6h18Nc_TGt0u4dZbtklsECDLXDbJ3iYrb8k1V8MmZYvnGFTqZTO6oKhoq_UeLaw-j9mjoLOMur_IksfmB3S2Let5oK2X5LrQFUvmnchaX5q8lXZLe1d4ddRT1iLKIAHwOW9dNuI-Y3Qfv-yW6SbUSIfNz-NsS2RzxthJGY7a1Xz0lRQ3OGm2Xblzf1-wp9RcIDoroxy6rumzSkNnjc52yYEi1ruz0pwVCYfQM9HgGc_l5mEv-W2QDcv-ohzO4YLGRHduXt14HW5JYr4TNrGPKfNNHPCD0GuKV3NL9qSMy9Bw1YpT2BMCX1S4O7OmBm8y8wK1adlvTUfPL5dTz2wvBza11opRq9TWZip2MSJF0sAbqgwTXT2U1drpjT62ksN-CdcCczbdK9R5wmpVrjerdIdlaK-rkY8QG7Tm9OygeLKlHhGLo4hkxa2IUscLKGYHVT8VEU4dykOCp1QR7yE3hplmMDwuGA7HflQZgdMopjPWB8sm_HVC49vF1WyvFAEyw8ulyGLnciTLNRRSuprDhllex7ZcVntF5Oq9q9dwdRE4sE2QDtnHx-xcDjkZFd6pxmfKmmw3kMwZ7nKFFoIbaAPNO81s76GO26YLnMVOoumMacUlJX5eZL5HpBB1WEmdjTGXRUbKTrSPYMb3_I0e1DG9PxR5ny-pUCiTelfr2uqCxcZs1ZAU2DrMOalS3TC8CMeVgz852GTLlUYY3r5dbMRisfAUleyOcjDHfESEMO_CR1iidzjUxnKdkFnAoV56NGK701d22FTtZdS6ImWvy9K8t9GUa-XMJGdp7CqXOmiluBIQb8c0RgZVczqKQM42ayOWnsHNIdfSmsOG4yLT_QBK5_bRWl3JrXogPAwvddKTumWZJJdVDGhiBmu6pcN41lWoFxuKUUKkkRyIc1ycY7JggnatGaqHpByHBG0qBybWrSIQMOPA5TGkG6ta4eJDq-uCNBBO3GVbbbQLuT4CAO16xJPyM5GehmqngbVStBxaSGkrVS10PYqWl-8tiI841z1ASchuO1vdtzigvY1nrPrNIXEgdSwB7-uJEbowmX0huzlFGwEWnnpM1eA9KQSJjfvrFqlPJy8tN1R4BCm2tqCZxLJ8XIQqg_ADtW0vghQgSsO2i2Wl9T3OX7S62QZKOyzURpeo5ZI4t3UZkD2zXoU602PKYXY8lCVUy12tqquNcxXrVi1nUkMl9iy1TwXB0cu9UYWpg_UVXM0zBqBvg9EEM864GSlfCK9ktjyx20qZbjfeOqSpKsUMDtqWzSzB9-fa2UOFR0qOB22WjreFx4uKClGECPGaKkZ5UEumyMgNbLJNtS_gSEzCY3NdlYcjgzq5BxF22eh5LsikemJAwhWvmAQ71j4nFMRe2-ZezZipvYqXzL5KGjFe5GWDYHNh25_htQXLMyWl2U5L4gFKrBwqPXmzYa4otaMh7lC4aBa03jWelysiOAC-2u2Imsq1GaJtTgxblv0qYBZ8yVK7enkiEYc9QaVNHZHhGHMGhF3Hq1y3fMIyaKikOyHfc4DptMky1dZbrysv0BAcp1-LXIFMltzRxte8uEQxjeSZSmTyXBuW1w3hLHKD3uauel5dDNVhOZMNMXmfDBmrn4zRxkIrEXhdnQvq2ia0-dXpOQdzqOVc4HTFTqTV3oQxwRSpo8Lz65kDDFm2QdwRZZ4eilmegPURlU17hFthU--vhbi3-0WdLletPeOj-XnnI4DcLbhzRcqRbOzinb9WzzCvN9mhuKz782U12vy1F3a7bL0pEv1A6Qtjz3C8G209PbswXQYCRDVnjci0rSqED-3O8_CruaPS2m3DVbA5srbK2krDYc5MO-O6Cc1WII_R-1pk5bXIRL65qHeEfoYJshBWu9nuQINEZ1kZM3l5bDywpB0rW_cUHVocAKYDN7tcWQWN3ZCTQq3kQnUZaCBZDBnVJAudbwN_R6A9KosqqbvJ4gxICuOFDcZrZ3GIMJqmMs7RPB1Cc5ddlLuNrxyPZNjMd8ryAhYEbV5aFFVYiRsr4GEujaXlslhdwlAlxQgX9qEn7uDlpcBgcy7NBNkLF4AwW7NkNxLjeC4iE6VnM2PRkWcZr31IxBnlvGY2jbncEytlxrkhjEmdoPB2MSwHtTkGzck3rK5DaGNlY4PdHmXo1FHIyY1zyVQDMdLavSzOWqZTDAxZIMfR1nJ7gfiLdnZqr0FXWfMzdsW95Qw6BXLCBFyFahc0oXkBJxksbMjTFmag_Qj24XbjYgotbEtaY9IZFajHYLMSim3aHqEMo51gi8RbVD12JwId4eaaCxg9ZFcBAgEImh68rrcB4BFXcVvUTnxycw6nof3ySjeKc8URCK3hU31pNVLyFspA-mUInTAdC06nK4qOdH5abxvYN7Bq9BcNBXkn67Ieg0UkUUFA0EAPs_VOAY9BjExkZivXQde6PNMznbDIDvl2FDZ-fF65-ZaAG6wj6M05C06UTPr7HIZqyivJFJhMXh0IpExQwh0PkGCd_KAqhxW-vcInTD21wepKnWg_2RFQ3muB3MkVRKBMf0quVDMy2x7aBmAg8XwThPpsYW0LygowBALNfMoajJMKe0HMbLZeaHmnDe_QDdVqo0z0TMZsZqQrhCR9AnF9AaPXnjniHW8NkKBcfQoD1JilNtuUdoMOEeVC2p7SDvOTRMyvazLYzE9UgzGbCuSxndPDEIYQWw0uiU1HTs_38u3JPckEfkK7nuoiF-oSAFsWwGJPKpVAnwWejtcpZWmMvDqVWgQV2W5T63GbhVtz7PkysqwLoZTuTL_U2wNebdyivJSGLp33Y3qZeVwZ7RnUxYiFStJDeoYSWLFqUoOOLmr5LU713tk0IWFceZgQMFBwkeSYOKTkinNGYk_3QrvARroZpMYwjsH8eIlrEBgYH9usrizGhz2U2dH6kub-jNFORi-l-GYfxcaGXx_jZqWquyySOSSV4qp128iLRVzeKSBCCDqyjpouWLdV018hWEu6eU3w8tkIlegSWEFAVjxv7WyOTKT5ZqOYXcl3Z1QzjrOEMxByQzDVKjPoY7xM_RkOzWqJd5cQbp0uC5ejFXy_5nRtC5WXTIG3fdIx5HJuXBWSWTCH6IBw6WomN4pM-SMjFt0lP5cCc3B6v9hf3FSNsmNs9DTSzPG0knTx7DsXn9L0A2loLbnc4ObWsbjYMU7MUSQxBdkLwaILKV-CIG6VRrg7dmv8AMU9piGOwezJ5aKQvOsJkAxyTfOk6yjqAeBxdHVlsu0jvpdlQjHL7JTuZWzFHJj1EnViy_eRoydeFnOmSy_4Dt1ijIqoM9o9ZhuVTqELdz1ewL4FWZypYq1GWbCNEV29yJTBMtyEl2iAQjqTFowTiR6c1_siL9Eew9fnoz7QZ6wXtX4WWoCSk_IVSaFUNK5CSSo7NYjNWN_nazw6Hkhptui52sIHjPSbNSxcinELiPBVMhp4YROe5Kl26p-VwhlDSnJJ-OrpanpCcPnodlwkiKZtbpx1jxmd7uZoMGd6ZwidcKkdmfXOKK5iJcVamxj79eCGyDFQFw3TV6pP4GvcZLELI2ukVcVXqrIo_3LwUyc5pP2p1erZRaNKTDifbIex17tlQ2V8IB3n2pE2sTWioe4aG6rNUVQxWlu1cJR2NmC-fQeW3gU9GvNiC0a4adP5eDBFxO9iTBUuRwFXFjhpkiQ2y_ZOXxIwNtcZ9exUOCmV0IgVIMzM8FYZO61z4bXUb7BtsUls0jCzej0g_eBn1JVabDNjJS4pX8lSiiMxeIY1hV5kfhXS9oFnU3pRoS1-Xa24XGcuzOUqQ2tN6AJud4kkk48GPMxpbe3vr4rXbwr0cmlOinFdViom1eGIb6NZUiC6NVPsMkUthCjsHqs9OewuEIWMZJ5cPOVKNv7JvzDBsZ4doD2xjw8LkJgF3anfrmdQ9VLqff9bNC9fp7-U81L3fT9Y_VJ__o9_GE3w5BV-_dREcf2U-Xb-P-5_YealzXSQ-nPV-XfL0PvCjt7L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0N_L0P8PK0N__nvo9zLy6bOYTS8ef0rtumHd2ytQBbuOQFMU9omARGyasD0MwVEMpkgaZcA3BobxwLFJG4VJ6sNNdHplAuhtejXcJOxgDO5iQM7GKQAmmIfSBOUhthsgOGUzDkoSsEdPL6GZhFXfTrM_P2znH5784fYadLuaXvb6-S_B_3G78rSPip71uunVAlpRpPXL-2E9v27i3H5-P0uagqGXpZ-_-Wvyt3eRfeGh-x-ZB1-eMmCHX43Pr-f588P_xGkCJj5iOIqj_-vj_yQRhkE_MjRFgi_Y9OK3jzhF3m6hBIwgH1EEJ-mpIY7D5EcKwajpFoViQAcJ0wj4hiM4Qnwkcez-jUZw_CNOwgQDviEoRqMfMRon8FtLjPmIITQ66ccxEqc-AlEc_19gXLULxjUHbqufC_ndT5-nt0z70ys_7Wpkv2iGf3hqplex-VV98xF2QukPT3nhTe9WA1OLUsAwggb_EiRDgb4ZEozpZj6CwDT9ESMIggR3KeAUlATGA9cgFPKRwigwCpwhKXAZSH28uwNnYBr-iGEoPZkORjPppT-iYPDYRxwGg77pIj8SFEoxH3F6aojCBIFMV0AbBIcJcIXBCPCZgHESKGNwDHSCUjCwCWD3RwLMCf2RwBAE2McwCAn0IDAD2lAI-hHHEAwDzmdwoP_Z9SgCjKJo-mYyTIN_ERK0pxCGAJ9RGEzBbW5JArvdxVEG6KcY7CMJbiIfEWAh0HNbDAiDwBiwFhhFwjgFRAnQH-gBB-MEkwcmnsJQcuob3JxGC-QxCsE_glEyMBCiQN8kQqDERwKmSaARZ8CoAE0EVhI4GAW4iwMfk-hkBwmTNJgBCgx2UgZUIghwKQEUAD8hYKgoPbkAI0kwSBS4FDiCQMF1GJvmAqxMYCIKboKLwGaEnlSDkDg5Ayj_SGJgvm-67__eFwPzkZ78CKYAnYaIgrXAAE4HZhglgEKMxMBSYKhpQCiMUB-fl-tt99zmgSTAAgLLAiwGYBBNkpO18OSXyQtgtoFesLYosBZoFAzuvhWAOJhnDGeQuxkk8D0MurrvLxKlgUPAgNGP932E0Qy4QhCg32n6gUtRappCDCxPsFwIsJqAAhIsZ2AOcCxOTo4F8wDWGA3WAlh7KDr1DWPPJ3UOqnw_pxM1TVn_6_ff-77_rbSbqAj8IU7939wi-70E-wuEE-j24kBo2mG_s-C_WXgg_GUOuEJDo0aZSMhcInhviI61e71AuQXoSU1BeBi6OwmhTzmAio4agwMIP_3VKd3LmRyK_dEq8QZuC_OKkQ4ld429jIvAmumFG5BwuaUrdKxjo6AqqWTogHYrE9uLwWopad0ocZdgmZ3qDYsphySyz5awKUIWOTe-QRkCXyXlvrlSGnRiA5rBmkVUQFSPH0S2icLF_JIIVGwRDVqxOB07_cENcKlKKBDlNDT2wvOlnmUhAjlOt5pdcojx1QI_pWrM8MnoOlJINBCPHq-Jncz8wbyI1t7tIMI0zwEgVrO5qXkxY_P6pRK36-0cLuMTuW1M96AZdKT1O67uC7bYzUtWEtlLOE9ZyWTLfl6x0pot2HZNA78emCGqsWHDzTsqsAWhjYAf9vaBjuN4L5WnyJUY3zLR9RJ38KA1aqilOfbPP-_nrD7N8B_7wj37zfOxrOdvt9h4i6rTZv3wFAMQnb5-ehXnV-1uO-FzO-R77W5R8nM74nvtbhH0czv0u-2mEPa5Hf79fsGu-NyO_PxC81ej_2N6wUsVe5_OqL18f_Km18G0uR9WdtA8FcFTE_lPKlj7FdDp3l-L1vyOLqZ_b-fPRHCx_rRB6t_ZBmDRhMD175MaflIT5-HUivitnF4V_-JwnMaZT9zljsfi9OaX1z0cxNul-ncx5-3M_10HHYLvN9XzZ9Xbe9cz_qb-Pp5_oPB_e3JvL118KvKnyrfdaHoFvVz0T9Mbup6aAlx0p9dbTh-XbZrert-F5TgD7vOmO8jTt51x99rvn9z27OI3XgUeB4TjM_N4-_r3p__rmZt5__eH_8NJSR6nP2IlX6HsPUS_QtlnxnID32fEvfGW17h7A687hXke-I3I3CH4TmTuEHzHszsu3BHkTlNuGHGHkRvXuUHtHWjugHfH7rvDnxH8FR264zi4AibnTofuvOmO7Hdgunn2TjPuBOkV1N9h7Bn1boB_5w13PL6zp6-B_w7Ld95wZ1V3sLxzqzshuDOsV4zgTrbu4PwMvBN-39nXHbmfMfuG068JxGtudkf6O0O7U4rXDO3OBu6sDAETijwzgDunuNG352V34xTP6-xG5VBiwvg70t-X7X253unendzdacOdGN6J3gTpz7zrDv13wnSjvHdK8UwFb1vru1TwRlCfCeGNrNxp2jOnmOjInRvdeeKdU9zZ4kS8_h5OMfNOYrEvacOBaW7hIvvNdpCpBcD249U6u2TMzpudnW0kQvENCxNYqzIEmzdcf1CVkO7da9hEqIyNO9duTWdNHm5cRNMgElLC0F_6gAsALN5JjBgdr6cbJ7AvVypt6Q3gDBzTQKdP3CBETldMnwnMVQ56zK6VNlt1M3VwL-lQF1HKJyE5ZMlYbJzE7nApWnlZnsmw7MkgKDFQBl0hfTXTVxAWRPH-0kJwfyybdqp4CgxjmXFoNFD9zl4mJFwbEhnF2okFCbQlQ8mwC41gncskU3fH9LIhx0sQCCdBHgPAgaxAdiHJrM2zmZv0We_E_ZlaJD07H2_c4AvuUN-4QZqY_fGyEi_56cYlblxBPM67Y0byOTZ8mzP8_g6b77D5Xwc2XyX6rwHzGe9ugHnHyk8Z7bex8gaqd8C8hb7nbOoGdXdgukHlHenu2HlHqjtW3tHzdbb7-tHBHVXvWHkD36-g8o6A34HKO_jeofJOBH6UId-n-DlpvwPlDTRfA-WXmfMdJ--A-hot70B5h7wb6tzR8hGcfP0k446ud1C7Y-Nr5HyFk69z7-fHHN_DyeecfFqlr3HyeaXecPKO9a9w8jlXvz8D-mtAeaM0d7i8A-WdUn0PKW-M5O-CyuANVFr0aZCNcgnS8SgFaXB12PR43GrHNPOGngdpqWMI8KnjmOi6iY7t4qpAp-FCmZ02pclEpvP8lT7z8xmAUnpG07LKVpSxDLYQvOET4lJJUE71pHqNduEc5dm1dFkHrUyBiI6DtP6KeaeFd-k3WzGjl8IS4JU7pcmipVU8tKm5mlxkp_DCpajtm93uOe2nEjuLTAy3HWpLHFbShaJMJchQcqfbEWOZhqkBqAKQSXPbaj-YBYDQLQ2gFzl35Nberi7m6HYVOjL-q8cE3QpqEk-M0GNfxsRAxV4yqiDtlrQaaGblVamN0nLrmo5CaxELDBSotGuYwvVvafUNGldTWk3eoPSWZjuFHQTcn-8w-f8RmPzj98kftyf8IOWv3_4WcAObOir6fWM3ixi4obq9Xvf5palPbe3vb_Bj-HZZ5DeJ-5P0Wx-Tlts7WZ__rI1qV3Ez_utJZVXun3xUtOnTvily_5_zwrEBOK_83k__ecjjS-s_iYt_Pbmk75AU7gYegfpoEFA27no4juEYQ9MIY3uE7zM47tAu4mBwAGCDxmHapkE8tx3HDf55s0D2Oz_91xON_VPMyjR246b-1xPyT-q_PcW5C7xfA2_ep3jyolLk0KcX9z49v1a4_uf_Q04Ot8FMsE1TxU7b-OAiPV1c-AOgEWBgT3buPYl546dpHE5-ettFdn_l7n0q13EOMLl-8nw7fULI1-3uL7AFPqmqtgQzfZu9deGpdh76z-58qqYvf36Af_v0YOhtC_SnLbCftsB_2oL4usUfv08ufzv76Ldmv4qzp30cRg1YCICHpeMTN_pfrwAEZXCPdGyAfEGA-77j01hATuEJRl3XBjCCMiBN8GHcZuzARTAULAkC9WDc8X2SYb5cAbdPqn_51xNOvl0O9Os54NNpRT7NgcWxa0_LtIrP_tP8tmlfJu__be_amts2rvBz-SswmUlflLR7X2zbdEZ25Etjt4pk19PHvZoYk4QLkFbUTv97zwFACaBAiRSZTOJk_CIBi8Viz3e-852zq_XUfoqZ6T_3GpwWAZOBd4HlBg3ljdMDaN7YFbQC739RLLOrYjlFXFn_oR4igxFszHRmQyhw2QquPSuquAbJsDG2FYO2r3CGF4jkzw5VfARV5-CBcV4uCnCzp6vl5BX-B-3Z09kKhf5dcIEC8h4Qw6ngnnqhtc1za0gCIeVwAx1wQnA-JK2kCM4xk3SiFHRXopYkPgSX7IFL6T64-OS_Hkk6hv-dhlADqLMuLmRNlKpv77MMWgCQhvcz_F-nm-FnXaQc9AjtL-fITRtPQWRYLP-UDbmGjHDNfxOuyq4gLfofHRtAVtTZM3gCIxrgD9KMenLPeyEClOuXnwhE5emQOHd9ln25Zt2zWeNX8AEXsS7qJfrRvf00LsflXY6fPFt_a4bm-0X5wUYL9WALvZsviRFfOlsspxVMLJr8-QwAeD9RExIh5_A8OcOEkjKXIRiXS6lphKyDe6UdC6CqKGSLOnrI_EyMhAWfPJF8SNS670tyg6iZ6BPp6aeyCJmLOMzLKTrHBu0OAb-FoFv-lNghVzuRLW0aM95vfD69rptw0T2A-H16M9InMxgdvne2bpAVKbsuV9lVvHkJfAroiCYqXETI52G-PyPOlkOcvf37y-_fnk1AA1bzelqVqzD5ZwEStbCLuwBzhsQkDADHJZJzCPCa2NxCAikhO03c2hyEdCRGusRwV6T3RkbFFdEpp5takAwxNTCtHGHIE9py0W1AveWhCUxFkYpY1dji6X3QxP0m4EF3SO1GZ_70th6zkxq10zMQ7K6sFtkbTDRwbmCO5hMQSfO6HLOYMkynYLkCo_GELq-lykPONJ4EaWLSPKoUIdd3NkrinQd7BRmkINQxvRleL2woVmCuJqpPbvMgNGDPmmTy3BYL1GWg5nv-m9k6O_thWVk0UVnfxL75CpIbiHxdAOnCZhvpqtizc1ZW22MRQCZrBzi5DWF94ump_8wuM0ma8cGIs092topHsveYNfXD1vwWvqFRibH6VNTTyUW0mH1eXpVVGLC8yqVPAouHAfg892jJEHVILJioXfAiJ45oK0MuNNw1XFhppdIsUZ8PnVCLyfcrO2sGxcikUzYQfr6--PoJ_LvILvphwAxdltK-m25SLxvI-VZbd5wv74kHb6ri_Xt05Oa9SPKv7QIsVi83pwgsXqLF5x-b0NC1aghjs10oautm8IMrQedfNalyVs9KcPcHnovZ1TTevCVrdNfrOIsRA0SdNdvwENbrBt81YnI9qBtkt6ITWUdr_bnkBHtrofzBFmY3f8pH_enCzuyHWE9_D-at_1xnAFa7LJoyABZl0MRPSrT5aTUvVxXAP-9-fAJIPI8VRvtiFpHAzhaxeo_7GIs4CwB23V1pL9xp_weqIOHouamkJAjnqNdMc2q9c4omIh1nNnCROxtIiJwbLZ2hkQUaiDEkBB8tyxVxm8w76qbgoOioPRflasjDJ1Q3QfNpOQv9eHnC6JddqAQe7t1g9_nmDUxRSZUh83axKJcQX-GRBC_FO-BYIKigaecYoAAR6OvSy2I1d0BrwLtni7CqGlLHLanvIZf4pWsrM4rK1-DgDqdr8gIo_Tp7EmfLPlKSY5Yo1EyUqkiIyXUuuOMmiOQZIzIoljsXggZ-R7GllbCOcSU9N5yEIVJEv74ihnx9Cp9QgUGAiQZlsVOwwzo1OxFkUFG7QdBGJL5F0Aay4HMLn70Fv8B63LOZrT_UPaC8hRfCENNyXgKj82y8OQhB6A0znU6tTWNRtXe7gTZCD4E20sFNk9vXVnEOUA6_BKJVu4GNkuNpisC1E8YZq0kCQa8IsFDgTFHBKWWRYM5okrFGSGAwTgNLQfsgQfRDXknoprAf1xStqsiGhDXUFOy2qDJQD2c_tE16kXOt-IFZ3i-K5SoAgSgyUkE89R7w7a8hRKOknHDymy4Z0SU5N3d1ya-tMvOwGtmcD7Kjt46tv3yLlPq6WDbWrpbXFUL2U7zVJ8ywbQLlD7kSbFOliPwBlZJzzgerO0kF8GcHuaDPTY47ClyQ1Mo82YRZopC5yxWu_iiHdX7iIO5AXsGohfeLyWWEDwK8nP1gKz9ty3lndtlG-HdlNQN4NRd3kTOYcwBH9NgBBNqAHV62MqMNRkAKZb2qYlfD_6qNFTiarykfjVnvpjAPmc26GYC5ml9jYbVoNEuVnVexRrn4VSYHSwUvYQLnRYDvap4pwAMTZKKi2_lRdyOA4NmWWhuTQeSUTYVqsOp0ovL-NfByOznhbDzEcrO94nGCSm1Mwf3KfTbf0SE3lsRenz5_-XRy6qKPAS7ZxTqJ-H5V-A91McPA2aoLQPb5bDUH1y3reqD5tVDMpihlBNEm80BVguSbaRmsST7Pk44uRpoLk9vEkhbgd44Jp0DrBe6HTqIGTtKLmGRLxNSDwBZbPXdzFysydbYo12o7A_XdeG7bjoPKq2JYeYw3EC-xnrqRDHQ9ivyB4u9Gz49A24-EpVEc8B1xcDqPy-k1RPsbEOBi_3f2A9wfrGhp4pwmgWkfSbA-gL056HpBhOEqKK04yRkVjuJpZDpQ0P5ekoQ1txid31wu3QICtgUEKv9JQCDFbcvbhfunq6pu1Q_W1H9RMBA70wFE6v8MQfACl2Z6ENB5cjoaG03uUmI-QEglOmfWUeeo0SCktffSKAa_2EB98DxKwIdOyTAu7pPTtxBgehsEzCEQ4LtCQG8Xyw-Znv-cVt7oliWRf6-Kao5f8SZWVVmBgeu4zC4whRhk79ITEqQ3jjCelIaM3TDBTYy4hS6GqCnlUTmhtLMqUOeZkxaukZyDxtq-O4Krbdk7I9uy99NFJ2rewbc0O5pAg82z-qO9AqND19V1xtaqZdLbBIX7IdoEp1vexkXdZp0MnBlzh6_aLRIWRKTsOoDUH3L_8moxeVXWETOiprL-EfpoB4HPQebUrgU0UufuzYMS8p-wtkPHF2S-jaloFyYSpGe4On89ObcrC-FiNYuDOo90JhIlDZcSyIBIyw2HGACIESkXIBaEdgZIgeQgybFC6CUwA1fWC2gW9D37aLbl0KezWelBtWIa-CkuylWdvYDUP074YLtTY5mL-D5C7tA4PKbKoDB1fle-4kapUam6rc6Yb5ewDTBwLRkm73VR13j77QI1ePUJhtWgyUVQ2rETGLgmi4uzHcp_2ziAnzy-tvSdLefrmPUCkrTlBHLLqkAInM_QuuscMzdya47J8zwfBDaV476CEEQikYdkmUqgZxUxiRKgQUWZIUJEK31OvBbOJsghDYGckSdILbdmgaa_cScflrBf2CZcrXfdnFB43x1cHruuNzrT46sOWGi7jLNU1FNQwPHjNFZh8nc7j7NY13fiRVAMcmevk05CecdspBYPWWDWJ8ON1SpgMNFSCKq9EJyx4FjgxnMG1vDbWWAzL5CDKHFnofsmuq8r9tj-AUk3eY5LqnU2a0pgjGSnqcnHUSMMGOWprdd1M2CGvrUGFQswphlPYj_XBbFRXJmtuLoJ43-zFTgC0PkVzO6La1dB0tVo0D62ILtQ3MeccWpkZCg6QGIkQUJSUevgc8aExoNbNOVWeYAio9IwKwKTjG4sDW9LPRQZ-ieacI2btabEML-q40T30oTTeVOTvGi3VYNlX7ZF_vWV6wkbEy8gW2pvP8ZGabeyu6l8rnAhYaMl7tHDA0aq8hpe2DTDsszPB0Kje3PJkcyfmMod5JZALjJpwZ2ARDQ3OgYBllaQYEZJrVEqJAZkLCiR3lHOYzCOCi43938dwfzsN_M_aH661fw3Fn9dLrC8Onlm4XvTagYRHTh8ebuOfU8MJ8bQzTqxEg-tZgul-tAyMQ_WGMsJpYFH4JXI8sRpiByApDUkMoICmiwgjvkktfI5BDbpnKfe0g3tqm-hRdVt-fdd9iS7yJ73y798A2uSDTKfrs7KxQObVIehsNGi651Cr4rFh_WGVQ_CcokIXnbrH7g2s967O_kXVoixORqk26y2tB8iuMqXWRPru0WTf7QZE-ISZDWCco7rmbH6Cn4HSIRyPuwne9_k5Lhuc7uPDQvMIHTWudpnsQPxEma2G_H9f7fyu79czsrlzREY5ItsAYLqmy_a9ZHs1F3XtV3vxM66QzrO3duLV998sR7beA9PynDdAWezG_ZwN3rdTTvqjGaXV_bjPq-Ps-Xme-Uez49PgDxwBGKP57svZ4-YvV2MIA6eDPaYj0EzPmIolK17akMT3-ERPnxE7j9c-iM5AH_MUMZmbr_xlMujA1odjCK6Rw9tND5kNsd72GEMpj8LR_DiwwfNjgUicSiI1LGI4EjUtmU8zc2XAS4Obnf9tX9y1B1FNTyZar8OmjOlhkdM7dNBd2jW8AytfTroTr8aHoa1VwftMVvDU7ceDy_5eGt0B40Nzx3bH5_iWJ6yS9Qxw6jDjhB1Dg_V_ECa50dgPHEslpAHU6c4cDqOxFPHUCT7DKU5A2CvgDvqTrt4Qb7uAcuye73yXgc8muRUxxrRDp9G9QgWDjUCO9gJ5BF8eodppGrdSbtSdwTM7zDnjAxpmB5MoeI4Pr8LXsRw7EcjTnqsjnZhgDtWPALcdjE8HaL-EW892LN28Qo6RNvDT-QDOjiCF-1iRDmg8X1mpnmA7x2c2BFQIh8L80M5mR4oK-gRrDr28W1x8DIum1_eVDZE3E7sp-8iVmjr9gD85kycv07-8sdzu5z-Iz1ZFbMARvzr5P_3VCpuProbably only needs one label here:

Bandits are highlighted as different when they aren't:

Might as well disable this button instead of having an error pop up:

Power report seems to not show stats and shows items that are the same between builds:
In general this looks nice from just clicking through the UI.
Several concerns before looking through the code as well:
- I worry the most about how much code we're re-implementing here and that we're going to have to implement any new features in two+ places and be a nightmare in general for maintainability
- I don't think it's necessary to allow changes to the compared build (e.g. Tree, Config, Notes)
- Saving compared builds seems problematic. Even compressed, you're easily adding 20% of the size with each comparison, and that's on a simple imported character vs. a complete streamer build with a bunch of loadouts and notes. On top of this, you can export/import a build with a comparison baked in and create a nested group of compared builds, ballooning the file size and making our 3rd party build site consumers pretty unhappy with us. I suggest leaving that feature out entirely with this PR and we can re-examine it in a later one.
This is a monster PR and will take some time to get through. We might be able to do it faster piecemeal, but I'll leave that up to you if you want to go through that trouble or not.
Wires77
left a comment
There was a problem hiding this comment.
Some of the UI elements could use a spacing pass, like "Copy+Use"
I think you could hide a lot of things that are the same between builds. My test build is a bit of an outlier because most of the build is the same in both cases, but I don't need to see all the skill groups, calcs, items, configs, etc that are identical for the most part
| if layoutRow(self.controls.primCalcsMainSkill, leftX, leftY, controlW) then | ||
| leftY = leftY + rowH | ||
| end | ||
| if layoutRow(self.controls.cmpCalcsMainSkill, rightX, rightY, controlW) then | ||
| rightY = rightY + rowH | ||
| end |
There was a problem hiding this comment.
You can probably just loop through the list of control names instead of having all these if statements
|
I don't think it's necessary to allow changes to the compared build (e.g. Tree, Config, Notes) FWIW - When I first ran this - I found it confusing that the config didn't match - and that was causing differences in the numbers. I'd like something that lets me compare my gear/skill setup to someone else to see where I've missed or what I've forgotten to do. In terms of the saved builds/comparision - wonder if it should just create a 'comparisions' folder - and in there save POB file - can calculate comparison each time, and the special comparisions folder would allow some organisation? |
|
@Wires77 , thanks a lot for taking your time and all the input! I have pushed a few commits for some of the things you mentioned, and I agree with the parts you bring up.
I will make some more changes based on the input so far after work tomorrow, but again thanks a bunch for taking the time to even start reviewing this huge PR! |
Wires77
left a comment
There was a problem hiding this comment.
eNrsvVeT6ziSKPw89SsUJ2K-lz7qJkHQzdd9b4jy3lD-RQGSoJHoRCOJmtj_fgFKVZLqlOqUm53p3d7e6VYRyEQikRb29_978NzCDkexE_h_fGN_Zb4VsK8HhuNbf3ybjGtF6dv__T8Pvw9QYvdNJXVcWvJ_Hv72e_67oLsojnvIw39866IIpQaOvhVQrGPfKF-KyraDzQQ5_rdCgiILJ9PHBrkVaTBEfmLjwO-idRDVA-OPb2MbK5Hj4zZp7Krc8c_l9ShN7E3qfit4BKsa6Buc1KMgDf_4xn8ruHiHXdIZhuDWkG84yR_fqhHyHEKbbhMy9QRHHVqplCZBNzAIiSZyY_ytsHPw_vSh2R30R-NvpKt_-33gogxHaoKSQkz-9ce3EuEYsnDDSQgIclNSn_n226t1lTSKkwryyM-fw6ghxsbPq5UjJ-mmbuKErkMZf67P_srfgyAUl23k6xcaKJfuVB4HCXIrA_XnhJxqBhdusAIPRZkHv4oCz_PsPbiZk9gE7LqNd0AqLuHSm-ijtZuW7yT4zdUHgRMH_rt6_4FulFPXJTL-pmZGOMbRDiXOG8kqB55GdMj4CFlB4BrB3r808ivH3RXwCKO-WTVNrCcjZDhp3MVJhOMnYO5X4R5sF_moHMRvUCNac4AjYlmSdwGoWA-IMXpvG--E7DgmfnvNd_XjDPBeaj7Wj6r61nrvRvwxgkbEXr6tphqk7htrJhdbCQC8r2_bN9as4MNFw1juFYS3Ne_qX9O_MaWvILypycv3KdwF1HC80ZhVG4MLVo7hIfiVY2XICuBu5wZ2Fjs6crvo4HipRxzNGG3wpUEgiLxwX2AtO_GJIbwHTRuX7vKh5kT4Y5BlYuc-CGmjIL4HKgLm_qhR7bw0InEMfCUM0P9Bqzd9_UoeuNcwT_wo9xNX8QMrSpzwGsyIKCSNUjQXvx3o0tBZs59AZfFXCDlWOv0DXm_Zwv65-ewJgSAB8Vf5NbgOxrpdJ7HfCCX4bYb9qRbPMq8ynFa-Zrj0GtYX2C2ybwN4zjaW-1UGLC9IAhAh_yqSl9nGCr--Sus7mVb1cWRlKond3UvnOJYX3wLwSFwZhW-CzTl_jeBG5MHbmnyJKW_q3js5M0OR8TbX9U6acuObZ1YVCniljED4leN5-CpgDyejGzCeZaVfOQjv6jGBeNLCa_0gGcTrUE9C-CbhIwA_DNQbBmiH4muXdd_3nITnVP1abri7_OpikjsQCAM_S4fuUjOIgjUJcB33fWClyAvSSxAhMAx4tRen-jfCf98_PPrcU1o5wkaq3zh5_i7HTtG6s8OKS5LnZ50B_E_BCK2u-xLsfVUtJQnSN5XAsN7MvLyVd0HcEqimYUisLRWL52TKr8USJNNyrgJJmfl55T5R8Gtbx0rSazHHm1u4VP6hBSD-NJx6czPPIJ63JcqvhkHPmhH5N9R-3gSQfzqmXWJFPeIx89mRbnAxweDX-7yokQz7TelyXvE2ib9vDII9od6mc1nx-2qTiPFinu6SEmH_mL0Z_031NzVQ9Y00ogrxvA34VojrZh6Bxo5HzGocV1CCCsY545iiyEF-whKB_fb8I8g_xvn0Xc1xExxViGTQVmhvCzFGkW53yKc_vl3_VUOuqxFbQr7Shn__LfeY9Nc4wriAHg2ATtHnlNE_Cn5g4JhIJydJ3zlZgux3lpGA_J0VRJH_DhhZEr8DjgHid04QOPhdAJL8XeCABL6zLJTJZ8iKLPkCofid5SWBoIGQYb4DgZWF74BnWPY7lBmJ-c4RKPG7wIsC8x2yHEHDQlb-TmoQNDwDAfgOJVoFMDxPUAJICJA5niOfBZFUFCBHPogsrQcB-U1iQoaQwTM8qc1RXLIMpO88R1z8dyjw5AvJsEh9lgEcIUyQoUyahiz_nZcAqcPLrEB-QvKZBBIMR6gjoeZ3SJI6UhECBnznSIpLmEKiBtI_hvTkO-QEkVJAugRk8uU7LxLCoEySg-886TD4LkMmZ4NEPoss4SNFQnjKiSz8TvpGkPCkY9-BxHGkAyJHGgAsoPVkDhBekGj3O2BlXvpOeEyqQEFmSUWZhZCwERJmsDwkveYEhrBdYAnx5N-sTAhgeUCYwZCRIjmURPrPE05xDEcHQCDg5E-OdIQn7QDKQNJlhowroY_9zrECIZmwksnbFehgEQ4Dkm1TMglFBIckkbHhBTK4EktQcZxAyOd4QASIZwg_KPckilAkvwFHElzSOY7Ki0CEinZLhJQthArSc0qVQBnH8HQsJZnJRx5QIRMJ5fnwAV6ibTAiaY_EexLpLOk3EQPSOzpOAkNIhYCwSOBkUfguQtpRXiA_OU6EpAcSpNIMOToipFOEL0QeCAoiZ6JM5FEmYkVlhXj5QkL05WouHkh0Qj0mepidjC5Rl3-e5JqkcwD81_d_nkSQMoIjf50EjJMgD8lfJ_kBLBQkWjPnBBFkic1rEi2AIiE9L8olAJLO_xdVbDodhKKsdFk3aBpEd-G30_pC_sfNsgL9wuWq_bffJ6NO_uNvdpKE8T9--22_3_8aosQOTHwg4dqveuD9FhIgYhSK8cZx3SLt9m8l8n-KVRXNw1H3hOp2PKk3JmayJNKO6q0G13WOoT3fceyRk2xP8ab1-nEnOmXlUIrE4q5a08dg15KHo4Pt6luv2DosOoZSllsA4c6gcdSKweLICWwC7EVrJQynqNGAIJg3-qORsy3GDsq2plkVK-paqA6L8qJR42veqlSPmVmrW67HHMf3lp25a-s7bRvU95lsWO1xPXLn9b7b5gabqGnFutRZHAeisNtV7KFVrxyBWseasd33B8ro0FZHi8UKtstaIu4P9qzv2pPNplfZKPXKHPqLQ-LEXu3Y7dbgqsXOZ1VvkzCBXD8swhZrDoxiP0b9-tjHJW6xw3sYbvvpYBepRWwZtZ4rWdJh12elVWI2S2LkjBsHy5OA7SqlilUql0qCVbYU7tBfaH2hbpeitbGJpeUCBLox5hrcwdabu7mZyKT9P_LB_O1xNH8_LerEp6E9_1VwEuzlY09Eg5rzXDKogp880I8VAbhUpKbqbj3xUi-3_vcqclcIcwN9tyJ_VZFYnLstX9XLjdLdivKlYm5Y71VkpUvF3DPcxXhVMbded_vCXVWk9uUuRvaqIvWKdysKVzRSl3m34lXTuVm-SyNzqZh727sVr4Y69353m2auOyOCu71mr0aGepS7LV9xJ_cldytecYfa7LsNX0st9cF3u3KlL3mEca74-2_XavY7jckjh0RJZyyPfxcM4h7GKEmCoBCYhcTGhZ5Fck47LdAMaI_cDV1-dHTqRkpR8huo0H-r1Ng2ycf40f7Gv10yph6h59eQru-eAraTx2nSTPYayaSZf4p_a_p15BGzTaLDOImQOyYhpPvb4ISYBn4nAuPfzqSRcg2fi5X6qaWL_ghQPvmPv_3tF-HvhSTIe1I4kUYj0BMHfntkwf90jtCA6S-GWDf6xDB_ceSKI3l8_hdHrjgi0EnSvxhy5SYBkPgv5sgo8K1gk0bIKdQD1yGB_ds4EiepTzr0L2HFhaZXFYYmro_cYJm_FxxfjzCKsVFQCXGFCkFAZ0MK5P-rPvYcHL-bOw3Hx5sgQgRjEGUJdt23SkyeChlnEv4lXHqk7TUe5Rn0k8RwucTks4TvE5lR6mMrQmbyyBclSH3jbYwoJSSlpHSTcSVo6hSN41u0FvcBvkxJC-TvHFf5jOtu54EsPXYeEAGJ6BQ-EQ8t8NMYxwUL0Q08BTMKvEJ1mzphSP5SgiCJLzAXoXoVqu4Gu7N8_a3jeCQyNCiv2cLLrPvfZsnpNN-_yJTPUOQRe_FWhpikWSNf0Pn3MUME3CMz-L_TPZMELWXJaQ_d_zLZgIzAc3-5-ev0CXB_MeSGIZwofzVH_uyePV9H-Lxn_x_lZQAn_CUmz50NhP8yMfnzuV66HvSVrvfPLh75Qu1Xi8efPmnihL9U5sn30oXwv6LVJ3bQ1eW_grPrSSm6seL9HLn8mS-H_P4b3USSbzeh7dMfeZfjQmwHe7rTLIiSOvbGWUh3mZQ6nW95SclNhilynSQjhfHTQbPzJhWKQcXJeXOMiVKX4jgDnDbBnNDGSlYZqH98S6IUnxB3sIX0W6Q3dWt0q-WzU0CXJjqnM3J-EHlPe_bPe2XONBUc43H_zPljftiudCG8jFw9Pm3hcQPSh3xi4hudkHBTwnr_vPXqiTzs0x3mxmMnnmF7auxvvxP6zpXrbqAhl30EsU7LWV2cIAMl6LdmQnr7G-3ySf7Ir1oUxInmOv7mW2F7xcfzbwpeOXHhW0EPUv_E-6cjg3RTU743iVa8xvWM-GvywNOw5DrwDNAngnzajHT19bev6OmTdpWIQ_pAb-lq7VVvB2lEQPomxfvO_t6CXnp8-k7NSF7ytOhI4f50guXi2C75BokZfPwRbj-TrVt07xOvW9grCaMFBeTTCWZa9BVilu_8c3yrTDewf7bXN8je1ecbyEuPHz8X6PePytcMozDwC-y_W8RO-7ip26FbKb9Gq7uIfA9cnO9-fhfHbyAvHL_-_Gdn-IA4TOReMZll3-opbk3nGc_7jOYZ6Mpcnr58SmufApEyipO-X8H5gtn7peimf2esNyjf1deXEFz6TT_TRbBTwUeFqoFdDyf_bpEa0Z30OEjjky98Yjz4oMV8hu9dXH8Ge2H4U8G1X_6swNGTRAnd0f-BPrMvidsTwo-I2hPwpdePn76mu1U3P4yA3Fqgp_HX9fo53o90_jmOK3_5WFI4FX0NL0YodIwK1lH2BRJ_RqvuHTMpmabrnA81fYQRPyC5cCIvKlyVfZFYmKajk8TsI9nHi-LwhO9DgvAEfSUCj98-6b3Bv83UvmJyPsXr_0iDc_Yrp6OTp9M3X6FkN-je198b0CuFyr8XzgVfo021_DTC6ejg15mWa6wftLDPUFylYHlB4bHkozp22q7x7w5mpk6SM_nzid8F07u4fQG7cPjp29eImOIGgdFFlqN_vpdnrKUoCiz0_ozrR_BLry8fv8KaDFLfiW0vv37gs52-xvXOWaML4PWc0dPXz6aXBXVPDfK_OcfM58C-gs2nObZzBBd_cIruAv7SNN1T6ftZ7yKNUt33C21arxv4uSGsHkI3OJ3jf-s4xEEa0SOgOajx3oHxHfeW2WfG5t8v3j9nzABFJ5a_zsoc9GomCnvZE20XLv7Is_NPFSf5usFpvYD-zMWkkMb4dBXSSV7zdYDHmXy6ppCgpOKYJo7oXEv8SNtp5YBiOC8c5C3Rv69n7EeIDuk_CqPSqPpQiZBF9GEUIOOhg3d0Dy3yC_UII7ol8HTlwD8KUGbOvxUUP94f5bj4HwXmV5nlhIeJ72xTXGhW_lEAGiNxPANlXoeGACQDMBxksamJUBIETRMNgQcSz0IIOc4QWEFjAANEiQOcrBkMfsjpzRch_lGQpIfzigdBzDycj6T8ozAr0n9GD3m1Ed6SmvCh6YUkYHdoOXi43VRLw61CfrkEPm-sJf_BD7-AfMnHOy1y_LD080-TXgiYRtj4r19YIF9XpQgffuHFfDHRp-vEjkXH4gGwb2mXAy8vzXI3VD-eai_kx9pJl5jrNczSLnCMgobzKU6byA-p8k-dbtck9L5StxYFR-zn8tgNjBHyLUyo8q38Ljf-21lUzhJ7twb4aQ3upzXgT2vwP60h_LSG-NMa0k9rPN5AkFvxW60Ct1o16TWHk-pDD2up68QPU8p3VcdhEuFrLeE4qOmcjjUoYIYoBoQyp8uQ403T5IEmCBLAEjYlDTGaZCKT0xloiAJnAB4IGnimJeLLWqIUR8X6lY4I0rWO8BdpOUMXjADHBT9InmSw8HiPSOE0AX0BqRMWJXHhRtrpdX-5q8iXcAshsfHw74Uz8gcoXdc94xP464-5Ap5LeHBdctKUcxHLytdlj30i-mI4pkNaJbV8JyEOJX64rZpPJz5q03XBZfLj1EZOPOkcpeh7gV618b0QRIWnyzCulLaANKKnBZH_-1869YNOvaQx3At-KA-1C-UIx8lDncY1cX7NROE0c_vkiCTxniNir7VLRMSvQB6L5Ics8pop8ETXOF0gvyHRPE6EBoM4U2RljhMl0UCIF4CsmxKnm0g0HlQbUQGgJD9UXePx543S8Rel435wTbO7rumxKt14T109IiJ_ju7pRv3shL8AeOJXXlasNyNQ0iiX1bPavBWsHPiUrdRTGS83aWCiKNRXeQHB8lx3Hn4hzv0HZ8ndaPoz0lj-vh15AD8WnsF6GEWE8vMJmUKCNrggv6bWf2noF3k9-KLXqwWpqwURiSdJHBk6iU3Plmj4YUzyct8hkqCGDgEonOaDHk43f53_IiossQ_Xl4H9GGsyxEPeeFFDlBgg8yR8xBIrQ0bXiJMkLhRIUDI5Q9c1ZOrINBlD1AwosxDrLOYRAkCSBdm8VWjuZS86etWLMg8scVTlp0grv_mqkN8x9STc4MaV3fT6mRu60RgV6RHxZwQvrUT0ISN27xRS7m3s0z8LE-KjiV8aR45lESuFzi3n-cTDjd5ck3TybgxTOF3mU-heN_tPL02o6v9XhWo5_6PTLtBl6AJdh34Vz3-Aqr1ZkV4Scf5FEW8jF_lGhP4_kpfF_39cGAepbj-MiC27FkwTGLqmMZymS0DkRIx4zdCgjBmO4QwT6SySOEljdRLcsbrJIJFjIMewUGAYhhUM9lYwmVuBG2HTpTewFAJivWMnIRkGbf7lXgh3ehF4jz1oECNKnK4bRA5d9iNDSTKUR4fLEorvpn4iI0vXvZYN3WBF4koRNDVWkiXTMEWMdUTyPhHrooCJPxZEoPEyJhwQDE0CvKYJhsgDmRP0u_6VqON9_WsgGrMWzvpKnA8AzA_epxxEURoSqf4isXyJ1eILcQ09Qldo-6m-cfFDlxhBk4SShefiohuQlzgZiqIhmYKoSyxjirwp8zJPcmdNYKAAdV6CPAeI62VNwkBTlllNMwEQBcA9Z9wVs25iD0i4UxhE2HQOl2AZuW6wJ4wpAhIPmNdF8VPZDyF2TEJpn2YKCs6Nn0Uq8Tem7HkzVzH5L0DM09-zOQmezMnlxvqHIns9hrc28xcO8j-McJGM-_VHeg_lJV2BL9ixv4KBLwoGpBcEf4Acv9AgpvJ6WgmlfuJSJX2aWCLyec-68Cy4cfZIwqImIchigRMYFumQB1BGIs-Igg4gy4qSIfMk6Ec6URBeF3SeZ4mNZQVd0AQNvmZdrqL3UXFWKL0yscS94BAf3aBKsnzfSuyH0_7yOHfRjp-vIxfikADlJ2uDxKbTn-eodU_iJMIr9leh4OW34z-bd_rRmFGLxxZKWhbHxEOfaH_rxBP_8sQTK7wSgLPivQD8Sb_AC8l94bz_DvlZoeaiePOI75N6979Eq-QXPXeFWNU81iTDUyHZsuNnRNdSVCh5KVGta4URAMlseRJn0MPkOsamASXiahkOGazJQllgDF0mPyVWg7qoA1PkTB6KLK8bmsZJ4Hl0fKMGTyNfIi5CR1TYTzl8hYz5hhjwW4mg1vhWHke5PErSj7OqVJJf2Ij_C3fyGuXcg159Z2H-_aW5mQd6c3MBwDx87jpxTIsv92yf1ETDJk1jT7OjDeLkSEqJTvcuZP_rfMRLksgyL4pil-i4Rsf8gYSQu4yEAu6N_MlYMGR6Z6OgMQJrkNBWZ1mWw5CVGYhkACCUeSRgTjNNQaIpGc8zjCQzEjJZoLP3o5qbCJB9-AXmnv_J-p7n5Sv4kGBKMREp7mWRAvyLIpWv-RYmxBPRWdHcdsUF_RTwaJgmXdStmYkXxEkBFl6uTle5EPF3RJjCkPybGH0nujGEMW2buIiX2nuqcmk2wh4JlYw_h0i-klix7IvipAZE_c7HilQyUH78UHNiO1doImM3hg3KJBAGGjIEhqRMJIciSYeBAIeAwAucKPKCJvECIPkFkjQdcIbEmaIhQk1mBVG4FSx4iQSuAoE6CQSUovJs5o6SVZgFkVdQkJM8QOFyMQdBQkKXxyMNsU0C5JQYpGfz2Kc-P6-zIGECGWfyv0S3C9VDkBBxoBW-aCRfHIVnCxfdUr1ZfihpmHQmX1p-zA-HqaNvYselUfpJNB-v3yG2VQv2NzEayWOwLEMkGDrWeDIsnMgBVpNNSDIbjcRtAm9wMskANUAyQGCYvCRjwPOGwTIkUbwZGRJR3UsB4R1nJN6kIPgUblzWLAjBea54vqn4MUA5hyU0NnoczccLeJ5NPp4x0stVkGE4tAaJwC6zjBcb8hz5JwcS_mvnOljuJWGoIE1zcfQoCCUSntoZsXhPUtD0H7dIXguBhJAgCaYENRYyPIPJmIuMyAiSRH7pSIAaQKLOyRonCiQIAYgHLBBZbEg6yWc5-W6gfi0CvPgvEQHwVhHg4PX6ai3C-Ii_kwSVzv7RUzanDODPJQTwjRZhlGrZRQiUwCJZfhzfzH_J0OSQjkTBRDrmTWxoQGB5Q6TTPDLQTYggEAwsMibPI4OHPBZMRkOMySAk82-dCeL_JTLAvVUGeP7eGnsuB6TiO4af-7dHefwbbAAZiCg5XgY_v8bqZioL8VTzdQMzPOBZCckShKxOojyTRH8cYnWJSIVMo0BdNlmEWJZneZP4aZknUMKblB9K_4qBB_JbB_4J41NGgwtcnmPkCQWdDjhdXf3nEoCX54rLjm_gKN7nc4GFSeSTMOgSDFyPvSYwGIjANKEg8lhCxLELvCYiTeQwEnhZMESWMQAZd5GTTZ3jORLoC4ws6wyrM1h4m9YD8Tb6fxoMGpafVkYex5eMGomnzNR16bQwVdLHFYpzjYcR1s91-Seop8WVMgnhUw_TZPBkzg0S1UdhjB8e524ePxN7SAFuRrtgox0u0DNxxtlHvgkqX8R8aavE-a2ga0F7ojTfV_eYs_65hE58yeqoGX3XlcRSpPtTZ0fsapluuEsKLbzHLu3_EiM3SGMf3zoegyOpJGsKGiS_WEMApiayrMkRRyNwHOZ1GTKyDgSdRBwixxDfQzwTS_JQk1grXZdenfN4dZH6KnI4jyQ1j2lEr90L8lF6-EW6ZKGvzX2Ld5cEv3oZ4yuSwBdHVbqzPhxpjmEQoSW2wyPdiRwvJszJR_XGi-i8TBwEj02WM4mBQOQvMobks4BkgDDErKyJECFeQ6ygkbHjoQ51QzQ1VhdF5nYYBaI725RwPS7kbwQUHh8kvs3uLjNZpTh8HEAU-XScnHz19aTSNPfxaKZGlcx7XN8g3bjuHibJ2_tG60U-vjwJOPF9lBAP5ZIInE4BEvmbOpFjkBjtR15KdKLc5ABHfDDEUJMQZ0oyqyESpIkYcjqgG2VEUzegCem7YJgXIV2GoktOgmQ8t8qnh1z_UVA94hFuTfFrCvLIXeMEWDhfyVE4X5Xh0BlBirhg0Z1ldBca5e_DeZ8ZhXi8xJLgnPjojej-DSrz4i5B5vUNE9QmEE2w7quERBIpVuahiABnIAg1DksaCwxDMDQkCUjTkcxBMrYs4DCHGF7WSXQlQGAKAOiG-YplYy5r_r-w3Nts1BMEhDd78U5pz537a_9FC6-AfcmHnP3GNT9fcRw8h1ks6Bq9r4_XJNGU6EuLpgwgMDjISZKoiySUEUnOCkmUY-rE3IhQEDQJmwLUbyfLRf4Ze68WdP7jfMCLHH15V-uYWL6SQeSVNH5XUDHLIyADCRDeaIwGiKvVIeJlBAVOEBjJ1E2WZTHHkUyAYUVBIBabJZWADkSTSPatoIJnm22Y222bT572NL7nxw2eGQMSidMn5vON0o_MO0_a5mDxF1hqwL0xjnmjPDIsAqxgSDpnyDzWGUEDIn1l16BcRYYpGAaPMd06IdO7A1lTE6ApEinGJMLhXlV39nG-8TyvnAcpRr4OWSChfb6N_c8Yqrw4LPBrh8WUGZLD8pxJshrT0AWW2FmB0QGmxxwkTmSRxglAEjRRlHSDwyKAksjprAQNTHIi5u3x5eM26Fdc6v-eeBLw9y38beTzythBescm0hjGMBHPkxSUpAaAYQ2Dk0mkqUnEEiHGEDgRC4C4U0MmCaygIUHmeBJgYu11D_qnM_HCBzWDhr8DO8C-c7hxoKJpiiaAhszIiEQgNKLkJY1nsSywRBmAjomysNgwJJKFkVBG4jRSBFnJAAZjiq9qxi_CD8vErynGfc7-5MTPn0YfxHdEPHcGTEOaLLEkeyKjQxIqw5QEYtw0QxMZkhubJF9mREwfeCdOhvxjQpaRTbqmQ7IHxpRuTZko31WH_5jBeJGRP09UT5ncZfbh5rAbIqmSLOkMQwSbhIMkYIR0uUswGEnjREC-8ggRj6HR4z0yXX8kyZbJA5qtkuD9-TGe__48NU_DPx_9vJynTgNHJ5F_h86rkS6l-bHPH5gITUbnddHAEk-CQhHTc06Q8I5FsmSwGjEqJLnXsaybIoQmkVDRZA2StcoCyWpFxD9fzr1llmHEBe618PBUhX0pjyzsbUe3Txlp_JSS_nfIJcd8PqURDJLbyyxJD1nIMFLu6bAuYF3nZF4HkBFoAiljXWR4HmKTQ4Kg65qOSXhpSM_5-mf3d9zLuw6e9j1PkU-3ijy-VPvCnBR9ohQb-X5mWdSRzkLMsSRRRKLA8KLOmDoWMMOIIqOLMvFr2MScwBginb5in69pwad5lFw7bpmrIKK7Bp3EoDqc77Gh48wxABbix1MBT-X0nHG-HSyIMtKJh7MI55Mg0WlOhR72KQc-6Up0mnemcFOE3IcGsbaEA_q_NUrnwNtikTeHejqQCOtlxoAmCyAJMxAjCToJ_FiBI6E6lhmsQ8yQgEQwZGqJBZLVc4zGEuMMOEZ_NRi5PbJxOgpOlTLJD0qqSeRs8PlEyF_h-wmY-7w1I0mXIEmmoWkk85VkYtQQGSqJKB2J5RGv64IGiWsAkBcxCfJZQdZZgQGSSH0vBvDVhJjuEPxx9v60mn-evP-PNngfVLuXT3GN0HlfSyXQiTD7-G74QzQIYMAiAemMZGLIirrGm7yGJETyYUaTRGiSwSFJsSEBYhixpskace485Ilh5Pnn4c_VmHAkOrzdxHczz_jsXPJ58iLJby14IVlYPMZEdEkP66ejjfWIPmdEbGP-Hxo2EXfv4gf6rDllQJTRcOpxV2HBiU8HsGzHIlYpoff4RI6WJjhfI77sA6AkJiTijgIT-fixFSJFjybi4WwiHPPm6oBXGnjcC0gDvR87QCk_N9px6P3sBTOICvC8BB1fQz8j6meQf6bNry8KOP-JsNSkexU0UWCxQGJNXtCI4xehAXVDMiWJFaEuCgYSJFHXWZNnZIOlC1WCjKDGkRABf0lYyr28vHEVl_73hqXCJxiKAF1ZMpFMMiIZyhBinqHLULxJgn4TAZYEoiYAQGBFTUecZvI6xxuiKEucCaCs_4-M8792-RvKJDlHsibSx0J4jVhaTWdEhEzWNDVTlDQNGDSnkiVRkjjMMpxpGhBIhs6QukD4a_n7a-Kdl05E0bW-83nouo1iujG8muEf1YQBgsywEo9IVGoAusaNBXrcD_CGxAITGCRGlTkem4KOIMYMiYtMMp4MBDoDEPNDoHN_v9x5EAbYx_lp__w6jxePUVyWTU6HPC6LB-fTTdh4GmUW_nApzi9cfszjdNLr4Rf445GmruMTlxufnDR7c3eNjtIYk3YxNihVuac_36H3HykQ_4LtmfTNhVeuhLp5jiE3fU1jMurkieEf30424_Q4e_7s90AjhX98e_nh9vsI8ift7yC4eu7-LoLTE_YvI7h-3v4-gvxh9DsIrh5N_111iWyeIPMnOwtnumlF5hbBz5rMn06_0-TVs-r3EQgk3L2HIC_7kearK9AfH2l_F9Gnp-tfbvP6WfvrNp9uyH58Z_7lFi8A9AjzNYni-0gUePYuiXnZnRa5n47kBeDxbYhzffZ9FEqCeJfCvOxnCGRGYu4hyMt-goAnbLiH4FT2EwQCC-8y-VT2I89OG3vB411yjzfLPfHwp3JxQsDdRQB_huDmhsZnh1yvBY55GyXwLiXgU5SAd1DyKiLuqxDBr0LEfxUi4SOIPjHi93C8Z6xOhvBLRvsTA_0yFV_Biw9LyZXmsB9t_AOSBb5EOj8vmODT9ugUirBf1fSHYxrAibxwL5DLy95JCfdhSgRWvktJXvZOSuC73QN_1z3wnxod_quGWfgClWG_AAf4AhzcF-CAX4BD-LQl_rwtf08_6MH6K8n8YIvvEcnTHfOvyBEnfQwF-DQR3KcxwE9j-DwrhffmMZ_R6RcRgM8i4D6LAH4WAf9ZBMI7lfBTg_ACPPgkPPdJePhJeP6T8O_TAiM7zyB-XQAC5XsTSnnRu6j4YGcuUMK7aBcAd292IC-6Z4ku7UmfYPmHo09RFu6RnRe9iwr2o1TIkJHuUJEXvdWnCh8lgGV47t5s6qnsfjhzaRO-r00R3J0POpXdi5LZu1Gy8K7g9mvUnf8aNPDjaYsI7k6l52V3Ji-vRu6n2cXpOq8LgPwCwGmV4PSGxN9-H0fIwCpGkW7PMF3EiX_L35bIX5Sgv8qBbzrWeSRPf1y_E_H0pZA4iYuv3h-5Xl9o-mH6xNwI-Uacr8XY2BgH-eljwovU03B0tepyDUNXMPJ7U-huiBGm9_25BEYLAhcj_yxfL8BpiMJ9K8R0R4r1x7dqhDwneqmm97SSeLoe-nz-7Cd0pTHOH4ylq07ng-BvoCpEdKE28LuOH0T1wLjQV4_SxN6k7qs8oCfWZ2TAouw9nEhN8-lFsZ_Wvmnr8QaXXKvf0eQTknyEH5fi3g14Pvf-HjgFY7_xLkF5AlWftvH8ZOgrTkzfdKk2BvSCiL6fX-H87s6dn-B4A9xzAR2hCPej0wrw24T1SezQ-pnYjW2s0C1bbTo-Z8iBi3RsB_k19id4TAl-3EJ1WgW-tAgAZH8C-rRGfFoivsDyzE8gH2OeRwCBlSX5JzDVHTq9EvTEE4aF3H2gC39nDr1pExsqXS0u08d-VOyaV4j4-1hUPSCWVH18xe35cNzjDF1sv1SX4E_q05vnPjAA-f2dz5nP_Yz5dOfF-xoLo2CNdXoja-W8FeACCX_W3KmpUeC6-Vr3BVL8GST1Dc8Jfa13dMv2CxS-NryxYzlu3xwEexyRQbbwOwaZ8vHdkp-_OnLNA-atSva-IbtIf26WGvm1LQRLftTj7X3MJex5y9JlSvZHMP0UP9ATKRFyx46Fo1zlrnj0hmE_7Zt-O8wTlwb4ykJwb1C7d48gBXprK_nW4XcYj8uo3Q7YCcXodPOjkpVcN3ufnL5E8O-_PcV6eYR4-isPEembbadtJ1fuJn_fbHVCcmW6z8huXJsT6ysaoHTzF9CegrVarVoeN6fVM4iK8wtxCnGqxaef9O1GvM8341VIZOO4MX2dzXVRGNO31642upzfTaM34L-CLa_VuFiRl3FdKtzHVD3gKCG9yOO03DW_jOup_CdEnRqkG9_ovrd72CrBa707bX-ijxnRW3Tvciq3OPexUHW72x1a-Aps0wuRe7flc-lPOJFkIaYH2OhpFhqsvT7kY1L7VOsVvug6ieDpm8Z3x_tsX-7jyKPbewhOhfeBB4ET00jlZehz6StczQPku1w9ld4HPz-zfUei8sL7wB2MdZsGwAENuO9hear1CqZe4OdCTpSm5LjnJyVfRld18VOV-wj7NIo772K_h6lLLM9jlVcV57Sl_i6eqxqv8IqkX3c5RMvug9KLsO_2gZa9Yomu3sa5y9DrOvdREWNlvGLIXgM9uc27_Dt71VeG4JwB3GH_qfQVJjwmA3f6fy5-RUly-5tf1niKNO6oy7NqrxmMPF38LJpKYFhfQE3-zA991yvC8WuMejvG033W9_CcS--Dn2-1fgHLeSrxLUioUn0OA9Wtz2EY03u20gh_GMHoeSRygR29HoM8TUi9CPxY-prlOM9sfRhDLcL-MfsweJ5mfRg6t_8VbOaP3b7mAJ7qvNKRgERzJODI54Y-iUtNUv_xpqtPosq7-LJRunDqXbhObvVFrr0b48lYjNEG_8SenKr8BBGJCxqvRJ5vw3Ty9c4ONzByE3sQBO7nEJ5vBiWUfUE_6V2daYh84xFd_6V4_zIOb-RekMQEp5I6rlGhN89-lof5LM2PiO7TRXLFc4b4O30gOysY-RMk6OzaXTIGKAyxf6GGJML7krGjUj0mYxQ_FuTYegGJsyh5FPPjH7-T7IEoaQEf6H_yZm6AxhHGNFksxPlah5pEdAHmGATe_I9vImB-FUXw6jPZtGrn9Nq3cPprQW8Y4n5lTynt7-WA5C8Rflopyf9q-gY-XC2W5B-rfhJl53qnp74vz52fukGP29PxevY693lDOro8XX75mNcvkwSapPE9wgEjyQCDsmOxNg9qKstLs8zWfIv3BruaP2MXsau2Kl5fKjZRqdQd1az1sFR2luMUrPwiXG5Kw8Cymm7bw8eU8abjuiJgTxM4f1DxOFlqZFo90rNOv7oztbA258OFzWSlDlyNBdHQGlupPxeTxWqV8KKeie391GP6EI47A1cUBZ0TIjzKauly1-MyrgzWtYHHdhpFI_BaZqk3bYb9aWmZemGxFbkj1odGmmz8ZiB1okV3LozseUc0-vG61u0K3LpcGo3MmlLpz7VIjflGeVLmgo2zqXuwl0n8OCr2YNZMu8J-X-1smmromQtlJcBjUzxO2iVnMlKzMrtu9ztM10rSZcObLIuDEciAsDSOdWkDK_Mpozd6qlATjKmcQW80bFVq03h_aK2wXzac5m7QmYSjemm-wtpupkzSFtoFSWdYRmp3VsoSbjnbp0JfEjp6jRnA4rxsZHx9AodZdxe1wnpxhBtEB6CgdkfMJpagfhjyJqc4zR4fMtbS2e2nU9ReDlaS5NWZ-roTDZv8QB_7i_FMgb5ZcuRBja2HOOuubL5mG8vURbv-vrFbL7vVZQeOxeYkXjZglEX2erRCWTAq-o2Zrx6FCXT2gqOWNNcertf6vLrN2P2sN3dtbT4djNQIxNtmxT9UsnmfqHZ_imoq726a9TRKdnVvPR3AjQWaNQDKvppY0-HU9dVGNdWnyTFmkv4yqDiCuN-CXrFRNVKrFLFDLuvasd9QG5107jo1T577M5lV--1RL7bl4pzpj5JN2y6xTRhNlcbWcCtqzbC0kqIuj6CR8B4qdYXZtl0xivpR7cMRy4UuiDNvnZiYNwdK2LQqm2XWFle1_aA0jkxnmvKdg7JY-7NyUJcb4TAEHRWAaLmebVljEByOYBqN9KNLxHLZKnacdomvTrXxjD8YSRR40azeXcZx3DkqW2m0qlg9wd-uyrtBo1czwS5F2VREiqHypfqxupeUwXJntKVgsk3So33gjC07bsdei5vbi3YxnprTflja10cHRZkvbNWIBr6_aGuwMiuzG0-qpmYmbotx7GmDCttezhkpVcQaCUqr81jclcbHFLSYpbHdRjZb3M0zvdLVHADisCdGyaR2WEZMUR1ncWunzVq9uSJiZ1vbNQ237wtIU4he9-1KadwORlkTt5JoXsdLVrK3ze1YRhErgSqI1hvOE3hvF6DdWqofGsfOvu_34aZfhajhTGRfqSpwfYiMQ6854MJ-uFx2sB1unCwCaTAvgklohTu50zmm44o_zWoB6-2A2GjK9YXSGrUUdKx7xSkHO3DQFmudKmzASn_IC6gerVo7f5QuSpkE9j2nYvrpoaYZ6_U86XlqYohe8zi1zAAXh06F6zC16rFebWVI9aE9WK6OUjgnNigYNFUuciuLcN8UeM53gSIzJqwe6vEIMnbZOMbRErSWZrhmXH9V4vZji9FD0r8Rxy607mA72w7wsTNWp-N9dcMGk6LQnIzcdS2Jiu2BsgzVRa03Yxb2aAS746CysrNWy6yUGppobrVVLQzUjuIE69VxISA1bpkHqTdyQ1xfNcWV30wlv5r5-kG1sNWDzrrVny5gL3GMVhIcO8O5Nq8A-VCrGUvXVo99tUQI3zBavwyz7YQ59FRV6Vmt3mQpdZvIaXdrItI31V5D3rPHdqLpizBcrfRV3PX8DeYGxB_BRW2UxRtggINx6LihdkyrfVMpdZb9oTbZQhG3x8ODb8VVMN8rXd-vrbWeZwqZOtM1bqAllQO0vHE9NHZde6nMhuPWzjvU501f7Gt9Ph6y8_5K9ha1Y9yvDQdqpeuUD7G3qXhlbj6wI7CElXJlrxW3HWHYXIdpsuvGzl5TnUadExZALlWITuwXzkZPhNKO00omHorTZDAUUw8J_HFks_FwMGwx41hzu4tSsvNa_shoan2uMzRU1-PSplNiO4udVYclm-uMrbWux8U6WHKl5abhmcNyY97VjNg2eonHdGuJc6iWV2ZXWlhdtPCDkrWd6dWhZrmpXh5Oj1JfmDgto3Q8cNPpjmG52arf6cfqEZYY1lpu2-Pxgi2bQzz3_aGTdg9mdUDGL232prENx6pd3vPMsYL40nGSaC110egSRS-VZv3giEBlOIHButWLyppUZxbbobmOS9bw6CxmibZIGHGiNFd4Udb3tUMvnoXCdlIS6opjKC0gjow6ow8Ehambmm4PuRnXmZRKSbkJ59sSv-4BsFhkkwCoi0plo8QWMoJVBQXbSOw4Zbaz7B1YlW2sZrP2eKIoG7bFefuSGFS9NizqwIhba6YTVRod3lCXnA_L5VImhL1qBQ2rlukqg129PBRGOmiuY6bejZu7km6F61J3UVlND5vedjosc1ZJ6Vf2QNBK7Th1u9VxvC5xRldxmSnetLulLRxnRPsqdS0YjYR9uefhQ1YrDyZloRTsgqbcLLUMy5ymra5R6rRxWUBbu9RhLOxqyjBsJ2sMbFHvLSt8a1C0tuK-g7rVOlvWQmGZ9sy0yy8XmXIsEr9iHwJflHrldWdi1oRl0UzFVJyqLbXSaXXM5lSRajNiqUa1SWkzyOLIaW2KQzdIuHDPFUX2UCReabja2dmks2OY4m6LxQ7g1nFnZ8lyWhTlFeb9ou_uu-VUd3ci7Ju-O-DKqzCVdwEbutWG1NhzA24_kupcfZWIxs7XxKybHmNhxa-LC3Ec-wnxyevOIGAEswKHVcMcFNW5zEuecRRa0lCdS2Yt4UeyAYr9bLuyJb0sF2dctkoVzaispUl4ZMECD-Z70-F3BreUXdaXs4mUkLism4xW_pSZmfw-cvmiMDF9LBz1BhjuDppuJqu0MhdETqg34p0pg3rArkLfI4yqreRjvVkcpFHKyvUlu-rvV62jPuglUn8Qy70KWBmJJTkkQPSJ2Frasj4chxtzcpAaqz7XaABv3lhJgN2PFnLR3BnTQ7eRqFK8WrelnclmY1fCq5VIQsQim66Kgym_GoyFFVdst4R9drR0TuFXdWfcD-GAW5k6kdviSuzOZZl1V3I3wZwvmXKnL-7wrliUJH8uSYMdx3i8VPNXsCf28NrvHPyhtSoCY7XTmAos93d7KQ230mq1OdqmWHOLcmMOebzz--qqkjXkBG75lO-mZlKPDqWJl8ynm2Pba5eSdkAELW2NKvLUqXV3uuIOZ4vSoc1VpkoLWxyxIL2JEq1nSW9T37YPxAQMxuVg3Z7t-3HT7VqjkKlrR6WYgd6-Zc9mgtYdWVteX9d6vL9Ig16n02yXTDUtVUJ7Pwwq4XB3jGMjDeRVh62a67Tmdqez0WJrmFawteWMBdUuMwqCRqnWrsdTYcBgL-mPMZ8JbRcwSTBvgK46ra9sKNaEKd7rIWM47YZRtIeaPUMNvCWWTBCW3PowEgZLwdwONtycGO9Jt9GcOP1507ZK20Zd5UYbKM3qk7p2mKjqsXjo2aOdgafjYtNmyqtq1WvGLYg8EAsTTZm16uyw5mz6-0BtmmHJLBZb5WlqHcyxvcLtSnM2shoK06rqtSgeO_XqoLtwzVnFCpoDyG8M3fHKlcVgEI0mQ-ikS9VdJ4PttsenrukuFl5p5szrZZGTlk42rgfdNN4duRHiDqFryX4VCsJkcqz0uijKSIy7XoktRxXDFpjVoh50GzN32hh3HF0J5am6mnouu-LSWN4M1ZrgY12JN4uw3E-I7QjGy6OlOvN-AOdjazRq2W53NgmyUqKrcNftSstSw4-6nsltKoO2dWioGHXsqniYNlMUNMb1xECzCeu1q-2O6c96Qx80GwdxeGyIGdJ75VYx9LcENZoMZ8KsUyzvhsX1oGu0nbo89j2F21o4jtsrPpYni1K46S8W1Ww4XvaToboJyowg9aa9YKR1w8bB6x_gpoLdppd2mZLCRMuabe5qYd2zllbP6ulhVersPIndG8xmPdN6dcPCbT-aLjyjbKDxuC_Z_L62TwIpi1GrOothx6_vAElIvPW-xMfzmszFwj723d6gOuKk_uZY1cskUuz646DRPy6qmsunOz_w62t3yfZmwqKi1o3xBh8c2RbWa5HZzXdGqRbP40ZcPs6Qum3NBjO2rXUn6kRZmSOk8bMFgxShe0gy2Tzox54WrPa95CD1KyIOh-xgvPMdq1xVeTbWuewwq3IqL0diO5gu5KgrsdEAaeNjuB8K_XJS7Li9Je-1hXqn1lxxseVkGVSOJa4FjkTJpkShw94KJ0fLn26IZvcgU9eTRlPJUrPmHA5BrUK0dCYzOu73x6OB2KxVO4pMPP12nkZDr1yX5gxOJmogWm058TZGDwWT4XxjyOW4O2O5ht6UZwd9B0HCZEXiLQZ7caYNjvqwFeLpPnaXCYKovWCbW7zG42NvjdL-1jg4STyeHWfeTIOwWNfCGLJmj-2Hh0q30zDH6dReruzEK2abKRr1-85hFnCOrbe4zJZ628TQwNSPVxsSE5cwtzMWsmEe-50jkHYbie1ko8pQZjvS7igN136ztHLFSaetIznupbbY0iUg-W7H9vjtctUPk3XWYvhExHONTcLaZlosYk1Tt5VJlyUuPl5WFqukIqcV6A5i9tjPitKSrWqhLkw2oBkcUHHJi3gjesODWxyNRDUKO0CDgbLD7rgjJ2pIrDB_PPariq31e6avbXuzXkPaEsaYPJqIs3mojRbBztxY4mHZLZJ0dqEvI41fjeyurBXVuDlXjPYYNjcqHx8EfDT8znHckyR3n3TrvZSJtn6v6oIJ5rJ9b6fopZrN1Ya7-rEylbgFO06isquphNSwHI8GSbMzzRoNEoX5xYXSjVZ-tAeZXqx5uO7qlaSthFaX22WrPehYmnYIJpNUsUW8NO1xOmJjZhmnLTDYumn7uI7MWa-sthf9pL7u9UejsFHdrJjtnJ9xy3HNHO_boyXbQZxSNdDR26GkXhO8I9M_atFCDld1Ji6CTVdHTLc3BdiH042eHeKZOE72XZNNB_N43XDB1k93G8OZdwPPGuJe1qzqFW9hakooTA7DyQQy7YR19m7vsJCnrrwd-QBHzHRE4jpuKK8bExHVpRF0t3xxHruq1h4MQdnMQtTeWMT2jtLaOOA82INZB8KguC43V8Xh1lTifsPmg0FlD_vyttgzK0JoRLvJFnmKyewaw8Px0F0dd2ZpLoVTHXcX6X5eTE0tmsprjHQhtuR-swrbjRpWnVqVSHUyYBeosU3NlqbU-PZ4UZNVAfujBK-9uM80xRB2iOU1GmJr0LTWJInfAc2tcKN2D67FBafMiQEHA6Whrzf2QEuFVpCojUktCEKdLyekpCqXk73UKNfms4Gd9UdJZ6m7Y77kjNrcrlmOD25Vh01ty6rHRmXcRMiaGpZVypJ6ObOS1RQtDNDob5vGKC7PDRvPRkVbIzrnIsHarrd7bhJO50aIzalUD_x5nEZlWUoP-oRHW2bld2I9s6ZeRZhU2Z2VdBi4H_u8G_OYrzTrE0vcR1210uizobjvMZm_2Jb9phrPWwtO1pNtcqjMmrXIIH7PXrSP2kLpILAdr7bsutToTF3HObh1sRZ0ZgsjHAnTXhgtlvF0OpXV7WxqJrORe5jE2y4vJUvFdAVo7XfjxUzawW2xOVW3nVgjUZvD9GRx69bmI600tb1up2PzfTtkvf4uRMpyYBwZA4Kq44TJzHSxKxqTleuF0dFuxn0_Cu2SOhW8zWLSwdhOq20rTjK_SyyraC_W1bFnqMQsZuXjnrE7bUbuTAlmITiqwbERbFh1EG1hH6-BkESd1aZldOrdWls5liuzcX1YaTf5csXZCmjiQy2ID0VX4ndua9sbDt1D6vbRfLbfzg3BbW-jBTuqw90WBMpU3qiVQbPUhEGLa2edgRbann1YmeqyYXHj6VJaq1VZ4Bu4FGQkIJEJJYzfboqzg7Y7rvzhZh4uZ0OlbxjhrsEUOwN-Vt-ODn3XUbaijDV_5tW3XagsYn7WmLalTqPXjRvyBpjlY-YeD6zkxsbUSIzADMyxVN-l0za31ZJmXyHZRV_X5HF3Ls6PDX9FomyBax6s-cRdjYLUKE2bHDJ8vzpJpK2ZVa1k6Um9NV_sD0QXMrUdqx860VE8MEnvOJS0w8rbVZIaEzkVC5ul2PDFrdKUmcCtwgVjlMdrmyQklanMHGozodFsqGuubquTGAjVUdnIgvC4dbPBAOkNZwfSaAW2ihcdw56UbCFu-AfdNos2J4vl3ahs-kkyq8EB4ySEWf1qc8yWV4E2biSTVCh6oQwie8eYBt76_foeTOsDFOPYZ8qN2tQI5w1W1rMON5wTuV6Koy6blhrF4aZSVyS2Fwwra1Oz9h2_goN1RYqU_cLgonJ5a4ydwNyquJc26zipV5qk7hbXx5Xhpm-1qtXupAsrXL-1Gnmctl0X6_DQ8yRzpVXiSqnZWPOHRhcvGhhgZhsitjm3ITi20GiJHUUd8qY15wf9aTKdtSbjmclYodKAI6vCdPZKVo-VrEH_p5PfHl9cTd3GYewXbdXUgmF56XQWuxIJW0TH3McVft9p15UZsIuGuOlOiYEIB_YqsFaeSIZN38TaFrcmcNOuuYPlsV8n2lECLRYPtCKvrIpt0FmOp2y_45UbnDlqQrZeqyodnnhyhzGry1rWWUeOXOq2Zn28WG3wZjzcBNjll7ZVn7iVeW8H6l4UzfT1dFrehVkiIOfYFqJtzxWHy2wVGGOb5DL1cVgZZisDT0isCov-Cls1I1zGx-54YkmSXW4elNALZ_WOUG97u3al6pZjdbyoM9XgoKTNmTIHgTndsw3B6C-Y_XoodNv7Fa_GkdxtJ666He9riolH8wqdPob-Yct3s2hL4i44DVN2aW7UZmfCjfUDmHd5mW8upLK6YaKEBKlF0AisBjP3G1sSaE4H3oypHes9D7SGk7ndrSfAS9khD2BJXzS3hu0F1R5reAvOStLAXcdZsegeao2uUrWTrMZ4w1JaVlC_VxIG7V0pM7zeeMOXu0y5ArqZV60rIbPMpPqx1qlPs-FoV1qQJKc2r6eqkPTd0AKZ7askGBv2NZK8NZsb-1hkcRaTYDQyG93RSLd0n0uLrcP-WN0K-7GmKE3UBXCxH7Y3XKqnrZq_K0PFRJ3NUqkHo37V3cTr-l4d9krzodaUgo47qsZGjCZGBTf2VZxZoxVYWEYl4qNNKzKVVktpW7N1ycTLQzqByqBne6tpG6eNstcVO1YwqG_NIe6uJM1Vs5bqHj1uIbdXXs-pIiPqdNrthofE2A17S40L5ocjIyd1y4-Ru_CXeOy3KiKYGYpqTgLAjTJ1N-f94WHUb6SlrN7ODk4kcMwQqPUgLsr1ZaoInQTuYaDPqsuF5qg2s9W7CcuZSbMUJEAwJ5ZgVf0S3NSWwyZqyVzZraaiNxmtk92kOOsafc8alIQtruGe3iBjPDFEkhYqruRMbfXAjcJ9tXs8KPXeuDydKeGhhLbdldNoiJN9zQ4qmu3Ne-tAqvhe38qOpf5wKE_80Zppx2FmsZgbH0bTilRa69Z47pcUDtV82C-xPjvws5q41ExoHk2Nma9JdulJh7FYNNusX96yu3YgdooobVlcp9Y9YsEd7AZ7sN517ckubPO-N7P2wSR2h5HYZfbHUtjtisPy8aiHTqYY4XbZ6Jv9zaGZZC0S1NgVJSzKB2DW641DqRhoexcuxaArt2dhBR1TvheVu_UtsGcNOVE6m_GxNDF0XwmzvUky_SbXntUsIym29shQve3OcKRyubpyt1aWWIGyaIBNRZ8sdnGbG2xLzl5hUa1Ub8Jyv52l4ojb2BPVXKbCeFat9htDP1ZEOKwdxO5x73I7vdM7LJeDeb8rOtl0M2eWBzPEznAtdXr8qIc9wxGr-2LcOzTtnd1PRxETDZM1680EzfFaaqnZOlQrGNdHmQyGetfkOpXyrGPb8_FgWHb2Qztm5qWSemBq6XSDzeN4fOjoTXU9so1Vu6fE88M6bgKgDsCCCZS5Z2tecYIdoj2HbN-EvMgx1iiVJlYymzW1KLUn21apaBSH8y0-9HdKdCxLAmt21tmejNcuVstSXa2vharET_WVpC-T-swRynB6MHWnzkC_W1bsYzfGh9KUXyutve8oRxJ8KwLrJdKwdpxrekq8WwJCzbVDRfXCdm2DFNAqzw5jVXJaoSV7bGXA1_btNlfp7fv1otOtrHCmQXxYKrNeZStEAPnawOCTY6V_VA5oqi2DYbNa7W3FFo-0Y-zMqkaoqant9kVFWA_ZxVodt0K7ApSquBkRrM36bE70fg-EpuNU9vV02TWCVN53ukKrylX67RIr19fN3UJRSTquiso-2whrrYR8p1YcNSrIdV3Dbln9pF8mWkIC8miY-cCapkJPYtp-07KPSk8t76pKstq3uYV04NBggmRrzMnT4bIiO7V-1EV7Vdszboy3g0wce8O0mqXNYm-3EUKmVOSAz8TWxM1swd63JW096lc6zBofYSWdtFtjXVo7TL14HBWRXVTBfGloY3FrS5W9gsdByzOH_EZWe82mNz8OZjxkKpt9QNLObodrjMKq63UbncABvBkr5eFoqdfM_nzQbw2Gq2wgbKyVYGG-0_c6ammm6UNhOh73UqW5DmrLHtM3nWl5T5xvq2bv-OLQkgbKyJ_2JrHSVzS5suxuDWkmgaQkIrjDS2lfqSr7ZZBIitxkmEbJ4VxtOS_j4nIdNoaLRU2r4bJsr61paz5oDtlStveOi0O9p1tZvzov9Rh0DNaB0W3GjfFY6Ge77ajVUea8XccpY3KqxBZ3YnWTDYBdXcnTdLXuD6wwWB_q9T3bGuozYbxfVmDVn02rzN7xGoAdVZmovalNWqA-aooL9zA87NuH9bAzX4-OoSUkWYpx26ku-jYJbEM543bLckPr1lMQMJtEQWUvYw9u0h92BG8tsn64wa3U27D-tsnu14NkELJVYbThx9kxZTMrHgvKtC4mi7XRmS_m1rTu7nuTgBhQ6TBwYWfTaxSJnnLM3lh0W2lLXVb7ioGKq1plOZ7bi5JA9MPsCqN-s8sOlXJj78m-ypc1ziMmeG2xrZoz1-29jdSyvglTpuba7pK4EVfuSzx7WNhBmS0vOsnKsZUFccSNlaGrJVlbNqqlRVHohkp_VUrXC2daMbMG3rQEzS3WetVS4GzKxdFkOtjVZLj2sNTaW1Yna--DbrOJJm2vMyoNwn3w_7o4jxzYdSOKzr0MzwUrB8D-gFo5x1aaCMo5p5ZWb70_8MAbKJBEse49RLHIpm2XO6kTQvDBO2SQXucq8evRSU41Y5dDqxkTlMOTempFT9SSqSkVhIbiOsI9pDgo9quBP_gLw8knZ7p2bL6zu5AX9w0yltFTo0PDQ7ZvG2CbjyC--EIrM-nei0HXu1NHsIZY8znAh83ohfh6QG9QtN_aWmeSDXMK1_DUnOV002N7hQR46QH44Dnfk4_DS-FOt4rl5AwCJesMtNJeMhgdRsaLu2IHV1boCe9S4-PgmO6MUhiWYluAApvSDMD2-LWG_zxM0Tgx3h-mobfmsKZKacwX79FrmhUhGz7Mwm1Rh5sDp-GnXA6bSyhlHJUAS6hFsApZxrqylN6EqmrfDfzkcvKaXwJ2HV8UrtknCZHPvoti2xhdFbVMrxmQYOrJcRu_46O5H5Z4vTkGgYGP49f4DQGaixs-1cZIGNIIIaCLioBRwSkYSKxfQfFxCBJYex4HQGWffUWukIvVWpMYrj34hHA-s64r4W8eel5hhI8UwhnQvKrrZzOAQT2hxe0UCDJg91LV1BdRYpV0ACqtcAULQ6Uvo2JU44wODPdtptnNejNHt8fr1F0cFDf5uexPaNsdPah1k4iqxsKnGWG8gCJYxudbvWg2en7F1qOsPbVsRB6QP0YZ7lEFSz4CyuhYYq1VEjHrr4PWiV-aKvI0mP1qXyv81dV4sRskQbvs2FoYBh1L7VSHUbWzBUrQ6F8MVxhOfnXAzre0J0B311MhaFVhNW8g50WVuSRLsFJDcujPMwDoerLay3X0tDb-BwprStKubLjVmsDMM2tkRhG5Nqyut6qgDzQ-UohIXe4N-P5NjNZfBPxYhbDHDPdL02su6tvioV6ZjyRsQq3YLBtorbnOrP6R_ZB91xVYPzI3iT9iTUGBiKou4EQRRPO5xOKCcHbZ4NWb5K3W2jVKqp8Ys6IZ_CJXcJzOB4hQr5BdQysOoC_jM5wUgItxgKrvDnPooOjUVdEELcG9Xe-QWXPzqisouz023qvqXz_sETuLGtXXlfGgeuZuVoVkdya3reOPjiZVDAirRdjavkOAQcpqh5jAGQv3Cbwk0k7VXeqqHt7ej0H1wTTR83JpJzHIQpPD6auJ-aFMvqdsawzIklxgSLZH0sIneM8YtMWLjblGsfToek9SuAXQIllc1UNGNUFlYTUiUgxQ6mAAkXZIhSOh5eCg7Azg4bV5emtHT5I5XKZ8pVkaCOk18bFTSRIDgy8D4d1382mQeRTP0pF-VltDUq39CHSjfHZkzkPSy4L0O2e58HKTqppYHDm_0UNz9vOxJbFh3wPxLVBV5f69uBTeOXXIRlf79SdKwvqDqGJHXWw8G6UwV4xZ6LFzZnyhrD4a86KNO7iAbke50uPUiUOT-3uhLnaF63n1QdYjhCthUkS0uvSS3fxeIIhsnndMo2LAMwn1a6OrQowYam0u_GwN7LH8qpUwtQmxhbGqKhdk4ZKEogIehzLiWuAHijg8myNUO9YKRfnnOWGTv3OU46KyepjYFwIcjpgIXnPv6-bqJnY8iXPKIQcRbh7uVLNvQiVVQjnlSzV3pemJeJU5TWNURXaNNG4sTUiIpnygTKlbdtok6BC2YImyH8cUyucwpU27x75KUXqM3jIlfc71A93uIsoX5SQoMiVtnhlVm-fak_2WdqyLlYxEy746qExkaWsKY9JCimzomKKJcr5aO1uhbOmLBWcbDp-OctOVKTejCMBXb1d68auIQOA8a-bZoY0H0Lr-sE9R_Mhtg0Pa9K_03aZ5y1rfunSpVB2UlQQ0q1hvh1_hZIPGayC31PFG9gHyiapbgX9mcro59sbZbXnzcKndF7oTJfTnJObedaaORCT-Ugpxt16yABefBUM-i0AeukPhH-kCh3q1jVCJd499Lq3l9xGrtVMX92Q-f5ICJhqJfPozcR8HSqE49RoDpKDuvNxALODqGUeQEF7cLoIMYil31I9xmEpfeCakD6GX43GbTT1eec5xmI1oGfUS6oyYefVt_mFyHGTrwRuj9aRGklqlPrEQ21L-vH9zgEr9VSV4A3Up2k8gvXnadSnLwIbBsDNK0iDWxcZ0ww2IZYYTsW_YdJAMtAVnQwW22TtZSKxN2UGi53EKWSsU4YQgMUDwJvVVDWwWYKX5LPb4sl7M5dHBMOrRYQu8PR-xaAsMSZlLbmp8_9BBqlwiJPmVv_tPbwAEnzs6pau1wA2Lf4x5TBOTp8UZPD1nQhmkPqYN7tN6pvrGtmc-eb1jX-xS8YjafB9I4ExmHVcfnFlNUthRuMDGzjnZuTiggIcgvMDptCYepOh_-vZAQAs5ittb2iuKebaZ5MoApY_LwCskovBbdQUwVx0gDTSLgNMEj0m5DoL6ycc3U7qdIH_qyerNMeth5NVrKwoCxlz84UBdZxjJ5QlFm5sX90bvsBFPDQtHbFjSZW-50gS_R-yU9KJdf0r1QyFYrj-_o3lLJKY1XOHRpn7fZzPADnwAl7hABgY9WniPI6FjGYZLFo3fsmxjH4e0zxQLCy4Cfo9VLgrrt8qSWn7pwZwBRc3BgeCRRVQufUG0SFqhDMovscAJBEGC2syl1wPr0XheKsTswHkIW6e86PGGmsdaog6AON6bVk6cqYPwMr3UVpnMFfiw5E3ZT21VA99uNCN-Ykqm57oGfjpQsAz8Np9J65XeqV5NJzZVUchpyQ8HjnEVex_yWLFsh255NNfbPVe6lCriOy25vW_2GGzUsbaluikUqgzMFfFsRjCmhZvy4Z5gj60BGQBzUiHfLnacJB9ELoqMiblOH_Qoc5S6zdmdKNPhzITke7B0TenoggjGI5dW3OgIXQpCThnT20fcKcLp-vwIj2wHkheQe6YE9Fg8afsm561REAzCeI4cj0Z3FCXgNg6M5_lkKFYoyes6IZ0pH7IA4pg2gaH9dv_55_9PjpH-N1n_zxfiv_uh__rHv_9lJnttlH83qTdj9dc__gtihtQM- Scrollbar is missing from Calcs comparison tab
- The above build shows 0 DPS for Dancing Dervish, I believe because there is no "Show Minion Stats" checkbox in the compare tab
I found some easy wins to deduplicate, but I do see what you mean about not being able to widely apply that idea. Mostly it looks like we could benefit from a CalcsTabUtil file that these implementations can share (maybe more generally *TabUtil files). One idea would be to modify the drawing of each tab to take in one or two data sets and then they could draw the second column and the compare tooltip. That definitely sounds easier writing it out here than actually doing it though 😄
After messing with it some more, I do see the value in editing the compared build. For the one I posted above, for example, it incorrectly chooses Flammability as the main skill vs. Dancing Dervish, which you'd obviously want to change. Calcs definitely seems editable, maybe Config if you've found many use cases for editing that, but the treeTab probably doesn't need to be editable. Maybe that's a side effect of PassiveTreeView itself though, in which case you might as well leave it.
| function CompareTabClass:FormatVal(val, p) | ||
| return formatNumSep(tostring(round(val, p))) | ||
| end | ||
|
|
||
| -- Resolve format strings against an actor's output/modDB | ||
| -- Handles: {output:Key}, {p:output:Key}, {p:mod:indices} | ||
| function CompareTabClass:FormatStr(str, actor, colData) |
There was a problem hiding this comment.
Aren't these functions the same as the ones in CalcSectionControl?
| function CompareTabClass:CalculatePowerStat(selection, output, calcBase) | ||
| local withChange = output | ||
| local baseline = calcBase | ||
| if baseline.Minion and not selection.stat == "FullDPS" then |
There was a problem hiding this comment.
We fixed a bug in this line in CalcsTab.lua, so you'll want to fix it here (or just call that function instead of duplicating it here)
| end | ||
|
|
||
| -- Check visibility flags for a section/row against an actor | ||
| function CompareTabClass:CheckCalcFlag(obj, actor) |
There was a problem hiding this comment.
Duplicate of CalcsTab:CheckFlag
| function M.getTradeCategory(slotName, item) | ||
| if not item or not item.base then return nil end | ||
| local itemType = item.type or (item.base and item.base.type) | ||
| if slotName:find("^Weapon %d") then | ||
| if itemType == "Shield" then return "armour.shield" |
There was a problem hiding this comment.
This function can also be shared with the section in TradeQueryGenerator since they're virtually identical.
…l to shared module
…mpareTradeHelpers
55870ff to
7f182d6
Compare




A way to address mainly:
#4402
And perhaps also include this type of thing within this feature in the future:
#7816
#8817
Description of the problem being solved:
I myself always end up with one PoB application for my actual imported character from the game, and one application for the goal PoB I'm going for, and I think it's quite annoying having to juggle both windows while trying to figure out why your build might have differences in the numbers compared to the goal PoB. Figuring out what you are missing or why your aren't as strong as you thought you would be or why something isn't behaving as intended for a build can be quite tricky to spot, and maybe something like this could aid in that.
From the view of a build creator, it feels like pointing their users to compare their character with this might remove the need for a lot of personal diagnosing. The need for going to the comment section of a guide or chat of a content creator asking for help related to their guide could perhaps be alleviated a bit with something like this.
There are probably many ways the feature could be improved, but I think it serves most of my needs pretty good.
Video of feature:
build_comparison_feature_showcase.mp4
Feature screenshots:
Quick overview summary of two different PoBs.
Compare two builds in terms of a metric of your choice to easily understand differences.
Compare passive skill trees.
Easily manage leveling trees, tracking, while keeping your real characters tree up to date with PoB using one button.
Compare two characters sets of skill gems.
Compare the items of two characters.
Easily buy similar items to the build you are comparing.
Compare any value in the calculations tab between the builds, so its easy to spot why a certain value is the value it is.
Compare, edit and copy two PoBs sets of configs.
See the notes of the build you are following or comparing against.
"Buy similar" integration to core items tab
This feature has been super useful, and while it has it's place in the "Compare" tab when using PoB with two builds, people who might just import their goal PoB as the "main"/"only" build could benefit from it as well, hence it could be worth investigating bringing this feature into the regular "Items" tab.Please let me know what you guys think, I've kept a lot of the trade related logic separate both for the sake of readability but also this.
Possible future improvement to the solution to the problem the "Notes" partially aims to solve
This is just an idea of a possible improvement that could be built upon the "Compare" tab in order to better let users follow guides or understand why something is one way or the other.
One thing I have seen a lot when following build guides is the "Notes" section covering things like:
These are all notes that are connected to specific items or gems or the different "tabs as a whole", and one could entertain the idea to perhaps "bake" the information of what is usually in the "Notes" tab into the specific tabs and then show them in the "Compare" tab, by letting the users put notes on either items or gems, for example. Then when using the "Compare" feature, if there are any relevant notes on for example an item, a button like this could exist which would open the note text related to the item.
Just an idea but maybe something that could perhaps be useful.
I would love to hear your guys input on the features and if you have any suggestions or feedback! 😄