{"cells": [{"cell_type": "markdown", "metadata": {}, "source": ["# 2A.ml - Boosting, random forest, gradient - les features qu'ils aiment\n", "\n", "Avantages et inconv\u00e9nients des m\u00e9thodes \u00e0 gradient. Exercice sur la rotation de features avant l'utilisation d'une random forest."]}, {"cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [{"data": {"text/html": ["
run previous cell, wait for 2 seconds
\n", ""], "text/plain": [""]}, "execution_count": 2, "metadata": {}, "output_type": "execute_result"}], "source": ["from jyquickhelper import add_notebook_menu\n", "add_notebook_menu()"]}, {"cell_type": "markdown", "metadata": {}, "source": ["La bible que tout le monde recommande :\n", "[The Elements of Statistical Learning](http://statweb.stanford.edu/~tibs/ElemStatLearn/), Trevor Hastie, Robert Tibshirani, Jerome Friedman"]}, {"cell_type": "markdown", "metadata": {}, "source": ["## Mod\u00e8le ou features ?\n", "\n", "On passe 90% du temps \u00e0 cr\u00e9er de nouvelles features, 10% restant \u00e0 am\u00e9liorer\n", "les param\u00e8tres du mod\u00e8le : \n", "[Travailler les features ou le mod\u00e8le](http://www.xavierdupre.fr/app/ensae_teaching_cs/helpsphinx/notebooks/ml_features_model.html#mlfeaturesmodelrst)."]}, {"cell_type": "markdown", "metadata": {}, "source": ["## Boosting\n", "\n", "Le [boosting](https://en.wikipedia.org/wiki/Boosting_(machine_learning)) est une technique de machine learning\n", "qui consiste \u00e0 sur-pond\u00e9rer les erreurs. Pour un algorithme d'apprentissage it\u00e9ratif,\n", "cela consiste \u00e0 donner plus de poids \u00e0 l'it\u00e9ration *n* aux erreurs produites par l'it\u00e9ration *n-1*.\n", "L'algorithme le plus connu est [AdaBoost](https://en.wikipedia.org/wiki/AdaBoost).\n", "Le [gradient boosting](https://en.wikipedia.org/wiki/Gradient_boosting) est l'application de ce concept \n", "\u00e0 un mod\u00e8le et une fonction d'erreur d\u00e9rivable.\n", "\n", "* [The Boosting Approach to Machine Learning An Overview](https://www.cs.princeton.edu/picasso/mats/schapire02boosting_schapire.pdf)\n", "* [A Theory of Multiclass Boosting](http://rob.schapire.net/papers/multiboost-journal.pdf)"]}, {"cell_type": "markdown", "metadata": {}, "source": ["## Weak Learners\n", "\n", "Un [weak learner](http://stats.stackexchange.com/questions/82049/what-is-meant-by-weak-learner>) est un mod\u00e8le \n", "de machine learning aux performances faibles. Typiquement, un noeud d'un arbre de d\u00e9cision est un *weak learner*.\n", "Le *boosting* est une fa\u00e7on de construire un *strong learner* \u00e0 partir d'un assemblage de *weak learners*."]}, {"cell_type": "markdown", "metadata": {}, "source": ["## Forces et faiblesses des mod\u00e8les de machine learning"]}, {"cell_type": "markdown", "metadata": {}, "source": ["### R\u00e9seau de neurones\n", "\n", "Les r\u00e9seaux de neurones s'apprennent avec des m\u00e9thodes de d'optimisation bas\u00e9es sur le gradient. Elles n'aiment pas :\n", "\n", "* *Les \u00e9chelles logarithmiques :* les variables de type fr\u00e9quences (nombre de clics sur une page, nombre d'occurence d'un mot, ...) ont des queues \u00e9paisses et quelques valeurs extr\u00eames, il est conseill\u00e9 de normaliser et de passer \u00e0 une \u00e9chelle logarithmique. \n", "* *Les gradients \u00e9lev\u00e9s :* le gradient peut avoir une valeur tr\u00e8s \u00e9lev\u00e9e dan un voisinage localis\u00e9e (un regression proche d'une fonction en escalier), l'optimisation \u00e0 base de gradient mettra beaucoup de temps \u00e0 converger.\n", "* *Les variables discr\u00e8tes :* le calcul du gradient fonctionne beaucoup mieux sur des variables continues plut\u00f4t que des variables discr\u00e8tes car cela limite le nombre de valeurs que peut prendre le gradient."]}, {"cell_type": "markdown", "metadata": {}, "source": ["### For\u00eat al\u00e9atoire, arbre de d\u00e9cision\n", "\n", "*Ce qui ne les d\u00e9range pas :*\n", "\n", "* *Normalisation :* assemblages de d\u00e9cisions bas\u00e9es sur des seuils, les for\u00eats al\u00e9atoires et arbres de d\u00e9cisions ne sont pas sensibles aux changements d'\u00e9chelle.\n", " \n", "*Ce qu'elle n'aime pas :*\n", "\n", "* *Decision oblique :* un seuil s'applique sur une variable, il ne peut approcher une droite $x + y = 1$ qu'avec une fonction en escalier.\n", "* *Multi-classe :* pour un assemblage de fonction binaire, il est plus facile d'avoir seulement deux choix. On compense cette lacune avec deux strat\u00e9gies [one versus rest](https://en.wikipedia.org/wiki/Multiclass_classification#One-vs.-rest) ou\n", "[one versus one](https://en.wikipedia.org/wiki/Multiclass_classification#One-vs.-one)."]}, {"cell_type": "markdown", "metadata": {}, "source": ["### Exercice 1 : rotations al\u00e9atoires et arbres de d\u00e9cision\n", "\n", "[Random Rotation Ensembles](http://www.jmlr.org/papers/volume17/blaser16a/blaser16a.pdf) l'article \u00e9tudie le gain obtenu en utilisant des rotations al\u00e9atoires de l'ensemble des caract\u00e9ristiques. Le gain est significatif. Appliqu\u00e9 cette m\u00e9thode sur une probl\u00e8me de classification binaire."]}, {"cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": []}, {"cell_type": "markdown", "metadata": {}, "source": ["## Benchmark"]}, {"cell_type": "markdown", "metadata": {}, "source": ["### XGBoost\n", "\n", "[XGBoost](https://github.com/dmlc/xgboost) est une librairie de machine learning connue pour avoir gagn\u00e9 de nombreuses \n", "[comp\u00e9titions](https://github.com/dmlc/xgboost/blob/master/demo/README.md#machine-learning-challenge-winning-solutions).\n", "Extrait de [XGBoost A Scalable Tree Boosting System](https://arxiv.org/pdf/1603.02754.pdf) :"]}, {"cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [{"data": {"image/png": "iVBORw0KGgoAAAANSUhEUgAABKMAAAEjCAIAAABhEFU5AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAKYsSURBVHhe7b1tTFxXnudf7+6LksWiUSkvalgWoRKKSojtBa1KuL0eSml7PGhrjWSFRQvKTCMsnG2kgOLODN0LttTuTnVHjnoCsrujwLTofywMvY1i7E5ol2ILBbeSwA6yWzhWHMfGmkWsVBqN6sV95/95uuc+18OtWwV16/t5A3Ufzz3ndx6+5+F3Qi8AAAAAAAAAAAQLKD0AQHmo2edPCfs58VtHze5nVfE/AC9e5PapqTyHVQAAAABVAEoP1CZfvD/igfEPH4j7i+HhlVPN0QYlJBhaEcfzYr6pI13KC2sINXv/RvpsMm6IH0o4Ej89feM+a8jnNmdORIqMtTpib2W0JRwKKQ3HL2/Xj97Z25wbTUTYd0epzZDPn17fEycPMd9c648SC1eivR8ENCdXB09laY1RnzkbAHDYgdIDNYm63C/aDFRdNAuMssP5aEktjOz2x0vz00StlHKv+abqKD0iuxZH28OhrssPxZFKktthL2Mo0WNn0/OZLTpQQ9jZuJ4eJOeUaP/EcBuLdig9M/cmm1jMUXquPhNHg83etT5mL5GhxSe5F19Ot7KvD7VOfykuOLTcHJZlhzJ8Uxw8YJ6tXhy5uFpjluOpLD100P7F978QP6zUY84umpo0WgACApQeqEkepDtIfaq0DS/uGOYM8qMcU1sitzPXxxoZHmrglSH2vNJaJ9pNFVN633y2RJhPj4+k2FBJZd8mUXeXh+kYByXSN2eMfB0Z2xQoPTPG9mBqISuOBpnstT5mMUrfNfa5mbFG9vWHRzu5cxiVHrWgGp0r4KksPTxkF1J5gl5/ObsEathoAah5oPRATbJ9Ke4gbFyVHkG9N9nqSQsdTqVHXqA0RJubE6mRqaGj/GUVr0r3VoY0BdfYv5xv7p26ne7ibWQoPQt7axN0RFSJ9l6tjzlemlqS1rm3nj4db05MrNXS7M3hlUMS2mdXeyqf0ytEjSs91kfhHvS6y9nFU8tGC0DNA6UHahLaZLDPVcyn9Lg69NAxfziVnhEZwsq+LbsyJAZjQkpqoWC7V0zSg9Krd6qaFwIPL+Og9KqPKP9QoJVOTRstADUPlB6oReg0GgfRll/psXZG6fW0p9ZJVVu3MoQVfZtcXkWE3tBKEX3Wj2foWCMaRvVOVfNCsJFD5VB61UbOZ0CBViK1brQA1DxQeqAWoZ7cTl2xuR8poPQevPeKuCv3ZON6enxkZCAZb44nB0ZGxtPXN752dv1uap2QG1dnp4QjT/d78rdu1ez9DF1hN5JKJFLkQVOzGe6t0iNFKT119/PVpaXVz3c9vsjDKhSWHA7pICMx3/ezhYhaVIu1/DTiDLFv+BbjmalZ21eyh7Eop9CnyTSgkDs2njguOdQfnEqwqbIstFu2DSXsoSU33mDPJ9fryxmdvkpHM0vyLvoq8omr19Nnzzp4ffQlCh0iqmhk/A0kE1oGskUhC8DSD8Xk4qaBf6Q/CZ99Iy7IQ6HAl5T+HHlR/rSUUC8iehgcXXEUEw3sMdLW2FNI8s3Rx5o/Ig9q9uuN69O92hJZQ1wuLX28reXGkt+kmVG+ROTIDy2rzPJUlnKKiWkTxd9AApIn2+X2tzKz0gVVKHT0hyLeCQZDds3ZDomiv5Iwnp43FBBm5DcwRDFFSvK5KWrC8dPpot3X0ifxlI6zCo88a3VuYuBihtsOz6kmjJmU5wQN/Uz+pxZntDqFrdH/QqFAvAAQCKD0QIAooPQED97rZtV27PtXea0zO3GM1UbOCyx0HXWCVFrhluTZ9Dytus+ym5SGzolb9irEVentrU8fp75AleixiVn68nnmrLKsxR1FKL3HV3tEfVvMxEsHHl7u4vcTyvBNkducYTW//Hzt+0Ph9tHlR4YI+GS8WXqaoR+mbl/tjTbw2J+dSLD+db56ip9pT02RB2pNMqVtwlhXmx4WaurpJVeRlBwYGR8fH+CJT1NgZtPcsMjeHGXnjrwy9aEpsCS05lVm5AW6i9eO9Pb25e5wuH3w/JkYPaBEJzL806xfxQ4yVHoLi5bVjR3hxvRVJ/elfkfh6M0SGzXq7i22Hom8b5BmBYLIQSQKTW1PEgCCDIN0hzv+ibggD8UFvsj0JxSflhLan2QwG0uJUnQ0mB8ztLK3MhwNR4+NjbxyhB4In/jgsbjSHfoMgrQxtkZXoHd5lfIm9dHCIN0TQA++CL09OvwrszyVpSUYnKCEGwpnO27EDlZMMBiya84miWLeXoIu52to6KT2Oq+9K9z9nrXoJrHO6iml7RS1bBJJzOiVcDjc9mp6nvefNI5lxOX5oHagsLjgXpKJdBU5SAso+0g9mPQbjZmUfIP4OMOZgk8tzmgZRVqjz4VC4XgBIBBA6YEAUZTS0y8yLPTbW+7na9DsnkZk68TmbDK3fp5PaIyQRpU4JnBWenIGkPkt6vYlFqTIcKmNbk4RSk//iDwxkw/mAkfgtRqU03haJ++Z2nNa7CtdaXPLUXPT2HE+PdTSndaFGJ8ZSmgdGu6JnjBINHnGFkr9E5S2MWOLUt2e6eHvsQRAxppB22qJRV5wydLM1V7QMTTUwU3C6QH6DiHGELK5sfFL2+KnQF07RwJmSLBKRGFpyanZsLXHQMaLLTPISCjd8HxM/xLTUkcOZpuCX2o0yERPDQ1FWBo5lkMFkPfkSbNi3qQ7TDJ/uLAipeuyfLyvZZZeDBVflpZscKXcUGS2IxRjxY45m8E8klD6L6W7W4aXZenDX0WwzIjXuuYah1b0+NUSMjKWUVl/ZbjvmjmynOC+b/uXLQbOMoopoGpmjCe1+a0c+m7j4aKfWthoS7BGil+FQvFfAECNA6UHAoTepMlTIT/74ASvVjSv7xyt/rBtxCCreIfSX1bg1laFdpPxHlmp2zcS0xzRH50p3L1vJ18IBXrMWOvNIjFO3vRWDertCIetLrTHKz1XjTGgB9uqwPU2o7VV4tok0x9mtw3ZFDBJqLsTIsSmBJOJbu1QN0SyMK3HH5xgvcnm9rCDcfAhU6Xnl5Z5XNnl7zfHf3xX/KpQFNoaO+7IsWGHwQTmg55CG6LiGMU1QQrjY/qXmJY6MgyG53mIBj3AIgBqZoIOWpSUIWVY8mXBwm+S1m4uAiliNW7juTUWdp/LLBk0h/A7l6Ulx3RJNxSX7RguZmVGu8j+eXqiWDoVZJKa9KYsbs0T5WUeL2qhtID7vm19/Q+W4dIv3040n/knUzmiF4OWVGV2YDKB4p9ayGiLt0aOX4VCCfECQG0DpQcChF4H5K2QczsZ+4o11/pIVhJOFZU+TmRueztU+VrLiNRo9tmP2uRID/v9FQihxt76zPjIyPhM0Ss7zBijtmnynjhaAurKkPh8p0a1vhO+qTkh32pr2shvtgXGNTb0T3CwDX12qjF4fHGjdRmNfIPlOfoLDNopt//0qWUpWH7jaIglB8bT80uZreeWhUuVisJ8ZmNG/0InQ5WZwdxkc4uuIvAz/UtLSx0ZBv0KL9EgX2Ro0avZ50+tiZwX+eJ8SVbwTbpvJYfRRLEnBrcwv8sst7RhOJWlJcd0aTcUle04hQ2FoF1k/zzXL9cDbHywtjOJ5W3y4uKHgY3JHY4kUiNTs0urGzsuq1N1ZW9SV1SMWXRY8U8tYLTFW6NAPq/MQqGUeAGgpoHSAwFCrzXzV8gUulx8VazYjzcbVhNY6yPXOppieKPphQ5Vvj4qZlyZriHcVjhXhgXIG0K/kG0PQrGDQOqju6ubQlnqn+8YSvkNphaaeyPB/Ztdz+hp5WQbegBsT6Q+GbgfAOoHwbBkx/Ic99Ca0V5lvEyfwWSELiu6I3skqhaFbsgxEeco1CPY1DKT7ymUJe34mv6MYtNSR4ZBXuEpGsqIBR33+DBQ6E2G4Bu9iwj+cYAbGbvZ7zIrb9ro8SZDXnJMl3pDMdmOU1T6aRfZP8/1dj1IxjNSgpqeJLt6bAOseZETcE2E20cXLd0eFH2ETc4NsA/oUYp+an6jLcEaBe7PczcvxzMlxQsANQyUHggQeq2Zr0LO7SyOdnJdF25JTswuseXYd38kunuttYR79UEwvNH0QocqXz4n1Nh5hvkDszN+9Z6x37RI8obQL/QBJYcuUxdowLRo0T/fMZTOp32r1Cl6WjnZhlMA1N076dPMUQD1FjGYnudeG+bPsOtsz3EPrRntVZbL1EfLE0n+NhNyWZFzHEmcT3uJQjfcrF3gclq+x+me/HgJvMuZEtNSR4ZBXuEpGsqIBR33+DBQ6E2G8LW+IgoeG1Mr1MGifJRPZZZ7qhEc4q3kmC75hiKyHaeo9NMusn+e6+16kExnpASNDGmL+nKbl7RDlqWMhdlbnxkUdZ4R26pegr5tqpjjSufDWlcncIp7qvxCR6M1JEkhaxS4P8/dvNzOlBAvANQuUHogQBhqDbcKmbnbYhdE+haMjgpd6w/36oOgv9E8vcmhytcv9TT7MQ95Q+gb6r1JbbZLkX3KdERAXqnPzbI5QKDIbzigMT197qM2iYh55WMHlK5J05xX+QbLc9xDa0a73/kyNft8h402pxLagJOIxKpFoRuGSHIa1tUj+LCN6ZWeljoyDPIKT9FQRizoOMQHdTxv3rWi4JvkBQW3S9E/xZ8yyyltJPrLZFlackx7s1CKe7bj2GOVbj1g2SxAu8j+ea6JogfJfIauyW19JcVlSDjCp5zQnslyBpxy+0/ZkPZAMibkjWVOJkMGieo7tjbY6v/JTIGnysc5G23x1ihweJ7A3bzczzCKixcAahUoPRAg9FrTrZmjV2LWkty1/shbSUg/LpbnaTcZ79HXBbhUaXubq3eN4rNYClRjjL21CdKCCUdemfa4UI+gOwSxeaBxgHlOMyzsl1HllDT6MjnTN/haqevW4RAAfZ6aaN/pY5g2WSvfYHmOe2jNOBgH/X7be2g3/gX2SPGiakWhK9JrhuM9coKveQGNW3QVgU/p7yEtdWQY9Cu8REMZsaDjEB/0ueZHFnyTvjrNRb/ps659LrMc0kbHqSwtOaZLu6G4bMewxypNDMtLtIvs73ZNFJmk5jPMZMURutSX4HUJGfloB92i7i4yz5ZO0aQbCPViqVh8PHGKf2oBoy3BGjkOzxO4m5fTmaK/QN2+ejrWEG6IDZr6hgGoGaD0QIDQa017jcqRVb21VtHrG2stISuJpvPrlnJeH+ayemnXbjI9bG8hJd7h5K+OKSMnNwIFca/gJLpGsPdml4D6aKFPiD0lavAVbmNvfbJLsc7iuSyWxJhdqVH25k6yM1an7X5V6gzdOk7OWWSqwRGB5s5NF07WNq7e+rXYmHtozTgYB7vV6kqOsnkhZkiyKkWhO9mbwyL9bSasrp/nYtnqTFK+xzlL5sOn9PeQljoyDIYrPERDGbGgI8MiB3XpMieLt5TCb9LLLbsdkbN0NwLN5Pwts2TQii5LS47pkm4oMttRZNDlWCHtHLI4EdEusuco10SRSWo+w0y2MfVrD9vTW2GvtlZQhNwinbnsnHp6vpCTOC0U/9RCRluCNTLk88orFIr+Ar3zwC22ADjkQOmBAKHXmm7NHH1YqrF/UQqV3M5cX7Sri9/c2P/bHWP/qagklHBYMW0Cpe4ui32bov22vj6tZrFUOUwA0eNK16Rhyb+avb843GZVRkXjXsFJ5CXk1XYveqWg7t7hO/rSR0V7p29smfuac0825uhOteFu++ihnDqrLz4h0NjnEWmZWedfpc4wWIdpQ73c5swJbhSmMEt37aGOC3JnJvL1k13EVHiLsePCZ0bfie6hNeNgHOJWEgCjJwhhYsa5U1WJwnzIiZBK1yV9wyoWLzxc5knRBPme0jWOX+lfelrqyDCYgl9yNJQRCwZkC/zou1/Rx1MhVvQ2Iwb0Lhvzxna5J7fTJDMYV4L5WWaJoJVUlpYc0yXcUHS2I+pE6wpsHL5FH8r0idX4tKi35yjXRJHmZTmjTzKwEI40J1JTcxbX0XngryYxa9rBkK/6c52bofd8Oil8QglPLWi0JVgjwa9Codgv0FOoNJ+nABwaoPRAjWMsh90wFvzGBfik0ozH49GGcLR3ZjOXvfkDw8L81qkv+A2sQqCVDfXk0h5WGqL0Ju60T4kes66bcAqPsQ4nLQ5tETh9FIEuwVAaOkeXLU2c/Mi6ywVzu0G2fsLdlz2pSTOkCp4ZlOtZWEQy2GoS+i1zxuk2RkgkiugXX88fEm45bfF25/R9/JtczzhFvSHp9dMnz6d7o4qW+qxFE24fnDEHgLZx5XJ9Elie6OH2CaIRH7x3nB9n9H34r46pYU4CikMIeQDZiXB78lhUYQaWTCZY1FAvgFbBXH4UFoioQhhMmCc8j0Oa7ubM4PSeYl/kc/qXkJbseh35VGtyFhsN5cSCDXX7KjFd+gSa+JGw0ja25tgmlbi+SbcjLf9SQ6JmZLU4v8osnnTFl6UaRRucRklJU2S2oxPg21ls0WeSB0ZOXNWLUoeoFxHvlCj8lLuJU8S+4a4UrbHpa0jkJmn3G4mMRDIZZ/ERbs+XfGKkzWmYjVHKU/MaraAoa3SPMdcz+aO/qC/QeteU6HDJrnAAOAxA6YEah+4UVQiHvvrc/tOdjdWlJep40zAopT9NHqSrJPQH8IX77DbnhRNO4XG6kC8CJ6xu7Djv4JQfsXjDFfs76R2OQfaO/Ij59PjULIvN4r6F3Mijn0ak4y1O38dD73rGKeoNz9brfNYEyO2zEFAXjHnDTJ/KPtKSUDIY9KBTmBwi2yGE/JHqo7tipzdySXF2UUYUFoioIpERw+LQybKc3lPsi1wDX85nySDnS0sL0mysSk9QMBrKiQVnSHDZGzOW8XRPbyI36XbklIo62nsL2qYbNJ71G7U3u5alFgrGtJWCN5Sc7bQgr258bb6IvsqCeIzDGXHK1ZDpINcgVT3hluSAcD+pMZCM854dgsMSQwf2NjNiAFAUeUWkNIFtf+AyoEco+aluRmtGi2Dnp7nHmOsZ9+gv5QvoU/KYBQCHGyg9AEBdYFF6ADixtz5zNpU6O6MNJRRSegD4jDA5V4+X6u5cig2R+TeZkFj9+Mi4NHq+r551XjAAoCaB0gMA1AVQeqAwugdIvp5V+u0vbgAFgLIRa/TcB9S0K3xzEKJ5KtOcmLKpo15nGAMADhdQegCAugBKDxTGovQ035MedqsGwCPCx67ZB45Gboe6wvHXJqXSo0bPnJJg83AAAgOUHgAg6Liv5AfAzN7aGG1HH2k/PTLCN67O77oCAP9Rd++kTzMHJeFIXF+sl0ow3zJKQ+egYaalDzx4j3rseql7cCDZElaYhzJxBgBQ60DpAQCCzjef0fX2Zj77RpwEwEJun7vncHC9AUD10NyY6Hh1hlOY3BPmlgQWD0DQgNIDAAAAAAAAgKABpQcAAAAAAAAAQUNXev/3//7fvwIAAAAAAAAAULP87Gc/4/pOV3rffvvtd7/73f7+/r8FoHR6enr+5m/+RvwAvkIi9nvf+574AeoYUj6TUnpwcFD8BnUMKXJTqZT4AeoYYgbEGMQPUMeQqgHNeMAhjca33nqL6ztd6T158iQUCv3+978XvwEohf/4H/8jsS3xA/gKiVgSveIHqGM+/fRTUkr/n//zf8RvUMf8h//wH9544w3xA9QxFy5c+Hf/7t+JH6COQTMeSP7qr/7q9OnT/H8oPeAPUHqVA0oPcKD0gARKD3Cg9AAHzXgggdID/gOlVzmg9AAHSg9IoPQAB0oPcNCMBxIoPeA/UHqVA0qvJHI7maXVz3eDuCcUlF5pBNgUoPSARt0pvUDn63JAMx5IoPSA/0DpVQ4ovRJ4fLVHISVZKDx8M3gNASi9Ugi0KUDpAY06U3oBz9flgGY8kEDpAf8JrtJ7kO7ou/Zv4seBAKVXAs8+OMGaAZHRTw400SpiNlB6pRBoU4DSAxp1pvTy5euDr60PFDTjgQRKD/hPYJWeutwfgtKrJejUnqW7jw62u7cyZgOlVxoBNgUoPaBRl7M3HfP1IaitDxQ044EESg/4T1CVnrp2rhFKD5RIhcwGSq/2qFgJAqUHOPDIIjgMtfWBgmY8kEDpAf8JqNLjSwKg9EBJVMpsoPRqjsqVIFB6gAOlxzkUtfWBgmY8kEDpAf8pU+mp2a83rqfHR0ZGpmaXMvez+ryM3P5TM/s5dlzNPhcHGOIoJ/dkY3V2ijxsZDw9b3qajdz+Vka/dMvwGPKQ2f4oWxBwcnZHvObp83wPqxDlKT01ez8zz6KWxO3qxhNjRFFERG5llpaWPt7OkiM0TsiPpSVTfDA8XLyzsUrOfvYNO3CfXuvgNU0PpDXFLOmsp4DZMPhRfszwRoYx0PwoNTd6zdLqxteGd+X5Fo2CplWs2bhbfB7KVXqFQm+LP5eIYni42Gg3JCjkR2bHbo8whaKA0gOccpQetWJZPRDj212feWf1GT1jzCsFy3pJcUVMgYLAPVAu+TpfXnMtNrSHCewZs/ZAMx5IoPSA/5Sh9HKbM71RJXJi+sb9bHZ/53b6RERp6P2VmIX/xfsDyXi0gZXhhHDLOF+G/fDK8bA4pjRE4+Loixd7axOdsd7p6xs7z/f3n28tDrcpSsPxy9v2Ulx9tDzaHlai7GJS0hPJN9oeaf/JPXrpF+/TambklVb6gtZX2A/KD5ce8ruriHelp25f7Y11js5mtp7u7/OoJTE4urInzlOerf5QRnDr+bkZcsNgep7Uo/PTJFmUhs6JW7owK/3iCE+lvmvfrAx3Hpv45c9SL5EU67r8QFz0Qt29NdEeJslPUoEE8unW4kQi2hDTAvls9WIq0SyeQtP6lSs8BT75gW4UkeZT7OgX7+vX6l275nBkt6+eTiQnSJzsbMwR6wiFWZITu0kkBtMkEFs3pkk0KdFhUzQRijCt4swmv8XnoRylV0zGMMZf6pfL5IZjE7MkdZdIzggTyzk9s6m3x0q+WLOb6Xvbl493vpr+xQ++c8TkQQ+mULwpQOkBDa9KT92+3N3Q9cZ13v2nZr++Pd1N8kbr9Jf0bEllPaPYIiZvQZA/UM75Om9eY8WGLDXCkcRrMgfe/XFMlBykDcHLjdoGzXgggdID/uNV6anb6S7F1PInxzJjkVDopTc+1WuI3OYlclkoFL+0LY4wN1vkxjf+YGoVZcYaSWne8lZGHtxbSJE7ldSCqbHG3xuKDBnacA8us3dodQplZYgcMLQUDwTPSu/Z1R5ah/V+8FgceKHem6S1Yeskk7MGti/F6ZcqbcMrekepFkvhvmumyCvp4nuTTeTanpO93dP3sjxIBrdpeytDpCnd8yvDcwh7y/2Npgepu8vkOkL/sh5wmjiRvtlN0+tevMgupOiV1kRjlhE62td34vy6/ly6sCMU6hga7u1f0A3p8cxRclQZvil+M4o1LUI+synS4h0pQ+kVH3rq1YASOXGZJJiEpVRIeXnaZDolXcxTpvXkyW4i/LUUUbrf4y0smAKlWFOA0gMaHpXel9OtpsqOkr3Wp5iOlVDWF58r8hQERQXKJV/ny2s8H4eaJu+JA4Kv3u0iJQcNRRBAMx5IoPSA/3hUelSthUKNQyuGViKBHVZOzu2K3xQ+CV82Hkm7MNpFtYOZm8PkolDo5Z/8szhAaiXeGO26bOiyE+038xvuTrAWZHCU3sPLXTT4Sv+yHn5ec1tarlpChFIL1gjlJ8ytUS8Xa2ms7n6+urQqmuS8JdD0xqe2+GX60NTs501g2bigbY2ocw3tnGiWcAhEmyHUkTYEWWt7mFscRZoWJY/Z8GAUZfF2ylB6JYfe1iZ6kV0ZorFi3sbKw8Uyso0u9GAKGsWZApQe0PCm9P7lgxOh0F+88an4KSC5wGTrIq8UU9aXnCscCoLiAuWSq/LkNVkgvfTmujjAUNfORaydSzUMmvFAAqUH/Meb0uOtKIdqhJXZJoVC4AMFrIFHZJ9L225vc1VbAaDBxY2xqnB5L10ws2FaOJS37qgWnpXeC/XR3SXTcgZZ97o0fh2+VHSGGrWhl4vtacz7bwmO0ctj3lQvi45kKvZzmTEnnc9xTjSXQPOLze0I7WLL0aJMi+FuNqVZvJWyZm+WGHrbYdYsYqE3Ntw8XGyXhTAFI+yWQqYApQc0PI7pcQMMt4/Obezo6+5yO58b7dolrxDsZX2pucKpICgqUC65yj2vMXgZowyt6H1P2Wt9EWtPSy2DZjyQQOkB//Gk9EQtcuTURbq8x8g7Z14iJ2xlttbACzewqYDuqNnnW8Kvg7YswFDbiPfa6h87BeqO6uBd6Qly+ztimfyAtkrJ+knuFbqYfukQf6Vc7FSpiyFH52QQ7zB2EBM0sR9uyTPhxjnRXMKR72LHkOU3LY6r2YivKt7izZTrkaWU0Dt9vDbsZQimh4sdRD9MwUBRpgClBzS8rtMTWUgQjjQnBmfu7BrG4AnCTJ2s0V7WM4rPFU69f0UFyiVXueY1gW0mDznQ+uZ6gXxWS6AZDyRQesB/ylF6TeMfc+9XVpwcfO0tnjlCSmvLCiADe+vp0y3hULid+lRg7vRsbTVeIzi33swUqjuqQhlKj3qd6WxQlOgx6neCxafzJ+Wp0MWp8OCKds7DxU5xLa51Tga3k+rmBdpLbF4hYibfF9qeV8rFRZgWx9VsxFeVZPEGylJ6JYbedpjCT4Xa374vDni52D1eHB/jerKuTQFKD2h4VXqE3M7ilKbHOBb/Q8JMHQxYO2Uo68vPFYyCgXK5P/9TCXTBH7lCmzT65XSrZap2rYNmPJBA6QH/8aT0tHVk1kVj7qjb6e7u4SFaezg28ESHYKTP4FPBXttojSyHcSYL1rrj2erF978Q/1cNr0pPGwHtmtT9TrhVh3kqdF/G9Gx1PSFvMvBpP9aBHJrA7X3DqcZ8Yj/fFxbZ5nC4uDjT4riaTekWb8K70is99E4p5s+YnjWyCTCF0oHSAxyPSi+3b+hNYCNxs9QBLalaDYtrRc50yLPWsr6cXKFTVKBc7nfNaxIxpZw5PKJL9Aqvhq0t0IwHEig94D+elJ62OqfnVw7lLSnlrd3apC5hS3IMq3RMDTxRjlt9HPAaidc2X7x/cfWZtkTG8b25fcPGOta6g1RcTtVTZfGo9MQ6CkuvpWh/s68w1ITuFbp4TOPwTXnKw8W2up4imgpOk3jEckKzhw6a7mx5pmhUuIzmODcDSmpz2C4u2rQY7mZTosVb8Kr0vITeIcXEY8pdp+dgNzAFM4VNoe6VHomiwuOe9YE3pUcs0d7NwJ0zG6ydm79TnjWX9eXlCklxgXK53z2v6YjFeifn/hywJXoMNOOBpGJKj22BOTtFd8w0bK35zcpVLXuD4OJN6WlumB28X9G10ga9QIp7rW3H4A08i9YTtdLRWdPThLbhFcXKEPsrHHmanERySE1gaJvyukM/sDJU2FOC73hUejzsL73+R1N4RZOa1YCGmtC1Qhc1o5M7zVIuNlbTOiIZjGvkObzdYH6QpvPZDyH2HRv4zs0Al3AUebH45CJMi5LHbEqweDtelZ6X0Bs+XiDmPpFAGtpHHi622w0BpmCgCFOoX6Wn7t5Jn25piB4beK335UjL4IdyD5l6xbPSC/3F63+05jdqsIbhc2Ht9jxrKeu95AqHgqC4QLncnyev6QiBGolEAjZzkxJMpce2SxxIxpsJI7//V3H02epFthSUHj36iy1xtCicHxg0KqH01EcL/dGwtgf1zsb19NljLe3Dy4++IvW3cQ80EFA8Kj1NsoX7FoyLrumeWVFD245U7pOkNWeqRtT181SzGBt4onVpai6SdmB3Q5i2qGhXIalIREUgpGJqzvReqiaNbVO+/Zt8IKndHLvgK4tHpcerYvOYHvnqljB1yUJjQSVRoLUnRUVtkc6iEW3db6iki/ncO7eZsjwZWs+vG3vn+e6Jxgfldub6IhbVujd30h4Igot3US5xrQ68RVPEmqr8YkOgSzGtAmZTlMU741XplRZ63mCySieRYaxuLku5WKSMoyMGmIJGcaZQr0qPRZnSNkVSWsx/bfz+alDbakXiXenZ8ww92jH9pcww7CrbdfayvqRc4V4QFBcol3xdXG2thTRoMzcpwVR6uf2nW5mf0nn6JM0/1DK7mn1OlMbrzDxbp0paU+P8wKDhv9KjO04rXZc2zVMp1O3L3czNX2WVnmmyHTgoPCs9wt56ujeqhFtO044C2k0w2BnrFRsxP1u9mEpwd5GkcG44/U/a+PAXP2sXR0PhSCI1wieG7K1N0MPh7jdvbNEuh7nRRGJ05RGrl5TosVSivX9ZK9/V3VsTnQ2W9/b/yuTNWVixEu2f3di48UZ3AZeflcGj0iNhv0rilQd+5+nTrRvTpxOnL997xJuX7alT7d0/0WpPUaEfHRolcZ++Tftrbs+82qYo0d7pP5qUG6HIi1mnW0okk9IQSw6MjDiscmTJH27oHJ3NbFEfoRPHWKeReNAX7w8kY9ra/HDLj++yo+ThS4Pk2xj80fTJtK8uRdKUH+0UVkHDMXBMXM0O04sdQqc9wnyxmHJUimkVMpt8Fp+PMtbplRB6Lt6aUsO9sc7RRXL5063FiUSEmMzogjl3EIq82BStLMNq8WoEplC0KRxOpffwyqnK9pGz7iul78P/R/5X713sjERiry3Z7KjO8K70In2j/bHYIKsfaA/99Ilo1FwFFl8xFJcrChQEBQPlnK8FxdXWbJaAdZppMAim0uPwmsYqzLh9lqj0OM4PDA5+Kz3WRdJ0ft1Bbu0t9xPZXFGlpy73Y8zwEFCO0mPk9rcywst45r6u3elqDAO6qs/ti0MC/QzdFW9Ve5S2Ox7fsPtzY985w/FiCzk6LTnfBRXGq9JjGOJV/3y2U63pa0SFTntJ5ecurW48cfzgIi+2pB3DbWWNMZimB1nSWd5vezg9YzUKbhUO4SAXOx+1P8JgWc7W4mZahczGxeLz4V3pUYoNPa8B6UwrNXu/UBCLvNgercZ4NQFTEEcLcBiV3s1hosIq2HIqo10XYLwpPfXRXbb3nSHfOhT4JVUMReSKAgVBwUA552sDhfIa4XHQNleQQOmVAJReSfA5L/3LztUT7YKrqBK7N9kEpXcIKFvpAVfKUnpFYqjQC1PSxcA/ylN6xaKLtyIo6WLgI4dQ6dGZrlB6Vceb0iuOAJb1pFEawCV6DCi9EoDSKwke065qq8JKrOJKEhQHlF7lgNIDHCg9IDl0Si+7MtRY4ZZTGe26AAOll5e9tbdHRsZ/s80HI9QAbq4ggdIrASi9khDr2BvPrTmO6qkrQx0VU2LceRmU3iEASq9yQOkBDpQekJSv9HL7O2ym2+rGjpwKa4FNlrPNs+XTXY33qNk/zZyIUFMoo+VUODze23VyXmFmy/Y5GoXfb4wOeyQItFdltpzOVgAovXw8fq+bfkFkgq7rVbcvdRh9uwSM8pSeKbOLabL5LJjkAD7rPE8BUlSW0TJevszpQekVyIhQeqXx7IMTfHlt69Bi3jUG2e2PaWLqsAnZjG8+E4co8nBu50Z6fCDVc/z48e6TZ6bmNm7PnD5zhXpvokk4R9f9U1468464c2npM6vziNxOZnYqlYh3dHwnOTCevmGYuy3CMzs1IhxFqLufX0+Pk18j4+nr+uRw9gh6dGRqtvhVFHUGlF7lqKzSY+4oBkReCreniJ2z3OBISRcDv6m00qPuDkZOsY2KqROFAUe3KRolXQx8pxylpz5aHu2MtBw7m57PZDJLs/yHNuxBeXjlFc35jaEd9fDKKc09lqGNdPdSF3VYzs+EI9R3OaN43+eFw/PJOH1ilIVJaYiy5xf3ArorA3V6056amiX1/Tz1C95y7B2Td8di3i8/nETH3tpEIp58NRU/QkrBn+klIHcpFD02MbexkZmfZv+/bXImWwkqo/QCU9ZTj4Ev9X5wP7u/NdfXfqIod0c1isdmvDmzr62nT8fj1H8a850TbklOLBs2w2ewDBOj+WU1k1mdHW0Pkypgas20z01RWYbmmFgnzZok49EcQzLqoDHjSUpSesVkRCi9EhEedwXUndI4KS/t4pwoKyK6NA9nbaem5jY1w3jw4VleohCrGnib2Qv1phwZWvxae4q6e2uMtCr4AJ4Qaf84wBxgD/wj/cG4a7TIvfXpbmKA/XNcnnH33I09M8KMstu/S4+L8PQv764Md/ZO39jaz6nZ+7+mDlgb+5f31O3LxzuH5zZIMHJPbp8nRqV0pZ3MsN6B0qsclVV6tg6YpaXbf3br8yzpYuA3lVZ6ph43xu//5DrPqaSLge94Vnq8wm59076dRbj9okkA8d0rrO0osb+NrY3kteVUfHhKH9Pj3hhDkaEV2QildTpp10bOfiwCWvT71a/epXuxtQ5+/0Q73ebh5jBr97Rd5HqT75kRObemP4fNOlI637kvfleGyii9AJX16u7nc1OsA182OYNJOWN6IlsrSkP7lJ4V6J4vxKr5viYSumpKaXv1Q30frO1LtHEcnciYG8cFsgxz5xhJXMxI8c29OIZPfGDbJbN4pVdkRoTSKx2mqWi0mVCivel1a84Su5m8dH5dHBB8M3s01HFB7tSQGWsMdb37lfjFod5xTVM1eSo7z94U+rPjklGX8ZUEphv4dknxjq4+485qYhOlrq4TepDI7Xymqpv7mXoGSq9yVFbpgdqhOrM3QU3gUempmTHSDGocXKEbFRjhW9RHvr9qOOGsrPhRn5SeD+Fxh23KYHm42IYv1HOVjUCX9H72iQpp0LIdPtRHy0Q/vMObqWIf/BMfmMe1WUvC4el+UsnZm6CWKKsZL7K1yBc6PIeEIq/q25nwrG7KiNp2pNa782QZ+UpTocHb3o1jGfFbw7l4sZcIRWdEb+VV7VAJpUehfnHpREk+wUJCR8bEFRz13iQtfY8M3zLqJSIAI8O3pKj6lw9OkEte+0hXWRTrlgo8lR2V3uOrPTQYJ+csSpMqyNCRc2vip7S11klT56HYmlNJLZjuF7LQUVrWN1B6lQNKD3Cg9IDEm9J7PEP72EO9v7FLD1Hptb+td3zb21EUUWf6ovT8CI8bolfZ2mhUH92dTc/c4R27pb2ff6K9FappSntDl99S2d3dofQAxw+l55CBhXFHuFojqNu/GR8Z+fGKceCNN45tedM9y1CYt5yRK8bGt5CMtmA4Fy+2EqH4jOj8wOBQKaVngC6wvJ4eFBM1j/Qvy7FZhihcUwv6YbrDiUlrifQKtw/SmaByQWUua5wTylPZSXgJo7Wfst0irrSO03ErsDrjdX9hvQOlVzmg9AAHSg9IPCm9Z1d7aMXW9A/3xAEj25fi9GTnOzvigKjwKqj0fAmPG2KqmJOK0yjx/fwT7a1IbaDwyGvXmR8LA6s/eImcqGh7EkoPcCqk9PgAiT7p0oDmTGV26kwnvcZF6TlkGTOad5f59PgrrOlvC4Zz8WItEUrIiF7Kq1qiCkpPoD6aZQNrtpE10demz84kuu7ou1+ZtJaYYK8TbjmdFv1wGjyVnYQXT8RQ0/HXRiwwM7IpPdsz+AOs+s/9hfUOlF7lgNIDHCg9IPGk9ERrzlkr2U/yI9arxXXWNpJby0lUxhb4deWGJ9+ztWma+dpyJb7f7RO1SxtTP2UL2mzYXMX5CZQe4FRK6WnmrY+Iqbt3ZgY7G6i/lrPp6xs7T5/e/RHtF7HlJNcsI8jtLE4kW8JKA3XLktkikmz+jOMdzg/iIdPfWkJGLBSyWsdnpUeK0zOL5kmWBni8G2dLMvgU+FDTJOtJI78ilmmSHOb1ciAZ1yeEKl2XDaNs/Ol5lF4RK+pcnsEfAKVXLFB6lQNKD3Cg9IDk0Cu97PbHrF3FnLTa+OVdel254cn3bDH7Mm9brsT3uzYOxaVuk9QqC5Qe4FRK6YnRbS0niGEYpW3M4G3Tljc5efXU3spwlLTtIyeuGtxpuNzhfNj61hIyYt6QBQCflR6J2diFTfHDDp+8a1dcfHYmm9hpWaLHUB/dNbnRfJHb35rrp0ZhnPTJU9UgvD4ZP8V2YdBGm62zLx2wPYPDrQBKr1ig9CoHlB7gQOkBiSelJ/pYnds3vNIzLmXhFZ619caP2p5hbTmRywo2o3wJjxsinM5TMzklvt/6iTqixZFvpmjFgNIDnAopPbF0Tun7kFk3b7wrPVdN/jG5GuR585vP5F5p7llGm9sXGTM57BQdNOwOrbOI4vwgW4lQfEbME7JA4L/SsznJNMCU3tEZm8tUbbFe17ufWpfoUehT7fKQ3WPQWTyV9QPERsQPUYDbBhMZBjO0P0PArQBKr1iCrPT4fp9ij9ADcNNcYaXHtjYVO5eau1eKoTKRc9BRfkjxqvTKS2KfQdr6gzePLMIhmlOfN++VNbW7eIVnUVZu6ojXmfqKnJvDpGlYqBnlQ3jc4W74nK4n3xB5dYkErrT352kc8qA5edmU76oUUHqAUxmlJ9rqWk4Q1xmWr1KEQON5bWVI5rk8WYafMvakUMT4IbuDvEre6fwge4lQdEbME7JAUAGlZ3ewqUHVv9IzY16CxxGCXlHCDjM36VNtnlx42hhko5iIP7QifpO75FnufNPhGTS5DW/kdgGlVyZBVnrPVi8OJGN8BvFBpH2Fld4X74+kEmKPU3vvSiEqEzkHHeWHFK9Kr7wk9hmkrT94U3qkAmT7D1l75PlGVpZts7RK2tQa2lvoC7PEs3ab89pRaibSPrQ0Bp0pJTz8FUUrPTo9jO0GZnk4fWVUU3ClvD9f41Ds69T6D+Zua9O7KgOUHuD4ofQifR+acoLIQnpOEF6MzJ0jfB88cZRcIZ235MkyYvjN5K2Fb8ynHc2M6dLM+UEOJUKxGTFfZg4ClVB6iqK0nrtldpciYlzpumTYkc6I6BpstM7cpIhKwywgc0SjKSnjtnd8GFks96NVi3H7PD4HuDE1Z+jEVh8t9LV0X9YvEoGw7Pmg9WJYBiPFxS+N3zFdDOph9ibv4Q2g0mOUuVVkZSLn4KL8kFLW7M3DtRso0rZcvCo9Qm5zpjeqRBITi1v7Oer17sb0iYgSPfa2afNwCm81NXb+5FPq9FrN3l8c7uy8+A+s+15pOzU1a3RxwNuEjT3v/imbfbI41G5pMrpTRHjoPt7z6T5a35PGaOJser5INyekyqfLPsTD6TIQ8vD2xDvGZmAR7//ms6Wl+cke1jTlH75kmBkk4M9R2l6duf11VlWzX2/MDbe3vPobp55uH4HSAxw/lF5re2eslzs/VHc/nyWZx1oy6Mv0PnpCDmulwtrKMMn+kRPTs6930T3KC2cZuUxv5k+0eMk9uZ3u7Xz1w7XLtOulbXj2p6k2up0lfdDsGHPtSYqiMfIcmvNNJUJrHykQ9KcXyIjODwwaFVB6HRc2n6yne6NhlpzUf85WZj492N4QFRbjAhVq9pmbFPJUIhEXZ3pb2l+lZTpJ0rPHYrHT3CJ01O2rJEVpMZ5Ov9rebRWVuZ3FUeofqD1FwjU7leqMdo4u7ohrHl451WzY/C8caW4e/4QdbRbd3wSlIUqPvvhkvNlysVgRCBjBV3q8HAyq0nMZxC6WykTOwUX5IaW8dXrlJbHPIG3LpQylR+H73woXJuPpG/fNNasOufBGely7kO1Dp/lBGSd1s7mNlNvRrp1aLm2acIHw0HadleKbZ8y3m/bsmdu0fWqlwPtp49CCXelRTM+Zmvs8T/vHL6D0AMcPpdf34b/qudi1ZMg92bguS4Up0aimDjnHZQYrKsuYs522yyVpuJNjU4v81fYHaUrPjPnpeTKi8wODhs9KL5u5Oqfpq9z+VoYIKhqzpA7I0C60vBClZ91cQSO3/5zbF1tiQhG/HRCXuF7AF4bkuwKUC5Re5YDSE7/rHig9IClT6YHAAKUHOD4pPXEA1DQ+Kz3vWBbMgVoGSq9yQOmJ33UPlB6QQOkBDpQe4EDpAcnBKb0H773S3Bz/wU0+xLq3kIqeWysw6gdqhIooPTW7f3hGYYOm9HL7piF3KL0aAEoPSKD0AAdKD3Cg9IDkwJSecNnTOv0l+bG3MhQ1OVcBNU1ZSo9N704lmgnx5Nn0jfv7O8ujieZE6pXWUGRoZU+sC2FXvPLeAzqLeyL5nXg8ltBXXTLo9O5UIhrtTCa/E4vFkxNioreRYq6hV91In03GYx3dXfHEIJ2rvm1pmtr27L0ifVOtXhSHKPKwZ8pTevR7B5JxGrmJ1NTcxpMn6+nT8XjyVGej0pWWvoncZIC6+/ncBL09nkjEY7HvkPhymJUt2+0iKeNdXXHxOoe+HJ5+JPLJI6PRaGLQeeUM1ICVyii94pKYQZP3bDLW0BAh5kQvPWtNOqRttYDSA5yylF6BDOtUzVmO/XiFOd4xHxXVHi0wBhOxWCyRIHVu1KG65bUlr6F+cFPlN8QJp80+HkTRE40lk+x5bgVLXeOxGc+WvM2/QT1Wkgb60GxAF67VGQc3pkc97TT1Xs5sZGaHO49P5/PVAmoM70qP+1/SXLfmNi/R8ubIq0v7pACiPr5pzwBdACq8OMUvLKa7ui78KbvGXfRK96jq9tUTEer4Ta4apY9SosPLup0Vcw2pUm6NtSmhSN+cqJNIHZM+0d7Wxl4vm6a5/Z2N69PkcZT4yP+naxr10d2f99Hj1K2TDzuGeVd63EmW9r3q7jL1jRfqvLhFfrINUPquaWuYHWXA3hqJCUN0vVCzf5o5EVG6Ji2Zl7fbm7q6W7ontQo49+T2JI3c/jmTGs/eHI4c6b0qj/EUJ49cd9xrBWrAQAWUXtFJLJ0Y9unpmdv4SeeRyJDMPUjbKgKlBzjelV7hDMuqXqEBGlM/XaXVHD02O8ScHpJDGVFN5nYyvNqjWoFXew8udymxsQypyhmiAor0LRjdoWe/3lgVT+v/9fJQW/9vn3wl/PifWxPXsVJKNhK0J4W707LYAhSPzXhz3zTjl3cxslfjHOg6PeoPZ2lpdeNrh2EUUMN4VXrZlSEqoIzNT+Z/3WkTRtZSbWptTc3RWuTxByfCpFIRrltplUXOnmSnNPiuuBFtjnAx1whP4UfOLBovIpeJbV6sTVNtOw6rY6G1c0eazq/7Y+SelZ69Nc097etfq2OXAdzBun1HSrbXiGXzFP4mIsM3zZ/MY9OgBbQXmTYw4ZulmLYoZkANWPBb6ZWQxCLzmFJY7Geqb4iEtK0iUHqA413pFZlhxfZSJj/pfKtFi+t0kqsNpYmoFXTBpt1l27xQXNra2sMqTTUzESWCU/PiQAUjqfnN9SnbFd9lr+a6pUrNeFALHBqPLCBAeFV6N4dpb6G5wcern470A/FbQ1RLlkEJBq+e7Ke4auxfpi3WYq7Rdkw8v87PGeBvtzVNnSpBdjC1YGk+e8ar0hMNcdMH8xpVGVqxxiH/PMO1j6/2kKQ5cm5N/DbAdjw1VbKiTndIGn7GsDMmr7Ybh1YM0eNkBQR+L9SAxGelV0ISiwQ2G7W6ffmVSEO09wMtpyJtqwiUHuB4V3pFZ1i+ybVRbLmoP3KJ+CF7h0w1uVOlRBDli1N5IHbvt53ivZbGHZQBmvFAAqUH/Mer0nPST/yYm9KzH9e2YXY4xesV9vhirhGVSmhoRZwz4BRSBleQjcO35AAIeQz56VsF5FXpidrTQek5fKBVBogLjb29ErHi1lDJOr1KwBsOsn/Wgdz+3R/FyTW2uOVPdYjyesVfpVdCEovM43hpXpC2FQNKD3D89MjilmFFLSeH59SVocamJqL1DCN2pN4jwk/8cETNPp8/Q57jpvQcKl4u6JxO8ZrFqc6pW9CMBxIoPeA/XpUe11ZiRI2zfYnWNE32KsPaUtXhZ0INse7jFrroQm+2yX0x1/BXO7c/+f1Op/gMTl3LkN8OofeOV6Unamdjr6e63E+/wmG80Rq5Irqc61HbyTxKT5wyTftT2WbMqUQ0EoklB0ZGznTS7mGogUL4q/SKT2KtteV8qRmkbZWA0gOc8pRekRnW3KFJ6u2m83fYsJ7s43x2tceh3ss92ZijLsEikUgiNTIy8orjzBr34kDUH0q0Q1TXku6OGKm4xz8RFwI044EBKD3gP16V3osXe4tnjtA1QX9iSzfV3cV+ukRIdwqpY22p6uRtswqKuYbPUXFuf/L7HU+JoUCxWI9UiV3vfsXP+IJnpfdC3bxApGtkaJE7ScltXiC1JvNmasMauXmjy3ZSVMdOV4tTckKscOxh8HjjWs+7V/91ykEpPTHC53KpDtK2ikDpAY53pVdChhXHeadsdiHFRJ1x5cPjmaPWem9vfbo7TC7okm667KUQx7044GdQUhQFmvFAAqUH/Mez0lPXzjW9Nks3PojF4x3xeDw5Mfe5xeufwLmOoIjJZXlrg2KuES1aR18q/O3Ot4s1C9TTib9L9BjelR6tfH/025mzSRKvJG5jdL8IkyNMHWvkCtGbb2qfYTWjqI6d0sb8ILF0w7Buj+JSz7tX/3WKv0qvhCTOd6kEaVtVoPQAx6vSKynDGueu6KN3bKSPTWcht1mEHl8EaF1JV6rSK2U+Qd2DZjyQQOkB//Gs9EgbstjmnrvSE1NLTJNANdR7V/iGP8Vcw31UOLZo8yk9+fDU7Gwf0Xv+1kmelR5trhdbQdoi9+4EawU4fQxv9zeOZcRvraJ2epmQDCJGxa/YhU12UsPoBGBlSMYx1IAFnz2yFJ/EamaMXuqYeR6v/JhtnoW0rS5QeoDjUemVlmEJ/AYldemCPnrHK76Tc3+cbjU7tdZ6h84smooMo0cWUgZopVGe4kDMmHF0vaKVPYCDZjyQQOkB//Gs9OhQW8f5ojZBzaP0RPekg9PlvYWUJr2KuUY0aW27JrjtsiDhHZ4Ef2duUjwrPdod2pj6tZyXkw975PIdEiwdvgQ+gGk+LpTeyV9bRmP5HhZ6LS2usyhpcZTFrbrcL+M4T/Vfn/is9EpJYn6pvb1FU5gnJ9K2ukDpAY5HpVdahqUI0WWq5HjF19hom8nCixtLP5K6MsSewEqh7UvxIpQeOckGB+17A+llD+CgGQ8kUHrAfzwrPW2OhxGlIRpPnk3fMEkU9at3mZbquPDZvpMs5LuiK21jH0nVyPZAbzu3JturRV3zaKGPXGPcOZoeiioslI39v3XZC1LUgj7P3KR4Vnra9BwT4UhzIjU1p2/0Tsn9+ecsco/+/M+Gwzy6Iidm+BpKSm5zhu09P2Nu8LOKOt4/1N1tiTby+lZD5MoZPRfkVm10s96uvj7WM/zr3dzauSbhtlTNfjTMBpaGPypGqtYD5Si9cpOYXEq34bdknuWhiC7jkbbVBEoPcLzO3iwhwwq0FelGeSX6OG0Vn5wbuqjVCLS4aEv10WkzTeN3cnRtgVCMuVu8OHCrXfnO6bZiqs1WSNU5aMYDCZQe8B+vSk/dvTPT10qkHfPLxUglmpsjYWKNIbnl9ifjzVaYr0wruZ3FiWSsoYF6+UolotHO0UXbsrTir4m0HBsYGRlIxmK96TukkmJBYlLJ8eV0IOSIj5srSDwrPfIZY52N4UiculRjDCTjzdEGWlnrG2PbI9fozkxEBXXLRmKroaElOWGPrxcPr5xK/OSeSq8ePfqdkyzaWhoaOgdndOEnEPEfbugkKU7Ck2DxTxRHL90sN3psiupC8jwRFg3HKK83vCo9P5KYou5+PjeaiITDIvPEjk0sPzKkL9K2ikDpAY53jyxFZVgjbLTfIuqo/HOs+GjlPkiLixZaAaUS8dOkHlWJbJtoJ/V7uH3wN0Sn2YsDZ3+a4mENDaSYInVyNMYfBoygGQ8kUHrAf7wpvccfnAiz7j3xW0fN3p+jA0LGbeoOOY993lxB4k3pqZkJUlvb5lNSck9uT9LeXNscVXC4KW/2JggUUHqA413pgWCBZjyQQOkB//Gk9NicP/eJ9nxKYK2s5PnS780VJN6UHl0mceTcmvhlg62icF7zCA4rUHpAAqUHOFB6gINmPJBA6QH/8aT0mC8vxyE9irp+vimfEDxguJvOyFiGiaXsylBT/7LvS/QY3pQec33mOKRH2Zs7mVcIgsMIlB6QQOkBDpQe4KAZDyRQesB/PCk94eTBuG2rRm6HTt503kH9cMD35+OuxahjwspJUm9KjwRqOKqYNq0VqLt36ORN5x3UwSEGSg9IoPQAB0oPcNCMBxIoPeA/3pQexeAPQroNieVzC3FYoAvL21+ZSqfPHuvsnZHuy/zHo9IjiFXsEepAQ5Cii9qdPKWAww+UHpBA6QEOlB7goBkPJFB6wH+8Kz0NNfv8KcdxE4XDCQt0pcPrXelJcvsibp/DqX0NA6UHJFB6gAOlBzhoxgMJlB7wn/KVHnDDB6UHAgGUHpBA6QEOlB7goBkPJFB6wH+g9CoHlB7gQOkBCZQe4EDpAQ6a8UACpQf8B0qvckDpAQ6UHpBA6QEOlB7goBkPJPmUHgAAAAAAAACAGsVB6X377bdEAr7xxhsXACidv/7rv/7v//2/ix/AV0jEkhwrfoA6hpTPpJT++7//e/Eb1DGkyP3bv/1b8QPUMcQMiDGIH6COIVUDmvGAQxqNxB64vsPsTeAPmL1ZOTB7E3AwexNIMHsTcEirDrM3AQHNeCDBOj3gP1B6lQNKD3Cg9IAESg9woPQAB814IIHSA/4DpVc5oPQAB0oPSKD0AAdKD3DQjAcSn5XeF++PuHFx9Rm/5tnqRXHIhDzvQO7JxvX0+EAy3hxtUEjIQuFIc3MiNT5z+4nYp3pvfbIrPHyT/xDkCYyJqdmlzFYNbdB9+IHSqxxQeoADpQckUHqAA6UHOFB6QFIhpXeqjQkyTtPx18ghk9JLJZojYXaSaLZ4csB43kRuZ3G0k6u7kNIQSw4QWcaZT59NtoRDSrR35sZcX4ReMLQi7uJogTnT2cjuJ7S+wg9JUgkRDvL0zolbu6q49zCS3f546ePtrPh1mIHSqxxQeoADpQckUHqAA6UHOFB6QFKp2Zt7y/1SXoUiQyt74riGup3uUkJKV3rbXVup21dPMAVHZFjb8OL9rP1SIgSHdVFpUXoaD9Id4gLHK9RHC1woEsLd7z0Qhw8f25fioY704Q2fDpRe5YDSAxwoPSCB0gMcKD3AgdIDksqt09tbGdL0UyjU2L9s1Hr8nIMA1OFSkKF0XdrMM7dSf5E3pUfYmzspLggpfdcO6ahZdiEVgtKre6D0AAdKD0ig9AAHSg9woPSApJIeWdTtS1JiGYfvHlwuPJx3b7JV3FiEuFHXzrEBRM9Kz3iJYlntd1jYW0gR5QulV+9A6QEOlB6QQOkBDpQe4EDpAUkllZ5pYI7QcYloO23a5uV8iuXx1R55W2qhiDG2L6epMPSu9OjESEHjWEYcPExoA5dQevUOlB7gQOkBCZQe4EDpAQ6UHpBUVukRzAv2+kbpkri80zYJBmkW6rnq7pLTwL3JpjKUHheKjNbpL8VBM2r2+VZmaWlpdor5hCnCWWduf2djlXqOmUrPLy2tbnztsM6QoWa/phfOTlEvoPTC519vXL++LqKInL2d7o0K5Rv/0d2nGs/dHnjgeFF61N+MCd35zDefiUMUg08adffz6+mzye90dMQTqZGpuc8tDnVyOzfS4wOpnuPHj3efPDM1t3F75vSZKw/F2RrFk9IzxSDls2/EGXO0y8M08jKzU6lEvKPjO8mB8fSNHbO9k7ifmxo5c7KbRG5P6mz6xsZHE4nxT8RZUAW8KT0P+QymcPjxovRgCkHEk9KDKQQQb814NMQCScWVnnEdHSP/tE3Ks6s94lqC2yicldz+06cu4iu/0lN370yKgUcl2r/wyB62vfX06ZYwOd3QmWIOOweo00/6c3TRUrxx1EfL3GFouIW5FR0ZSYmfp9N3zJlgb22iPUwfPE7loOZQlMKDahS9Vg7v+J5HpUcqjnb+8Urbqam5Ta074MGHZxPMhGh8vr3GDquPFvqjSrh7mm+0IVKx9Rw/S6BmFxlalPpa3b011qaE4pe2+e9axaPSI5Z1THQXRBJn03/Q7DybeYc7ymVG+BueNffWp7vDJDfMcS9IuR3q3LaxZ0bLuHRgPtx16TOZ4XKbM9R5Uv+yuABUAc9Kr5R8BlOoDTwqPZhC4PCq9GAKQcOz0kNDLHhUQemRtDWsuitC6RnVjR9qxvA86y4LA8kYk2CReHLC1hPB0HRqY/+i8XRu8xKTh0p02DI+yaenEjouGP3IqLvL/EHh7svy+9ks1abz66b3qrtzKfIAkyiVnxD02ZvZa3008l46vy4OCL6ZPWqMUJ4qFj8/LJKO9C+zrqbMWGOo692v2AkNup6zPpUeRwxdn5wzW+yLP75+xGDewoDZXGtJdmWoMaSVzrQr5sjwLZPVvng8cxQVeVUpZ/ZmcfkMplAzeJ+9CVMIFmXM3oQpBIpymvFoiAWMqig9krR3xl8iTxSYywgb1DY0Kqz0CGyATmmIJlL2UWfuPIZiD4fmBibUOLQih7FfZG8OMz0XUoZWrN9IizqG9jA+eNk4fEvLNwJ63OwYpm6UntYrYKknSLkT0aNJzYzRSLZKZBGfR2cev3jxLx+cIA957SNzzKrL/TVfwJSh9IRXH2vBSwTg0Xe/0qJSrJG1yUGWK4+cWyP/3p0g0d/18z+bY3/7UhwVeTUpa51eMfkMplA7lLFOD6YQKMpZpwdTCBJlNePREAsW1RnT04a5JHlX6hmUmS9jvIbnOc8F1Qbo6BCdaf6m1JxODjnZrgcMZtIMbuKUrsv2achsMSGl8dwafYm8OtySPJueX93YKTgBNfBKTwpioycecqh18p6WLurKEEste7WxMiSPi/GrcPtgej6zJeM1l9UmEdQq5Sg9rXuiafKeOMAORVILMjcKS7PnO36CHSfFPU0AJXpsYpYYrbZeVM1mna0XVIQyPbIUzGcwhRqiLI8sMIUAUZ5HFphCcCizGV/QFOq7IVZjVEHp8c0WlNTCjpgIybAM+Bohgl9cRHDUZp+MN7tzyrrUU5RNFGelRzBcExnLCBvUPXI6CixuzhQtMxhC7vQm/SWiqS1HAA0oDTHbaj79zjpQelo9oY88mQedtMg40n5aDMtKznRSHcMLHnX7cjefay5wWCVZi5Sl9LSCV++pI5Ft6KSTRt10/DURp5JX6I2igt9bGdZ8BDHc16yCilGm0iuYz2AKNURZSg+mECDKU3owheBQbjMeDbEAUXGlxyfyijE8MSLMcV+wp4+WyZLDjMEH0D8OiHEywtEf0iMGn0Acg4pzVXoGVadvnq5LuQJKTztd4E0Op9XdWxPMW4sFS+TIO+tB6VlGniyDTjIyHC3DDHMPNpCMR2UMF9jeowYoU+lZeurMnXQEYdT2bjorzN/WeCrRHJHFeGT4piXrgQpSrtIrlM9gCjVEeUoPphAcylR6MIXAUHYzvoAp1HdDrMaorNLj0zaNqsU8kdNtwZ6wMIY+NdIRg3py03EOAsuO8TmanJKzLQspPW2qpkGi5ld6ltmgbEOG+fQ4yQt6sWj8cHmnHpA8zkYPnDKVnhx5oot6rYNO+qRX98QkFvTo7l2TG9Xc/tZcP+tmNM5GqEHKVXpaTx0rny2ddAQxYTlvj8LeZka646LQjUCmWb+dqBNANShb6RXIZzCFGqJMpQdTCAzlKj2YQlDwoRmPhlhQqKTSEzrP1A1AEG4hOG4L9gwX5ZnnSfBL6ckleQQ5GVPMQyY43KivydOLL/1VTiWh/g7+hmf/dKb59AdWIctdFhMM73RQelRn5stiB0nZSk8beep691ProBNBnHTsA8huf0w3haMRZu92ZDcW0QV1mClb6Wn9KEeGP7pl6aQjaCfZynor33zGBsyJ6dkjkd9YuKsX+IUPSi9vPoMp1BBlKz2YQkAoX+nBFIKBH834fKagnazPhliNUTmlZ5q2aUbbuYDhJuT21uiuG4xwd1q6dbVikHFlKD3j/u4GX5rCtxDBvqG6lIFKz1Xd0IVjKnJUmwKqI8OhrQRkB2zZh8AGE43jfvJWqfTYksDgKj1t5ElRwlYtQhDp4lBUkCKERSiNMNYTZYbK4wKDxIed8pWe1lNHIvdlB+PjJuwQeaSq5sKQxqI97mmUC1dDoBr4ofTy5zOYQs1QvtKDKQQDH5QeTCEQ+DJgg4ZYMKiQ0hOTNGM/+pNzvi5uwZ7YbpNdE+2dvsG36TQgN6njeFJ6avb+4rCmKUNK25jc8pEiZ5taApnbvMAfGjnxgXnwTspYs8hVdxe5mFTaJjLC7kXAWs/dMq1P5S5sTJs38P4wihhvpAeUEx88Y2cPHT4oPe2T7XtQMMQy347z64Y43luf7G7h+xvyqLX0IuRITaSk5mp7MbAfSk92xplnbmrw5fSNqTnDtAv10UJfi9gKkhbTJO5NU6/Vr2Z6lNbz6249MsB3fFF6BfIZTKFG8EHpwRQCgR9KD6YQBHyamoeGWBDwV+l9Mt6sr7nUCEfGPxHnGdxxpvm6cMTZbSYxiie306db6BRvCtv3Tvj3SSXomrZw+8RHG4sTx+jMX4uO0zx0Gl4l3qNhCkS4JTmxbJpSzFEfLY8ypylKQyw5oL+Zqk9nH0J76yLI4QgPrdignQTW5ICK54JwQ4OiRI8NjIyn01Pk4eRd5MkzllFM6cyKXZpqDxt3YD9s+KH0+MiT04inQN29Q6OZxMfZ9Px8+mwyFtPTg0St0nVpcaa3pf3V9PzS0hK54FgsdnrmT7Xu3NcXpcd66mzzqg3kdhap0YfbU1OzS7NTqc6owXcaqcgjQ3OLE+0tiYlZ6gSJXzDx0RNU41XEH6VXMJ/BFGoBP5QeTCEI+KL0YAoBwB+lh4ZYIPBX6Rl8Yhqh83V1XC6i2NxmSnL7WxlSXnDZFG9mAmpqdnVDFh1q9v6GaRVw3hdZMOzz4QYLwHx6nIaAlG2rGzsF7lCzX2+siiCPExvPbGnbykiymXemaOnILpVXrm587ZwJyCeKOJiazdjGNw8Tvik9l0EnI9QzDcOcHrl9Ed3yvC36axPflJ5lebUTava5U9yRwzyy5flD6xsoyPio9ArnM5jC4cY3pQdTqHH8U3owhdrGR6WHhlitU0mPLKBe8UPpqdqkf2DCF6WnzaIHNYxvszeRz2ofn2ZvwhRqHr9mb8IUah1/mvEwhUAApQf8x5PSe/DeK83N8R+IHXf2FlLRc2voCLThSellb/4g3tz8ynt8Sal6b/LlnpmCnXTgcONR6SGfBRFPSg+mEEC8KT2YQvDw2IyHKQQRKD3gP16Unti0gjs53VsZimLFriOelB7f34P7g6VOhl7Gyvjax5vSQz4LJF6UHkwhiHhSejCFAOKtGQ9TCCRQesB/PI3pUZ8zTb2XMxuZ2eHO49OOvm6AN6XHPGR1jq7c3bg+3dvZP6ctnQc1jMcxPeSzIOJpTA+mEEC8jenBFIKHx2Y8TCGIQOkB//Gk9AjM58ySq0saQPCk9Ci5Jxur1PkQ1sYHBO/r9JDPAofXdXowhaDheZ0eTCFgeG/GwxQCB5Qe8B+vSg8UxrPSAwHDH48sIBD44ZEFBAFfPLKAAIBmPJBA6QH/gdKrHFB6gAOlByRQeoADpQc4aMYDCZQe8B8ovcoBpQc4UHpAAqUHOFB6gINmPJA4K71vv/32u9/97k9/+tN5AErn1KlTf/d3fyd+AF8hEXvmzBnxA9QxpHwmpfR7770nfoM6hhS5Y2Nj4geoY4gZEGMQP0AdQ6oGNOMBhzQa33rrLa7vrGN6AAAAAAAAAABqFOcxvb/8y7/83//7fxPJB0CpdHV1jYyMiB/AV0jE/tf/+l/FD1DHkPKZlNL37t0Tv0EdQ4rc//W//pf4AeoYYgbEGMQPUMeQqgHNeMAhjcbXX3+d6zus0wP+gHV6lQPr9AAH6/SABOv0AAfr9AAHzXgggUcW4D9QepUDSg9woPSABEoPcKD0AAfNeCA5bEpPzX69sbo0nx4fGZmaXVrdeKJv86xu/+ZqJit+gMMMlF7lgNIDHCg9IIHSAxwoPcCB0gOSw6P0cjuLE8eiitLQmRpPz69ubG2szqfPJlsi3dN3dtUX6r3J1lD80ra4+sWLh1dONTdHGxQSUI7SEG3WiYTJ73jybPrGji4WOZ+Ms/PiNoK8kzwuHGmmd103akwGe19JnLryUNxbb0DpVQ4oPcCB0gMSKD3AgdIDHCg9IDkcSm9vfbqbKK9w9/Rtq8B6kducORHt6j0RISEyKj2NB+kOciYUOrNouVPN3l8cbiNKUGkbW9sTBw3kFs+wG5vOr6viEIXcdmOavk1pG15+pJ+5OUweFe5+88bW0+dZcVjdvBBnz4j/6E/a23P7T7duvEk/JzS0Io7VG1B6lQNKD3Cg9IAESg9woPQAB0oPSA6B0ttbGY4SERXpm7ONvgnU7XQXG7tzUnovVoboqVD/slGvaewtpNidHZe2bafFjY4PfXy1h96ndF1+II6QqyPn1iwh1GSm7Rnq2rlGlyDVAVB6lQNKD3Cg9IAESg9woPQAB0oPSA5c6QlJ1di/uJtPFnFJVbrSe6GuDDGpF0otWNf45VN6L9TlfnZWu48EwDL4R3FVei9e3Jts6khrMrHOgNKrHFB6gAOlByRQeoADpQc4UHpAcsBKL3utj+mwo+9+VWD4i13pQenlEWN5lZ68T8zB3L4Ut80Pzav0sgsplycHHyi9ygGlBzhQekACpQc4UHqAA6UHJAer9DSh5DS30gpRTl6Unjamp/QvW3VafqV3b7KJnRYjeStDjefWbG/Io/Towr56nb5ZdaWnZp8/faqvnwwy1Vd6uX0St0/3XaZWg4OiukqPWUGeHMatRFyQ24e5VJeqK706KnJri+orPZjC4aS6So9bgXu5z8+LC9TsPsylqviq9LLbHy8RZqdGRkYurj4jyXk/w37QLRMy921Jq+kkh2mRDpCrHadD5lN62go/pStd2jq9F19Ot9KTSs8MH20kDRkHI86n9Ihl12vh503pMZ+o3J1q6/SX1BnraE+8KzmQ6mxoiCQGZ9ad3OrsLE4kY9FYcmBqamok1R5pOT19fdPhwsDgTekJz7HM42zftX9Td++kz3TFj6YGki0NDbHkhNH3kAa5aGawMxpNpManpsYHjrVEOkdn7zpcCA4Eb0rP5kP42Dv/LE7xDCiQh2k+TEQiLcmJdHo81d7Q0Dm6sG2YCb+3nj4db04MpudZ2X/m6NFkIkKNTJwH1cCb0kORGzw8Kj2YQuDw1owvuYKgjYnTsUikczCdnho4Fm0gVvDHb/g5ivpoeTTRHE9OzJIKYj599uTRk8faFGpkoHr4rPR+lx4fINU8Ifba+f5Y5+jcxg7R8Tu3071RhfrWNJYXcinc0ZnH4pAX3JQeNUDqQzPcMjhnV5kEd6WX27xEBSIJL93gIQ/5lF4d43VML7e/8/sROpTaOrmQPn48vSm0NfNvY3SPw2G+fMInf2UQH+qjhb6I0ja8YihpgoXXMT01+3zrF0epsfbNXhvuHF7WLPvxDD0aGb5pWseqbl/uDisvv/FHQ4bdW5/sUiInLt/DrpaHAc9jern9rV+nSIYKhf5i5PeG/is1+/Vv+8nx8Mmfb+zw49xdVuvruhnsLZNLlK6ffMmV3IPLXUrr5D1DKanuzqUUKL0q43VMD0Vu0PA8pgdTCBiex/RKqCBYOyGk9MxKM1C3L5FGcaR/eZf9zN4cjiipBaP8z62fb2XdCaB6VGD2plA/jalfm3xp7q0MUQlomKipySTXJXbFIQRb0/HX2OghZSAZZ8MXL/Ve+uif990eLm586cw7dCRSY3Yi2RIOtyQnFh3loRkoPUe8Kj0KSxVFCQ+tGGOfp1XXZcMOhbSNSYqYX1lrFbaiU2+KBg2vSo/CzVVRukxj4/xo4/BNPcJo8UxyxhufWnMAG+qWpTg4SMqavcnnLCgn58wpSWwhPHxTS3XuLksxZ0XeNSDu3L4UDx0ZWjFnNTpjHkqvupQzexNFbpAoa/YmTCFAlNWML6qCUDNjrFFvnmvHuwZa31wnNsCGc2xz8chToPSqS+WUnl2+7c2dpCfkXE1xoU9Kzz6mRzfG640qSrQ37Tg0J25sGvhHIfIIs1Op9nAo3D44U2A0j6N9ApSeibKVXugv3vhU/Obwo4bSQfjy6fmVXXPQFZ0OZVRAKF/pWSNNHDW0zXkpb00DBl++yktxcKCUt05PZCBzJUwSXj/AK+yQMnxTHNCg8k5YEfu3seeSubR8tvTajz8R/4OqULbSQ5EbEMpXejCFYFBWM76ICkJMBzJ3AVD4bL2mNz79N/Fv69CieQu1L3722hXLTaCiVFPpiUJAnio4e5Mv8rdhWS/HiyE3ucgmG5GSx2GhnrjRptLE6KNtuoIDUHqOlK/0rIWHta4RpuQoRjRnOk71UO3jw5iepeluU3r54k9EPCvFwYFSpkcWIeQMop0ciRhaaJkxet5ej794drWH3sgyI+vbp4Qj8eTAeHp+deOJuXwG1aB8pYciNxj4oPRgCoGgPKVXuILg9YBDV6CoOliLgk8Popc1RBOpkanZJQePHaDiVFXpic5gqYs0nfTS+XX228oX77O5mKkEcyRBCbenRkauGFeFaMWQm9KTHQ92NSZudFBpmiS178FnAUrPkfKVnnXyl7WuERGvHzCS92StU77Ss8aLiC49ykXGsKYBJ+9JUEXKVHra0G3j0Aov5bLX+kyztkRKRxIDrBi2Qn1uUfbW2SJsA+H2UScPP6CClK/0UOQGAx+UHkwhEJSp9ApWECKllbZTokqw8P4X7DLqkaVda8Ez6DQ7Jw8/oHJUV+mJU3K/Am5JoVDXu1+x325oystRUIkGiavS0zqZQrELm+IIR9zo9FARULGXnjvadVB6JqD0KgeUHuCUrfREJ5iYaUV+vPSmsctNpHTB7i4K9feTWZqdGkjGqPc+YmRvfAq/PVUESg9woPQAp2ylV6CCECndNHlPHMhHbn9nY3U+Pa6N2zis8QQVpLpKT8wH0mf67i2kWLugkNQTjQ5vSk8EyOZZIM9DtVsKKbhir6szKq/0xCRypX/ZQXDcHGbn+q4Fsa1ZBaUnOmBe/onmXdnAw8td9Bzq8YOnfKWnZSM6Qce8AoMi7CJvUt/9ceIHZqet3AGfW9YEFaLySq9+i9zaogpKD6ZQE5Sv9PJXENpe1VZzMfLsn8688p5lFRTz4e3SvgAVoqpKT7QgTU65xTqPI2cW843m8qLGm9LTBgQtrl7zPlRTcIUG9bTroPRMVF7pvciuDLFJ5A7NUJ4oQa1qqqD08sSgKNydoh1UGR+UnrYWo7H/XH/Eltzc9aaz34Xl77P9lEi+NDlt5bBZ+vnqf+A3lVd69Vvk1hZVUHowhZrAB6WXv4IQrjcdF+1/+Xbi7Mq/MXOwr/RmLjrQiKgmlVN6ZxYtC/OFzUSGVsyCSzhAaexfdPV2qc2/9KD0xNNDStclbX8YDXGj00PFWlOjs5i7P078+K74XyK+FUrPTBWUnpay1n3gXqj3JltDoXDftYDOA6+G0nuhbqepE22bTyI2Bq+8PG1eKQsOBD+Unj6D3jwxh8PNwD4Tk26ZxK2I5kv7PByq9FCPV5UqKL26LXJri2ooPZhCLeCH0stfQQgzsNcAe8tCGLLGhb0CIUoPnQFVpXJKzyzd1N1lahLhbrkfp5G9tQm6ZNPmrZtBmxvhtvY20uTIN/xmU5Z0m4XFYXpbKNw+ccv2YM3150vjd+ztVs2NixSQ5IBl7Jqgbl5gLmacn1G/eFN61NWqtmNnY+qXGztPn2dVdnTn9nmWyErPjzJb7ChDfbTQH1XC3W/eEC58c09uT3eHlYZe43auAcOb0lOzz2Ushjpev7HFXNjSozLKW1+bJ1EuHdvurdOojPbPfs5zDslNczS22980bqYODg5/lJ4o6uyFG4eZASm3zXksom2YzJReuKH7jT/IHJfbfLcn0jC4jGq8mnhTeihyg4dHpQdTCBz+KL0CFQQ3A2tDoaX9Dd5MYM3zcLilb3ZTazaou7fOtYbb30ZPYDWp4JjeLxZHO2O90/NLS/PTp+lm5KfTt90dcKu7n8+NdjYo1L3m1OwqKWieshWcg53R2OmZP2XVvbWxNuOOzw+vnGpubo7y9f8UpSFKDkjoGebYdWpxy7wvwyfj9Lz050lgt54ybfDBDZic67jw2fPn9+f62oeWhVjkbza9mxKOsKPmx9Qn3pSecLVqgLr3cz4qoXYzlUo0x7u6O2LN8eTEnChwgoo3pfds9aKIPcn7X7gc1cnt3EifTcZjHd1d8ebmxGBaq9TBIcAnpUf3Oc2//ZUwA5LHjnfFSRYz7I1098fxwWt7uZ3FiWRX13FCVxxmchB4U3oocoOHR6UHUwgcPim9whWEZgakoUDsIGHcjPrZP51J/ORebvfOzODRjm5SQXR3fAdmcgBUeJ0eGzSgyJ6gAuT2tzJL8+lxWqaMp+eXMhaVVlXU7P0MD8vUHHaJKgFvSg8UgzelB4KHT0ova/GdDWqRcmZvgiBR1uxNECB8UnqoIIJAVT2ygDoBSq9yQOkBjlelR2dk6T1vNt/ZoBaB0gMcKD3A8dqMRwURQKD0gP9A6VUOKD3A8ab0NL/Z3L2CmhmLYmOjAAClBzhQeoDjrRmPCiKQVEDpMRfbUHr1DJRe5YDSAxxvSo/tk6Fwjyl7K0PRl3+ClfEBAEoPcKD0AMdbMx4VRCDxVekxVyXSTwnzUDL+iTgH6ggovcoBpQc4Xmdv7q2nz3znO8nk0dh3BhfgJi8YQOkBDpQe4HgdsEEFEUB8VXrS/4pOsZ5YQJCA0qscUHqA45NHFhAEoPQAB0oPcMqamgeCRQVmb4K6B0qvckDpAQ6UHpBA6QEOlB7goBkPJFB6wH+g9CoHlB7gQOkBCZQe4EDpAQ6a8UACpQf8B0qvckDpAQ6UHpBA6QEOlB7goBkPJM5K79tvvyWtye9+97vkNACl8p/+03/6z//5P4sfwFdIxHZ1dYkfoI4h5TMppf/Lf/kv4jeoY0iRm0gkxA9QxxAzIMYgfoA6hlQNaMYDDmk0TkxMcH1nUnrEPvr7+/8WgNLp6en5m7/5G/ED+AqJ2O9973viB6hjSPlMSunBwUHxG9QxpMhNpVLiB6hjiBkQYxA/QB1DqgY04wGHNBrfeustru8wexP4A2ZvVg4SsZi9CQiYvQkkmL0JOJi9CThoxgPJX2GdHvAdKL3KAaUHOFB6QAKlBzhQeoCDZjyQQOkB/4HSqxxQeoADpQckUHqAA6UHOGjGA0lllJ66+/ncRDIei8WaY/F4LJGamtvcI8f3rvW1T3/JrzkYvvlsaWlpPj0+QvjHu/8mjpZKdvtj8hidj7ez4ow7uZ2MuJrz+z/tkqPWJ+nc/rNL6NgnOMGfWDT81bNTNCp+uPRQHPUFKL3KAaUHOFB6QAKlBzhBU3qkMbm6lNnJiZ8l8PDKqebm5kiYlJKhVr3d+ck4ORptUOjhvmte24A1AJQekFRA6e2tT3eHw93Td3ZVfkDNfn07faKl+83JVKMxxx0ERCbNTp1qKzOXM5E0nz6biNDnEDrSD8QpN76cbuWXKg2dg+l5TR1an0TOpqZmqW777Bt+ow2m9ORHhELhluRZ+sD8enNvZTiqhMLdP7mnXUReLV/sc6pA6VUOKD3AgdIDEig9wAmW0lMzY6yFonRdLtTEcoK0PX+dog0lcwsnt3/7PGuPQemB+sB3pbe3QDJW6+Q9ofIk6qPZHnuOOxjU5X5/cvmDdMdfvPQS+6w31/M9TF079/LJkx30rc4RQJ5ET4ZSC4VHBwUrQ+yOpsl74kA+/u1aH7s69NKb6+IQZ/tSnByF0qsZoPQAB0oPSKD0AKcmlR5p/7g0x+5OcKXX/Z7HaUe8aWVr4fDmE5QeqA/8Vnps6KrrsmOmfDxz9HAoPd9yOSlEWifT5xrJw/JKPXVlqCu9wsVcfqVXQpiE0isyQtXtq6fjzfHRFTqL1oBLOVgeUHqVA0oPcKD0gARKD3BqUenRvne3pg+bvbnKVv94AkoPSg/4rfQeXu4iN7oNTGUXUsFTetNf8omZjUMrbsNx2Wt9XekHQsw5R0DFlZ4bUHo1BpQe4EDpAQmUHuDUoNJT1841Vkx0QelB6QG/lR7PVa6ihwhBnzWFN/xVemINnnJyztkjyuOZHnpKiDnnCBAnofRAAaD0AAdKD0ig9ACn9pTe46t0YQ+Unt9A6QGJ37M3M2N0KmOo4/U/OjoUefDhO6vPxP+eye0/JTzPWpcCFo/PSo/PS3Xzy/Ll9MtDKySsUHoF4Om6s7Eqncvk9re4w9LM1r6r7y01ez/DvamOp+cz98swi5rAk9LjUWtARqeafS4OUYyxTCOfeWYl0bq68cQa/zTahefW8fT1jSfZR8tT738hToIq4FXpIZ8FEG9KD6YQPLwpPVEPsMTnplCMJeSebKxqdYCTIXD7Mj6U3EAfqbnSJL9n+6PMt9zJ2R16MUVr29kDZaLQ2znFKT0vNeRhx1sz3vy9BL2lbYokYwNczX69cZ0VCFOzS052QFJKeLyfmiXnd9dnfBACoAT8VnrqvUnhYzLcPkiyn3shwV3gch+4rdP3du/MDB6NxZj/24ZIYjB9w+5XN7ezOJpojicHxqemxlPt4XDL6ek/PDJZFfOgqz30S/XRMrkh1tZ0JNw+uqJrT6vSE2HROPbOP4sTBdCUHp2f6eZu5t5kF3eCcnBKzxzV5su1cpAkQPp0VzyeSKUSkQhNAEvMloI3pffF+6mEcH5MQrm3NpFIjM6ubuxs3Zg+EQkp0WHrGsMX6u6tifZw5MT09Y2d/f39p1uLE+QJMdtixCDhSel98f5AMsajlvp3jSV/pu0w8uyfznA31CTHRuLjn7DDPF6VtuE5ouCyz7cWh9uUcPubf5TRSj25Rvt+Lsp00iaYY9V1+X0noHi8Kj3kswDiTenBFIKHN6X3bPWHybhmCufnZnpj3EX40vx0b1RRGjonbmm+1AXEWjpjvdQOnu/v8zpCaTh+edt4lcm+7m1fPt75avoXP/jOEVLZDN9UyWna9h95hTUZW19hPyjapk+mQJkbLsW8nVOc0iuxhqwJvDXjn61eJE1A8cXkkxOvyS247v5YiyKlIXrqCj+c25whFkJKhBv3s9n9ndvpExGlofdXsvWobl/ubuh64zrvLKaO+Ke7ydNtCQIqit9KjyZsuktkGA4xikRqPH39c0tJQTsPdn7bT8cAG6PRyMlZTdqpu3cmySOUaP8148AgHeM/kvzZ54bm5lAkFIqc+MA0kpbb37nxOi06Wt/4yXBL37W9FzeHWXhe/onUb1al9yJ3Z7yJHCFlxZs3torvt5FKj880J++0+mWhTjeFt8uDU3o8qp28DWsvboxEW4aXZQKpu8skaklL36COS8Gb0mM8u9pDwtOU6uvtX9ClJh80VYZvit8Mlv5Kz6/MYdxbJiYVpukeTDwpPYawUdsyWvXW8BGla1puvyHy1fBNw2Vsgo0W17RfQ+m7Zn4KncIMpVdNypq9iXwWLMqYvQlTCBTlzN7knritNb9o0plTmM3eCre8lZEWw9yuh5TUgsUOqHsG0vA4ebK7jzbo+LQvoy9NW3PMzL1J2jYzN1yKf3uRSo9RbA1ZI5TTjBfT1Gye3b96tysUYenI4KZh3gKDb4zx0hufsrSh7QJr5NMGRFHtVuAb/is9gvpoeSLZovUKSIh0+5V1CF4oHNu8R5FvjblLKBuDYNNqI2ujk1/a2BhhsyZfZDNvJZqbT3/wmJ8kWHN5bvNSV0P7m3+QUqdISOilwfICzLJEkfti4f+LT3W2cHGyUkqP4lziiRcfnTVX3iQLXyInPBZvZSg97bMsFsGPGgPPLaTpjU9tEcZqBltzJCh4V3paYlsXlJJc1PrGp1oyZ1eGqCFbc6S6MkSim+/RwRxf9/zKsiqVRDuUXjUpb50e8lmgKGedHkwhSJSj9ERrwO5ST9Qchha9vf9c273K5nrdYl+5nczS0l3DjCF+3rXycGq4lPB2p9sJzi8tpoasGcpqxot2gGVXLqKFI4ZszqPL5peDHeaR+C8fnAiF/uKNT8UZARH/tgQBFaUiSk9AJ3rPp8fl+D0l0r9sykPcVJxyuej60cuWvZXReHNz4ifGrfr4RS652NIfacCYy9XdW2Ptkf6FUlUehYRef7eDXxbhi4UjPtXZwsXJA1N6Du/lXb2e9rEpX+lZg2k7ymPbOb74xdadAwNCOUpPm2VsatORmDT85qnusEsjNxRWtQrLiPZO39jSZ+uru59voqVXRfxQeshnAaF8pQdTCAY+KD2HJBZjPIY21d6mvrpT4LI5LzcO941/+XlHu6I4NlyKf7tzu8ftpYVryNqhzGY8z+8KHy7hkNiJGGQdb347dAywyFX6l0nk8mvC7aNzGzv6ZLnczuf2dZegglRS6RlQs/fn+tgOmJYJju5Fi9Zt47g5H181upX5xwH7wD6B52KXbf0IMpfnNtPd4VDnL3bEiRIhoTe8WxSG+muJ0DNkE/GptsAyxEn34o5+snlWKf8Il+cxcvvGVbPOJV6eBBD52D0aXSlf6VkLD35UDzzfziN/ZBo7/IJDWUpPm5+iN8loJ52xc0JYVfzsB0tmPhxPkOM8ws0ztJWGaDw5sWhfVwsqih9KD/ksIJSv9GAKwaAySk/MobQlP2mWsP78kZERrUvfZiHO9qXDz7s2fXigHO2umLe73O720oI1ZO1QbjNeTJnTP56ObRqa78Jajpy6KNoIknfOvERO8Mjli0E0wpHmxODMHS/jKqAcfFZ66qO7t//skmFfPLjMmoem2iBP0SJOGSeLqLufz00k45GGhljyLF0vnFfpuRYd4vzRvv6WlhbqSaIxteBpNIIE0fhuS3+Q5nRTIL7HscTSTuYJM9Fd5pP8I1yeR3l2tcd4kr/Cerl4cZEJUCTlKz1rePhRPfDFRKZ7zNQy5Sk9a0+dpZNOWpXBEZoJ2XWg7t6ZOUuyomGOdrjbaUE8qBR+KD3ks4BQvtKDKQSDCik9cSo8uKKd21tPn24JM9d71ze+phUDv8ZmBM72pVPgvPNTi357yYEqUEPWDmUP2NgatOaxTWESTeMfi9aBBTkykdtZnDJN7XN09gQqic9Kj6R9niEgvjTXlLuEseQpWuSg/97aWBsxlXB3elOOHpScizn8PGuZiuEJbwvSyOtN7+aLmfiwpar7YuGI77EFliFOuoeZxJ1l+gP/CJfnUe5NNhn70ZzjSry4mAQonqopPeewiXXlGNNzRPTUsdn2lk46Qr6RdA01u28YK87t72xcp676aC4yrswGlaWKSq8O81mNUTWlB1M45FRnTE+M1ET6DE58xO3WJoaLfelYzz9bvWjcr8fhqaW8vfRA5a8ha4fyp+ZpA5zUu4p9bFOM8ruvkqLk9g1T0dgY7Owwbcdz76ugWviv9BqHb7rmC5bpTIbBs6FThhMLbDXPD3x3zVDrpHGZnikXG+Yqlla0OHh/KRLyenMJInJG49DKNwZfLBzxqbYihyFOuoaZakhL65t/hMvzCOSRDlFtvVy82Om9otFvc71RmMorPa3icZoSIizHw1hkLVC20tN66l56c91hAYI4aVtDzRBZjCSGXQnyXOSe54DfVEPp1W8+qzEqr/RgCrVBRdfpidad3s4x2QK3EG4yX7x/Udsxzdm+dKznSSiMF9saLqW93bndkzdQeWvI2qF8pScHOE/O/dlhbJOfdG4hitVGJPbtSpDvxWZLElBB/Fd6dk88EjbkZfaUybOhQ4YTmU27WnQfWPsMjbXRypA0nVKLFq2LyOIupiAk9FZzFTmj52TPSYv9i091tm9x0i3MrBltOcc/wi2/sMxkOsdfYb3cNQHEGbtj0yKogtIT0t+0XpjD64HADi+Vr/S0mlKJRFrteVXsiKk5STZCbJspPJoYNmetzF74ImxQFaqi9Oo2n9UYVVB6MIWaoCJKTzRrtBQW11kqATFni5tMyc0xvfOQNBON9Qh/mcEQS3u77XZO3kDlrSFrBj+UnibxI5GIg+QVgyQOTndJ+z1CewVo7P/F63+0lhg09jEBoJpUQOnRQXXTRngazCwsLUiRaTsmzeNp3Me/YQcXx+Xg6vp51svIJpQYHbcWV7QYz4us7RJyF+hNtm5MkTOsjnrlp9qKHIY46RhmdfsqnRtnnTbDP8L5eWKmq6n7lb/CerlLAvA9krxuklSG0hPltbWbiH+sOQq4Pm89v250BUI3zFBKTMeawgelJzvjnOeliD1yXp60RWyU77HHEsNqGtQrc2PftdK6SkAZlKX0kM+CRRlKD6YQKHxQesrL08apU2KFiyGFtX54o+gnV3U3hGnDn47hkCdp0k0M+DqNBXOEL2ftYaRyMtmizadmSW8Xt1tbT4UClbeGrBF8UXoytp290vASIdxn8l1P92OO8l4BZlEWe+JHO6a/rN2orT0qofRe6j7eFj0xfX3T2BJk1YEtxfkNxFLCLSfSwiGPmv3TDFE2pn32NYsipY02Mzu3M9fX0pe+RLsZO87f3vp1qunN9Re5/adPxc7p5NqfZ7YMTiQoxvMdr98gp9ks4tz+ZxdYQOimfz9f5St83VGzz+napF7qzUVpezU9nzF4m2cVp6EUIhc/ffp068YbtLSk3l9+SkMlgiVOZn7E5qaSkuW16/SkgPqVGuwUC1m1LhD6CU93NuZfYx8RUnp+uqF7z9jZWJ2VexlqPWP0JTsbP2WvaEz9klyuT52mCUAeMTvUfiK9LhIs9+QjIhQtCVAK3pTeF++PjKTahYuPcEtyYITOwKBHB47RmKZHI4kUOyrYW0/3RsMNnaOzmS326cei4Wjv9B8D3ObwRenx/gj3eSnqo+XR9rDCI5aYIYnYWOeotpsuaQMqXcOjx6PH36Q5iNrp7HBbQ/ebQY73w4dXpYd8FkC8KT2YQvDwQekdHRrtjPWmb5N2xc7tmVdJW8CWwntrE9Ruwt2sCtjZmBtNJEZXHvFOwuixVKKdTpCyW5LRlCTq9uXuMG16zW5s3Hiju1tbR/Ns9eLIgNaaYeYp1u8V93b77ezlzOhFq4pUcSRMxlWBGgVqyFrAH6XHR0HcZ+rxEkEJt5yevr6xQ9rFpMka670skpBaVKRvtD8WG5xl7VS2qD/qsLU2qCj+Kz220JJ65htMRCKRZpq5qdudhsgr0w6+VUXR0ndtb2dx4uTR7uPHuzti8eTE3Of2a3M7N9Jnk/HmeBe96ugo9+tOfTCRY6en/0BlCc3FFkxFi/08y+XWw07FkQFahFgw3KHeuzL+oV5COFxM4Te4nHRCK44cPtEFLUz2l+hFGzn34xW6p3yucAIUjTelxySsCaqGnY8aofs2Cu++qxtPjL3NQcQfpUdK74Kuo9Xs1xurTvG6t7n6Ga32c0+080uZ+/n7RoD/eFV6yGcBxJvSgykED59mb+qFu2sKGyqIpYy2yY66+/nq0qpoPdgtyWZKGvJ98kn0BbQf3IjJu0eht9tvZy+3B8rwVEkxNeQhxyelR0VvwbFNQ4lgaguoj+6yXQ/V7H2UGAeJz0rvRS5rzsg8V7nlblPRAgKDN6UHisEXpUdn0dfwAgRAKW+dHggU5azTA0GiMh5Z6o0g1JA+Kb0va9krDRD4rfRKBUVLEIHSqxyelJ66/ZvxkZG318T03GI66cBhB0oPSKD0AAdKzwtBrCE9NuP31t4eGRn/jdgbNwBjm4AApQf8B0qvcnhSep+MssUKJz74F/Jjb7m/Fa5Tah8oPSCB0gMcKD0vBLGG9NaMf/xeN42JyMRd8oO6RoTrlCBwcEqPTaLe+S318BgKHf0F9ezgNF0a1CBQepXDk9LL3hyOhDon7j7Jfn17srt9WPOtAmoYKD0ggdIDHG9Kj63lH0hQr3ehULg9ZVrMXwcEsYb02Ix/cLlLean3g/vZ/a25vvYTmm8VUNMcnNJ7eOVUs4WzK+g7CARQepXDk9IjUH9G4yMjU7N3PTpUBYcMKD0ggdIDHG9KL7v9sXCYIbn95/pqjgWuhvTcjFd3P5+bGhkZT5v954Ma5qBnb4IgAqVXObwqPRA0oPSABEoPcMqZvQmCBJrxQAKlB/wHSq9yQOkBDpQekEDpAQ6UHuCgGQ8kUHrAf6D0KgeUHuBA6QEJlB7gQOkBDprxQOKs9L799lvSmnz//fdJYwKAUkkmkyMjI+IH8BUSsWfOnBE/QB1DymdSSv/ud78Tv0EdQ4rct956S/wAdQwxA2IM4geoY0jVgGY84JBG48TEBNd31jE9AAAAAAAAAAA1Csb0gM9gTK9yYEwPcDCmByQY0wMcjOkBDsb0gCTfmB4m+AJvkPIF6/QqBNbpAQ4pvkkpjXV6gIB1eoCDdXqAg2Y8kMAjC/AfKL3KAaUHOFB6QAKlBzhQeoCDZjyQBEfp5faf7mysLi0tZbaePs9ic+iDBEqvckDpAQ6UHpBA6QEOlJ6Gmn3+9OnTrQzdBn5V3wOctBSfirbiUlA2SXcESg9I/FV6n4w3O3HsnX9mpx9eOSWOmNHO69DMuLWxsVOMZsvtLE4kW8LhluTZ9DzJvLNTqc6GcEPsdPrOLgTfgQClVzmg9AAHSg9IoPQAJ2BKT92+ejrenJi4VXpj7tnqxYFkrEEhpWQofmlbHH3xxfsjqUQkTI+G+peh9EA9UIExvdz+Zxc6WDZSen65tZ8ThzXU7Ne/7W9k55tGfv+1VckR3TbaHmlJDowQiGRTQuGW0zOb1qdw1N1bE+3hULj7zT9Y+mZyO3N9kZDScDztciuoIFB6lQNKD3Cg9IAESg9walLpZbc/dh5e+9cP+1hbMdT0D/fEoRK5N9lEbjcoPUZ2IUWfCqUH6oPKzN5cGaK5KNQ6/aU4YOZBmivBvmv/Jo4I1O10V7TvV9tZ8Zsots1LXbRPJtx3TY6+a+ytDEWInOyavqdfb0Scf3n6XoBz86EESq9yQOkBDpQekEDpAU5NKj0ix1xE197KcFQhrbz0tsdWHG9tWpWeaKNC6YH64FApPXK89Y1PrbLt8cxRerHS86tvxBEKFYVEAipdlx+IIw6omTGi9RxlIqggUHqVA0oPcKD0gARKD3BqUek9u9pTMdEFpQelBw6V0qOHw5HmV96zaDdaDFBe/om+nO/x1R461Nc4tOI8nqchZGJ4+GaAc/ShA0qvckDpAQ6UHpBA6QFODSo91kqD0vMbKD0gOUxKT9xlv007oV+fGWMr/RqHb1rmf9rQZGLX5YfiCKg4UHqVA0oPcKD0gARKD3BqTempu4vMbwOUnt9A6QHJYVJ62cxbnQ0NLacvW9fdicfpuk4IvVDPr3b5gTzwBbmQetXEm9L74n3qhWcgGW/m47q5ncWp1NGO7q54cyI1Nfe5o/Ot3M6N9GCiubk5kUjEYrHE4Mxtm5efQOFJ6fGoNXBFW7v6bPWiOESRh3nkJ6LRzmTyO7FYPDmxeN8YrerunZnBRLwrRT0nnTl5NDWRfrM7HOh689DhVekhnwUQb0oPphA8vCk9UQ+kaLoSU1B3P58j5T/5QZKZWMLGEwfHdsRaJljtkEjEo9EoNQTLZdy+tIeKG+LxWGJ0cYdc+c1ns9RtOmufhVpfodcyfrzymN1uCRQ7Jin8dk5xSq/0GvLw460Zb/5egpYalkjSD9PGwNlkLBpLJrUCwZQSItl7zpC7BlJHT76Wnu6PdlgTBFSUw+WRxRmh1ZSTc0LXafcXMaRHDFcM6in9y0W9DZSPN6WX29/KzE/2UBEfv3RnZai9b45WB7QkmUspoVBkaMW83FLdvnoiEmo9pztgzj35aKxNiWg3BhFPSi+3v7NxfZpEFiU+8v/pFbf66O7P++jxxs6xWbHpEI/Xxp53Nb+1zC+SEh1eFhFNfR019i8bUmNv/TzJk1B61cSr0kM+CyDelB5MIXh4U3pq9uuN1fk3mPu7pp4TbW1DomuPNOPTtOKInDB7QM/eHI4c6b0qU537zlO6JtcNFmO0rwuL6a6uC3/KrvFu+qMzj8npp5T5M/RA6v3H7BdB21uLB+p11tozS7Wi3s4pTumVVkPWBt6a8Wr2+VZmdriNWkLoyMmLGb2Ld2/zOreQ1r70vPCVurdGsr+hRFB3l4cioXC35vSeOdQgsk57Bo3QuVSjPUFARamo0lPaTnH5b+FMJ8vrxSk9de0cu9rgq0U83lVJmtGuNi7zAxXFm9JjqMv9JK0aI5HUnKFM5UdDJ43HuGtVe4HBJv1HhjRVEjQ8KT2OWLR69N2vzFGzdu5I0/l17RitRK1x/UK9N9lKYvXcGi2+H17uCh0Z+YP5IdRtNZReNSlr9ibyWbAoY/YmTCFQlDN7U/ShN43f0XQOQ92+RI+bUlg0q6hg0/hymtQRochYxmIG7NKm1lZuX48/OBEmbbdJfXCMP8q18nCSaiW8vTilxymuhqwVymnGi2Z34/AtkyWwGDKUCQ8uU+VniZu9hRRR3T0zLBJvDiuhxC8f8TMa9yab7KUIqCQVVXpN4x+LThozd38UZ+eLUHqijDFvpSAeX6LSK+5q4ANlKD2RXEeGb5nKVX7UUDoIt6rGol6Dj+IKVRI4ylB6WvFtrGX5wdSCzF28wrTXu2xkXelfJpHK/m19/Q/mht3D97qHV8T/oAqUt04P+SxQlLNOD6YQJHxQenbRpa4M0bEcw0QO3sY3u8SjrXpXUeUu5fj5kpReCW8vRekVVUPWDOU147nqVVILhq4eerBpUm5smL3W5xjlfLNCNpDH/lV6fmkZ8f9ktDttmY0LKsrhnr3Jt1JQut74o3GDBblMTxm+KY7kgQ5AMIpZ1Ad8oXyl12EpB/hRvUgRNc+Rc2vigBFuH1yVBI5ylJ6m44w9daS0Jj9lvSamSlvjX8tHLAVEky+kNHSmxtPzqxs72nQbUEX8UHrIZwGhfKUHUwgGFVF62hCvZaqHidw+78K3Nfyd7UuHny9J6dlxfXtJSq+IGrJ2KLMZL3SccYCTRE7Xu1+JH9ru86EhWwcvF90scoWX/FC4JTkwNbuU2Xq6jzLiADjESk+b8Dttm3qtWVhJHlma3vgU6/SqRPlKz1oC86N6cS1MyLn4z3uy1ilP6dl66syddDLrNsS6j1voijc3N5+6wvwaqdtXe6OsANcIt/NF9qBq+KH0kM8CQvlKD6YQDCqj9GQKX9jUz6nZ+zfS46lENBKJJQe0ZTk2I3C2L50C5/mb7aZV5Ntdbnd9aaEasnYotxlvHeC0jm0Kk1CiHaKJIOnuiJHGwvgn7LK9tYl24XWHo0R703cw07u6HFqlR5cEKNH+X207DZrzzEhMpvCgnuaQpeDOe8A/oPQqR5lKz9JTZ+6kI4is614tS9hy+dmpEVLVNnDRp03NB1UBSg9IoPQAp7JK76Xz6/y3+mihn3b2RfrmpMsOfo3NCJztS6fAeaenlvD2kgNVoIasHcptxlsGOG1jm8Ikisn0zDVPenwgGY8I0Yep3tXlcCq9vfXJrrBlzuY3ny19Jn+LzFhY6mlCr/XNdYzoVY3KKz2Rro3n1uwltTa7N89EkxqmXKWn9dTRktZhAYIYAs9bej/4cOo3Bl9aBHX3FvXA5ZIeoCJUQ+nVbz6rMSqv9GAKtUGFlB6fkKet0hRuu8wOmEsXVRzrefIY48X2p5b09tIDlb+GrB3KV3raACftwrWPbWpz69xTllyTeeftNXOhkNucYT5OnRb8gkpxCJUeXZzX0P0Ty6Z6xKqMjxOeWgxbLzjBPQaSPNu/jDV6VaTySu/Fsw9OsI43V/cAoZ6rz8SBQFG20tN66pTU7Gwfqc0spbQ46bTiRr13hW2iQxLDwRMZ04j5Cn3gL9VQevWbz2qMyis9mEJtUBmPLFz8aIkv0jt2YZOd1TD6RFkZkqbjbF861vOkJjFebJNqpb29dKVXoIasGXxQetqYSuvkryZbbTlfnDTtoaDxeOXHdO9BGvv2/h+mEW1JAirIYVN66qOFvvYTtr3TmeNW8+XcW0soFO675tKPqF0R6btmcugCKk0VlJ6WuvZShndDOZY+QcAHpSdnP4ec5qXwDlOHmZgkD/JqjyYG7fAUxwU0V8u5PaDyVEXp1W0+qzGqoPRgCjWBD0rv5K8tq6iY33xDCovrLE1/cZSZjLrcL03H2b50+ICwvJzcaqpH+GMNhlja2223c/IHKm8NWSv4ofSkxrf55mVwH6j2xgAdY2HpQ2PfoS1BYx8TAKpJRZSe5qfpL974VBwxI/Kk3aEK36/HBbtuzG2mu8OkUfryG3+02QyVjLTBGu1f4Ds8gurhXenl1s+zUdjW83cM7hzV3V+fpEcbh39ndNzENu1U2sY+0nc55bMIW89ZJgwECD+UntYZ5zIvhW+PbI/YNhGtvJKMDC3K0yQt/vh6q2N3P6gU5Sg95LOA4V3pwRSChQ9Kj25BrrvMoGtpSG1hSmHewg91XJC7qdO9y7v6+qgpEaGYWzvXJJSB+tW7TDV1XPjMxeuitn0HXxhHOxTHMvwMQc1+NEylRtP4bWmepbxd3N44/JHBul/k/vxzFqijP/+zc5jy15C1gS9KTxvgdPNKw3dOj5yY+ZOMXzo9s61nhvUKcItSui7pp0nbfLZHwUKP6uKv0vvi/ZGRkYFkTHhoCCkNzCnSxVU+qePZ6kVyPpXQFmWGwpFEihwR50X+dcMx06m7d9LUC2C4ZXB2Y4eWJHSL/xvT7Fj76Nwmqp8DwJvS+2S82QL19Oh8VIOk/8xgIhIhhkRX+zY0dA7OBNutky9Kj/XUOXbSaeR2FidIRm6gOTSViEY7Da41bw4rHZc2d5ZHE80s/5ILmuPJiWV0qVQVr0oP+SyAeFN6MIXg4cfszd/eXxxNxGnbbeBYNOyYwqKCICdJFUAMIcEqCOGUWYkem6K60G5JJlOSqI+WRzsblHBLMtkZPX5ZGxt+eOWUuEtDuHMs7u3229nL7YHSnmqkYA15+PFJ6bEBznxjm6JEaKCtfdL6j8ZOp6W5PLzc1di/vLOePh1n9kQTqzkxOGNzqA8qi79KL7cv9kY3o+22RUSYOGJGnHe5W8OlQ4iSe7JxnTn2YfmWtD6nZlc/R+VzYHgf0wOF8EfpkcK7Rl1HA43yZm+CQFHO7E0QJCrkkaXeCEAN6ZPSq2mvNEBQmXV6oL6B0qscvii9L2vXdTTQgNIDEig9wIHS84Mg1JD+NOOztbpxPDACpQf8B0qvcnhSeo+v9iihUGQswwrs7MpQU/8yOulqHCg9IIHSAxwoPS8EsYb01oznqyaVnqt8zT0xCZs3G1B7QOkB/4HSqxyelB7fJY8vgqZuj+A6JQBA6QEJlB7glKH01PXzbDfVM4vuK2UCShBrSG/NeLFLHosA6m23hreZADpQesB/oPQqhyel92JvbaK9/ZWpdPrssc7eGemyDNQwUHpAAqUHON6UnhjNM1JfI3sBrCE9NuOpX5v2xPfT6alUZ+fYLfi7CARQesB/oPQqhzelR2EOkfL4NQK1BZQekEDpAU45szfrnIDVkOU046l7RM2TIggAUHrAf6D0Kod3pQeCBZQekEDpAQ6UHuCgGQ8kUHrAf6D0KgeUHuBA6QEJlB7gQOkBDprxQAKlB/wHSq9yQOkBDpQekEDpAQ6UHuCgGQ8kzkrv22+//e53v9vf30+alQCUCrGqU6dOiR/AV0jEfu973xM/QB1DymdSSv+P//E/xG9Qx5AiN5VKiR+gjiFmQIxB/AB1DKka0IwHHNJofOutt7i+M43p/eVf/mVzc/N/AKB0mpqa/v2///fiB/AVErEkesUPUMeQ8pmU0uIHqG9Q5AIOKgggQTMecEiZ8D//5//k+g6zN4E/YPZm5SARi9mbgIDZm0BC6nLM3gQEzN4EHDTjgQTr9ID/QOlVDig9wIHSAxIoPcCB0gMcNOOBBEoP+A+UXuWA0gMcKD0ggdIDHCg9wEEzHkhqRenRjRyf7mysLhHuPqruho5sP82nWxn67tXNPXEUuAOlVzmg9AAHSg9IoPQAB0oPcKD0gORwKr29tYlEc/z0zGZOHHjxxfsjqUQkTEIVCvUvF1R66vbV0/HmxMStXR9E4bPViwPJWINC3x2/tC2OAneg9CoHlB7gQOkBCZQe4EDpAQ6UHpAcSqX3xVQrVVWhUO9v/p84xMgupOjRwkrvXz/sY/eHmv7hnjik881nngbm7k02kQdC6RUDlF7lgNIDHCg9IIHSAxwoPcCB0gOSQ6n01O3L3eFQKDK0YlFkK0MkWMWM6e2tDEeVkNKV3rZdSuSiJ7n2IN1B3g2lVwxQepUDSg9woPSABEoPcKD0AAdKD0hqyyNL0UovD5mxRii9CgOlVzmg9AAHSg9IoPQAB0oPcKD0gKTelJ66dq7Rm1yD0iseKL3KAaUHOFB6QAKlBzhQeoADpQck9aX0cpsXPMs1KL3iqZ7SU7NfM4esma2n+9J9j46afS4ctma2yHl19/O721lxrkYpS+kxF7ZaRHGfsk+fZ/NlJ3IR9zqb2cp/Iag25Sk9lvoySZlh6KbhTG6fZ6bVjZ38F4KqU47SgykEibKUHkwhQJTXjIcpBArflV5uZ3Ei+Z14z5mRkZGB1NGTr6Wn+6MdFn2k7t6ZOZuMNTREmpubY7HvJM/O3H4iTOOL98mdIwPJODn1g5vmtqVV6T1bvUgv1vjxymP9YCpBHvDKew/4ldnt36UHO7n/zFBjJw0d58o98ytccVN64luisWQyEYvFEoP6p2jwOInF4olEPBqNOlzCP1oGWURiPJYYXdyhVxoihX0SuWAqdbSjuyvenEhNzX3uh4tRH/Gi9B5eOSV8q3LCnb/YEqduDvN0Y7RdFIf31tO90XD02MTcxkZmfpr9//a6Hq97axPtLYmz6RtbpITa2bg+3RtrCIdap74Q52sUb0rv4ZVXhPGHQn0f/iuJu9OJ5MDU7Hx6sD2sNHROrNmdFNGLWiLtqanZ1UxmdX6a/Xjb4UJwIHhVep+My4xGcoP6aHk0kUiNp+dnJ45FlXDL6av2xc30os5Iy7Gz6flMJrM0y3/8xn4hOCC8KT2YQvDwqPRgCoHDazMephBA/FV66na6SyGyTk9f9dFcyjxdUn200B9VQpG+OaZhKLmNn3QeiQwtM72S29/KLP2U3ESwjt5ZlR5/OiWSmJgVG+2xYZ7516ku01/MOiiePr37ozg5Gvthhv5gFN334Kj09tbG2pRQ6zltNwd1d3koEgp3p/X9IbI3hyNHeq/qH7t5qYs6i5lcNzSZ6UfPT/bQb4lfWEx3dV34U3ZtjH3a0RkiX43nL91ZGWrXYk/dnUuRFrzdec2B4nlML7d+nrldtfpMVe9NtoaUtn/4VOti2lsh8RyKnFvTk29vgcSE0vnOffbr8dUepfHcmsl+Hs8crVelx8gt91O11/sPU729emmdvdZHjionPngmDjBYBDf2zn1liEFm3Ur01Q9phwo4aMoZ01O3L9HirPXc1PCxMV28fzlNs19k4q74zWCleqj1TUMviijGwu0Xi+0oA5XF+5geTCFYlDGmB1MIFOWM6cEUAoa/So8OviR++Uj8EtybbNL1EdU95NHxC5u6ATy83EUOhUI9V/W2plXTcWxH95b7Gxt7Lt2xj2k5D8GVMQXT4dYHl4mBh5rOrxvfzgVHz4zWROZh5oJNILLLWMYSanZpU2trao7mrMcfnAiTrDYps4q63E/ON0Yi/LyAHw2dNB47aDwrPa7QyOe0v80FmwYxIoNGY3FsEyd8I4zGwZX/xzyskrizqrpnV3vqWekJG7ZGHD+qvLr0r+KAlgrWRCBQsazLaXCQlDd7U5RLEXOlzY/KcXOCmhkjJTbPVSbYkudQ5Pur1hPgAChn9iZMIUiUNXsTphAgylF6MIWA4avSY81rpeeXcvyK88lod1pMohRNzdSCcbGUun35lUhDtPcDcRGFG1Repac+WuiLdJw3Do0ZcNZ0zkeLwnYrHwuxP4zv+idHNrkcbBxaMXwyn45ou1PkLetXS/j5I8O3TOf5UU/fVCnKUHqifDAXMORYxKBOuFI29QxwWFQ0fn+VSBYWxeH20cX72jAg5ZuVq6vWm2oMH5SeZZtKcbTvQ03piSRw2ozyxfYlOiruUK6DauOH0rOmMT9q6A5h0t5mMgzRx+TQHwCqTvlKD6YQDHxQejCFQOCH0oMpBAR/x/TEgEwo3ELXANndZPDdx03jWy5wg3JXemzaZOfP7rtoIjdN56PSE9u4h4ZWxAEJ13Gueu1Fbp9PInVReh2aLLbhfJ4fDYzS04ScQUwQTR0xSAsxBnzktetiBq5k9QcvkRNMsvAZBZxwpDmRGjl8yxk9Ub7SaxzLiN8cm9LL8HnDToW3VnpzOQ0OEj+UnrW3hB/VK/JnV3voAUfRL1R/qPOdHXEAHBjlKz2YQjDwQenBFAKBH0oPphAQ/PbIQt1gaKs5GUq0N61NrtTEkbsIknCDclZ6Zy7MnIgqtBnfet40NdhIaUrP4tpFwD28CKy3ivaxEu04bqG7I9bc3Dz+ibiQoGbv30iPpxLRSCSWHBgZOdNJm9IuSs89dvJFSoCUnugmknMMyc+IcYRPxHxj6qdLjnz2Db8ut7M4mjB5eSHG6LCauLYoX+kZOuQYIj51pcctynDASN6ToIr4ofSsyciP6hYibMNqMpy8J0FVKV/pwRSCgQ9KD6YQCPxQejCFgOC30qMw9yHp8YFkXGtmC88ZQv+Xq/RC1HnLHl/wp/lxscGNrFilJ0zSguk6663iloIKS3igoS5o5ERCl2A4f7ROvkgpGI5qUqbS0ybG8mH/L6dbzeP/IuatQ1NuqGynhdmpFO+CqPViB0oPcKD0gARKD3Cg9AAHSg9I/F2nl3nnbYsT9tzmzAmqyPiETTEtzIfZmwThHaixf9FJ63Ejs+of29GVoWIlkvXW4gYohQeaxv5lY7w4B87lo3XyRUqxn1EVylV62kqxxsGV/2teosfIN7tQ8PByV8S8lJg8dHexn9xY4+VOFZSemHrvGFHiYkzIOHiqofRERrRdx+AXYyLvYaDySg+mUBtUQenBFGqCaig9mEKN4KvSo61Auw9IJom4EOFuekJK/7J90uXjlR8b9rbjNpJX6ZHH8bVYStclfVMDDWcxZT1KwlasRLI9UAw8mTaV0NA+Roxixi5sihMco0cWg9Z0/midfJFS7GdUhbKVnrZYT+nq7orafJSKtHByC0IKngh1IkmvcFAqNK4cDtcSVVB6wrepg8sb0b+h9Fwt2FcDKk01lB7f34TkNYcBdL7q2u5CGBwAlVd6MIXaoApKD6ZQE1RD6cEUagTflZ5hfwENahyaANxj+6DZ5RG1F+NQHzeoAkqPIPzt27Ueb75a9Y9QXvIJ25fixW5P4PBA7lbTtKkbQ/8Y0Yi2DGKKo+xZ6nI/lJ4TYmDJ2XOT0Pit/2DerYUe5sKQRXFj72/MgmRv7mQocvZjc9lVY5Sj9PgKaevqaWGOpjKd51NrIc2H0SN92FDvMFCW0hOedazj4rwwMfUF8LxmE/d0g5uQ0jaF/ZIOBWUoPZhCoChH6cEUgkRZSg+mECx8V3pMdv1J92yvPpo1b2Gtbl/uDhMLGPvoiSaQ2I7MRvGX+/PPWTP/5Ky8hqB+9a796O6vk/RYKHJi5rPn8rVq9qNhOqjcNH7b6GSf6AfmHbRx+BZ9AlVkDuMWTmgPbBz+yPhAvnM6ebf+xXS+alvPjGmPhVDHBalE6Y6SXX19tB/k5K93c2vnmsSuCdrndVz4zHE7d21X8dbzdwxBUHd/fZIebRz+XdGbwFccP5QeHzO17ZknIfHcG1WUtldnbn+dVel2+XPD7S2v/ob3M1BTVNra29tfneNJQy64Pd3d0PZ9o5edWsSb0stuf7w0P80mUpO8kpiYZY5r6NGl2WFiwtSCOr+fnpfubIhh3ZpoD2vxm9vfIfHbpoTbzy5be3LAweBV6X3zmZ7oJH1Jon+8nWVHpYW0vjI1y45yeF4jZrO4tZ9Ts8+3bpALleixt10dYoEq403pwRSCh0elB1MIHF6VHkwhgPiq9B5e7mrsX95ZT5+Ox6mLyZGBZLw5MThj3fJO3f18jnpFDEcSqZFUIho7NrH8SGs+fjLebObUlYcOR7lvS+theu3DK6fELw2jG8wXeyR4LWGloTOZjMWGV4oY0LM/kAVJoO7emRlMRBoaYsmBgWQsGjudNm3knttZnEjGGsINnSkWIYnRxZ0c0btXSdYIkcwwRVc22j/P9A6H8/S089FDgC9Kj47AFdi3Tc3ez8xOcUep5l0Uspl3qOdUamna+fH0DdPeejWKd6VnQVN6ZqTSY+SebFxPj4sInJrbMHa8gAOmHKVnRqvIzegVOcWU1wKSlwKEd6VnBqZQ65Sh9MzAFGqccpSeGZhCzeOr0gOA4YvSs26uABjelB4IHuWt0wOBopx1eiBIlLVODwQINOOBBEoP+I8npac+uru0tLqpDbLaNlcADCg9wIHSAxIoPcCB0gMcNOOBBEoP+I8XpSec5YhhvL2FVPT7q/lmbtYrUHqAA6UHJFB6gAOlBzhoxgMJlB7wH09jencnIqHGzrfvqS9ym5e6W16Fg0dHoPQAB0oPSKD0AAdKD3DQjAcSKD3gP56UHvdtc7Sjoyt5ds6+QSLgQOkBDpQekEDpAQ6UHuCgGQ8kUHrAf7wpPVAMUHqAA6UHJFB6gAOlBzhoxgMJlB7wHyi9ygGlBzhQekACpQc4UHqAg2Y8kEDpAf+B0qscUHqAA6UHJFB6gAOlBzhoxgMJlB7wHyi9ygGlBzhQekACpQc4UHqAg2Y8kORTegAAAAAAAAAAahQHpfftt99+97vf/elPfzoPQOn89V//9d/93d+JH8BXSMSeOXNG/AB1DCmfSSn93nvvid+gjiFF7tjYmPgB6hhiBsQYxA9Qx5CqAc14wCGNxrfeeovrO8zeBP6A2ZuVA7M3AQezN4EEszcBB7M3AQfNeCDBOj3gP1B6lQNKD3Cg9IAESg9woPQAB814IKl1padmnz99um/dZlvNZrHz9gECpVc5oPQAB0oPSKD0AAdKz0xu/ynheVYVvzms4ejQdAwSUHpA4q/S++L9EXemZpdWN762ZDhv5J7cnjmbjDUoSkM0nkwl49FIpDM1tfyIPTx7czjSOvUFu5LybPWiCIIL4+l555BZ7/zxymNxxp1vVqbE1Zzz13fEmfoBSq9yQOkBDpQekEDpAU7QlN7e+sz4iNa2K4mHV05FGxRSRhLil7bF0RefjDdHwvxoqH/Zj/boIQVKD0j8VXqs+2QrMzvUyrKR0jV5e4f2nDx9urOxujSfHuyk4qxzcG7Tc1eK+mh5tD0cUqLHpj56YniKmr2/ONze0nv1zvJQJBQyKj3WfUMC8NNUIwtW67mPRKgYWxkSMPLIULjdGjBx5/U3ukR5EZm4K065oK6diyjs4sbOsbkN8h5rZ1I9AKVXOaD0AAdKD0ig9ACnJpUeaWk5D6/923I/b3u1Tn8pDpUGaZHRZp9B6TEezxylT4XSA/VBZWZvrgzRXGSSWwL10RzTW5ETV7dLz2N765NUc4Xbp9YdiwV1Oy00mcOrX6jL/exc34f/Ko4Y2FuhAjGktE3ds4frQbqjqb2dhrvx+6sON0uy1/o6Bwc76FucQlAvQOlVDig9wIHSAxIoPcCpSaW3fSnuIroeXGZNusjQyp44UiKk8Ubutyo90UaF0gP1QbWVHkH0ppQshTQZF/n+6v8ThxzYW0jRixwfLoLlqPT0cDmM25HConXqg2k6Utk4uOL+9uxCqudqhpUsUHpQehUBSg9woPSABEoPcGpR6ZGGk7voojOrypgZBaUHpQcOQum9uDfZxE43jmXEkWIQfTuNfR8+E0dc+JIqMg9Kj/YrsfP2e5nS+4JLQeXEB24BeDzTQ07ykgVKD0qvIkDpAQ6UHpBA6QFODSq97LU+pWKiC0oPSg8ciNITUiikvLqUbyakiezKEFtkV2D2JIM+34vS0xRo5ztWHypc6Wmjfu1v3xfHzXw53UUH/KD0oPQqCJQe4EDpAQmUHuDUnNJT703S2VJQen4DpQckB6D06Eg9pfDonA7r9CEofR/mmbmpkRlrLF3pifImpPRctTnYFEpPC0bEyS+LunaujR2H0vOk9LLbHy+Z+Hg7K05985k4RNEPv1B3P7+ePpv8TkdHPJEamZr7fNdcbOd2bqTHB1I9x48f7z55Zmpu4/bM6TNXHoqzNYo3pSdid5b6hX2fGiaLu3HqHHY8fX3D6NvIgJq9T2IwlYjF47FEajx9Y8f5OnAQeFV6PDvN09S/uEqL4NxOhhkG9Y+cue8yTyr3ZGNuaiAZpyQH7JkNHCjelB5MIXh4U3rGCoKaAin6C1sCq2B59eBsCNy+5EP5DfSRi6wmye1v3Ui/2saadqHE+If0YopWx1sDZabg2znFKT1TG4Py2Tf8hKVhIg/XAF6b8SgVAkjVlZ66fYlmPCX66oeFdyyQ3BzmpUFx8kl9dPeuk1Ned6Wn7jKPnaFw+1mnjRQ0pac5cnKYd0rOHOdjfVB6XpXe7FSK+kAlKG2npuY2tSXYDz48m6CpEwq3JAfeXmOH1UcL/VEl3D19m6kUdfcOddbTeo6fJVAXO5GhRbl5hrp7a4zUKbYSv9bwqvR+R2pFHrv9y7srw5296ds7+zlSof+aukiyL3hnERyO9s9tcadoRBrOkhiPDC2jBD8ceFd6s1MDx6K0RI1f2ty+fLxzeHHreVbNPbl9nhRdSlfa6ixrb326O0zzmshNpI31ZndY6brk3Ycy8BevSg+mEDS8Kj1SQQzwajb22vn+WOcocx3+dOd2upcYCEnydVMNoW5f7o4cvaDbwVwfudlSPZjs687KUHvf7Mbvz7fS36mFrCavfsimSh39IftBWRVVvzFQ5oq7qLdzilV68+mzPKTkOYmz6T9oLchs5p1TTIwqDZ2p8d94cCR4UHhXeigVAkc1lR4V/XSHBPtuBoV4eLmLPdB14mVxiGCdnNU3WaC7P8xOHIuGG2LJs3N/4nZqQyo9sQrQ7peFOt0Ukzqh9MqYvSlGTV86vy4OCL6ZPRrquCCthntKbexfNlY+LOKP9C+z/sDMWGOo692v2AkNqtPrVOlx+PzkeEfP0KKhRhRHTRHDIljpmfnKnCGYvyNLtIMDoqzZm3xmxUsdHSf0XKUdNc9p4p6wIufWzEU2nwPRcamGWj5BpozZmzCFQFHO7E3RdmlM/do0e0M4JjelMO98V/qu6VNseDd4R/qBOCDgPs9jXV09zL5EC8pQiVhElxXuP8FcPxX/9iKVHoeHLXRyzlLB/fH1I439xjqzJiirGY9SIVhUVOkpDdFmCd+sMjq8/NRsEMUgCiCflF7H6/Oi70gwnx5MNDfHk2dn7jhnZvJ+Kdx4YWDxy8J9sfD/RWCh9MSP0hCTaI8M3zKmBBGAkeFbmuGomTFa8TSdXzen1rOrPeTw0ZnHL178ywcnyENe+8hS+Cz317XS00xz0rSTiDhqKL35qlilf9mWVdWVIVLFanIaHCTlrdPjhaGSWjA1avhRYybh1uFUYfMzNZ+hgkE56/RgCkHCB6VnF117cyfpCUOVe3eC1sHmtS7cZGxiix/W9RPddtm4ex4/76r0nIyrhLe72KbzS4XrdksfMWnzHX3X0ulZA5TXjOcRhFIhIFR1TI8PsSvR3lL30uNNeELvb4pYpueKCJajXBTzN50DR0xW/xYHvyzCFwuH2zeUnlePLCJ+6ewODXLIoE642nCqGgylt+idC7cPpuczW7JiyWVdhm1rBh+UniXibEdFdrN3jxLE8DqT0+BA8UPpWath21E6Nk6KxaEVh2zDO9aPnFsTv8HBUb7SgykEg4ooPW0wx3CKbn5g2f2A325r2jvblw4/7/BSjuNTi3973kDZXiqGBpsm74kD7FDEondqAz+UnjXeUCrUKFVep6e5PSlVBnFzcr/vk3Excmhm5PcmTSeC5TYwqPn3tG/YRwoLw5vFDEP9CBF6hoV7vGSB0vOq9LT41fvVLF1qIoKPtJ9mi4QNnOmkCchLbzqTny/6E4RbTqddxmxrifKVnrXwFvGpV3oinzhXvXlPgirih9KzJiM/qluIsA1bO4mR9ySoKuUrPZhCMKiM0tP2oLKkcO7Jxuos9cMR6+juikcbaMVtMwJn+9IpcJ4Hysm0inq7y+2uL+V9xPqkIvN8olrCD6WHUiEgVN0ji9jKoLS99OQwToFBvdz+7fNMSYYanfKmCJb7FFDeB2HfZ4FYrPFbRL9PhLvgJL+4002BMG8oPfGjdMz9arYuteLLD+YzilQEvA6gKF2XHQaqagkoPcCB0gMSKD3AqZDSE6caz62Jc7nNGeqqRWkbntsQjjj4NTYjcLYvnQLnHZ9a/NtLDpR5UpF5PlFNAaUHJFVXeiLxHTaty4tYmlV4m4U8r9bOuSs9LXDWnf7IcfMD+Rgj88uS1X2xcMRDoPTEDy+IfjW6HMzepabN5R1aEQccsLlfze1vzfUzd1LGaaE1SBWUnujwsK1Lp4hZPHqFDw6Kaig9MVnX5iGJIXrtMJP3EFB5pQdTqA0qpPTEtCoxpZ974QhZvCs61y8u9qVjPf/wyqnxT8T/BPtTS3p76YESk4rYLTW6RI9RDaWHUqFGODClV+Kgnlwrq3S+47xvuSDPq7Vz7krPbZIoCbTlEJciyokPvrh6wuycRftCKD3xwxOiX63r3U8dutTESccCJLv9Md3yhiaCvRRnN9rK/NqiCkpPjKA7lt688HZy1gKqTDWUnmYcTqpfiH54VzsMVF7pwRRqg8ooPd7g0Zx5CS1k9YnG20/cZD4ZP6VtXetsXzrW89uX4saLbbVWaW+33c7JFygxqejI8Ee3anSJHqMaSg+lQo1wYErPMA9zbzMjt07Lh/D167S1uUQb7/Gi9PaW+5nQs4tJEmjrA4XaaG1ts44yii+E0hM/vCFKc0UJO5S0YoTXVnrrcy1oIjh4iKQWUOM9TFVQeuTQZdpnanNuKip8hw11QPWpitJ7kb05TPOavSbnOdS+ESM4CKqg9GAKNYEPSu/MoqUfT1uvoqWwuC756132UyAaX9xkVoak6Tjblw6fQ6I7AFsZMk0ZsdVapb3ddjsnf6CEsFWUl2t05ialKkoPpUJtUHWlJ8fN5KCeSgRWkQN86qMF7r3z1d84DqiLbdkJTq/W3Ec5Kr3c5iXauCWW2Wfb0p2arNMOevR623GtHILSEz88IioXxwWXNKWZv5WO88btXPfWJ7tbhlnBwhPBsvNbbu1cREnN1bZXljKUnuyqNO1goa21NxfVeyvDUcUev12KEh3G3umHgrKUnhw0N7kT51tfWUZzeV5rTM0ZpkPzkjjcnTZOnwIHRxlKD6YQKHxQeqTiNGweJ9ySG1NYW0xjrDP2Voba29poBUPVwb3JVq2LVrS7LMLMgGhKiWUVdF2+acoIn0YSu7Apfpf2dnG7dYKKCJRdnwhEpqjZmZuUsprxKBWChb9K75vP6PZ0sxMJlhGJakqcTc8vLX28bRxbefAe94kYGctQw9hbSEVtzi7zkNucOd0SJmrv2MTilr4ri5q9f2P6RLTt+yubdOjPqLOy2x+zTfNebWNSLhQ5MW3aUG8+fTZJnkjKsvbUe+tGwyR3kpPH2PKuULglOTA1q38Lm+MW0X2x8NfIj1faTk3NkgPmj68P/FB6vF8tz2JodfdOmlgCMQRiZDQNY7Fe6VyTVFlK16XFmd6W9lepCdJEPhaLnZ5x2xy/ZvCm9B5eOdWs+6UJhSPNzeOfsKNio0sK3f/SsEAit7M42tkQZvFLHdu0NDR0ji7er/UIDAxelR51VGxOdDrTiR41W4ic/yTzGikgp2bn0+OpzoaGltPp209Qix8WvCk9mELw8GNM7xek5I/10mbS/DRNbHsKq4+WSeVAGkCJCdLKoTsSJ0YXd3K8g5Aa0iu0jW+3JKMp6eytTbSTNl3bq+n0RKJ9SOtKNNdahuqpuLfbb2cvNxu9qAptUPlp3UyuxvDajEepEEAqofRsWMUOMYuZwUS0oSESJyTfKX18PPdkY24qlSCWFyZ2yEikpmQrdG/zc0P3Apdg+Vnd2DHu5SlwuNP4Ld98tmqYduryGig9rxClV0SXGt2GlWFOv9y+2GxHnjdvvlOzlDGm5wm2cRHDIYOAA6S82ZteCFpeChDlzN70AkzhsOLXOj1Z8OdJYafKgR7zYhTas4qvZvx8uw2i9Gp0cwVJuVPzSgelwqGlMrM3QX3jh9Kjkzhqu0utMlRb6YHDSvWVHji0VFvpgcNKZTyy1Bvagv9aBs14IIHSA/7jSek9eO+V5ub4D27yIVA6qffcGkaRbEDpAQ6UHpBA6QEOlJ4Xsjd/EG9ufuU97hVGvTf5cs9MDS/RY6AZDyRQesB/vCg94TqrdfpL8mNvZSha665TKgSUHuBA6QEJlB7glKP0hHOuOlR63FGg0nctS3Tedrrr5fMmjw01CZrxQAKlB/zH05geXU7d1Hs5s5GZHe48Pq35VgFmoPQAB0oPSKD0AMeb0mPOuaTDDeqmxNFPSWBh/iM7R1fublyf7u3sn9sJwHQiNOOBBEoP+I8npUdQs/cz1DvO11jP6wqUHuBA6QEJlB7geFN6uncTSd151cg92VhdWsoYPLrXNmjGAwmUHvAfr0oPFAZKD3Cg9IAESg9wypm9CYIEmvFAAqUH/AdKr3JA6QEOlB6QQOkBDpQe4KAZDyRQesB/oPQqB5Qe4EDpAQmUHuBA6QEOmvFA4qz0vv32W3KC1Byk1ACgVE6ePNnf3y9+AF8hEfvf/tt/Ez9AHUPKZ1JK//3f/734DeoYUuS+9tpr4geoY4gZEGMQP0AdQ6oGNOMBhzQaiT1wfWcd0wMAAAAAAAAAUKM4jOkBAAAAAAAAAAgGUHoAAAAAAAAAEDSg9AAAAAAAAAAgWLx48f8DKmBHDFgE/1EAAAAASUVORK5CYII=\n", "text/plain": [""]}, "execution_count": 4, "metadata": {}, "output_type": "execute_result"}], "source": ["from pyquickhelper.helpgen import NbImage\n", "NbImage(\"xgboost.png\")"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Plusieurs am\u00e9liorations ont \u00e9t\u00e9 impl\u00e9ment\u00e9es pour rendre l'apprentissage rapide\n", "et capable de g\u00e9rer de gros volumes de donn\u00e9es :\n", "\n", "* **exact greedy :** algorithme standard pour apprendre une for\u00eat al\u00e9atoire\n", "* **approximate global :** chaque noeud est un seuil sur une variable, ce seuil est choisi\n", " parmi toutes les valeurs possibles ou des quantiles, ces quantiles sont fixes pour un arbre\n", "* **approximate local :** ou ces quantiles sont r\u00e9alust\u00e9s pour chaque noeud\n", "* **out-of-core :** la librairie compresse les valeurs des variables par colonnes pour r\u00e9duire l'empreinte\n", " m\u00e9moire\n", "* **sparsity aware :** la librairie tient compte des valeurs manquantes qui ne sont pas trait\u00e9es\n", " comme des valeurs comme les autres, chaque noeud d'un arbre poss\u00e8de une direction par d\u00e9faut \n", "* **parallel :** certains traitements sont parall\u00e9lis\u00e9s\n", "\n"]}, {"cell_type": "markdown", "metadata": {"collapsed": true}, "source": ["### LightGBM\n", "\n", "[LightGBM](https://github.com/Microsoft/LightGBM) est une librairie concurrente de XGBoost d\u00e9velopp\u00e9 par Microsoft. Elle tend \u00e0 s'imposer car elle est plus rapide dans la plupart des cas."]}, {"cell_type": "markdown", "metadata": {}, "source": ["### Exercice 2 : benchmark\n", "\n", "Comparer les random forest de XGBoost, LightGBM, scikit-learn sur diff\u00e9rents jeux de donn\u00e9es synth\u00e9tiques :\n", "\n", "* Classification binaire en petite dimension.\n", "* Classification binaire en grande dimension.\n", "* Classification binaire en grande dimension et sparse features.\n", "\n", "Faire de m\u00eame pour une classification multi-classes et une r\u00e9gression."]}, {"cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": []}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.0"}}, "nbformat": 4, "nbformat_minor": 2}