You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by Apache Wiki <wi...@apache.org> on 2015/05/10 22:14:17 UTC

[Tika Wiki] Update of "ContentMimeDetection" by Lukeliush

Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Tika Wiki" for change notification.

The "ContentMimeDetection" page has been changed by Lukeliush:
https://wiki.apache.org/tika/ContentMimeDetection

New page:
Tika - Content based MIME type Detection





JIRA issue with the TIKA feature

https://issues.apache.org/jira/browse/TIKA-1582

Motivation:





The feature of TIKA-1582 is an extension of TIKA MIME detection based on file contents, i.e. the file byte histograms, and this feature follows a standard data mining process that extract the knowledege out of the data (bytes). The motivation of this feature is to offer users with an option where content based detection approach can be used, the content can be defined in several ways, theycan be the entire file bytes, byte n-grams, byte histograms, etc. In this feature, the content-byte histogram is used, and the Content based detection analyses the byte histogram patterns (i.e. content).  Some files are very huge in size, building byte histograms for those files requires significant amount time, but it is worth noting that with domain specific knowledge or the heurstics (e.g. there might be some crutial and critical regions in the file that could help with the detection.), we can further reduce the amount of effort required for knowledge discovery or mining particular patterns that we can use in the type detection.

Please also note, this content based mime detection does require users to have some knowledge with data mining and machine learning, and the choice of learning algorithms used in the pattern mining does not seem to matter, the knowledge to be mined is actually the classification, and there are many classification learning algorithms invented or revented, the question of which one is the best depends on a goal and data, each of the learning algorithms requires lots of effort for performance testing, and some data might be linear sepeartable, some are not; and a or a set of goals is very important as it often is in the context of performance tuning; we can also think about it as a performance tuning problem where we need to set a set of goals in terms of the scalability, complexity or accuracy, so we want to leave the choice of algorithms to users based on their goals and data in their enviroment. As an example, we have actually implemented two algorithms for mining patterns with the GRB file types, one is linear logistic regression and the other is neural network. Again, the neural network with back-propagation is a bit more complex with training, and logistic regression is far cheaper in terms of complexity, and it turns out that logistic regression also gives a good result with high accuracy, and it is worthy noting that it is always better to circumscribe the mime types to be detected; in the example model we have built, we attempt to classify grb files from non-grb files, and one of the challenges is to identify the non-grb file types whose class can be enormously large, the best practice is to circumscribe a set of types to be classified, again domain specific knowledge come into the play for well-defining a set of types in the user specific enviroment.

This approach could also enhance identification safty, so it only trusts the file with the type which has the similar byte histogram pattern it has seen in the training, this has pros and cons, the pros is that it enhance the security aspect of the file type identification, but the cons is slow detection which requires the reading the entire bytes of a file for computing the byte histogram and it might be also myopic to the training data which might be less representative.

Methods:

As mentioned, the content-based mime detection follows a standard data mining process:

Raw data - > feature selection and data cleaning -> preprocessing and transformation -> learning patterns(machine learning) -> knowledge evaluation -> the use of knowledge(prediction/classification) In Tika.

(It is worth noting that the feature selection requires learning the application domain which in our case is specific to the user domain and enviroment)

Also please note the model has to be ready befored it can be used in Tika; by "ready", we mean the model has to pass the final knowledge evaluation test. As shall be seen shortly, as an example Tika is only implementing the prediction phase, so the model parameters need to be loaded and read into tika for prediction or classification; The process of training can be lengthy and tedious, sometimes training might require parallel computation on e.g. map-reduce when training data is too large to fit memory, again this depends on the user's goal.

''The following will briefly walk you through how the feature and example is implemented in this data problem.''

Please also refer to the code repo for details of implemenation for training or preparing for a model, the neural network and logistic regression learning are implemented in R and the following describes the preprocessing and learning implemenation in R.





Project source repository

https://github.com/LukeLiush/filetypeDetection





The goal of the example is to be able to classify grb file types from non-grb types.





'''Data preparation'''





The positive training examples are collected from the AMD polar web sites (*.gsfc.nasa.gov). i.e. ftp://hydro1.sci.gsfc.nasa.gov/data/

The negative training examples are collected from the following i.e. http://digitalcorpora.org/corp/files/govdocs1/zipfiles/



Once GRB and non-GRB files are collected, the next step is to prepare our data set so as to allow R to easily manipulate.

We need to split the dataset into 3 chunks, training set, validation set and test set.

The dimensionality for each set is as follows.

m*(256+1)

, where m indicates the number of training/validation/test examples; 256 is the size of features (i.e. byte frequency histogram with is '''not''' preprocessed with a companding function) + 1 for the labeled output.

All of the sets are treated as matrices which need to be saved as files; those files are loaded into the R program thru the ‘loadAndProcess.R’;

'''Preprocessing'''

1)      Read byte content of the file build byte histogram.

Build frequency by dividing each bin value with the max count of occurrence to have each bin value to fall in the range between 0 and 1.

as isome files some bytes have higher frequencies whereas other bytes are less frequent, or in a critical situation, some files have only one or two bins that occupy the majority of the count, this makes a large gap between the most frequent and less frequent, the solution is to apply a companding function - A law or u law; square-rooting the bin values also provide the same effect, so by considering the computational cost, the square-root is chosen to enhance the histogram detail in place of A law or u law.

 {{data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAjEAAAEECAIAAABWUvIgAAAgAElEQVR4nO3d6VtiWZ4n8P7X5k/oFzMvpp+qnpp5ZrqruvuZp7s6u6qyKmsqKxczMmPfjDBUlssOwkVkBzdQBBVwBREQRUBZZJf9nnlxs2gzSo0NvVf9fl6BcYSfkZF8veee8zt/QwAAAPjhb7guAAAA4EfIJAAA4AtkEgAA8AUyCQAA+AKZBAAAfIFMAgAAvkAmAQAAXyCTAACAL5BJAADAF8gkAADgC2QSAADwBTIJAAD4ApkEAAB8gUwCAAC+QCYBAABfIJMAAIAvkEkAAMAXyCQAAOALZBIAAPAFMgkAAPgCmQQAAHyBTAIAAL5AJgEAAF8gkwAAgC+QSQAAwBfIJAAA4AtkEgAA8AUyCQAA+AKZBAAAfIFMAgAAvkAmAQAAXyCTAACAL64pk7a3t+fm5lwAAHAHuN3ucrn8EWFxHZnUbrefPn1qtVrnAQDgtnO5XMPDw0tLSx+RF9eRSc1mUyaTMQxzDe8FAACc8/l8Ho/nI77xkzKp2zldmrNqNBqNSjPv3exeEDrNZlMqlZ6enn7KewEAwE3hdruv/zqJsauGhRPWaCy+txtRjT3TzG+dOw6ZBABwp3CTSVOi+0rTYjqdTqczBslLsS1w7jhkEgDAncJJJpHTcsasVVFiSkxJTbOeSrN70UiFQoFMAgDgoXa73X9crVZDoVD/6crKysTERK1W+9DX5CaTzmqeZKIHx2e/cnh4aLFYrFarXq9/+PBhs9kc1HsBAMD7q9VqpVKp/9Tr9fr9fkIIwzBra2sURe3s7BBCyuWyXq/X6XTz8/MMw2xsbBiNxnA4rNFout0LLznOxX0mEULeWlmXy+WWl5dXVlbcbvfz58+RSQAAV+fsJ7DP59Pr9a1WixBSKBTUarVcLs9kMoSQxcXF6elph8Ph9/tLpZJAIGi1WgKBoFwux2KxiYkJhmHGx8ebzebu7q7RaAwGg1NTUzcjkw5CQYvZNjc3Oz09PT09nzy+cIeUXC7H3B0AwKeoVCpnf7n3eDx7e3uEkF6vt7i42E+dlZUVu92+sbGh1+sJIRMTE/F4PJvNUhRFCNHpdJubm8Fg0GQytVotnU7ncDiMRmOz2ex2u3NzcxRFRSIRNuG2trZMJlOn0/nQUrnJpPiq8+//7udKo9OzuLi46E3lKucOwxoHAID3USqVjo6O+k+dTqfT6WQfHx0dyWQyrVbL9keYnZ2dnZ01GAzJZDIcDhsMhnw+L5FIut1uMBi02Wxra2tTU1OEkFQqpVQqpVJpLBYjhDSbzcnJSbPZzF76VKvVpaWls1FXqZz/Sf5BOJu7i2yuJE/eMSmHTAIA6KtUKr1ejxDS6/UWFhZUKlWhUCCEpNNptVotlUrD4TAhxOFwLC0tLS0t2e12QghFUYVCIRQKGQwGQohCoTg8PHQ4HKurq7lcTq/Xz8zMOBwONmlWV1fPTrgVi8VcLnedPyMv7iddBJkEAHdKPp/vryno9Xpms3l1dZUQwjDM3t6eRCJxOBydTicQCNhstmQyqVAoCCFGo3Fzc7NYLIrFYkKI3W73er1er9dmsxFCwuGwXC5Xq9WHh4eEkEKhoFKp5ufn2XhLpVIej4d9zAfIJACA69Pr9RqNRv+x1Wo1GAzsmoJEIiGVSpVKZSqVIoSYTCa/32+z2YLBYLfbFQgEnU7HarWur68nk0mDwTA/P89O0JVKJZ1OJ5PJ2G8khDgcDvYiiZVKpdgrKv5DJgEADNjR0VE/eJrNpsFgYNcUnJ6ems1muVzO3vuxWCwrKyvr6+s0TRNCKIrKZrP7+/tqtZoQQtP0xsaGw+Hw+XyEkKWlJY1GQ9M0my7xeNztdveXzDUajbOLtm8uZBIAwAfrdrv9my7NZlOv18/OzrJPt7e3KYrS6/WlUqndbtM0vb6+rtVqc7nc/Pz80tISu6aAELKysuJ0OmdmZtxuNyEknU6zk2zsLRz2Zc82JI1Gox93jsMNgkwCADhfKpXqX4iUSiWj0XhyckIIqdVqWq1Wq9WyfQrYCxqXyzU3N0cIGR8fJ4S4XK7FxcVOpyOTyRKJhEaj2d/fT6fTNE3rdDr2LhEhZHV19WzqFIvFarV6zT8mryCTAODuemtHZyQSYWfAer3e6uqqSCRyOBztdrtarWo0muXlZZVKdXp6qtFootFoNBplJ9mmp6c9Hg+7ko0QEg6HJRLJ5OQk+1InJydKpXJjY4N9i6Ojo0gkct0/582BTAKAO6RcLtfrdfZxPp9XqVRs6hBCPB6PVqulafrk5KRarb5+/ZoQIpVKk8lkuVwWiUSZTEYkElUqle3t7cnJSYPBsLX145kGMzMz/Usf8tP7SfBBkEkAcNucbZaTTCblcnk2myWEHB0dsTds2Ck4uVyeSqXcbrfb7e71egKBoN1um83mtbU1hmGWlpZEIpHFYmHTJZFISCSSeDzOvuzu7u7u7i4XP9wth0wCgJut0+m4XK5+F4NYLCaRSNi5slKpRFFUNBplP0kkEkk2m43H4xMTE4SQxcVFdik2mzTsBiCn08muzCaEJJPJD23XBp8ImQQAN0Cj0WC3fBJCWq0WTdNra2uEkHa7bbFYXC6XTqcrFAqVSkUoFFYqFYFAwD6VSCS7u7symaxer8fjcXYDUP+lAoHA/v5+/10qlcpbLaHhmiGTAIAvzu6wKRaLHo+HvdPDHoUgkUhWVla63S5N01tbW0ajMRQKtVotiqJOTk40Gk08Hmd7srlcrv7hPel0WqFQ9HeM5nK5YrHIyU8H7wOZBACc6U+OsevcxsfHV1dXGYapVqtarXZmZsZsNrfbbfY8HkLI2NjY6ekpTdOhUIhtqEMISaVSUql0eXmZvcRpNBrz8/O3YwPpHYRMAoArxDBM/3/hQqGgVCr7Ddw8Ho9IJDKbza1WK5fLjY2NEULGxsby+fzx8TFFUaenpwKBoFqtNptNm81GURR7kmmj0dBqtYFAgMOfC64IMgkABqnT6fS7rrVaLYfDwfZh63a7crk8mUzq9fpIJNJfbE1R1OHhIXtbSKPRsBHFMIzf76coKh6Ps1c/3W73mhtUAyc4yySm1240W50zx7n/NWQSAD+d3XwTjUb73T9PT08tFotYLPb7/QzDLC8vO53OSqVCURS7zHp5eVmv1yeTSYZhVldXhUKh0+lkbxp1Op1QKHT2FLiPOBEObjpuMqmcOzDrNM/uD317/7HJ6a60z2+TjkwC4Ilqtcru6WEYJhQKicXiQCDAMMzJyYlQKDw4OKAoqlarRaNRdpn1yMjI6enp8fExTdP9pm2dTsdut7PdSFlnm/cAEI4yidELHs4GDo8jvocjApPiDWVdPXccMgngOp3di5PP5/v7Q3O5nFqtlslk6XS6XC6Pj493Op3x8fF8Pl+pVBQKRTAYVKvVtVqt0WicvU5iv5e9CQTwPrjJJK9ZPixUGCZUOptTPf560nX+P9l2uy2TyZBJAFeE7W5A/nJuaX8KLpPJ6HQ6jUbDriOYmJiIx+O5XI6iqE6nYzKZLBaLXq9n/9/MZrN6vb7fr7rT6fR3/wB8KI7uJ/XaoQ3/anC70WrubIcKlZ80hmIYptfr9Xo9dt81MglgILrdbiwWY08U7XQ6s7OzQqGQ7aOztbU1NTVVLBYpiur1enNzc0tLS6VSiT23NJ1Oq1QqqVTKTru1Wq2VlRV29w/AYHG/7o6pn+wd/mQ5TTQalUgkMplsbGxsaGio3+cDAD7U+vp6v9+BzWaTy+V2u73T6SSTSfYIn5GRkUqlwl7rOByO6elp9tdBk8l09tzSUqmEZW9wDbjJpE6r5rJPSihKLJJML22+9afNZrNQKBQKhXQ6LRAI0F4X4P15PB6TycTey/H7/Var1Wq1BgKBQqHAbgAaHR3N5XLNZnNqakosFrPtRwkhmUzG5/P1Vxx0Oh1cCcH14+Z+kkn6RKyfPjw8TCaTE4KnMuf6ueO63S7uJwH8tUqlwj5gGGZxcbHf6HppaYk9NMFsNhNCdDrd9vZ2KBTS6XQMw3i93rGxMZ/P15++Ozg44PCnAPhrHGUS9Ugx5U6lUqlUiha/kNqD547DujsAQgjDMMlkkn3c6XTm5uYoimLPhQsEAlar9eDgQKFQsPk0OzsbCASmpqYIIa1Wa3JyUq/X9ycb+m3fAPiJm7m7Vr3gmJygxJSIkjg8wXb3/A0KyCS4s3Z2dtil2Ox9IKFQyE6yRSIRrVZLCBkfH280GolEwmAwuN1uh8PBXv0sLCxMTU3hhAW4obhf43AJZBLcHV6vd35+nn28trbGHmMaiUT694FGRkaKxWKlUtHr9Vqt1uVyscETi8Xm5+fZQAK46ZBJANfn7CLSxcVFmqbZf97sfSCXyzU3N0cIUSqV8Xg8FArRNM0wzMzMjEAg8Hq9bPBUq9VwOMzVjwBwpZBJANeh0+nMz8/LZDJ2P6nX63U6ndvb2+xEnM1m83q9gUBAr9cTQsrl8sTERH9TKiGkvyYb4HZDJgEM0tnubfV6XafTraysEELYE4AqlYpYLO52uxsbG1ar1efzWa1WdrDdbp+ammr/pStxp9PBdBzcQcgkgE9Sq9X6+3jK5bJGo7FYLO12m2GYiYmJ7e1tk8m0sbGRy+X0er3FYpmbm2PDZm1tzW63owMpwFnIJICPl8/nFQpF/2ht9j7QysqK3W4nhBgMhrW1NZPJtL29TQjJZrM4hg7gcsgkgHfodDpnG4za7XatVlutVgkhUqk0nU6n02mZTEYI8Xq9FovFaDSyaxDa7fbU1NT6+vlbwgHgryGTAC5zenpqNpslEsn+/j4hxOFweL3e3d1dtVpNCEkkEnK5XC6XJxIJdnwwGIxGo1xWDHCTIZMACCGkXq/395nm83mlUunz+Qghi4uL8/PzjUZDKBQyDLO9vW02mx0Ox8LCAjs4l8uhOSnAoCCTAEgmk5HL5SaTqdFosF0WU6mUwWAIhUL5fF6n0ymVSr/fzw4OhULLy8vcFgxwWyGT4C5i7/T0l71RFFUsFr1e7+zsLMMwFovF4/Ho9Xq2y1ypVOpPzQHAlUImwV3h9XpdLhf7WK/Xr62tLS8vs9uD/H7/xMSETqdjt6Z2Op2ZmRnkEMD1QybBrZXJZGQyWSwWI39p3jM/P88272EfTE9PszeNCCHRaLR/EDgAcAWZBLdHq9Wy2+1s855KpUJRVCKREAqFlUrFZrMtLy8Hg8HJyUl2sNvtxm0hAL7hLpPY7eu9yzrqI5PgneLxeLFYJISwB6cuLy9rtdpsNlur1VQq1cbGhlwuZ0/As9lsU1NTnU6H65IB4ELcZNLR3qZQ+EYko0TCMbmaPi41zx2GTIK/Vi6X2RPqGIZZWVlRq9U6nY49zFsikWQyGY1Gw548VC6XaZo+OjriumQAeF/cnDOrHX8wuxT85je/no+deCeFo5O+c8chk+AtbMcEnU5XLpd7vZ5QKGw0GrOzs+w/4uPjY7lcHgyef2wxAPAfN5m0YJKJZPL/9/m/i2gbLR+fDuydO67VaiGT7rhWq2UwGAwGA9swWywWF4vFzc1No9FICNnf35dKpVartX+2NwDcaNzM3XWbtWXfQjgWW1mc8/nXq6et84d1uzKZDJl01+RyOZVKxa6C0+l0W1tbW1tbNE0TQkKhkEwmU6vV/fOEKpUKzvkGuDW4X3fH1PLRg+OzX4lGoxRFyWSy8fHxoaGhs0dzwm3FLkMghJTLZZlMFg6HZTJZpVJhe2zbbDb2FCJCSCaTYRc1AMDtw9F1Uud0ac6iUavVKrV79e1TnE9PTzOZzNHRUSKRGBsbw7TM7cYwTCgUEolEi4uLvV6vVCpRFBWLxSiKKpVKhJBAIIBbRAB3BDf3k2yqYeGELRbfS8R2VePP1HNb547D3N1tdXJyolKpVldXCSGVSmVsbIwQIpVK2V4+7EIGnPYNcAdxk0lTogdK42I6lU6l05PUC7Ht/IPOsO7uNslms+x/yna7rVAo9vf39Xp9OBzudrvT09M0TU9OTvYPbAWAu4mbubvT8pFFq6bElJiSWuZ9p53zj39GJt107GI5Qkg0GpVIJDRNn5ycsP1P/X6/Xq9nDyViGGZra6ter3NaLABwj/s1DpdAJt1cvV7P6/X2j8ITCAStVmt5eXl6epoQ0m63LRYL24kOAKAPmQQD0263I5FIr9cjhMRiMbVaXa/X2W2tkUhEIpHodLp8Ps91mQDAX8gkGIxms2k0GpVKpdPpbLfbxWKRpmm73W6329kZvKOjI9wuAoDLIZPg4xUKBblczvbhPj4+ZpfPjY6OshdDhUJheXmZvWwCAHgfyCT4MOyeIUJItVqVyWS7u7vsRqJer+fxeAQCQSAQQA4BwMdBJsH7YhhmZ2dHLBbPzs52Op1qtSqVStmmG/3GCicnJ9wWCQA3GjIJ3iEYDGYyGUJIrVZjZ+cmJiZ2d3cJIfl8vj93BwDw6ZBJcKFer+d2uy0Wy+TkZDqdZp+q1Wq9Xt9vTwcAMEDIJHib3+9XqVTFYrHX60kkkkKhYLfb+y1Qd3d3sbkVAK4IMgl+IhwO0zSdSCQUCkW73T46OpLL5ewNJK5LA4DbD5kEJBKJyOVydgH3wcEBTdOBQKB/jF6/PxAAwFVDJt11x8fHEolkb29PIpGwk3KxWMxiseDYKgC4fsikuyidTsvl8nQ6TQjJ5/NKpXJra4ttBcR1aQBwpyGT7hz20Dx2XxG7Afbw8FCr1aLxDwBwjqOzKmq15gXnU5yFTBqUcrnMHllE/nK4eCQSkclk5XKZ69IAAP4TN2f6SR/88btHguW1rXz5st/NkUkDUa/X5XJ5NBqVyWTsQoZsNqtUKrPZLNelAQD8BCeZ1BXc+73WvLTockiVCplSu713/ocjMumjNZtNmqZ3dnYIIfV6XSaTxWIxqVSay+W4Lg0A4EIDzaRuq1QqlUql9js6cPZMsrG1WJEQ0mufJg+S1dPzl3j1ej25XI5M+lDtdlun021vb9M0vbe3RwgplUpyuZx9DADAWwPJJKbXaay6ZlQatVyukMtlCoV8em610ele9M293n/+0enJcSL1k3PeqtVqIpFIJBI7Oztv3rxpNBofUd8dtL29bbFYut1uu91WqVTRaFSn00WjUa7rAgB4X4PJpGbtJOgNZEvVSrlUKhUP96OrnmCh2rz0Fbq1Wq1Wq5/WatXaT1KHXRImlUrHxsaGhoawUeZ9RCKRqakpv99vMpl6vV6lUlGr1evr61zXBQDwAQY5d7c4pXgjEMmkUpPde/ns3fH+lkwikEikUjElVekz5QuvhJRKJebuLtLtdtmO3YSQtbU1k8kUiUTUajWOLwKAG2pwmdTNDn3xdbp64XzdGYzm1TeGhTD7ZFb9epg+vwKscbhEo9GwWq1isXhtbY1hGEKIz+fTaDTVapXr0gAAPtJgMqndKHkck//2L78UqU1Oh2PRt9G87Dd1ZtmhGhUo7HaH3e4Qj7+eWds/dxwy6RI7OztarZYQMjIygv4LAHA7DCaTuq3aln95SjdhdrrWNzbjidS7Jo96e6FNn8/n8y3vpfMXDUImveXg4EAul7Pruev1utFoFIvFKysr7HUSAMBNN8j7SR6T6unrMf2UcXFl7bQ1gFsayKSzisWiWCyORqNSqZSdoGu32zjjFQBuk0FmUq9VmzPIfvHf//Yffv2He/dfHZY+NUuQSWeVSiWJRLK7uyuXy3HTCABupcFlUq85+frJH7955Fj0Fyv1jeWVw+Kn3uRAJrFHSIRCIfZpKpVSKBTFYpHbqgAArsjAMonplBWvnkvVOlo7YXEsDWQx8h3PpGKxKBKJCoWCUChk+9QBANxuA8ukXuPo2b3vt/dzpVKpUq33BnHT/W5mUqfTYbcJ12o1nU7n8XjUajUm6wDgLhjgdVJt5Psvn42IlQqFye45fZ99Su9yBzOpXq/TNK1Wq9kJulqt5nA4Tk5OuK4LAOA6DO466TT1w1ffhJP5UrFYqdYxd/dxaJoOh8Psmm+uawEAuG4DXHfX1Y08fzlGKZVyy/QyMun9NRqN/hESu7u7NE3rdLqNjQ1uqwIAuH4D68EaWFpNHhcq5TLbg3XFE3hXD9Z3uwuZVCwW9Xq9RCKJx+PsVw4ODmKxGLdVAQBwYkB9HDqNVdec0Wqd1NMTE5oJjWrm0rMq3tNdyCSn07m8vNxsNgUCAde1AABwbIBzd4xNJVKb58Oh0NHJYNqv3YVMyuVyWq1WIpGEw2GuawEA4NjgMonpbbjM977+6pe/+Lt//d3LOtaCX4BhGI/Ho1Aojo6O2K/UarX+YwCAu2yAZ1XU9aOv/vzN/Smb6yCdH0hP0FuZSVtbW1NTU9lsViqV4rhCAICzBnid1E3vrovHR4ffDFtnAoNowXo7MymVSun1+rm5OYfD0e0OYhsXAMBtMcB+d3Xxoy+HHr4af/3k4SNpsf2OK6VarU5I7zCRKFQuXJ53azIpmUxqtdr+KUeHh4cLCws4DRYA4C0DvE5qTwmf/+6Pfx5+9VIoM55eeqaf16RS0Db7pHJ0TCQaF24fFM4ddzsyKZ/PK5XK7e1ttVp9038WAIArNbBM6laTD74ZEo6OSjW6H755lKp1Lv5eRvH8K4N94dXIix4haybRS53n3HG3I5MymYxUKt3b25NKpTgQFgDgEoPrLdQsjD576ph2KCjZyLA4Xb0kk8hRYks8MvL57/7t/vMRlc60Xzj/k7rX68nl8pueSYSQSCQik8kKhfMvBwEAgDXIM/2a5Wy+Vov4feH97Du/n+k0stnsYSp1nEmnsz85EKhWqx0cHBwcHOzu7o6OjjYajY+oj1vFYtFsNpfLZa4LAQC4SQaTSa163qRSTNCTJqPRbLEsLK033vv+fee0VizXzn4lFotRFCWVSsfGxoaGhm7cgulKpaJWq30+n0ajqVQqXJcDAHBjDCaTep1m6mB/acY8PPxy+OVz2YTj8kzKpyJqhVgikUjElFJrztUuTB2FQnHj5u7YU/iOj49FIhGOmQAAeH8DXAtefH3/u/v37w+Pjf75q0e55iVrwRntyBA9t9FqtdqtllP5asTgO3fczV3jEIvFzrZVBQCA9zG4dXe1w0dD3zttVv2kdez56H7pkgk3xmORjFMTbveC2+2SCF7bV8//7L5ZmbSxsbG+vs51FQAAN9gg1zhs+uZXw9tGOWVw+N6xZZZph9dWXS7XvMsdTmQuGnWDMsnv91ssFovF4vf7ua4FAOCmGmQmDdwNyiSdThcKhUKhkFar5boWAICbCpk0GM1mc3JyUq/X38SV6wAAPIFM+ni9Xu/GrVMHAOAzZNJHOj09NRqNSqUS3RkAAAYFmfSRLBZLMBhMpVIymYzrWgAAbglk0keKx+N6vV6v1wcCAa5rAQC4JZBJHy+ZTO7s7HBdBQDA7YFMAgAAvkAmfYBAIEDTdLN54cG4AADwKZBJ72tzc9NkMm1tbdE0jWPLAQCuAjLpfSGTAACuGjLpA7Bzd9gnCwBwRZBJAADAF8ikd0AiAgBcG04yiUnsbBUqnfJxnNbRvmDkonHcZlK323W73RKJZG9vj5MCAADuGk4yqSt68NW8NyB988YbXLcoBOal3XPHcZtJkUhEq9W2Wi2hUIirJQCAa8BJJvUk9//4+a//+Wf/+/ddQmZUIyLT6rnjuM2kYrFI07TRaJyZmel0OpzUAABwp3BzP+nk6MCsFHz/VHiczVhs9ny1fdFIhULB4TVKsVhcW1tjmMsPzQUAgMHgfo1Dq5SNJY/PfiWdTjscjunpaZPJ9OjRI/RNAAC4IzjLpHI+E4vFYtFYNl9+6zokm816PJ6lpaXZ2dlnz54hkwAA7ghuMmlryfzy1Wu5XC6Tyodfvl6NZS8aef1zd6urq/F4/DrfEQAAWNysBVc8/5PNf8g+WaLfPJtYOHfc9a9xWFhYsNlsBoMhFotd25sCAACLm+ukRGhxbOSNRCqTSiQCqXwnVTp32PVnkkKhSCaTbrfb5XJd25sCAACLs/tJrVopnU6n0plm98Ix159JJycnKpXK6XRi8TcAwPXjft3dJTjZn4SV3wAAXEEmAQAAXyCTAACAL5BJAADAF8gkkkqljo+P3z0OAACu2F3PpJ2dHZVKpdFo9vf3r+5dAADgfdz1TJJKpel0OhaLaTSaq3sXAAB4H3c9k/L5vEKh0Gg05XL56t4FAADex13PJEJIvV5vNBpX+hYAAPA+kEkAAMAXyCQAAOALZBIAAPAFMgkAAPgCmQQAAHzBTSY1atViIZ9Jp0Mbgc1QvHraOnfYFWVSMBj0+XyDfU0AAPh03GTSon7sf/yvf5GqNF/8y8//6Tc/7Bzkzx12FZm0urpqt9udTufi4uIAXxYAAD4dN5nUaZRsWoVUPSF89q1mOnTRsKvIJJPJ5Pf7Nzc3dTrdAF8WAAA+HZf3k4ILU//ws/+qnr0wkwghCoVisJnU7XbNZrNer282mwN8WQAA+HQcr3HotRvHB/HI3tHZLx4fH7vd7oWFBafT+eTJE4QHAMAdwVkm1Uu5RCKRTB4WS7Ver3f2jzKZzMzMzOzsrNVqffz4MTIJAOCO4CaTwiuOl8PDFEWJRdTw8Ju1/fPXOJArmLsDAADe4iSTGNnTL2yBNPtkiR55onafOw77kwAA7hRurpNi6/NvhkekUplMIhkXS7b2C+cOQyYBANwpnN1POi3l9xOJROKg3r5wDDIJAOBOQW8hAADgC2QSAADwBTIJAAD44vZnUrfbnZ6e1mg0xWJxUIUBAMBVuP2Z5Ha7XS5XIpFQKpWDKgwAAK7C7c+kSCRiNBqdTqfL5RpUYQAAcBVufyYRQqLRKA5MAgDgvzuRSQAAcCMgkwAAgC+QSQAAwBfIJAAA4AtkEgAA8AUyCQAA+AKZBAAAfMFNJnUalWWvezu0pdcotZPWUr177jBkEgDAncLNObM2xSuRQv38++8WtlOLtFBkXj13HDIJAOBO4SaT7LIRjW21cVrttP8DPRkAAAgmSURBVOoG2RurL3buuFarhUwCALg7uJm76zaqO7vxHiG9RjG4tl6qty4aKZfLkUkAAHcE92scetV89OD47FdisZhEIpHJZOPj40NDQ63WhYkFAAC3CTeZ1Os0lt12mqZ1WnoxsPvWn9br9cPDw8PDw1gsNjo62mg0PuW9AADgpuDmfpJz4rVQbQ7vRCKhbcXoM60rdO64Xq/3cXN3JycnodD5rwkAALzFTSZNCu+rrb7j4+PjbNYoHRZZ/OeO+7h1d/l8nqZpmqYXFxd7vd4n1AkAANeKm7m7WjFl1CgpihJTEtOMp9o6Pzk+LpOCwaDZbG40GkKhEPeiAABuEO7XOFzi4zKp3W5PT09LJJJEIsEwzBXVBgAAA3cLM4kQwjBMrVa7ipIAAODq3M5MAgCAmwiZBAAAfMH3TJLJZJ1O5xreCwAAOLe0tMTrTHrx4sX29nbiPWQymYODg/cZeTdlMpn9/X2uq+CvdDqNfz+XSCaTqVSK6yr4K5VKJZNJrqvgr2QymU6n32ekUql0u90fkRfXkUkMw1gsFpFIJH0Pn3322atXr95n5N302WefjY6Ocl0Ff/32t7998eIF11Xw1/3797/88kuuq+CvL7744vHjx1xXwV9Pnjz5wx/+8M5hEolEKBQeHh5+RF5cRyZ9EJVKVS6Xua6Cv1QqFXZrXYKm6Ww2y3UV/LWzszM3N8d1Ffxls9n29/e5roK/ksmkxWK50rfgXSZRFJVOp7mugr8oiioWi1xXwV9KpTKRSHBdBX8Fg0GbzcZ1FfxlMBjQz+wSOzs7NE1f6VvwLpPkcvnR0RHXVfCXXC5HJl1iYmLi4OCA6yr4a3193el0cl0Ff5lMpp2dHa6r4K/d3d2pqakrfQveZVKxWMQKvUsUi8Vu9/wz5oEQUiqVMLd5iUajUa1Wua6Cv8rlcrPZ5LoK/mo2m1d9b4V3mQQAAHcWMgkAAPgCmQQAAHyBTAIAAL7gVSb1/G7bmzfC9USO60r4hem15g2K58+faxxLpNuat+nHRYrYcYXruvilU04rtYYGQ3ZW5kZGxn3hJNcV8QjTKs9YDaNCSeSwWNjfFowLrK4Alsr05ZM7UtGoUm857ZC99YXXI2OLG3Gui+KL6tGezbLQJSSf2BKOCyzzfoaQtQX76Bvh2t7g9wLyKJOKyeCD+y/W/N7vHr4otXFg0n/q1I6UImo7vP37X/9GZ9QOjyl9s+bHYyr8JZ01+err//LffpnKxB5//3At6P/23pOjBj51f+Sbko5rraYJpcPlFQ0/dvnWXj5+6Mcvf3+hfnNPMjUvHhkyzky/ePg4sBYc+u5RuoYFwKRdztz73T///Fff19sV0fMHc761kefPpt3OJ49erPuXh+4/Lw76Y4hHmbS3ZHg4aiKk8/jroZ0ClmO+rX60/fnnf5IKRhS2ICklv733Io81z39xGPaNjYq+uf99ODA39ERNCHn5zbcrhzh8i9V5+vtff/NMQInGbXbHwwfDdYYYBa90HmzE+dGKVfH1d/fv/fBgzm6890ROCBn5dsizX+K6Lu71WvVd/+KDF/J8NnH/3tNqjzhkwoeP7j8RWAjpPf7621BuwJ/VPMqkxPLUg5FJQroPvvomeoKP258oHW59d29oIZLxm6US4ypTOvjmu+cnba7L4olO7flXv/3h6Ytf/M9fmI2aoSdKQsizr74KpOtcV8YTrUe/+633qMukVz//jy+HHr4+Zcjk2ItJb4Trwvih1xQ9GZoJxKY11ItnT4eeSAkhL7/+2neI6XFCCGkfxx89l+RzBw/uPar0iEU69vT5oydjU4QwD//8daQw4M9qHmVSPR979vCRzWR4PCo7xaTLGc3i/n/86u+HFZZY/CCx5Xn6ctQ4oRjVWPGX9KNe5yAe8Xtm/vGX/7AZ2339+KHFbHowLKi0MLn5I79VLTXOzxqkcv20hnqlnbI+e/YigluSLKaleHFPZZ5Vjr3Q22bHXjwxmS0/PB8tNntcV8YL9cOdHx6Jqu2GVvBiwmB9+fJVcCs4/OSxzWx89EZaH/QEJ48yiRCS2F7RaqeOKpjG/YlmKW3Q02aTyWierra626uuSaOz1MQH7lt64dBWj5Cj+KZGQx/kcZF0VtfnshscrjYhzZPDSVq3tvMxPZtvq2YlazGo7AurhJDCQUij0cWP0An6R93TSnhnr0tIo5iepHWBcJIQsh9andAaMlfwWc2vTAIAgLsMmQQAAHyBTAIAAL5AJgEAAF8gkwAAgC+QSQAAwBfIJAAA4AtkEgAA8AUyCQAA+AKZBAAAfIFMAhiMsG9uxv/2oTth39zi1gEn9QDcRMgkgMGYVY0+ldJOPS0RUuuJXDm9q5JRn/3yV5LpzWjQLZaIN/eOw/6Vg2xu1eurNNDUEeAcyCSAwVjQSx6/efEfv/q906L58k/3njx4PL+8+s2///NzAfXF51+aTfTnv/tqxm7+45/+KNI4ml200AU4BzIJYDDcOurh6xevn8vr1YN7//rvf/j2DUOIWyv6buhPP/s/v5kyGccFoszR4f/9+d9qFhNcFwvAU8gkgMFYoCWP3wy/fiY9ye++/O6JeHxMMaH/7T/94xvN1MiTp2bHrMM5Y6UpsVT5alRSbGLuDuAcyCSAwSjljg5Sh6nkUbtdTx0eNWvFhfkZ98JyrtrKH+46ndOb4Xg8Hmt2ugeJeA2ZBHAeZBIAAPAFMgkAAPgCmQQAAHyBTAIAAL5AJgEAAF8gkwAAgC+QSQAAwBfIJAAA4AtkEgAA8AUyCQAA+AKZBAAAfPH/ATnxZS43aPNXAAAAAElFTkSuQmCC}}







A-law companding function curve

{{data:image/png;base64,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}}





Square-root function curve







The following shows the difference

Byte frequencies '''without''' any companding.

{{data:image/png;base64,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}}

Byte frequencies with A-law

{{data:image/png;base64,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}}

The following is the a-alaw formula implementation in R.

alaw <- function(x, A=87.7){

       th = 1/A

       cond1 <- (x>=0 && x < th)

       cond2 <- (x>=th && x <= 1)

       x[cond1] <- A * abs(x[cond1]) / (1+log(A))

       x[cond2] <- sign(x[cond2])*(1+log(A*abs(x[cond2])))/(1+log(A))

       x

}

The parameter x is the vector of frequency histogram.

The returned x is the vector of histogram after A-law is used.

For details of A-Law, please refer to http://en.wikipedia.org/wiki/A-law_algorithm.



{{data:image/png;base64,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}}

Byte frequencies with square root (power of 1/2)







{{data:image/png;base64,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}}

Byte frequencies with power of 1/3

Please also note, in order to make training a model converge quickly, we might also want to scale features down to a range from -1 and 1.

'''Training:'''

Once we have preprocessed our inputs, i.e. byte histograms, we are then ready to train a model with a machine learning algorithm.

The Neural network can be seen as a function, in this case its input is  a vector of the preprocessed histogram and its output simply is a yes/no (1 or 0); With neural network, we can actually have a probability that might tell how likely it believes a given input histogram is a GRB or non-GRB, again it is worth stressing that non-GRB is a huge class to be classified, we might need to have a s many negative training examples as possible, but again if we know what types we are dealing with, the problem might be further simplified with smaller set of classes; Also it is worthy noting, training with too many negative examples can also produce an unpromising result, in an extreme cases where you might have 10 positve examples and 10 million negative examples, with a huge different like this it is likely you might come up with a biased model towards the one that dump everything it has seen into negative class, so the choice of training set might be important, there are some cross-validation method that might help assuage this bias .e.g we can randomly pick some portion of negative training data, but again this leads to very thorough performance testing with each of the models you have trained with different data or even the training parameters such as a different regularized term, different structure (different layers and different number of weight units). In addtions, the choice of the structure or the tuning parameters depend on how well the model fit the data, when it overfits the training data, we might want to adjust the regularized terms or add more training data; but when it underfits, we might also want to increase the complexity of the network structure, but again the choice of strucutre depends on the patterns hidden in the data.



The linear logistic regression training seems to be less complex compared to neural network training, which can be implemented with svm, gradient descent, etc. It is a globably optimal solution as long as the data is linearly seperable; and it is cheap in terms of computational complexity.

'''Evaluation''':

Once we finish training, we need to score our model and decide whether the model meets our goal, then the knowledege Evaluation is also very significant in the process,

This is where the prepared test set is used. Again, the details of performance evaluation such as recall, precision, ROC, etc are skipped, but the idea is to decide whether our model meets our goals.



  '''Use of the knowledge'''

'''Output the model <<BR>>'''









  When finishing neural network training, in the end the model parameters and configuration (e.g. number of input units, hidden units, etc) are written in a text file called ‘tika-example.nnmodel’ in the same directory with ‘main.R’;

  As we need to copy this file to Tika to allow Tika to detect the type for which the model is trained e.g. GRB type,  note you can create many models for many different mime types, but GRB file type detection is discussed and used as one example to demonstrate the use.

  The following line in main.R is the last line used to output the model, the name and structure can be customized according to different relish.

  {{data:image/png;base64,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}}

  The exportNNParams method implementation resides in the utility class i.e. ‘myfunctions.R’; it can be also customized or replaced to create your own model file with different syntax or structure.

  The following shows what the outputted model look like in that model text file.

  The first line begins with # which indicates that this line is a model description that tells the type to be classified, the number of inputs, number of hidden units, output units and test set error cost; they are delimited by a tab.

  The next line without # at the front shows a series of floating numbers separated by a tab, and they are model parameters, later we need to import the file into Tika and have the ExampleNNModelDetector to recreate the trained model with them in Tika so it can predict and classify the unseen file and determine with the imported model whether the given input file is a GRB or non-GRB type.

  {{data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA9kAAABFCAIAAADRmrIYAAAgAElEQVR4nOy9Z1hU2bYuvP/eH9++33fOPvfuc9vQ0Y670+7duVuikSAZERBRclRQUAkGBGMbMYCSo0rOGaSoKnJSUHKmcs5VY87vx4LlAm3b7tbGfbvGM55+uoZVa4413jHmeNdccy3+gvWiF73oRS960Yte9KIXvayE/GWlHdCLXvSiF73oRS960Yte/qSywMW1etGLXvSiF73oRS960Yte/ihZwsU1etGLXvSiF73oRS960Yte/ihZwsWletGLXvTy0kSiF73oRS960cufWMRPkyVcvFwvf6BU6GWFpFIvKyRVenlBUq2X/0ulRi8rJLV6WSGp00td3RIuPrzSMvIqyehLlrFXScZfpky8YjL5kmXqVZLpV0lmXrLMvkoy9zJl/hUT1ksW9isj3JcsvFdM+K+SCF6mCF8xEb1MeerS7ErJy16HXun7wctF9jRZwsVfNvvU01OqvGxG+Kvkz0MHp/WMcOXk350R/ip5qYyQ84rJn4ehvmy6udIMcLm8VEb4a+XfmhH+Wvnj6eBKifwli+IVE+XTZAkXb9ALRRr/TNL0MuXen0yaXyWh/Zmk5VUS+p9JGC9ZmH8aadXLz0vby5T2P5N0vErS+SeTrqfJEi7+a484MDDwcHDw4eDggwcPXobHevm/Q1a60vWiF73oRS96eZasND3Wy59alnBxmVTy3CqVSiQMOr2zo72jo53JZMhl0l/z8z9UpRIxRqBSKqQSsUwqkYhFoFt4myNheaVUKhFjjDDGCHQSsVi6YMEYY61GIxG/Wg5LJRK5TEq4p1IppRKxVCJWyOWERaGQv4oRlkpkUgnGSC6TSiUSiVis1agX82HhX18RlYjFapWK/EMAGo1aIhaR+QA6rUQsWnEnl4dXIlYq5BhjjVolEYulEvHjDFmswVdEpRKJTCqh/qkFqUQsEYvVahU5JRLfeXVUIhbrKNOXVCqRiMUYAcYYI3jl5gfK9KXTaiRiMTXmapVK8srkg1Qi1mrUZE2RaYwxVshlUolYIhGrVcrFxJCueGIs9DWVkqwponeQs65ELEage0USQyolOgWSSaXSX0oMYupY8fCqVUqiCxMfFfKFTb1KhZzodEqFgrDIZbIVn9kkEjECnUb9uKYWuzMi0nUZ83kVOh3GiAidRCwiuzDGWK1SEr2DkiEr3OmkErFKqcAIqOWmUioWvF1gPksy5FeGgsLF+Tzuc6qAz5NKxIEBAX/5y1/+8pe/hB04IJdJBXze8x/hj1EelyPk8zCCioryh4MDYpGAx+VoNOrGhvrIyIiszAydRs3jclbcT6rDGrXqdm5OZGREdXWVVqvmczkatepmYmJkZERbK1OtVr1SDgsFfJFQcPrUqaioyJHhIblMKhYJ2az5I9FR0dFRbNacRCxccSeXK5ejkMtKiotmpqcEfJ5arWxvb42MjEhIuKFWKfmvUnilEnFfb09cbGxkZER0VBSt+Z5MKtFp1NlZmZGREfV1ddpXL4HlMunM9FR0VBSD3iKXSYUCvlgkPBkXFxUVOTE+JpNK+LxXxWEBn8fjcq7Gx0dHRR45Ep2ZkSEWCZUK+cCD+5GRERcvnFfIX61pjZi+7jU1RkZGpKelEejrtJriosLIyIiS4iKdVvOq5YNGrUq6dTMyMoLJoGvUKj6Pq5BLL144HxkZMfDgvlIhfxUc5nE5oNP29fXW1tTIpBI+jyuViOdmZ6Kjoo4dO8rjckRCgUIue/RwMCoy8qdz52RSyQomBo/LEfB5GKPq6sr7/X1ikZDwEHTa0pLisdERkVBAJEZ5WWlkZERBfv7KJgaPy5FKRDKppCA/n82aJ+pOrVKmJCdHRkbQmu8RiaFUyK9cvhwZGdHf36tSKlbWYY1aNTz0qKK8TCYR83lckVDAZbNjjh2LjoqamZ6SSkRSiXh6ciI6KvJETIyQzxMJBSvlLTGjYoyaGhvb29qkEjH5T1KxqKiwkM2a5/O4Go26qbEhMjIiIz19ZRsHj8sRiwQataqosGB6alIo4MukkrbW1tgTJ6IiI6Kjojo72qUS8eOpg05fWebD43JUSsXM9FRJcZFELCIsSoVsZHgoOiqyu6tTJpWIRUIOm3X0SHR0dNT83CzxtefX38jFhQI+j8s5d/asubm5paXFhfPnhQL+K9W0CJVKxI8eDjo77/iv//qvpsYGlVKukMuam+95enrGx8f7+/llZqSr1aoV95NUlVKRn3fX398vPj7ey8uzrrZGo1bfuHE9OCiIsHR1dhCt4lVQAZ8nl0ljY2MPHTp08cJ5f3//6alJsUgYFnbg2NEjx48dO7B/P/G1FXeVVB6XgzG6fOnSX//618mJcZVS0dPd5eXlGR8fvzc4+NrVq5pXKR8Q6C5duvjD99/Hx8efOnWSyaBjjLMyM/38/OLj4708PZuaGhVy2Yr7SapQwGfNz+3fHxpz/HhHeztxu+zIkeiIw4fPnT0bFBg4OzO9ok1riYpFwqnJic8+/fT0qVNHjkR/8cUXaqVidHjIx8cnPv7KgQP7z5w+rVIqVtxPUhVyWUsLjZi+Avz901JT1Gp1SXGRj7d3fHy8t7dXaUnJK+WwWqW8eTMxKCiQSNeO9jaNRnP69OkDB/bHx1/x8/UZGR76tU3rhSsxj8XEHP/0009C9u3DGAsFfC6HHbJvX1xs7JHo6EMHD8qkkonxMT8/38uXL4WHh8fFxioV8pVyWCwSjo2Ouu/a9fe//72ivFytUspl0p7uLien7f/997/3dHfJpBKlQl5RUe7t7RUfH+/j411YkK9WKVfKYZVSUVVZaWW17f333+dy2CKhQK1SpqWmBhF9zdOTwaBrNOrzP50LDQ2Nj4/38fZ+ODiwgomhUiouXDj/zddfu7q4YIwFfJ5YJIyKioqOijoZF7dv714el8NmzQcHB505fToqMjIyIkIiFq1UpxMJBfNzswEB/mvXrk1NSQGdlr/Y6Y4cif773//O5bDVKmVLC82LYD7+/ulpaSvIfJQKOb2FZm9vv3btmrHREYlYhDE6euTIxo0b469cPnXqZE93F8YoMSEhmJg6vDw7OtpXkPmoVMpbt24ZGhps3bIFgY6I+eTEeHBQ4OnTp/r7eolVp/CwA0ePHjkRExMaGsLjcoQC/vMP8Ru5uEgomJme2u7oeOjgwcOHDzk6OHDYrF818B+jQgF/fm62rZW5adOmutoapUKm02oSEm74+PhgjK9fu+bv7/erTvxlq1gkHHhwf2Z6CmMcErLvZFwsxtjV1SXv7h2MsbPzjrt3bq/glPqkCvi8rq5O4u6SgYFBd1engM8zNTUVi4RSidjE2HhuduaVSgyRUMDjcV1dXP72t7/NTE+BTltYkL99uyPGuKiw0HnHDozRijtJKui0P/107vSpU0SFEnNWYEDA1avxGGN/P79r167qtJoV95NUjVrl7++Xl3eXuNHM43JkUsnGjRtGR4YxxhtMTQcHHohFr9CtEg6bRfjWymT4+PioVcoWWrO5uTnGmEFvsbSwfKXCq9Nqrl2N9/DYgzHOzEh3cXHGGB85En30yBGMcXR01PFjxzCCFfeTVIyxg4N9UVEhxtjT0yMnOwtjbGFhyaC3YIwtLSxaaM2vwuKCUMAfHHhw8GD4gf37MUZEozU2NtaoVVw2y8TYWCoRd7S3bdmyGWPc1dm51cxsBS/aBXwea36+s6Pd3NystKRYpVQIBfzZmWl6C83UxKSjvU0mlSDQnYyLO3ToIMY4NvZExOHDKziziYWC8bHR8rJSU1PT+blZkVAgEgnv9/ex5+cxxrvd3RNvJGCMra2tGurrMcZW27Y11Net4CqDSCh4+HDw1Mk4Tw8PDDrC2NXZSczD33377eTE+NjoiKmpCcZoZnrK1NRUJBSsFBcX8HlcDru3t9dp+/bkpCRiyiJuUJubm73xxhsCPg+BLunWTR9vb4zxzZuJvj4+K8h8RELB1OREQ329sbHR0KOHErEII4iOjrp5M5GIsFgkxAjc3Nxu5+ZgjHfudL2dm7OCzEcsEg4PPbp+7aqjg4NWoxbweUqFbLe7e11dLbEjhc/jslnzxsZGQgFfqZAbGxvPTE/9qlWn387FZ2emHeztb+fmZGVlOtjbcznsF0i5BC/ujo+Az8MYu7i4VFVWKBUyrUadmpri6+uLMb586dKBA/tfyAwlFPBfyOnzuByxSKjVqIeHhzw8POgtNIyRt7dXZkY6kZHFRYUvZN3rBU4cGrWqt7cnLOzAkSPRbNY8l8O2sLCYnBifnpo0NzObn5t9IZF5UfmAERALdR4eHiPDQzqtpqy0hOA0OdnZnh4eL4TKEFt3fv9xEOiuxl/51xdfREdH52Rn6bQajFF4WNjFixcwxgH+/klJt7Qa9QsJ7wvJBwS67Y6Orq4uhw8f6ursUKuUUonYympbd1enRCyyMDd/9HDwhXDxFzg/SCViBDoLc/NWJkOrUTMYdBsbG4yhtqbaafv2FxLeFzWhSSXivr7ekH37oqOjA/z9ysvLMEKnTp2MjorCGEdGRpw5fRotUoffGd4XUrYqpSI3N8fb2ys6OvrTTz+trCjHGG/fvr22phojsLO1bWUyXggX//0JTHCU0JAQgotPT02amZmxWfPDQ48szM2lEnF3V6eV1TadVnOvqcne3v73MIPfnw9EX9uzZ3dBfj7REURCAUZgb2fHZNBlUgnotBfOnz94MBxjfPz4sRMxMb9nZvudDY7H5UglYg6bZW5uTtwZIzqdTqvp6+3x2LOnu7sLAbi4OJeVlmKM7e3smu81yWXSlcoHHpeDERQW5Hvs2UNyca1GzWQyQvbtOxkXJxIKxkZHzM3NhAL+g/v9lpaWv2fEFzI/YIxDQ0ISbtwg9iNhjM+dPRsaGrJn927W/BzotJkZ6QQFv3o1nsjz35MPv8dhYkuVUiHfts1y4MF9Yo0pJub4jz/+EB0VVVxcpNVqMAJfX9+01BSMsbv7rsKC/N/DfH5/Pmg1alrzve2Ojhq1SsDnadQqs61bPT09Dx06ODjwQKVUcNgsc3Oz8bHRudkZMzOzX3sH+Hdx8S1btwoFfGLgF8vFuRz23OzMizqaVqN2cnKqrqp8SVxcwOex5udY83O/n83wuBylQj4yPLTb3Z3WfE+n1WAEL5yLC/i8udkZLof9+2NL5OijRw+vXLkcGhoyMz3F43JeOBfncTkvJB8kYtHI8JCjo0NxcZGZmVlba+vL4OICPo/Nmp+fm/39+SAWCcdHR9LT05Ju3fLz9c3NzcEYv3AuLuDz5udmOWzW73cYdFoXF+fg4ODk5GQPjz0DD+5r1KqXwcXnZmdeyPZBoukmJyWFh4UJBXyFXPYyuDiHzZqbnfn94ZXLpAwGPTg4KCkpKezAgazMDIxfPBcn8oHY1/v7w6vVqPPy7makp3333bdFhQUviYv//nzQaTUkR3nZXPyFNDjQad3cdhYWFBAdQcDnKeQyG2trIqQvkIu/kAZHLIWSHIXYL97b073Lza27q0ujVum0mhfFxV9Ig1OrlLdzc6hcXKfV9PX1/vTTuUMHw/k87vjY6Ivi4i+kwWGMgoOCEhMSdFqNTCrp6el2sLcvLi7aumXL4MCDF8jFX0iDE/B5Aj7PwsJ8cOCBRCwSi4RDjx6mpqQkJSV5eXqWl5VijF4UF38hDU4hl9XV1pBcXK1SWltZHTp0KDExwcvLc2J8TMDnrQwXn5meMjQ0UisVIiHfyMiI2KPC5bCJVyWQ0yJRcsTDJeTPNWoVlZ8RFxnkR6lE3NbKdHffRd6i4nE5ErGI+jAH8YiYUiEn643LYSsVcrlMSh2I2LKDMXZzcyP22hKLH97e3sQeFT8/X2I3GPkToYBPdYa4fFerlNShiednyaF1Ws2lSxdPnTxJ7NMinZFJJcviIBGLqBaNWkXMSuRwYpHw0cPBsLAD/X29GGPi6Vpn5x3EHhUnp+2FBfkYY+pBiK2B1Dgo5DJqHJ4ERa1Senp4NDU2UCe7Z4NCXMhqnnh+QiQU1FRXES8cWL9+PXGBaGRkRLw9w9DAgLhlQ3VYpVT8YhyIdCf+XyIWEZv+iep9TlCIDFHIZdQZWSIWjY4Mb9y4wX3XrjVr1sTGxmKMS0uKHRztiT0qTtu3Y4ypzhBxIJ0hMmpZZCRLndGoVRnpaQcPhsPiJE6AopBJuZyfBeWplSIWCfv6eicnJjDGZ06f3rdvL8Y4wH9hj4qfr++NG9eX5YNELFoWmV/MENBq9gYHUyc7wplngPJkpSwcSqe1strW0d6OMd6yZQtxx9nExHhsdARjbGxkNDY6otWol5Xtr6oUYuOZs/OOqalJYrJ7KihPZohMIqbGgUxgHo/r6+NTUJCv1agxgtZW5tatWzHGTAbd3MyMuGH6/NPXk5WiVMjLSksDAvzJ7S6/rWyJqeb61fg9e3ZjjDPS01xdXTDGR48eIfaoREVHHj92jDqTE3HQ/MpKAdBFR0VRL/OeZ/paVilUHzDGWrXa3X0XsTXFzMyMmI3Nzcza21oxgmVxoDpDxEH285VC7OV1dXG5399H7jB+smyXgbKsUggnU1NTIiMiCMQnJ8aNjIyIJUZjIyOpRNze1rp58yaMcXdX15YtWwjQeVyO5lc2OJlUwqC37Nm9m9xx/jygUCuF7GteXp71dXUYYx6HLRGLMMZOjo6PHg4i0IFOGxcbS+5ROXzoEMG9fkODA53mwvnz586epTY41dPK9qlxIBwmnLeyslIq5Aq5TCIW9fX0HDiwf3xslJhydVqNldW2xoYGYvNSfV2tQi77bZWiUio89uymNd+TUy7zflXZEvlQUV7m7+eHMSZ+WF1VSbywiNyjYmxshDGenZk2NjYmuPhzNvplDW7gwX0XF2eSzT8PKFwOR0HJEOI+SXhYWHZWFsZYKhH39nQbGhq67dy5Zs2aa9euIgRJNxO9vbwICkRsVvkNlcLncbUadWpKcsThw8sa3LNBoWYIcToYYxsba9b8HBGf7q5O1vwcxvjA/v0nYo5jjF1dXYk9Kq6uLrk52YQPv4EK6rSaoMCAkuIiaoN7NijLKoXHYWOMO9rbdrq6EvODUiHbsnnzxMQ4xtjQ0KCjvU0kFBgZGYpFQrVSYWhoROxRec4GR77f5rc8uyng8+JiY4ODggL8/c+cOS0WCojr8ry7d1qZDPJJXqlEnJGePkDZJCrg81KSk6cmJ4j8Jja6JSfd4nLYRCBkUkkLrdnS0oKcqqQScVdnx+3buSR3lMukjY0NpSXFJF9XyGWlJcWNS/klsQ4aFnbgrbfesrW1yc+7W1pSXF9XGxwUFBYWTlx+5ebkzM5Mk85MTU4kJyeRRxCLhAMDDzLS06ln1Mpk5N29Qw6NESzbkKeQywoLCoi3XpDzb3ZWZl9vD9ktREJBakry6Mgw9eIJYxwVGfnNN99ERkYEBgTUVFeXFBcXFhZ4eniEhYXv3x9aX193985t6mFbaM2FBfnUOFRWlNfWVJNxUMhleXl3iRuXZM7Z2tjW1lSTvxLwecnJSZMTj0GZm52hgiISCoaGHqWlplIXNYlnni5dvLhnz57Q0JCYmOO1NTVVlRVXLl/29vby8fG+dPFiRXkZlfTLZdLbubnEU9IkRulpqeRyKTGdJSfdIkEhpqrNmzeRXFwsEg4OPMhIT6OC0tbKvEsBRS6T1tbWVJSXL9t0KODzMII7d26vWb36+rWrFRXl9XV1Bw7sDwsL9/TwKMjPu3PnNgkKsQCQlHSLXBMSCQXjY6MpKcnktC4Ri/r6erOyMsnwajXqxIQbvr6PN+Qp5LKqyoqa6iqF/GdBkUklmRkZD+73UyOskMtotGaPPXvCwsN9vL2rqipzcnIqysu8vDzDwsKDAgPr62pzc7LJn0jEoq6uztycbGrAmxobS4qLqBlSVlrSUF9Hfgcj2OXmlpOdRS71ScSijPS0J0BJmpmeIjNkemoyOSmJv/TZXIVclpGe5uHhERYWfvjw4bq62vKyslu3bnp5eu4NDj51Mq66qrKysoLqTHFRYfO9x5Uil0lzsrN6uruWVkoKCQqRnJs3b5qcnCAsIqFgfGwsJXkJKP19fVmZmdTw0uktBfn5y/JBo1ZlZ2Xu2OGEMZbLpMVFhXW1tVFRUWFhBzw9PLKzsgry8+7395GvAyKmr4nxMWIsAZ83NzubnHSLXHQRCQUjw0OpqSkkKCqlIj8vz9l5B0ll5DLpvabG4qIloJSXldbX1VLL9s7t28veiiCTSvp6ewIC/MPCwj09PctKS3Jzc6urq3x9fcLCwn19fWqqq3Oys0lQxCLhw8GB9KWV0t7Wduf2bWql1NfVlpeVPp7QMA4OCrp8+RJ58SCXSXNysru7HoMiFglTU1NGhofISuGwWclJt5atlgn4PIlYdPbMmR1OTrW1NZMTE/n5eVlZWZ4eHmFhB45ER9XV1iyLQ3VVVVVVJdVSkJ9Hp7csqZTMDBIUgotv3bKlp7ubOE1iGezZoEjEop7urpzsLOINYFKJ+Nq1q0ZGhp9++mlsbCzxfOGJmJi9e4P9/f3OnT0rk0rmZmcOHgyPiDjs4+OTmJhAICWViNPT0x4ODpCVwudxk5OSiLdDEOk6Mz2VnJTE43KIfyXQt9q2jWQGTwWlob6urLR0aaUU3WtqJN5VNTkxHnH48Lp16ywtLTMy0pUKxYP7/fv27X133ToXF5eiokKMEINO9/Hxjo6O9vb2ampsUMhlQgF/cmI8JSWZxEgsEj6435+ZkUENL4Pekp+XR8kHiDl+/OiRI9QGV5CfR2+hUX+VlZnZ3/f4ckgo4KempIyPjYqEAqVcdq+pycfbe9WqVb6+Pi20Zoyxr6+Pqanp8WPHAgMC+vt6QadNT0/z9vaOioravz90cmJcLBLKpJLme01FhQVLKqW8rK52SaXk3b3T1tZKJrlapbS2tmqor1PIpD8HCsE6SFCIVbD0tFTiEUyFXJaakmy2dev7770XFRk5PTWpkMtOxp308/UN2bcv5vgx4lfHjh7ZHxrq5+d38cIF4odymTQ3J7urq5NaKWmpqUNDj8hK4XLYyUm3yCepJGJRf1/vli2bSS5OPDaWmfGYdcikEiaDnpd3lxIHaU11VVVlhUIuEwkFrPm5mJiYjz/+2MTEJDHhhkwqEQr4GEF6WuratWuTk5Mwgr7e3gB//+joaC8vz/KyUqVCTtzxSEq6Rd4EEwkFoyPDqSnJJC2RiEW9Pd3Z2VlkwIk7SAH+/tQGV1FeXltbQwXl7t07ba3Mp1JBuUza0d4WFBi4evWq3e7uNdVVGOOa6qo9e3ZHR0f7+vi0tTKVCkV+fp63l2d0dHRQUODg4ADxHsnOjvbbuUupYEN9aWnJM6ggRuDq6nLndi7Z4H4OFCoVnJyYSE5OIsKiVMjv3rljb2f35ptv7t8fOjz0SKtRJdy47uvrc/jwocOHDs7PzUol4jOnTwX4+wcHBcXFxgr4POJGa2FBPvWpmCepoFQiJm50/xYuTpyMTqM2NzOzs7MDnZY4JYyRq6vLrZs3yQUVrUZttnVrdXUVQawJ/4yNjO7f7ydcEYuEI8NDBgbr2ax5IgoyqYTeQrO1tSG5uEatysnO2r7dkbzLhkB36tTJwIAA0m2McWBAwKlTJ8lbtMT1x9zszM3EhNyc7NSUlFYmw9zcrKe769HgYGJCQn1dnVIhX//jjyPDQ8RMKhGLHtzvNzQ0IGmfUiGvrq4y27qVeka3bt50dXUhJybCmeioKNI9jLGXp+elSxfJ7kusF5JLj0TRmpgYU5NVwOfptJqBgQeZGRmJiQmpKSnlZaWbNm7EGJeVlSYmJExPTdbV1VpaWlAPe+XyZU8PD0ocUFjYgSPR0RRn0M6dOxMTE8jOqlGrtjs61tXWEOlLgGJoaEjOpGKRcHRk2GD9etb8HAGKXCal0Zo3bNhAFDB/8dqduObLysq8mZigVMgvXbwYFBSIMU66dfPWrZt44QnUOBIUjMDB0TEzK5O84lSrFJs2biTfByIU8DlsloHB+uGhRyQogwMPLCzMH4Mil9XWVG/ZuoU8iFajTk665eLiTIKCERw9eoR4EovMB7lMStRzc/O927dz29ta7e3tqqoqZ2emExMSSktKMMbGxkYkKMT9n/Xr109OjBMZTlwWGhsbkU/Nq5SKoqLCbdssSVC0GvWtm4mBgQGPncHoYHh4ZGQExj8Lik6rMTc3rygvp76fQSGX6bQaJoORmJDAoLfwuJwff/hBIZc11NclJiQMDjzo7+s1NTEhQVGrlLm5OXZ2ttRKOXP6DPUZZYzR3uCg2NgTGC2CAjqPPXuoD8eoVcotm7c0NT4GhcthGxgYkOycuEAyNDAg/pW/uKCikMvUSkV+3t3EhAQ+j5t7O8fF2RljnJGRfvNmolajPnXyZEjIPkpksK+vz8ULF8joIdDZ2Fjn3b1DOENUiqmJSSuTIZeI+Ytc3MLCnOTiUom4u6vL2MhILBKSoJSWlFhaPgZFp9Vcu3Z1z+491HwgltyGhx61tjKJPYu73NzSUlNEQkFiQsKdO7cxxhYWFuVlpSrlwvQlEgqMjIx6e7qJShEJBWOjowbr15OdVS6TMuh0U1NThVxGOlNYUODmtpN6jj+dO+vn60sFJWTfvhMxx6llu8PJKS01VatRkQ4T+dDX05OYkFBbU6NVq9avXz83O9PWykxMSGhva52bnVn/44+8xUf4FXJZXV3t5s3USlGlpabucHKiVsqJmOMh+6igoNCQkKtX48nkRKCztbW5c/s2CYpCLjM1NWXQ6UTDI8iNwfr1E+NjZBcn7omJhILcnOzKigqMcVlpiYWFBcb47p3biQkJIqEgJSXZfdcu6tARhw8fOnSQanHftYv6jLJOq1kGilgk3GZp2dvTQ5btxPiYwfr1ZGd9EhS1Spl3946NjTUxNYlFwoKC/NzcnPz8vPT0NC6HLZWItWrV5k2bHB0dEOiEAj5Bgr/+6qvQ0FASOExQmG4AACAASURBVI1atXnzlrq6WrJSeFyOoYEB+YwyQfIMDAzIbZxymbT5XpO9nR3JxZ8Gii429sTe4L3USvHz9f3p3FnCmdmZmaRbN4uKCrMyM6qqKqUSydjoSHpa6ldffnki5nhbK1MiFul0WlrzvbffequqshKBjsthS8Sivt4echGXaHAV5eUW5ubU8CbcuL7LzY3qTFxsbMxxanLi3bvdr8ZfIX8FOq2lpSX5Gh/iGszExKS7q5OYcnu6u5OSbpWWliTdukkQkQf3+8+cOf3ee++lpaaMjgyLRUKM8fFjxz7//DNinZVYL7x44by3txe1UkJDQ6jPKGOMXF1cUlKSyR6tVikdHOwbG+oVi8nJ53ENDQyIrcn8xUfxDAzWk++cUMhlTU2NmzZuVKsUxJRSUV6WlZVZVFiQlHRrbnZGIhaBTue8Y8eGjRvUapVYJJSIRSqV0sTEeKerK0ZAHAcjsLOzzV2cSwV8nlIh37BhA43WTFYKa37OYP164pSJufR+f5+lpQUVlKrKCnMzM/KMdFpNYmLCzp07KfkAkZERB8PDMUZE00xLTS3Iz8/NyS4uKiROEyOwtrY6evQond4iEYs0avWD+/3r1q3LzMjAGBEz9tTkxPr166cX7zESq1omJsbkW6rVKmV+fp61tRWi7NW5ceP63uBgapEe2L//6NEjVFBcXJyTKffWqFRQIhY9HBy4eTOxtKQkJTm5va1VIhYh0JWWFL/99ltMJmNxyzu6cf3a+++/PzY6olIpicXszKxMB8clVPBkXBzBOsjkXEYFEejc3XdRe8qToLBZ8wYG66lUsL+vz9DQkFh3lkrEDQ31GelpxcVFiQkJxIUixmhvcPA333xDvPuceKmojY2NmdlWnUZNHAdj7OnhceXy5WdQQY1a9cYbry/h4hjB8yvxRwQuXbx4MzERY4xBR9y+CQ4OKsjPf3w0jF1dXDo62hcsGGGM7Wxt5+ZmFy1YwOdaW1tpNSrS8uB+v9N2R+pBqqsqiP0kpOVmYsLR6Giq5Wh09M3EBKqls7Odw2Zhijg6Otzv7yU/atQqa2srAZ9LDj0/N2tjY40xwhgRlo6OduLFRuRhC/Lzg4ODqJbLly+djIujWg6Gh2dkpFMtu3e7Nzc1UuNgb283OjxEWnRaDa35HtXb6akJO1tbqqX5XpO7+y7qYbMzM8PDwqiWU6dOXiIusxYte/fuJV5tQVp2urq2t7VSnbGxsZmdmSHjIBTwra2sNGolaRkYeLDd0ZFIFMLCmp/r7Ginunfr5s2oqAiq5ejRI4k3blCH9vX1rawsp1p2bN/eT4CCAGOs02qsra34PM4zQOnu7HBx2UE9SFFhAVGQzwClv693cnyM6t6e3e4NDfVUy1JQsFIus7KyWvijAwgwxhPjo3Z2ttQ40Gj3loGSm5114EAo1XLm9OkLF376BVB27mxlMikWRKfTyD+Ug4lKsbJSqxSkZXDgwXYHB6ozNTXV3l6e1MMm3boZFRVJtcQcP3r9+jWqxd/Pr6KslGpxcd5BbJQiPoJOa21tTdyqIyzs+Tkba2u8+FdmMMZCAb+tlUENZlFRYWCAP9Vy5fLl2NgT1IEiIg6np6VRLZ4eexrq6xYPizDGDvb2I0OPyIFUCrmNjbWEAsrkBFkpC3Ggt9B27VoCyu3bOWEH9lMtjx4OPno4SDhGTGih+/bduZ1Ddfjx9rZFZ2xtbaenJsmhRUKhtZWVWqkgLY8ePnRYCkpdba2Xpwd16JTkW8R2CNJyIub4tavxVEuAv39ZSQnV0spkCAU80jfQaW2srYkbu4Sw5udsrK3Jv/CCMe7p7nJ2XlIpZSUlxJoWabl2NZ64KfwYlMOHU1NTqBYvT4+62toloDg4PHr4kAqKtZUVsVOCsCjkUnpLC8ZAusdktLi5uVHDm5ubvT8khDrQ+XPnzp09Q7XsDwm5TYCyaHkSFDtbW2IrF/EFiVhkbWWlIv5Yz8+A0lBf5+mxZ+ELoMMYC/i8qcmFgxAxPHfmTErSLSLWhGV/SEhNTRXVGWfnHT3dXeRACHQ21tYc1jxp4XHY1tbWC7ehEWCM+3q7nZ2cng3K9evXYo4fo1oiIyJSkm9hjDHSEWc9PPRIpVDgxezFGLs6O89OTy1aEMbIwc5OpXw8jc9MT9nZ2VHj0Mpkuu3cSR3o7p3c0H37qJaLF87/dPYs1XLgQGhudhbVsmvXLnoLjQqKvb395MQY1b37/X3E/xAW1vys844dVEsrk0ksHKBFRpGelkrstCEHio09EX/lCtUSHBRUXFxEtbi47Oju7CDPGiOwsbZmE5WCAGPM53Gsra10Wg1p6e/v3bF9OxV9hUw6OjxMeEdY0tNST506SeQDkTOxJ2KyMjMXQEGAMfb28qypqabGYbuj48DAA3IgjVppbWVF7DIiQbG1taGC0t7WSmyHIM8oL+/u3r17qZYLF346c/r0Yj4AxnhyfEwkFFCj5+6+q7u7k2pxctrOosSB2DikILoMAozx6PCQvf2SDGlqbCD2xZFDZ2SkHwwPp1pOxsVdvnyJagkKCiSeDyEtJBUk8+HB/SX5IJdJHRyWDD02MrxzpwvV/8rKcuJ5P/KwiTduHDt6hGp5kgr6+HhVV1U8AxStZjkVnJ2ZsbGxoaKv02oeDQ5QHa4sLw8L27/wEXQY44QbNxYWuRcdDg8Ly17IkJ+lgl988Tlx2AUu7unp8SvUwyMwIOCLf/7z26+/CgoM8Pb08Pb0CA4M+OD990yNjQP9/QhLoL/fm2+8br3N0t/Xh7B4e3muXb3KxdnJ19vL29PDx9vLzdVl9arXPPfs9vby9Pb08PPxtrO1eX3tGvInAX6+WzZtfO/dd8iBggL8f/j+288++SQ4KHBh6KDAzz755Ifvvw0K8F+0BLyxds0GUxPSGX9fn9fXrrGztfHz8SY88dyze/Wq19xcXXy8vbw9PXy9vVycndasem3BVU8Pf18f622Wb77xOvWMTI2NP3j/vWDSmcCAb77+6ot/fk5agoMCP/7oQ4P1P5LOBAX4v/PWm+ZmW8mT8vPxXrtm9XYHe18fL29PDx8vz9273P72n//hvmunj5ent6eHr4+Xk6PD2tWriS8QzliYm7391pvUwxoarP/HRx8+jkNgwL+++Pybr76kgvLh+++bGBtRT+GtN1632mZBBWXNqlXOOx6Dsmun6+rXXvPY406CYm+3BJRAf78NpiZr16wODnoMyo/ff/fpJx9TQfn800++/+4xKEGBAe+ue2fzpg0Bfr6L4Pq8sXaNrY21n+/zg+JtY7XtzTfWkgcJ9PfbYGL8wXvvPgOUvcFB7737znfffhMUSAHl7bfMt24hj/MkKHvcd61+7TX3XW5LQVlFBOqpoAT6+xkZrv/oww+ooHz5xT+//vJfwc8G5c03tlk+BsXHy/N//e0/d2x3fAYoDna2r69ZWimbN617521qpTwBSsA/P/uUGofgwID33l23aSMVFN83X19LBcXLY8/qVa/tdHEmQXF13rEAipcnEQcrS4v/899/p57RRlOT95eC8u3XX//z88+olfLJx/8w+HFJpax7+y2zLZuXgeLoYOdHFIKX557du9asWgLKju2Oa1ev8qGAYmlu9vabS0AxNjL4x4cfkum6Nyjws08+/vzTT/ZSYProg/dNjAyXg2JhTgVlzepVO5y2L4Di5blr587Vr73msZsCir3d2jVrFkLn6RHg57t18+Z177xNPcf1P3z/6cf/oGbIPz/77LtvvqaW7fvvrtu4wTTQfxEUf9///vv/fjyXenl6eexZs+o1V5cdPosZ4uqyY82q17w89iw44+ttY231xuvUSvHduMH0/XfXUUH57puv//nZclDW//jDElDeeXvrZgoovt5r16xxsLcj59I9u3etfu01d7fF6cvby8nR4X/97W/ERwKUbRbmb735BjW8xkYGH33wAQlKcGDAV1/+68t/fUFxJuCjDz4wNjJ4FijeXmtXr9qx3ZEsW3e3natfe23P7l3PAMVsy+Z1b79FmZr8v/3m6/ffXbc3OOhZoLz37kZKTwnw833j9bU21lbUSlkGyk4X59VLQbH9ZVD8v/v2m39+9unjyAQFfvrxP9b/8P3jBhcYsGb1qk0bNgQsZoi/r8/ra9Y42NmSoHjsdl/92mu7dj4Gxdlp+9rVq5eAYmmxDBQTI8OPPnifOll9/eWXXy0BJfCjDz8wMlxP/ioowP/tN9+0NDcjQfH19lq7ZvUyUP72n/+x232XzwIoXo4OdmvXrF7w1tMjwM/XfOuWZZVi8OMPH//joyWV8vln3369BJQP3ntvGShvvrHWxmqb/yIo3p4ea1a95uq842dZh6+3rY31G2vXBPg9bnCmxkZvrF27l9Lgvv/u288/XcI6Pv3k4x+//47a4Na98/aWzZtIcAnWYW/3mHV47CFAcSXnUmen7WtWr6KCYrXN4q2lrMPE2OjD95eB8q8vv/gntcG9+87bP3z3HbXBvf3WmxbLQFm9ysnRgco6Vr/22m73x3Ppdgf7J0F5h1opAf4G63/8eCnr+OKfn3+zjAq+9+4Gk2dSQU+P//rbfzqTc+nzUcHNmza8u24JFXwSlGVUkGAdWzZtfAYoT7IO5x1Oa1at8iZB8fOxNDd77b//HhjwTCr41Zf/+mIJFfzHRx8aGqx/BhUM8PP9f//nX5dw8cyM9OfRjPT03NzckpKSoqKi22U1p3KqjqcUnkgtOpFadDy58MLd2jPZFTGLlpiUwot59acyy2JSigjLidSiS/n1ceklMYsfY9NKLuU3nEgtXvxJ0cmMskv59eRPYlIKT2dVXLhbd5xy2LM5Vefv1BxPfjz0+Ts1Z3OqyKGPpxReuFt7Oquc4kzRpfz6kxlUZ4ov5TfEppUsfCG1KC695FJ+PelqTErRqcyyi3n11DM6k11x4W7t46FTCs/lVv90u3qpM7VncyqXxqHuVFY55aSKLuXXx2WUkpbYtOJL+fWxaY/jEJdeujQORacyyy/m1cUsiUPl+Tu11KF/ul19Lrf6CVAqfzcopU+AUn7hbu2zQfnpds253GWg1J3OomZI0cU/DpSaJ0F5MkOeAKXhKaCkPguUMz8HSvKzQalbBsrFvN8Gyi9UCgHK8WeBUngx70lQ6p8NysmMsuVxeAooVT/dfrJsfxmUkxRQTvxMpZx4NijZS0FJKTyX+zyVUncqs/yJSimlgFL8PKA8Uba/BMrT59K6paAslC358SmgPFelvChQKJWSWhSXXnIx7zlAubukUs7dfqJsnx+UpWV7Iu3XglL5028Bpf7k0+ZS8mNsGgHKkgb3W0Gpov7qZxpc6RNz6RJQnjaXLgflwjJQntbgzjzZ4CigxDwdlPrfAMpvqpTfwjouPoV1LGlwvwjK4lz6PKD82gb3PKDUPLtSfgaUpQ3ueUF5HtbxC6A8R4P7ZSr43KBUvAhQfrHB/QYqWHilsGkJF9eoVc+japUSL4oc41YJ7lPjAYQHtLhHgbvlf6j2KHGv8gnjC3FD8VuO0yXDfVo8qH3RZ0pxpkf5G0+QiBX1t72ERfkLX1vmSe/TYv7kd37BGcUzR/kZT5ZbnurM0tGfHOgph32aM0/GeSFcz3Sm5wlPlrj3hOWX3Vv8yR9fXHrVq171qle96vVl6xIuzv+ZxzR5XK5ILFbIJSL+wiNEUomE+AlLiWhsuMNEV3PQhSqonAI6B2isP0rnoHEamuehhU0xzkPTLDTPP/dB5qGFCwwu0Jb+pHkWmuZ+tUsMAZTWopgSoHGWevX79B7pzDzcmwfarz8ynQctc9AwBS08YHCAxoIWNjTPQcMUNM5AM/E1NrQKgTYLDVNw72nn3sIBJheapqBpHph8aHnaQC1cYHDg3vyzTp/OBQYbGqagmb3gzDJtZgGDB7Q5aJiGFi7Q2UBjQ6sAmmehYRroXKCzoZkNTB40TUPjLDB4i8OxgcEDOgtobKDNA50HdBY0TEEzF5jchTjQ56FhCmg8YHChmbVwtIYpaOYsOjMPdB4w2JRT4ECrAJpnFiPDgVYB3Jt57AyNA0wuNM8t/mQeWrjQyoPGKWicfTw0kwsNU9A0t2jhAoMFDVNwjw0MzsJZE+4RzjSzoIUN92YXYKKxgMZCLyqp9KpXvepVr3rV64rrc3BxLlckFc0P9zObO6Y4POLtZo+5uAJ1SiCpDLl54/AsVMsDpgC6ldCjgH419CqBPg8tfOhZtPTIgf40ltzMgnYp9KuhXwWtXGhmQacSumXQq4R+NXQKoYUNXSrokkGfCvrV0CEABh9qmpG1OfrCBl3vgS4B0OaBKYWuCYi9hbKHoJUHNBbQ2NAhX3CmXQwt88AQQr964SDN80AXQisLmlnQq4NeGdBZ0MyGHhXcKYIT5cDgAY0FzfPAFEGfGvrV0M6HZhZ0yKFHsWBp4z3m8Z0iCHVDh4uAIYROJfQpgcGDbhX0yoHOWqS85FnPA50PvWroU0GXDHplQOdAlxJ6pNAmhn41tPOgmQ09SsjOh7gqaBcBfQICnZHrZdSB4YEGOoTLLyGeqgw+lNPB1R4ZmmGbaKiagU4x3C1GhgbI0BzZ7kPlQmBwoE0ABQXIZBsyNEeX86FLtuQgLRxgsODMSWSwFX1tg87WQptwOR1v4QJtAg7tw1/aofgu6BI8xRk6D+gjsC8AG5qhrVGojg30J1h7qxCqWpCTPTLYiLySUbsE6CxIz0QW25DRZnQwHVqF0CGChOvIZAP63hLH1EGbEFrY0KmAzCT0pTlKug/dEmgYhABPZGCBTP3RnUfQLoLKDnB3Qobm2PIglE9CmxBaHkGQDzbaiiyPoUYOtLCAIQTmBHKzQY6XUKcYaGxoF0BOJvrRDBmao7g6aBVBahoys0RGm1FUDrSJoZUFZ0+hrzejqBroEkILF+6Nwpk4/OMW9IMtusWEdjE0DEDUIWxghgx3otv3oV0EDQPg74MNzdCmw6hqFtqEUNUOu1yw0VZkdwY186BLDMnJ6HsjZGiOdp5AdTLEYGuY4/Ndg6PdD0d7Ho62Tyr07FyvetWrXvWq139f/WUuLhRKxazO+BCrf63zKBqakkqEVC7O1aDSerB1QO99jU13oMh8aBmEuAR0Oh0Cj6KD16FeDNVMOJGITqZA4FF0JB2axNDCws1sTGOhZjZuZgGNDe1sSMmHfTFo3xUomIT2WfgpHl0qhCNXUMBRFM8E2hScvojiS+HgWRRwDN3qhVYhtLChoRM89qGjjdAjAjoPKumw9xgKSYTyKWBygMaBdh7cSkMBR9Hh65DVAPU8KG2CfSfQ3pPoVi90i6HxIfg4og12yO80OpQMFfPQPguXb6LAYyieDkweNM9DmxTKmyD0GAo4jtLuQwcXrqSik5mwPw4FxaLcIWDwgTYPrUooyETOB1EZFzpYcOEaOngLygbg9DUUkQSVLGjlAYO7oHQ2MEXQOAARx1HoeRSfjyKzoeIRnDmPTpRBfh0KiEGpfdA2DxduoMBj6HortPKgXQ6J55FXNDpyFQUdRzc6gS4EGhs3s9HCf5+EmQ0MLtxMQ5H5cG8c+TvhfaXwQAbXcpDXJdQjhRYOtLChVQiFlch1O7raDQw+NM8Qh12AicYChgDqO1D4RZQzDpnXsZUfKpyHVh45NKaxgC6AyhYU+hMKPoGi66FHBAsosxf+S2NDKw+uXUQu5xB9Co7FoQNF0CVc4nALF9rHYX84OpgH9D7wi0JXe6FjFAWFo8RO6OxBTqHoxiD03YcdQSihE6poaOd+VPwQOhVQWgMeXtgkCN1sgR4l3ClEB5KhngVH/bDbdWiTQGoWOpwLTdNorwsOyIM+MVw+i3ZdRIxJiDqBDpVCtxTaWXAsAm3zQS7nUJcE2kRwOx+5uKBbD4HBgWYONN1H/uEouQ/a25HDfpQ0BG0DaP9FFB6HAvKgRwQMERRXIY9IVMOFohy0LQY1CSDnDvKORXQRpF1H9hehQwzxP2HbG6hXBHFHkF8+3BfAsaPYPRfdZ0FYGDpYC0MyOHED7U+BXjnQOdDCQfQpVtejeeYkt/vhVMcYmzGvJ+J61ate9apXvf4b63NwcZGIPdJJa6m/HHKj/P6gWLyEi3M0qJwGuz3Q5z8iSw8UWwGtw+Bhgd/4EnmcQvYOKKIZ6D1g8z1eZ4ICTiKrHehkB+pm8TvG+PRZWfsYmzmna+ah7kn46RJyikKOrsj5KKrmQEwweuM/sGkoCotD1k7oWjuEuqC1/weZR6CQCGTlijLGoE0EHaOwLxIdb4JuEdB5UNUKIXvRl/boWi90CaGVB1fi0cZd6OAZZGGAv7FDpTzIz0K2B9Eub2ThhXIngDECXnbI2Ab5nEIHk6BiHtpnID4J2Vog2yvQIQKmGMrvISdn5BaFDuxHW4JR2ThcPIreeANZRCDPncg5HjVygcGDjjkUGoyii6BTAe0ciA1Faz9E1xvg67XY4ADU86FpHKpHFrR+Flpm4FAIcghFgX7onXeR5TlomIYrx9Fbn+FvrNG+vcg/Expm4UoisjJDjgnQJYJ2BeSkoW8+xJsCUMgRZLsDlw+pO6bn26bkjElux4S4hY2fgvQ8MITQqwLmHDoaiTL6oFsKGTno6++xlStyjUBlIujnwtmfkKE5stuN3GJRKRfaprkd40L6jKR9jMOYR80sRONApwwe6CAtEx2/jhv5mrYJVvuUjDHF6xgXEkO3COEhF45fQUfqoVuEmucVbWOs1hkFc4LdPiWncTB9Ds4cQ+f74b4CUu4i7yOoe+kCPJ0P9Z0QEYMy2TAsg6g4dCIDupXQq4GLJ5CZGd59BupF0NkDzntRQie0PECWxuhiB7T0ILNd6FwlhJxGF2uhXQh0PnQroEcGp2PR1Tqg84AhgF4VtHPQ8SiU2gWt83DqCLo0CA8UkJiF/OLQoAJOnMCWRyG5HLmfQgwh9LLhaAwyNkd27sjzIqrjQysPelVwLhpt3YI9L0ADFxh8eCCGW6nI/y50i4A2D0wxtM3CPndkbIaOFQOdD+0KaB4ADxe03gadb4JOKZTWIxtzZOWCNu9CSd3QLYXcfGRujqx3oG1+6PYQ9Mvg8mX0pSGydkVe51CNDLUucHFe19BM+ziXznoa3HrVq171qle96vXfRJ9njwpHIBJpNeqM/eeK+x8u4+JcNSqlQ2gEMrFDfmfQnQnolEB6IvLPhiEMublodxoMSOHKTyisEqYwXL2JAvNRj1DRPjrRNTLfOTzRNTzLYGuYU3D8EDJ2QxYW+FsXlC+CqjJk64byhTCGIfMq2lsKmUnIPgjVqmFYB1dPoX3F0C6BtiEIjljg4rR5YMpgYBz5RqHLndAlguYZFOCBikbgIYaWcSgehTYeJF5CG7cjK0f0L1N0thsGMNzNhNgM6MAwhKFbCPfmoU8L2SnI9Qa0CaFHAMcvo71J8BDDIy2cPYqONkPzPeRxEtWooa8L7TgDFdPQIYW8QuTqi8pk0MoCGgcGdXDjFPrr/4Mdr0KbBto5KMwd/bh5Qf1vQD4TOXuiTgSDcxAQjmLp0K+Gh+PgdhjO3INHKqgeg0YW9Gsg9SZyS4IOIbQrID0BbfNERWJ4hCH/BqobAMYsp3N4onNkvmtorGNc/NRNCx1SaOwGVxe8+wK0CYHOhVY23GmElAoIjkJ7c2FICEFO+L9N0dUK2HsAnclG3WJpx8h45wirc3i8a4TdMqttEUI3Dy5fRKZOKP0+dAmBPsXrHB7vHGF1DY11jAlp80DjQvcUHL1EcHGgsXTMibmu4amOkdnuofH2KTmdhU5FodhW6JNBci7yPoy65dA8B60S6NMAkw10PjR0QlgESpqERzKIPI5OpECvGrrlUMaA+BS0+yC6MwDdUsjMQhs2IyMrtOUHlPgQKqvQd+uRqTl6+yNscwbofGiXQuso7A3A1uGokQ0MLrRLobkf3N2w62nUKgLGLMQeRqc7oV8GCeko4Bh6IIEQb/y5KfphPX7dBCU/hIFZ2GWJX7dAN6vBLxjF3YUOBXTLoYQOl2+i3YdQwSNoFUAHC24kLXDx5nlgiqGdC7m1cOwU8j+H7rGgQw7MGcisgoPHUGgCdIigoAgFxUNyBcScQfG90MWD9By09yakFcORcyh5CDqEwJyFrAZIL4Pd4ehIGeqRaJjjc92Dwz0PZ9om9Fxcr3rVq171qtd/b30+Li7ka3XarPDL1aNTaqWEx2GTXFygw5dOox8M8Jvv4q82oKhq6JZAejKKbID7Esi+g/zyYEAIV6+huHYYEsLVVBRSBt0iRJ9mdw1Nd4yyOofHu3my5Ay8wx3RAMoLkH0QKhRDyR201QkVseARhsx4FFUHt64iC1/UKIEHGrhxGkXVQacS7s9C6BF0sg0eaqBlHtoU0PsIeUaihIcwqIKWWRTii252wAME9FG4kglZNLTDCheygdEDO/egC/0woIOUqxByCTowpGXDuTpgSKFPDWmJyC0Z7mugTwpnr6ADSdCD4D7AhWPoCgMa6lBIBqoTQUcr2nUV6ljQzoHDPiiifoGKMYTQ1AbenshkJ7L2Qym90CmAxkmon1jQZjaUNiN3L9SghAEWhBxEkbXQq4T7D8EnHsrY0CsHJgfoPOhVwq1raHcGDGihWwPZt5D5blQjggE5XDqEKvtwC1fZNjbZNczqGJ3uHJ6jsWAZHWcKIK8ctjvigznQqoF2PtCm4WomZI/DDIaLN5DvaXikhqhQ7HQMhjFkJKP4i7hdCYyp+a5HMx1jrM6hCea8gjaBow8jB390ewZ6ZUBjIdq8qnVsqntovn1spnNohjanaxGih3yIvY5OMOChCmgsTJuTto9Mdo2wOkYnO8Y4TA6+chUdLINhLVy5jvzTULcYmCK4U4rCYyB/CpgCYAzBoZMo/j6MCCD0ODrXAvRBuHQX7mlhWAIuHvhKFbRLoUsGHVJo6oeAcFR4H5g8oLGghwWBp9D1e9CtgCoG7HHDPudRowI6a0GznwAAIABJREFUBcDgQ1ENODvh0DRgaKCdD4x5uHAJRVbDiAbOX0bBWahbDLR5YPLgdi3afRZ1SqGDDSE+ePdFmMBw6yKKvIaqBuByAbQAPBLC9t34Rj10yuC+BFIyUHAJPNIAUwh5lXC1Ce5juNeBzN1QwxzkFsPNThjCUFiBrHxQmwCunEIxnTCFoSAf7UyFHjbEHUcXRoGFISEF+RdA9yxcyIAiDsxhiDyBwhOgV4FoHNwyze1+pF8X16te9apXver1315/mYuLJdK5wY7jng7ff/ylkYXj+awWrlKiIJ/dVCEGC64loF0h6EIxdGBoakMWBvhzd5THBNvN+ANnlJiHTL/GRmGo6B769lvsfRb3S3jdj8bbJwSdQ2OdE1KmAFe1gqc7tnFDm0zxe1/goGIoq0abv8OmzsjcGZm4oSIe3ElHBt/hTc5oiwMyD4QaCSTdQObb0Ief4s83ou0hqEIGl06gTWb43U/wV2bI/TiqV0BBGZhZIHNnZGiOvc5DzQhEhGJLZ7RlK/7HJ9jiBGqQAKMN7B3wZgdkaovi+6CmE+2yR99+g9/5Fm22R/G9wHwEPjuxoT3a6oisDqJ7IxDpjz/4Dl+6ByfC8TtfoZh7UFaK7AKgmgcMNtAF0NyLLL7Ef/0cFYyB6Tt4lTHKeAidQqBzF5UHrWy4cAptcEU2DuhTE3SCAcxh5G2G3v0S/WiJnE+gSgFUNSMXO/T1V3jd92jLdpTQBgc88DsfYxMHZGaD7EJwzbS6c3yia4TVNjbfPTTNnINlRLyFC+2zsP1H/L8/wPa70ZZdKL4LuoQQfxU2b0WW9mijB8oYhA4xMGYg1BMbOCCjnTiBgbrY7O5Hk20T/K5HY+3Tyk4pzryJ/vb/4R+tkZUz8rqG6rjajvHJ7uH5tnFW99Bk66yOIULFVcjJAX32Nf5sA3I/hVo4is6Rsa4xXtvodPfwPGMeMwRQ1w8utmiLLTINQAWTwORAlw7ifPH/+As6NwTtAuiQQk4RMt+ENm5FO86iZjHQJ2C/Dza0RRtNsf0RVMOD3hkIj0BbdyADS3ywCJiixZDGoo++xE6XoEcOB93w/1yNrdzQVgd0vA56BeC+Af/XOmy3G21xRRdaoUsK1V3gZIW22KKNe1HJNDA40CqGykZkuRG/txmlPoAuGbSMgr8rNt6OTPag2w+gbRr27sFG9miDCXY6gRpF0NiJvNzRN9/jDwyQ9X5UNw9VTHCywBud0DcmKPw2tMsgrxxZbUBbnNBXm1FsDXTKoKwJWW1CWx3QBht0rhd6pJBbiDZvQBb2aPNOlDgGXRw4HYdMtyBLa2S5D+VPEE8k6+hTrJ6HUx2jLP1+cb3qVa961ate/631l7m4QMDnzk110hoYrXT6PVrv4DhPwJMtcnG2CjWMw40UFHwRZZZDmxTujUNOC2S3Qc0Y3G6B7DYoH4AcGtzugpoRyGyGigGgs9X0OR2NpaXPqWls3MyGVi5U9EFSLeS0QXEfFA/BmQhkshX5XEep9XD3ITB5EOWJTOxxyE2U0Qj5Q8DkQ2UPpNRDVgtkNkJ6CzRyoawNUhoguwXSGyCrFZp40MqH0lZIroU0OjQJoJ0PDUOQXAfpzVDcD3e6oZEFbTwo7YaUOigcgg4pNI1CVh2kN0N2MyTXQdk4tImgug9S6yC5DgpHoIUFRR2Q1QwVI1DUBdk0qJqH81EosgAYQmhhQQsHmifgNgPu9EDdGBR2QzYTqqaWvzCEKYSG+3DoKPILRVY+6HIntM9DTgNk0yCtHjLboZEDTaOQWQfptAVnKkahuAtK7kPmvf+fvff+imNJE0T/hv4D3p53dqdndmenZ3p65s52X6t7deWFyRKmKEkIkPcOJJA3gCQknAQSCC+ckBAo8d57700Wrrx3WSarKjPyez+UoZAK+u6beW/OnsN34uhQociILz4fHuW1onox6lMzfRJrr5ztkVp7ZcjL8U0F6pWi6jFU1o/yWlB+J6pbQ30qNKRBeB/KbUWVc2hUh7qlaECPOhZRQSsqGUWdatQntfbJHGyy9yigV4FaCVQ+hAo7UF4rKptEXQqmT2rtlbM9MlufjOlWsL1K1E6gwnZU3I2KO1DJMHJyWY56pdZeOes4vtkrR1UDKK8VfVxAQ2rUI0e9StTKR5/HUJvUScAeIfrQifLbUa0ADalQnw51LaOiVpTfgdrEaFiL+qSoYgDlt6CCftQuRwNK1KNAvTJUNYxKetCnWdQrR/VT6MMAym9F+a0IX0J9clQzjj70o7xWlN+BaldRnwr1yhDej/Ja0ScCDalRtxz1KlE7H5V0otJB1ChAfQo0YECtsyi/BZVNoi4VGtChTj4qbEX5nahdioa1qHMVve9Ehd2opAsV9KJOCRoiUdM4ym9B7wbRgBr1KdCgDtUOorwWVDKKhrWoV4n6lOhzN8prRcUDqEeNepWoV4o+Ocg7hvo0qFeFBpXoUxfKbUW1S2hUx3YpUL9QNbawPL64NrawPLJ9j8p22k7baTttp+30f3L6TfeLazQao9FoNhnNJiOp16iV6/vFZRa2VYp6lKhXhXoUqFuGuhVoQIcGtajH9UevCg3q0IAG9SjRoA71qVCXjO2Ss11y5Pi3W4a65KhPgwZ1aECLhgyoT4Qe3GWDzrBnUtGAHo0YUfscunGdDTrDRuWhcTMaUKMuGepVo0GdK2lRtwz1atZzBjTOmvu1zpxexYavBrTOa1K65KhfgwZ1qF/t0QXdhq/6XDU7L6XWoEEd6lU6/+hTom456lOibhnqlqGur+mgQ71y1CVzFnCkPi1qnkCR19iQ8+y9UjSsQ93y9aYd+H+NTJ8GDbh65GjxC2J+nTyJ4O5Rtxz1OxpSOxFbJ44W9TgrdCXHveYqD/Kqv2iaddTg4LK7C11foedsWrvedJdH0z1y5093xx23lXu23ufIcXFtUOvqkacgqTZwzf1Vn1c6aL+kQ7dyQ81dLtEa0DgxdEtRr3IDtk5RlG9oy9kpNxdcBdwsGNQ6b4531+OUXk86qDbIzxbs3k7baTttp+20nbbT/ynpt8XiXz79sx6LKyxstwwNKJ2pX/EflJRowormaTRjRv0K1C9HAyo0ZUfzNJoyoX75f1xD/3Hp/w0F5GhAg6bsaI5GU8b//C5sp+20nbbTdtpO22k7baf/P9O/NxZHLNjRdtpO22k7bafttJ2203baTtvpfzv9e2PxbdiGbdiGbdiGbdiGbdiGbfj3wNaxuFKtVpssVsTQVrNBrVL+lljcbpASBCExoM0KMGadcGWJIAiR3F2IUQj5xJLYjAAAWJqSC1cJgiCWVuU6M+soYtUsE8SSRO/4abfoBctLBEEsrQr1ZtpdObKQSvXmbQPoZEKZzvJFJqlU6S32LbvFqOVKC+P6YVARBCHUUhuK2MxKpc5ZhKGUwhWCIJZW5BS7ZcVfgUGpNFD0pv9t1QrFErPdWSltNYhWlgmC4K8ItCZnFxhSQhDEmsbq/ogmpQRBiFVOhI0ayRJBEAR/TaKyMgCAdArhEkEQ/CWhXEtvQb4vgFILxVJPZG1aGUEQUsNWxLTpJQRBSDzQ08uWCWJJvZ4BGskSwV9br4alJMsEsSK1uIlJGZYJYkVu2Ao9q4YgiBXVl+z+spRBq9ab3S1ppEKF3pOzrErMJ/hCIwMAwDI2pcgpnDKtyYmOXb/KJ/gizTqrKRWfIJblRncGrRcLZBpmc2EwaiTLG5jiDRi7kE/wBYr1/2dMQj5BrClt601rhGKpxVOCbFqCIJYVJneGWSkgCL7SgzAW5QpBEFLyf0tYaZmAIJYllq0FhrWp5GqbZ8V2s1KpdSPIGOUEQQh16xhrRXyCWDFsJIJSvEQQSwqdmzWMZJVPECsap9iz0jWC4Iusm6sOWJR8gliSGTcvAaR0hSCWNOvUBI2QTxCrHoRhNSI+QazqXGXspHp1mU8QfKna5NFLywpBEISIdMx72LQrfIIv1m3R9Nfg0BQpuQV9WekSQaxI1/FlrAKCWBKp1r9hSMESQQhUG8hp1y0RxNKyyzrZdQRBLIn1nkUonZggCKFUjwAsOtkyQRAEsSpWUPRmQmJXCPgEX2jaTHqdQKvlKrctdWjKkmzdrSCDhCCIVQ9zYNUKCIIQbxQIq06rNrglGGnESwSxqt/ain8BrGmVT/DF2q2E3qIiCGJ1o8zYSZ1Kt56jlwllWk8jg1QCguALPJBh5AKCWJaY17liFy4TxJLUZWwZUinm8wmCWNNZvEuw1aha4fMJglgWSIzWTUVCJ10miGWt1TMPuTRlXUy0cqXRPSNn04lEYrNtIxlsGj5BLK3IHTUxRilBEKvqjS7vr4FevkIQKxuR2QiMUSwSkpRnd6hVPkGsKtaxMSsIgliWr5svsCgJgljz0FKzSihWbTBeZrWAIAilgQYAYJFOIeA7HJxCt6n8fg02Z9SxOf5WlWiVIAj+ssxhBlm7Wba2TBDEikDl4L9BJXZ6W6na5hRhWinkE3yBcaOm6DyZAjbBEkEsy9AW2FJqgiBWVVsxRSvkE8SKpwmRrxDEkshTXpUiPkGsGd1sQmbREkGsyj34Rq3yCWLFxRSW1suFfIIgCCFpW++D3SAjCEIs1m6Bz0ZgVBKBkvSwtoxNyCf4QuVWJmRjKAjgcnBKs0eGSKjQbe2XjMpVgljaSqKRWSoS6C2euFgESwRfqF5XUUq1tNF8MQaJQKr2lDGjbPWL8IbSigiCkOs2WKutYnG1WmMxKEbaytJfpdd0L9hMOpXyr8TiJvlU7AUul8sNuvlMYvJaxN717t7uXRiPdyQ2s4sCAKBmG7MjAg5x/YKelndTAJK2muDvvw/khhzx/3H3lRSxHYAU5Tw9ERTC8z96tnpCAgAdiff37NrHDQnh7P5TxOsuZ8fNurxLe/4clqn3as1Y23znu8O7/xT8BDd5cIlc/BC4Y/eNkrkt+rVYEf3ND+H4DAkApGD06aUjQdyQ/SHnGyeU7qC48q7/nwJeiEwsABjmPwbv3Mfj8U5eeru8RXDwFeinCn1/3PewYsnr/7K6teyHwT/t2ZPZ74xB+9Kf7ftlD5cbErj3X48kN7EAjG41/ux+Lpe771RUn0gPAMsjFbdPB/B4h0MvPeErLYDohKC9e7nckJCAHQd8CiZoMCpv7v3Oh8vlBft8HxBWu/SbgnFGs/zmDvbDPt/8UacOaJf775/mcrlBvqFRvYR3+7XY/z76ZACPdzj82osllRUApKP4ac4uLjcw/EmW0AwA9Ervh9NcHy7nUExutQEA7NqW4oeHD/F4AUeSqwYoAFq18Pbe6UPckL2HjhS3rXknsFGcdf9UMJe798S1Ecmm4RetmrsX9NPB27UAACw11ZIVvOtfDr+odzk7G7+j6GSQH9cv4EFRkwlANdh+9IdvA7ghR7Cfd56NI8wAjO7j89OBGBcLCsvpmrcCgEWReSv4UDB375GzVdNSADCIJu6Ff/PT0eu9Uu+WlbXbngevMyV70AvCyCjF02KCOFx/P9+EojEzAFBKPOtGCIcXHBSW0zpjAwDdcuZdzo/7DuaNuNTPLC2IOx/A5e4Ju9S7pgcA2UzTtaMcLtcv8OyTeZkVAGTzbddP7uXxQg7fTZH81nDcMlmTEXYogOsX9OJzn3nzcgMZJ/64K3JQ4uISbat6wPln7OkayQKAVb2YcPUIl8v1v/JwxcAAsAtt704c8gsJ+vX4rQKx09gYR8oSsWB/Hu94TiMBAGBXdmTc2x8YwONdrhyXIYOw7k1UKJfHCzjy8n2PweYFDbtmNf3BkUAezyf8UuuC2msnBYMV57l+XO7+w1dermoQADPdkB3O4YQE7Dp9v1RmBgDrTFvuce4hXlBwVGalxg4AZGXSlV/3BfB44akfx51mW79c8vjyriAeL+Rhn8wCNk1p/ImAQ1zf4IjC/iVv2HkBUjr+6FwwlxvMvZUo9UpfStuaHxfiyw3023/3TacBAIziTylRgQFcX3//5A/TFgBAhupXV4J8uQEBR9ObJxxDWYto/Pm14348XsS5N3w7qIne5KjDXB6PE3q9c1bpqFs4XHE2LIjH491JabIi9CbUb3dgcAgvaOe+3S+7NN6wsU3VpB318eNiwZHZVcrNY+K5suv/8uPJmnkTAIBF8fY291Awd9/hM58nJQBgki/ER3J4PJ7P+dsTUhMAmCXjMcd+5nK5fpcfzbo8p10xEc3ZgT1sAgAAZqW7OMJvPzco8GxKseQ3hou0pi7jDpfD9Q2OqBgTefX9kpmW+EtcHo8XdOL2yKrToCHd6rPQn3+9Ws4CANgXe4qP7vlTwONy50gBWcYbM8KDg3gB3Jicah0NAJaZurfhhwK4vkHPK3stAEjL/5R08XAQ7zDnWHb1qIkBsE3fPhbACQzh8WKaCO+hzPurx3f6YtyQkAO//iW6nPBWBIkHy09hu7ncwOMJuSKHzNCqrrcPDgQG8HiXPo1IHeWknYk/fRfwplMOAKAXFMQf+WnXzvSe9XZNguEnl8MxHu/EpaxVFhi9KOHCAS6Xu/fE9a613xhpMaLRqguHfbmBnCtpH7RebbRJWv7q3M5f/ldsnciRYZHNFMadDgni8QJOvG9fsAHYNSsv7/GCeLwDx692L2kBgNGvvooO53K5B8/dmlFbAUA803Qe+6e9V16uOm2efbIl60oYxjvMPX8vU2hArEoctecvvlwuL+jgD4ERDSu/zcRZVe8eHQsI4PpwT5QOrXrvwdJn3q59PB4v4txrwgYAIOrP9v3hAI/HuxBTIgdgzORD/18OcLk8rv8PfoHvZxgA+0z9m1AfXy4n6Ppb3D2JIutK2vHdofQOGQDYVAvvE87xgniHOeEFDVMWb9LJkuLMeye5XO7ek5FjMm/BFkvPNucdP+QfEvTrqTuFUjMAY+wtSzzix+X67YlKbNAyADZVV+HDiJAAHjckNrNObQWwaWpzb4VweNzA0IzGCRuATTFT5GJKSeuclQUgh64GYYHBPB7vYY/Y2bRsuu7K8RAujxcfj/8m8jKm4ZqXh37514i0TscUFSIlFS9vBh7i+vn7JZZMeLV5SL8hFGQAwCzNe3wukMvdHX6lX2gAAM3qwM3Df/zlxP0J9WZtI9lM09VQf24w52xigcqrsbIoa7Iid//8b7fdwRjSt+U95mFcTsDRol4+DcDo1jJjjwXxeL5hF5pmlQBglEw/PPHnH0MudoicMiYaqboQ4s/lHgi5lLysogFgtutd5PFDvMO8U9EvV9Tr3mCLWFxNmvXC3srIwNBLMRdCw0+0zSjMOvXWsXh3Zkxs+RQAdJfcfIGveCui/1j6JrdB4v5tk44/vXerSw5gGXn2PHZYSun5opk5AQDouxqevy5SMWAbyjj9NFsDoGt7fDWlyMiAYGBuRU0CwHjOq1eNowgAkKU59/6TF3ciXzUbvA4DWGqop76tJvdJYa3cNSq0ioZe3j9zLzU19aNX6wYAIB359OzB+RspBU3DGgDQzDVVdY8BwGz22cjUZisAANtX9vTp05vXUmokKhoARBOlN9O6tyCUVzCv9SbfO303NS3j87LXAkgx87Gxobo4OaXD6TIFQwtLch0AzBW/Ta3qRQDi2kcXX3UCgLAv6cGTagCYaMr72DILAG3Zl+9XrwDDTHVOGgCAthXHPm6U2sBomuydsQKwSnFG3NMB5W+KxWnZxMfG+s9FyWk9Tt8sm6iqGVgAgP7EY7fyRr0avOG6rIoOAgDq31yMbZACmMtTrrzsMAHAp9dRRdVisErSHkTihBVgNT35duOyHdQ9MQ9vdeoAhPithzETBrCLB6tb2uwAqrr7V+7lyr2ZqlX8+Y20agAQtj25k9Pp3foaJaWJV+NS4m9n9gMAIHNvV31nTXZcUZNjzoXWLCbfv9GwRgM9l/zifqfAYlqTTk2uAIBpqPNFao7ICgz/46X7rxQAoGm4E/NCYQJqNONsfCkA2JYLbt3NpW2seqGzoqEyN+9N9aL3AT+y2T2ZUifyMpePtMsNDRUyAFgojrpwa8oOsFZ15VHspA1gNi8y7umSBVjF5MfGerw4Oa3byRRJ/cuolI8AoOhJvJXZxCBYGShrnJIDAH478GmtDACaM87fqhYCwOcXhxPblV4x/AKsouHYu3cGVACmgfjnT4ZE3ue+Fluznj6+ci35wxjh1MmBjwlPn964llItUtAAMJJ/937RAACMVtyO/zgPwI61FvYJGQBZ+vmgvAkAYPi9ZdHHY3vW3MbZMlaVEXM+ddo1M8Ko5wvzstd0ANLGG7HxI956oGp/cTLpvRVAXHXzWkaV19Wqua7idoIEoIquBbzsNgLYh1sKh2QAsJpyNqRkEYARpcWfz55mgCaSHhyvXAYAWebb13i/54S3tuF1/MP7pVLXb9ts8YUHGToAUFTfinmp+k2Tt2zHm+gnn+cAoL0oOrlG4KWIWd7a8H7JCqBounPmfLcOQLdY3/BZCcBO5V6//GieARDVXL/3fIUGILvux8SvymhAkoL7t1Iy29wSJh6tzPvQCgCC2geXsloBwCgbjjsZ9bHDZYUYNN0x6QjBPsY/rlzx5gJMCymPoioJAFCkx91o7lN57ZVosOzpgwtRye9aR7QAYB58czauhAWg14pu38mmGVjG75572w4A4wWnYkpHAGCy9GZUwSwAjFc/THAYVVJQmHA5NvXJvbdDAAA2Wd6zK3kjNAD1Limq3MO5bAG64bKox2kqAPviu5jkQpXFi0Dwe0oK8X4AmCq7eb1oBACAUle8iopPfhT92mHebSO9Da01+U/eVTljEpKfFHuxaBHAMpVw/1S9BEAzHn/3Vq8CwDz45Hn8iMyK5GN5ee8UFMBS+ZX4lEUTgKn/ZkLR1ot8C51TUhsCgNakJ3kj3uTBrnmfeDm9ywLAlqVFlVQJAeiJmrfR55OnPKb+tfNNz++eiUl5W9osAQBWNVfe2FhbmpzcJnOWoAQ5t6Jf5Xa7wwRJQ9yF1BYAkA2l3out/C3kRSZZbuy1kgkSQJH7Mrp8zFvf9MuVjU1NH1Ke1DolzbjSnVNQZmSBmcg+/zxXBaBtf3Yq5RMDsFZxLTKrEQAWymJv5bQCwELdwweFIwBAjDbV1pem5BWNKgAAgLV2fHrTOCwFMBUmXUofMAJpmuidtQGwcuHruGeDqt/k4KwTeecfZZsBQFpx+1aa3uglGpfNfriR2uaZM9mV9yBn1P2TNlGT3dNmADDpcmNj2+UIzMsvH1//tAAA6tfxN5t6lACgW3AwJbOkSQwAlGgoN79YQwPMFV18+nrV21TScmXCzTe1ALDWEnc3t8dLCdY+0lo4KGYBxK/OBRfNAdDarobiORLA2P/o1PFGOQAl/ljwZlqMwDj2KPZWixRA0nj94cNRC8Bi8c3HjwkzUIKenPwykgV2Mud8QraMBtC0RSWUGz3MGKWeTjgbWdI4/1sI6yKNvqOjvrMq83FJp2NulNHw6xsqFQAwW3D94t0pb8G4cWA9FLyWUmQCkNWnRqV+AgBZ9/Pbb1sRC9KZ9s/1n97kZreueW+ZpbQlT67lDGgAyJL0G4X93oaXRmFVU2Nr+ctY3Nkpw1RV9MMXQjuwwk+3X7yVUmDuf3nqeaEJQF5/61p6BcWClt/9qR7Pz0+vmHdKy0J3SeuCHoB+HxWQ1K4HYPvwzOreNQDm06uLCW3rvmqreXGdTiWYn55f1IJd+fl1ctWqwqxRecTijHqNP+GChWUFDdCccrdJbAKAufZ3cXF1XjnQX/Jo986DHI7/pfgKJQ3WuYGCjJdrAADSV7Ev2jrFrpKaisK8D+0iAGDJmfTL4T6HOH6+xyv7VtYX02zzL54XzkotADBVfvv70OutHR8vRSdOi63AmKRiid5oUsskCr3H2qCg6k52lcIxd2IWxF/Zf+JFUfX75KiUJpO3kS9abgzmHkz/VP0yMTajmliPpGxrJYmpfUNCBLDWnPhjyJmm9srIW096FgwAYFz8fOTXPRwOJ+hwbC9pB9ooEUn0JpNKJlYYKBYAGOPq9KSLeDNiDQXmlfvn91xILa0oSrz1umOThUoAgKHKxMQ2xUai8l8mF4yumQBA2Zt97nba5ORkdfq9YCzeMeFgmK4M5/jvO3J9Rrk+a6RZrH2U0uoZGy72fUjIGgYAq14hlCpNJr1ULDHYEABYDfI5N7Mnl3Q2B0Xp7vLEl90b58nMC3lPXk3MKjebfFAPvz/K8T0YHj2vtgNYmnLvx7ysnpwcexoWfiOpnTKL36c+mQcA0BWmJlVUCwDp619F+fhzOPsCE4u6PGY91VWZrxoaZm0IdAqxVG0w6pRimdoxpT2c8+Tj8AIAmFbqoqMKvCHD1KSG77qc0N2Sf+5urtItI8vlt3LqtTYAAMvSZGHacz4AgCo7IbG2YdX1LVlXlv+ufhUAkKgtJuYe3jk51VYQ8tPpFgWil/HL0U+6xib7y5MDf40cd8R97GpOTlqNQ4LsJplYrCVNGrlErt2wpO9gypa+gu77nF2a32VCAFZJefzFgxzOof0hb/FRV0VMz6fE1C7nnMDEu8T3vWMAYJe0xFzPcW/hoHWjmbEZy2IzAGhmi07uPcThYIcvPF/T2cBqEImlBpNJKRWrjDavyBgmuvLfpgsBAEQpj1509cm+LkOOF+8NCiqrr3706HF5jxQARK1JP3FPNrV/jroV3zVnAID2tHu1yyoAWBt6f/9ehftb1VLTmyeFagsAWNtzLv60KzgkODAsMm2ZYgEURQnhv+zihgRxzse9d21/oSvvnPTbsfNxfpOeAVItFSt0JoNaLHVuLWMNI89PhvpxOAc4ZxsdEyqbgEXekxGbLVavuxrpXG3Gs1ItBcBapqufBR4I4Pj5Rj57r7AAgLn2VeTO3b4c/0MxGa16BsA09fh68L7dwcGHfO7nddEMMIKmG9EPansmx5tywndcUMtJg1om15KkViFWaG3e9QQ1JN9pkVEAMNmS/+Rp4+b0RgiVAAAgAElEQVT4wmRbUf7rBg+9sHWXv/1Y3GdBAMq++3dul7VMTnW/P/pjRNUKDdrWM+GHOPsCAv2D0xv4zi+M47c4nB37jjZOywFA3ZO072DAkUAuJ+RKI3/dYpjWmh6+aKABWItOJJKSZqNCKlGb7CwA2ET5z2MSitonpzqvHzzy/MPE191iiJpDXN+3ldXJCY+zapcQgH2+4nJ0fOfo5EBFauDOaxM2YHTtt7lcDofjw7sxvGYAAKI++fyj/MnJyaKH146dzLICVL84uvdaUndj7rn77zQWBIy24vXtB28bJicHbgWHlmR0A2sUSpQmk0Eqlhqs3hf5V2oKCvBaEwBYRu9efymVex9MMpLOyxzOz9ipvjU9AHRmndtx5mFnW9G5W2/Wd1WJau9kVUocoQNjGvsUd+jgIY6vX3TiJ7UdLDN9+ZmvhAAA4tRHLzp7HJpCFl4+cvD7PUkfe40sgH3+0fFAH18O58DJvGExA6CViRQ60qCWSxQ6u2cHdAOPnpYrKG9KiYx1WfdupdVMTo7EHQ27kdIFQH14cfznX4NDgjjnYks0NIBm5GzY3gf5lfkZT+Lfjbh1e6Iq6XmLc/DIruERRzkBBwIC/UMyW1cAQDuQd/5W6uTkZE3mw3N+ccDa5RKJhjRpFRKZ1uhVlRiFoDT54SQNAKZPb1MLS6a8khcAVltePqzyXAeWvz4esO9Hn5zGSSsAaxh8EnHEn8PZH3ChbUYBAL0Zjz/PCABAOfP5dsx750eGgSeZ+eMeg/DVhtcc373Bl58u6d20Yud7yl7kjAIApVcIpSqTUS+RSJ0OTi/zcHDLehuil2uvRz9qGpgcq8sM2nGhV+1lQcuyUntszx4OhxMY/LBTawMA6VAB58c9HA525FTqhIcXF098jkvrZgHALn6XGPPsXdvkVHekz9EXFYssNXsxfM/9vIqCzCdxBW6maHPOcg98vy+9asTMejg4udPBDWbFfxpbBAByqSbmRuFm5AUABdHw5mmxxmN6Z7HvQ3ZKld4l8u1J17FdO64nvVfYAWyyyoQrBzmcQ/uC08sHXQMQxZvjAft+PJhVP2EFAOPYTR7m58/B9l8sm1OyAOaRN77+HF4AlxNwtnLGCECtOzidCQEAaxHOTbvoOy2Qu8LIuZKY/HbzBnG291ZkvS/sMXsLgVjjhlAQAYwXvCjrnwQAq6gp5noe7RBH+/yrrMx2x4jVZpSKxZ6hIKtXfEy8P0wBgK2+MO1tzvCmpOtKv/vJuWNC3FyW/7FcDwDMzIOo5GUhA6bp5LPHfDkcH+x03Yh7bU38Lvdl5fwG7K2qvozYLKHSSXFpd36w/wHs9INF7br2bLlHRaU0UDSYV7Kvng6/+36NInUb9oubW9MeHnVB9NNqA0Dj89PvZ3QAMN/5LvbZpv7DatRqlER6ckJphwpEfS8T7s6zACB79SSprcdpEWjpUn7qs0EtAIBx8nN2ee2KRiNpL8lrGnRvftL14S/flTvWQ2er4g4fDj9x5MA//nl/Xo8cgLXolSKxWCKRicQCrd41Vb70+V5erdPPWmS5D7hHwo777/v+u9B4vrddFdRqx+2zvIiIwz/88Jdjz2odu9dtwuG488FXXlQ6BvtrbWnhR46dOOb3x292JNW5JpPsJo1GM1Dz5mZqOwBr1imEYrFUIhOKhAazmTXPvTwT4SLe+cIuEbDKt3eCjoZH+Oz5bsfJpLVNd1VYByqTUzo3rL4YRxpeZReKnYxmB8viw8LCjpx+GH8uwxWz23QaxeecmLelE+6vRnPjsgdEnvW0pD14v2AGAJaxaZVigVgmk4qFYhlts8vGKq+7mX3syZBzNGPqLE9O710nHEl03j4ReCujZYstgsBSWpX0Y+bN3PJZAEAmUV7s6bDwk2HBD96/6zGZVrLirg5bAEBfmJZS2SQDcu5DcU6fTKOZaS0sr+Q7fJ5u8c2tYydvZYsoAACGIuUyoUgsl0oEUrkaAIayIjOaRgHAvFoXHVPs1R+3Z18KPnr8WOCvf9gZ1rrkijkWPt7Jb3KsOFuXh9KfRE3YAECdnZhc2yx0FGHUkpKUuC7X3J98qOxCeFjE+dvXAp5MK0gA4DdlRBwLC7tw//aRpFU7AwBALebmva5zOB2WtRhUIrHIIZxqj72nXzNlAzBKPPXKkdP3HavN1EpPUUnRmFKjHqnJ/9wgcToLc9en5LQe50zteP6t9JpuAGCkLdE38x27+2Rjny+HBiaUjgMAAJrBU9/1iTUaRVdZehXfDCwyamRCsUQmkQpFQoPRyyQ9OdmY+uIhAQAgTolL6hpQfF1GN/nxUsTR4xFB//bnbyNzBwFA3JEeceTYiWP+f/zmpxc1fABoST77blQCAIKRsnuPqhwfzrVmRBw++q7dGbWknfznfwh5sqJQN759lZ7XSyNltP/vf7r8TqWRFj99Vlgx6jS/Bp1oAo979HRRZGYZi1IuFIrlMolQLFWwAIbh928r28QazVpTfn7H9CYRMKz0FZ05HJxWxXfnTNa/PMYLK+tRAwAyyVtKU6sXNRrRVEVpXr9rD7aZ1GpkE3HxL5omraDvxb77r6HJHRoNkXIjtmVEDADivqJzYWERF+7cCXpG6SzIZpRJhSKxXCIRSBVeF/1R1bOTHxaMADDVVhD/vMU7umBsz7t9OPx6+5KrP3bZp8SLR8/FTrqEUzOBXzsRFn4u5jIWO6lkmOncb/70h9iKBY107NGlp9POEBJIjWag+mnCq1oAGH8b+l/+cqhxWrna+/l+dJbK5VamCxMyuwgAAJYhNTKhWCKVSIQiIWmiAICWjSdEHg2LuHwSe1jXOP51iGZZaok+fTgigvf9999GvGhw6Bu/OeP4sbCwC/dvHU4UIlB352bVj2o0mmk8s3hYCAAsa27KigkLCzsa/vDl3VILQHvGeW7o8aMBv/xh98nOVRsAMFri9d2IsPCzxwIejJX1ArBapVggksokYqFYQlm9RFGrNanJBcUGALCO3rmRLlVstnWI0Ws0rWUPkrO6AGCg6EbwkYhw7u4//MStnnW5wpXqe7lVjmAeGUQNJa/qlzWatbHy0oJxM9ALranP7y2yACBJjUvq6JM7PrLqtatD7x8/ShEqHMaS1mk12nn8wr08Nckgi0EqFYolcrFYIFeuS4iw6u3Lz13WTaQXkWs5j0+GhZ8OD3pQVtwHoLnD+dvvL+YpNLLShISiqlnaOPfsKjcs4tiuX771icp3bZCgR6tSktqdKkz2pPzTH//4vJqvEY88uPRsQWUHYEfKn4WFhfHOPEw/8xqAtZLqdfOl9bahTrmcHXu+2wAAlorsl+/KZjchL/CbXz2u3bCEbtFpiJ7sR3FZejsYhkve4p0yjWa5Ibegex4AetIu5fQsAoB67vOtux+d36h6nmUXTnpOCtEmjXQpL+VmeZPTaAPLNr26/4GgwOngREKRTCoVC8UyxmaXDn+65nZwYc+GVVYAEHblnz4WFnHh7s3ghEXDJueO7GaNRjPakBmZ1OxshyI1GkXD+5RH2UPuUr0ZjwomnDrJyCdf3DgaFnHxJPagoXWRNvNfXOMeCz+2+5dvD0a6mQKUTrvc/+7R43S5zo5sRoeDk7gc3GDm9czWCQAwLtfE3CrdjLzTzenhvNCiTrd9tva9jz0Ser5+Zt1FMyaDfKHj+eN7w3wLoxguLikcUWg0Y/XvKmoErlIWnYbfm/Mo7q3KsQUfbFqNRjpWdv5hKQOwVHrh//5mT+WITDRan3zrDQBLGVTr0RdpAmY1++oZF31PvcGnHSLMTBXfLuz0ONmmqEy+fOTswzEv/gTAMxTsKMlvGrQDTORFv67rBwC7uCn65jtnLG6cSs/J6hQ5+e4ZCuqMFBjlBbFnWlQAYK8vTs/MH9uMeuKO1/c/Lzj+ljRnJ73NUgEAO3M/5uWqAkzTlVmfmoQajbDlXV6rc84NrCuF+Wn44rqKCgbenz0clFrhsWiALBqFoDjtRlH1+ih0q1jcQJLS+aGo4H0nLr6cUaj1GvVfPbs5URv3qopPUabqrMtpzc61wtnq1xdDn4yTNAAwOmlxZvqAmKZt4pQnt0ua5EAt5Lx93rlCmdca4p7HDUud01FEX/2zlCYHk+StGcmFFSqaZuZKIt/gzjiQNdbkFxXVzm6wS8bemIQypQEAwEqqxWKRRCIXiwUanREAaDtFTRZHpn0Q6Ky0xzG6sfb8JwXuIFX94c7NmMefNx6z0uTnZ1R2KwFAPlJ2Lmh/7Os6FQLGc86FHr+X+G5ZRgNAd1nm+y4+TdO9+PObzxoBgDKoRGKRVCoXiwVa3Vanx/qbchNL3ZZLXnwj8m5CnYPoLGJslKa1KDauTkBZ3dMl5qaSkpzyCecIhXVmzzTHpRUMAkB32ZvGKTVNM3jWtegXLqduWXr+IG/G4zwfrZqMvV8kdQSOLG1QSwQiqVwmEYrEXp0Zi2irRVFXEJvQJKFsNAC72p13/JBPcmGHAVg3ZTQLtVGh1/FZhxlC7cXprXMGmrF+SL9892XnOsI2dfnbmNo+LdDC97lxNdMUJR9Ken6rQ8LAWtfrtIQJM01reuPT3vQpgV5rjwk7EPW4eNUCCCEAYG1mpVwoFMllMqFEpgQA2UDas3cdFEWNV9x6VDzgQEYxVXEt9EbD0gbemlerbyY5x420jaJG86+lV0oNVoZhkXGhMPtJ4zxFibueJdzrFjjpIBxviUuoddlmJ8X1C+9fJOVpSbs7RzKclpheTdtZxNgp9dirtOcfJ002OwMAVqNWLBZKJHKxRKDSuBZwLcsbmWLrzX166fTrZcepIM18yjXOiYvPh2U2FjEsgGkcf/nmNWGlaUnj3bT8KaWDKcr6d7HPGsWUzQ4AqpHMZ3mNJEXN1Ty4X9CBgJ2sfnHEPyC7atQKiEEAgNoyIt+N6WjaNvjp6aM6EQCY9QqhSCyVykQigYH0suWL1gy/zUzqE1CmldrHz5+Oyx1qK3h7/kpcRsfGkdhaYlpWz4yHzDMT9xMLCAkNAPNNT5PLpymKaim4mlizAixqzL7GPXSirHcNgGFYAJZqz42/8TBLzdCjlcW5aY00snx6HvUordpCMy0ZGZ8qJw3CiZLCMrGdtotaz527OrxgArCpFSKhSCaXicQSGQAIa5OSPzYZado+lnstq8kxm0eutcSEXvng3EeLesvuhfgfftc8zwByNF2dfpEbeLZiSAzAIBaQdq04JbpRStP21YKs5yUzDCiJ3My3M1qaJucf3LnTOKwHm/Rl1KmMyimatpQ+TGztW3XLg3a28HlKsd7MgNWokAmFYrlUKpDK1Sz7dWzFjlbHptesUJTxc+aV162OYQk7VfnqYmjClIkBANYszrkbEhpxr2PZyLIMC4BU088v+Z2+mjKuoBFyGjjHv6alz4mJGXISkHr+/tkTVSNqmlFkXk+YV1FzjYXlbdN2mp5penrqRg4ASEeqLp+JnNUwutWB1Kg3cqfzXUt+lDsqcAy8WbNuXUJIo3ldDTQzWSkPhmYdxZSlMVF3nlRv3KCgysrJqOpVe+qObPR1YhoOLMyVPUhvmKBpWt7xMtKxLcRFnL6Ku7mfFty16Pifo1Oc1sxZxCQoSr/dPKJxmy+ZTCIUiSyUl5kBE7/8RWaRwERJel/eTn+vsTpOLww8DL2Y0+ociY1+zsb7V2ma7v109/zdD+5vkbTx5osqx7CWsVup6feRr0qXNFaaYZGSeJdyu01J01YiO/N52TyAcSI780X3GmVarX38/Mm01q6b6Sh+j6to2ryEnzwTvayipAM1maX1JE0b+Z/ORqZpjAxYnbGXVCqUKdROLrLK3MTchuH1sfpye97F0Ad9rtVOpyBR8rKMWw0DWgDTp8SbD1I/m2mmLSuztLjXtdZjrS7PzKpZBQBgGZtV31Ua97hm2eFTrLLp26dP1E/qaUb2+trzWanFzYKF1qepuT0AYDdqxWKh2GG+1N72n1hlnwsefRwxUZqZ9MSo6lnHkI+sTbgbebPYGWixyGalJj4/jfkwTVntLAuigbqSimaSpjXTheHnHqmsIK5LTPnUbqFpy1DWtdwOGkDQlfSidJCiqN7SG0/KpwCAoa3UauP91Iw+IWWnEWs11hek9wntNK15HX82udA5JW9TTDy+XyJ3nJZFtF4tEQgdEuLdwbnFSj2d+yL1vdnCAIBZ1n0v9NK7bufuh/7ytyXt8zRND9clRT6pA4DGgjR8TEbT9trCx4/S+5wVkQtP7hUsu5aunPXq5rJTHg7MuJ2RraY88231KgDIx1pLPtRpadqw8PH42burchvQFoeDk7ocnKTvVUJhF0VRI+Uxj0udQb9svPxq6M2mFT0AAGury7jMDThV3i90mC+wqorijx0+erNxTutw0RYp8SE/l2+mGfVY1JXzTWNmeqX51etX8xRNy1sfpmVPk6AYbSj51Gygae1MUfjZh0qjfbm9PPtTh5Wm5ZPvzt7MoQE0c61XTl2ckDGkfKIoJg0AbEaNM/qSCNQar0EjS9soQ//bqxl1GrOVQSyrnk26gp28nDgqt7PIHZ+Jci5deZTW6vC2nqFgVAauRaAZzXhW0GKmqOmqew/edSEWEG2j5P0JL1PqFiint/UIBbV6MzC6+uKHxb16yrCclXztw7jDN1la0x5dvZwrdgmn3Uot1j6PKh6lrDbEgmWtNjkjl9BTytGsO6m5ChqULa+SS2v1NM1M5l/LrNfTwDJ2SjOdkf6sZMxoszMA7MDHRyH+IfkNM7TDpzDW5sK0Tr6FZox5SefjM9dHa5vH4hq12WyY+pzwj//Xf9vtwwmMuFI9LrMY/sp+cZaUxh/3xzA/3sMs967IjqQTf/s73wa1DQBYq3nw09tjPhjmj91I+aygWACWaCk7th/z9+G9apxy6QQzVpdSMupsi7Wu5USd9MEw7EB4Ts+K84yqceXzhze94nU3hlSzief2fPeDT1a3HICSCIUaA6mSiqQah+elalLCsf07v9vxq4//mao+J83X2l4d2v3zjuPx806lED368Zu/7E2Qe/SrI+v0zz/viEhsAGBbE8P/5n9+c/jI0UAOltboXuQVZt7Y992POxNrlwBAOtsfc9QXw7DAM08JnQXsRrFQqCWNSqlIpjNvsT7Ob3zht+vnXWeTlp1dX47513/+CXvlcFwmfnN0mN+enT/8sNvncFQ26dxpI64tT2tbcx3IX2o8dZSDYdjBy0+WTQgABIPvzu45iGEY51TsiusOGWqhIqOyVet5X8RwXkb9hEMDrHrFmkhGGvVioUhHeb/8wzBXfT3Ud/cvP/y42zfsTgmA8dPdgL/9p29DQ48EYJz8Xuf6hqQv9V9+98cXHY7lInapO/vULh8M8ws6/2xNbwWA+bpUDMMwH99Lb6pIAAAkHmk6dQDDDgQ8/tBLAQBjbHt7198Xw/wOPcjrtSCYe3/r7//uHwJCjgYfwh6X9jMARoVIrNCSWqVQonCddLHnRZ/AMGzv+UeLrn6utDz5x9/9a/rwOm9N/Kbrgb9+uyeigW8HoCqfH8X2//Ltjl2+nPP1Q1IAdq2v+vg+DDsY/Bwfdrv02abUgkHX0oSZnxQdjmHYPu7Z2jkVAwDKkVvnuBiG7Qq/MSS1sADLzclH/ffv2PHjr/uxO2/aAexSkVClJ9UysURNus9cUwufNzKFKrvs9z/+y3HHxK+8P/u73/9+L3aYF8i5/KJUiQDsmprESF8/DPMJTvg0amXAOF8T6WSKT2hMvoUGAHvxg/P+GLbr1N0pNQUgTw3/6e+/+SX8KI/DDcVnzQCgX8Iv7vfDMP+QiOfjRhqsBqFQpCNJhUSk0HtdDgcANNdQePQA5ud7OKNl1qXrU+f+5n/uP124vtMPmSoTgn78aUdUXr+zHpM4O3rf9z/+/Kx6EQDApk06E4Rh2KGYVyorC6aZSzv/4V9+8jl2ODj4dNSAIwSlTVXPLh7EMOxM9LjIsXlIkns93BfDQm4ki4zAGOXvH531wzD/PQFJH3qNDJBqiVCmJvUqoVhmolkAQJaFV+eP+WKY/77TpeNSx1BRNZn959/9w8MaAgDAtnyf880/frs37Aj3UOiZViGAafzUj3//b7/4h/KCQs7fHlUBsPaF5rTD+zEM87nwoExuA7DoWnITuAcwzCcoPr/dseOE1o/FHw3CMN9zCZ/MNhZMC88ij2EYtpd3oXlJjwBppEKpSm/QyIVS1WZXYjB68eMwXwzzOxKb57pQiG15euxvf8dp1TMAYJyv3Ps//usvB7mHgw+depAhB1D3pv+v3//tgUOHQwI5119W6ACAFr65fwrDsAOBx8vHnednTSu1Vw/4YtjeBwVDAKAVtt4N5GAYtivgYg/fOXW3UJfM3Y/5BgaUuBZYbMt1mZ/q5I5lKLNWKBDrjaRcLFIYHD0wt+bexTDMzycwvnLANUxdu/vnf/nBN9lj7wBqeXNix44dJ5PrKQDQjN0+H4Jh2O6wqAGxGQAY49DjI8EYhvn7RdYLjABgGP/AC8AwzD/ozmv3DD05X3uJs/PbA6ebVxgAdqT8KYZh/gew6HctJgCbQbkmkpGkXiwUaS2bXZvBNL95iPlh+3gXWxY1DiaYRRW7fvd3l3KcDlK5gEf6+mEYtv/wzXGJM+K0CntvH9n17c7DFdMmALbh1UnswM7vduw86HeyvFMIyDZdk8w9gGH+vpfjPimsAMAuNJWEHsD8fQ+/bp6hAayaldwbEb4Y5rOX+7Z21AZglq9mRJ/0xTAf7GzVqJgGpJYKpWq9XiUTyTTru8QUgwVlxXMe6yijBVf/7ne/fFxzjJbZ6aokDMOwg37XsuqcY1+LrOBGhC+GhVx/seo6QTn2IebXnTuwmDwNABJ23j7uv3fnDz/sOhhyLUNnBgAwEJ8v7vXBsD2xxRMAAGutZ49xMAzbfzGWMNLAWmQioUpPauRiidqwCX1Z1WzPBV8/zAeLLmhx7cZXv8R++tO/3XJMg9OysSfnsf27fvzu1wPY2RdiDRjlC6/OHfHBsP37j5Z2LdgBWGou9fRRPwzz33fu44ySBQBkfn3lKIZhPtcShCYaAIaKb2A+u7/f8fM+H97riilg7JM1SaF7MMz/QETMG7Fr76lqKCejcdqh+JReIRDJSVIvFok3c3Cgn3l89SiGYXsOX2pfcV7OZuCX7Pjdf79RMukoIpsfuRPmj2HYoVNxcyozAKwMNF4O2oth/qHX0wUGp8cwTpa8qe5zOX5Le8F9DMP8DgbEVbg1BcY/3vp15w7/6Dy5Fcyqpcwrx3ww7OA+Xn7zjJUFnVwkVmoNWoVQ4r7PzZZzMwLDsH0XYvmuS534DbF/+N2/ZThmlfXj53b8/Tc/+4Xygrhnosd0AOImzj/9tx/3BR7hBoRHv+CbgDbp6l9GcvwwbL//vYxaLQ3A6OtTb/r6YZhv4JPSQRuARTn36vwRHww7sP9oScc8A2AQL6VcCfXDsP1BV1rnnG/VrHa+OboH88d8sloUAFapUKj+ysFtAJumNJbrv+/nb3/e7Rd8bZDQmcZy//L73+/jHOYFcq4kfXCdr5+79N//YXdYrnM60iMUzHWGgvbCe2f9MWzXmfuzSgoA5qvjub77ftzx0+6DAfEFAwC2r0JB0C+PXuX4Yr5+VzJrXDd5kDlhu//w91cc09esei7pCnZw94/f7dyPHY/jy6wATFdeQoAvdiDwND4pQwBA8TMuR/hiGLb/ZOGIGLEgaE8L4xz4ecePO/f7R6d1AEjigv/8h7/sDjvKPXTkZCOfAZaZb0mP+NUPw3yOXEsWkus7If/K/eJqpVypkIuFa2sCgUKp0vyGOw0Zq4kkyQ0OhmW/mPixmUiS9LjLhEUWI0maNqy8sWhDyMrarUaSJE0eMxwsy7Ib/RhiLGazlaJsNHLPEXg0zdooI2myWC1mI2myuW6TQnbKbLZQNptbI9mvELZTZouFstppAGBohrbbjEaSJEnK7kKSRZTZZKUsVle1rM1MkiRld1f5BTLegbFTZrPFugkyLGM3G0mzhaLMRqPZ6sz+gg6M3YGb545z2mwkSc/bh74k7xc57ia3wJdlbCaj0Y0MAOugDEmSJEla129G/JKadrORJEn33U2MjSJJkjR6btdnKRNJGj3uykOMmSRJo9lBFoamadpucnTTSsM6YTc0xNotJEmaN5yU+xIZlrGbTWar1cFJ1mZZlxC7swssZSJJ04aQdAP1WMZiNpIkaaRcmYg2m0iSJE2unRCMnTIaTRYLZTaRZsruRvQLefDCFA98EUPTNO1oy2RxaRhjN5HrtGIZ2wYJcdKBIknSdeMlomnG7qA5aXTLmd1MkiRpdtS6Ts0txZVlHGq7GcKODJvFRFEWqxdNcW1vt5pIknQSj2VomrFZLSRJkiazx/WajJEkzVYPXjL2DQoIyORhH7zLg6PXJs85sA3aRdOM3WZxSKMduZChzCRJGj2QoYwkSRptHvJKGUly404e1mYhSdLm4oqTa667Kt3m4CuabgCaMm5hS1lE03aasphIkjSaKeTIcUsI5RA+RDmFc8P+RcZiJMn1w2gObL+41Y4ykkaTx5FG5IGHF/qydquZJL/SlM1tKQsALG02GT01BQAYB8Fd20VZ2mYkSZLccPEdy9jMJotLbYF2cs0Z7fwW8wUAwNiMnmq7jrBHEcrTjAMAsIi2mMxWinLojp0ykiaz1WIxkkab3WUxjCRJmuzr9P3KwbG08QvbxNJGkjS6rLZ3CUHItc6xAV13ljdbCoC+0BSgbRazhbLa7CwAILvZSJocFsNEueuiLUaSdJ1AQU5ja96I3V8VYKt5nSle8EW0xUSazJTVbCJNFudKKmMjPegAAKzTGqyrLbKZPR0cbTWTRjNFWUxGI+VyclYTSZJGzyjbu4PbAnuWsTiE82sN3ODPLCRJel6JzFBbe1u3pmy4DNbNFCcdkN1IkkbLxgBiI75/xcE5banZaUtZAJah7TGW3P0AACAASURBVIzVaTEsbuKYyY3mC9FOn7IuWHbjRqY4hOoL3bGaSNJo9nQhW3oQ1mohHd6WJE00w7KI+cp8ubu0wdB8EQpudHDA2Cyk0URRlNnoDg+8IGMzkyS5QVM2NMQylIk0mimrxUQaLc51fmQ3fSGcNoeu21xUcTp6i9PRe3hbo9GtgjYTSZLGL4Yof+2tH41Gr9PqdVq9TqPVbL/1sw3bsA3bsA3bsA3bsA3b8B8G2+9ubsM2bMM2bMM2bMM2bMM2/OfAdiy+DduwDduwDduwDduwDdvwnwPbsfg2bMM2bMM2bMM2bMM2bMN/Dvx/EotrlmdHZp1vgNo0gu7GWhzH23oJ55XU0sXW+hocr+odF67vgUfKtroqHG9b0VAAADZ5Vz1e1TKice3Htyum66vwmp75LV6QNgpGcBxvnfX+5BsAALArY804Xjsp8zzvYOhtqcbxpgUpCQDAaAdaqvD6XqnrMANSL7R3tK+/7ODINEqHBqb1rjyrbArH8YZxsWcZ0UwXjuPdI2uuxtj5oSYcr5qb8/Iwym8Fk7C5Gq/unDahTQrYtFNdTTiOV9cNKT3eaXEwxX1gcmmgBsdrRl13kruZ0jMmcPbJquxvwPG6HqH7RjvDans1XtUyqvHgAaNeqMHx+oYRerPrCr4CxUI3jlf1rWx+sSOtHelqnlhbv7ac0Upbq/CajvF14dPyW6rw6vYJNwuAXK2rwqtbJtwnJMjlXhzH6zcyRb82Pzy15j5ysjpci+NVg4LNH3E3abur8ermAfXmD/Awipm2jk6JYcNBFkYvHhqcIR15Nt1UV1MVjlfVDipdJ4FE483t48ue5+VEU204Xj0q8nzF2zTYXo3jDUKht9vvvYJxrbEKr+6e8/aSoBMUs22tQ3OeTyuvjTZ3Tq598bqCaGp8atXzJnuyr6UaxxvnpSYA0CxN1NdW43jdGN9D4xjtWN+Y3PV4g1U82tLVrzJvJRvSqea2EcLzfJRsrhPHqwbmtlBk80RXNV7dtuJJFZukqboKx7uEBhsAmEXztTjeOLLk7pRVPFqN47WDy+s5DrXt93xq5K+CfWGwHq9qnN/i9T6borsBr2oeXn8exCxqqsarmkacpwAZ40J/W1UVjuM9Ytf7dWqiE8fx1tkNr4Yuj7fhON4/KXaciFodb8bxmnGpDQCAsc0PNlfjOF5d2zY0b0IAduNEV0M1juM19T1Tq5vd0PIbwSBYGJry/vQ3AFiUyx0NNTiOdw6tuHppn+yuxqsaV9zv5pjEXbU43jgod0m0WbRQi+MNw3x3tWbBUHP3oHqTu5s3A9F0G45Xj2zQlI1Aqjur8erWIe0G0SMn+kbFHg8oIs1iDY5X1w87XpxgNYtVOF7dueEybPliXxWOt/fzHb0SjzfgeFWv66Irq2a1q6EWx/G2Pv7m2HwJVtlSPY7XDWzlzgDAqlodHF7wfAlFMte9keagWJwaW3Reyrk81lGD43hVTVPfpM4GgKyz/Y0OCWkfWXAebjOJu2txvHFAvgXNtURtFV7Tz9/ihVjxZHPb6NLG475obrAJx6tGFpQAsDTc6kCmZWDa9ayMdayzGq9qEbifHTcKOmvxqqZhjWdLlHKkf0LtcdKV1okGh2a9vyq0BYYz45Mrm9sQSt5Xj+N1veJ1B7fcVoNXtY7qXQ3ZFVN1VXhN74Kb2sbV/iocrxsTuqtRLbTjON4+v96QfL4bx/G+mS0eMLZM9VTj1a3Luk1LINVcW0eHWL/eZ5tkrAb/kimalaEqHG/pXnAw0xtTQDY3Oc53XR3GmiZ7moeXPKy6XT3UhOO1XWubR3ZGwWwNjjeNrmzNASXRX4XjbX1OTVERvTiO9yw5LiBi1ya7a3Ecr6pu7B5TWQC8h4Lm4bYqvLpVpHGfzFV31uN4Ta9ucxftDeERHMfbtvIg1Exf88CixzXmtG6svQavbltxX9FpkfTUV+ENfW7zBTZ5Wy2O1w2QrhybdNzBFIeE6MXzzbU1OI7XNrQSMqdgSSab20b5f9Ua/8fH4hbh2O1D3/zl7HuGBQB2sub5wX3HIiMjEzJa9QAA1sac2wexk5GRN96UuS6J08zlRp8POHv52tVnnct6sMsrXt05EX7pTCgv+XO3CQCMK0mRh0+cuXQsLPRV/ajXd2RMgsHb58MuXboUfPZCn8jLjcgA9GJ36dljRy9diDj16IUzFDStfnh09dDpc9evPaybkAOrbc6LP37s7KXQw48La/UAoJ1PvsPduefnpy2ebKOqHx78m58j+wU2AKAV07FXT1y8dCnwxMnmRYeU02OVr0KPRURGXkvJ77EAAJAdObHB4Scir1+vrtr0EbK/ApQo/8n1kycuhYcezmqZ9EoH6yrOOxB0PTLy5p38Rdc5eItg7M6hf/3zmVIaAICeaHobcfJYZOSFU/fiF7UAYGvKvXPQ/2RkZNTr90NWALDIP76NiTgVGXkq4l5OuQoBGJYzEi6cPBt5+WRY4qcOx3NL2unmW6eOR0RG3r3zzrrZ+xMbQT7beOX40UuXzh+5HjOr9vaJTVtbcN9357+Fp3c5sKdV/0975/nVVpKu+/vH3DX3hNvnzJk5Z+acO52np3u63U4EaeNAMgbbGAFGBpsgcs4554xJJhhsMDnnLJFRjggJRZC0n/tBkqGn8czctc5a/eHu35deVpdE7Xqr3nrqrdr1skuifDweM9zoP4bnDqsBnGznJjx69JTp6+We1z1tBNTbA7FPCd9Apt8D77I3KyZAvTfBDLgTxGTeffyob9Pmic5E7HiX3/3Wo9KaCmxzpMrL+y6TyXgQGnXlCo5U8xpSGW4eDO+7154lvJZemZlVtp4S4vj1999mjF66bOxM2xb+5//5Tdiy2ATg7KjLapTgsMptjRnA/lyr161/++5p8qbNHZOH8+2+7vcYDC/PsPgdqzswCDqSmI4PfYKeRczNfjwB0GV0R2VxAd7eDDfXe1Ujm1fO9OKNt77033zjEfIhV+b2ZKP79d/8EJi9e2lwK9Y67n/1O8e4kQ+/3Br7zNH7cdCzqDcrckBVHv3E4e5TJjOiaWj3gyFnij3/8feuzQsnAM6Ei9F+339143bF4kenfd5yl4/jv37rHbVoa3/LdHvKY4/7TGbQk2dRM0dXDmTNdGuOl6sHw/N+cH6d9WZzs3g579kjZ99nzwIz54Ra7cFEfIDbQwbDycEht23NBJzx51nB958yme7eD1pmDwEczTQ/f0gEMZkPfRid839X4nTAuPauwtv1PuOxu19K4dVS0CTtyIvwcmc8vn8nrW1ED+gPx5ICXJ74MQO9HhZ0zulJQDny0JHuF8BkMguWZQYAWu5MoOuPDAbDyftx35a1uxqm6lPvuD9gBj0rbFk4h3l3svmx2z0Gw/NhZPKhHhYR99l3X7ozGAE+dz53uDcggXF93uvrr7wZjEDPm5+7MRcVV1Xv7+NcvJN073e/di0/vVqMmyabY69d92QymVlVEzoAOlFrxlNvLx9m4KOQ5Ir9U0DPr85+5vWIGfTQI6GhTw0YuZMJgVaj3M55ZTXKXMTjb766Ta9b+eui9DLk0UKnr8c9BsPbIzRm+6olquXkoCbxqbsXw8vl2vOUng+r6OUa309+Rysbt4kk1dZQhM8DdybzeWjVrp6UrHZHPKL7MZmPvB7XDW9bnc9mf6mnm2cgMyi58P0psDfT7P2IYDKfeQS/XJWYAXKxK/naD+5MJjOtZOiv5rC/wMCbT33u4cVg0BxvptZ+fGxoj6sDvvzVj4l7J9a6WFa7CtzdPIOYQello9aBodkbD7j226+CXgMwq1WsH7+9y2D4+3p+df1mA8diEe77ffO5B4MR4E185uw5IAAM/OrsZ14+zKCHHvH1b5RXGle1mxPu6+PLuOPm2jx3eKX8OlzofHj71989jl+/8HnqodJY6wRX3ccxqlSh3399n8Hwf+L6xU2nV9uAUdCc8vjhwydMf5+w9LpDDWCRNaT4ud31e+p+P6Km1y7HyaF02q8+ffyWbR/7htOWF3/6n9+x1q/0vx9BudHj8cf/uBXz/ur/rRc3FQY/8GEyvT0jKzrkZsAkrop/5O7KeOx+P7ZpUA1Ac5DGvOP1iOHq5prXv2QGNAdTwc/uPmMy7z7y7lkTAdAcTPjfv8ZgMJwePR3YUQCY7Ux74nGPyWQ+DmB9JN6km+vI83J1Y3i5Ps+rFV+53JGzM0Jpf/zzH1Pf29yikb8Y9dLtKZPp4f2gaXrfapTdoRofdw8GMyg+q08JHC7ZjHI555F6+/2T7/792xdvAMCsHX6V4vDNf9xJfWO7lcgo7ywP9/QOYvo8CCtuklw1Ck/3xmIYrt4MhqODY0Hn5seWZ+x35Q/cPQOZQckFg2pAvj30zOs+g8G4Exi8IbfAdJZw+weCwfD38/7m2p8LZo3A+V9IQVJ1UJfg7e3NYPp5h2c3CQyAbCX/peujJ0yml1dy9bvjv5ZB8ILLUtB6U+pfYjFMvc52/vbfnePabJmLoJtoSLrv7M546PEkpfhQC0DZkcN0dXnC8HANLmlVkDCL5jKf333sy2R6PUxvHDklYRYtRb9082UyPbw9G6f2APSGB9+g32Mw/F1/+K1bwSQA7vLrhw6//vZx7PLf8sb/zVrcdHJQnhFc2VaVUGG95d488aYwumhao9Hao5Xq1rqc3JYNjca+2idP3lakskLK18U2V6Za7olOypICOJ+OTMrZUcG8Ue6bUA8A5pEw/1SF8sxiNgMgLRfJdubLwlJ6NgDwRtMjSmd+XjdSf1wfH9i6SwLorIgsfy8DzqZe5bxk5M0f2TqvbnciMS5+hwSwlZySMsfVQ8OfWd+c6SlMH7SHVy3nYy1J+eXZKVXda3t6AOymhNjGCQCnS4Uv8gYBqA4GQx+E9Yxu6eyd+2ixNdgzZmDxyGi/5sxsIa3/+RsmuoRssoGVUW4AoOwLTS77i0CsrX13Oxhxr9QXN9rBdHJQnh5c2VYVXzFJAiC1nQWMpD6hRnNUGvegekkPaNvrc3Ka1y+MIl1MTnjRtafRbHeyosPmVQCvLzQuflqmUU2XhCRl7uuB872C0JcFRW9F9tuFzNbcLBbz1VmnAZCW/syg4mk5gLmO2OSW7SvKmDSrG2u747VxzZPWRFZmNX9pbRkADtsiXyTtmIG9jpD4lGWl5ng0+3lqodAAnXBlcGxGe6rhDWQ8L+w0AIJ38f65PRqNZqbSL6JhBoBZI6zJflHxqiK+YuzMBOC8v9Q/pvNQo5FUJ3oWTalg+UujkDr56uqsHsDJSHzQy4WrJn5SxZ3e2Jh4XZA9bI89mM/fNyQUVeYkVfZuc40ATvc6/WNbVKcXRhEfrK4tDxbW1s1aQ1pnurbkwLr1MwADdVH5b4SAeaGnKORJxvSezH77pjU/FWn+yH24AKQjVazsGhMAWdeL5CqZ5orepeSuL66O19SVDxzYPhHsrawvv82rbVyxqRRSezSTlRBc3VGXXmddN+qm2/NePM2ZO/ywfuJm52S2DvM0WrsgtZjWB4ozc5Ky69sG55QATMd7Mxurg235JTO2BDHmnw1b+dHayupIWW3VqC3SRHLm3s2u8bWn8qacoJyxK2JLZ+LNrOjQGQ0AcUFWbN+6DlB25MbFsuq2FbbJzyDZWuTsA9ANp4QlN6kA9VQ2I61OotFstbwIKX1zRkK2PT40vX6m0cw1RoQ1LgAWkzX10cfb16wSlMYG9YsA6OsKo5omr1jAqdffxiRmiACYZ6OTs9mSM6N0c3BkQq3SSEcLgnKbji2AbMA/ploo02jtexO7bS+fVW8BUK8WhoW1WgDJVneIJ6tvetd2G6Fe1ZgQ2LJtAdBbFVk6ICR1BjHvBABk4vK04h09zk80EokGgHFrraiwXmj40KMt/y9uBmaNqC7nZcWriviKUf3V85++vy0vuWpRo9HaGsuonBzp3+WdagSTCUlRg0JAOh4VFzkk0Jwu176Mi99S41zGXuTsAdCPpoYnNSrNMCl2ZtaX+l4VVMxbDXeph3yscuf69pTA2jUDgPcNkTndvJ8XIbWSldX5MwDygdjn4SsagDRtj1amZcblNrzqnpABwNl+cURoXsEbod19nRzODU4sGDWa7a6E5+UDZkAvnIh8+PL14Ko9DEZOVAeGNW1qNKqWVM+cUTlAjvYUxpTMaDRa25WXFqvz+GuO/Uy+u7jFAWCZyw+LKRddmevbrO+tjCqpK0yoeMuXmgGoj4bDvUK7hjc0doucS7cKU55Xd9QkVc0BsBjPRdZdLKOuJjl35ZQktQaxQAUAIl5pZumBARCORcVFDgo0pyt1oXFx68or6st/k88q6gCAw8bgtBbNVfpMeri6ujJUWlszZVvDkvtzzcEPYgeXudagrElnFFlnVc1JVUr+hhY4V0wMv90XaLRHQ7FJsWMSQPouODL5CACOEp+HL7NPQZrmu7KyC9PSazqm108BkObzgbq4wqq8pIq+fcHZRQ/5axMnqePNZyda3dfK1UUk8wnxoT0HGg27PTyGtagG+F3PojKlAMCJeRa5Lcb5ZrlvYgMAmIZD/dOUekhGUhnZnWqNZqHGP6x2HACnJZhZtwtAPp8bEfmaBHbm382scnWa41d5QVnD4ksTvT3thWw7NyZkQgVAXpwd07t81aSi5s+sb051F2QM2dJ0nEwV+KdWCzWa7fbwkOIuA2CWzcc+ftHSu3hi3wCVHq6trgyV1NZM2tPVGEWr+UnB1R21yTULAGAxbG2u7k03JTS8P7FqasVaRsLzVs6pZv9NdHTIhOiyx7D9rF68ubh9COB0ICEste3kqnbXCycjvV90DKyo7bPB+5zn+WMiAKvd8QmNWzCbRftWb2luSM6ZPTEBmr+UgjrJ2PC7I5FWu/8uMilxWgqoD4eGh2QKnXqxLjitaFdt0xh/zUdfkoJHI2kRZbNXlCDPttkru7OtSXV9tt0h7XZWTNAbEQBUJwa/HlZAOxceGb1hASDLCH05vaawKHcGR0aOldqTmYrnGeUCC/TzRf4plQKNZqc9LLjotYGEfF9q/b3ZkrLm+V0AssO1ldXhktrqCVsSUMuHJ/iLSv03a/H+dOd/dvCvrUhwesBaFhgACGbq3W850mgOhFfKpMIAkOs9ufTbTjSnm24hZexTEufcvJfXPvnPG/eI2w8jqo+1pHq6u7KuTg4AnLjnKZt7RlIxG/UiOK+8sTYr+t4ffNUKjUom4EsUJ3LxkUBive1xrCD6NVsIQLjYwnrRdEX7q+Wt6axZLQDjm6rs0vJlQFsf7/jPv//xjouz67Nc7onJtDleVVbEBwBeZnjy1LQtcrjWk5H0ztbBj8ezfvv193ml+T4+j4r79gAsVia3zLMBnO71hD6rBCAZjP3951/fvHXHkebzakEJYLXR71/+609ONBea6/N3uxoYVdwj7rFKLeJzxSf6K2MPWvFWb+MHBrhaUjDYVNX++hSAcZkVkMETXhGXI+Wz4a50Go12+9rTqi05gLcZdLtRIpb4RsAinC1z/cGF5nzbN7xcZgSAjd48+m0nmvNN1+DSTbUF5OloBeuWA432Iz2jbkxDAmei1qSAG8402o/3a/rXzkiA3+dB/+LTL267ON6KqJw+M0El4f6FUX5WOfObzPD3YgOA5f6ypIS+j3Uky2r1y5rxn4TaLeK6zPj2jk0TCRh5DTGMGzSa83X35mGOvdhBxn3at19crxveMgE4HWfdu0+j0W7eCVkRaAGMF7r9043HNVXJzh4vpvZ1AOSrNZ7fEzSa48PnBRIDSepPjo64xyqViM/9aUomVUdxUm3t0vlH3T8515GRPmTT4tKhlF9/fb2wLPfBw8eVQ0dWo0S4ETQa7fa1J5Ub9g0W9WxKceW8tYvpNZ0ZERMqAOaR5vy8vGnA9Dqd+Kff/0C40O76pa5JjaRGfsgVnKhP+FyuXHt1EveD7srq7jc6ANr5cP8s8ccye5+xC8sKBw8vfaKcSCiuXbN6S/I0L/CLzx7G1OSHOTNyuWqAVDYnOf/T76+53HG+/yx7T2EEdO9LI287ONNu3/bN7JKdAzsdf/rTH1jZhSHPHkdXz9nrpx9sTi+2anGLUS44EkiPT2SiI4H0otPrVjNLSscvxf3Fk7X3nW7c8AxhH1/RjfT7a7V5qdsAIC9LSukZEAMH8f7f/vq/bt6lX/dNeKWybwdBtZ4TmTgxzbMA0C6nPfJwoNFuOvmNsm3LG1I2HUKjfX7t3tC2AqRexDsUH6sUIj5Pqryyfc8l3MbM2BUTAE1LXkZ9wxUbXLKpN5W1NTIA2EkITlndsEYORQVe9O8/+6Gsf8UIQLeZ/MTVmUZz/NODnOlDC6BYbPULDG9sbEwJ8KXTU2UA73XIv/3hjw6OdxzvMN6w1ThXt6azZjQAzt/V5hYWTNn/oHl5oCS96dKyljx915pf8VYIQKsQHAokqhMFl8tXGa+cv8xH88NNdi/T9XZVD0wXe/zjdZ+aqhSaR8j47pWxPXJvuPzuLUca7dZdv9wle3qqifxQpz9/4RtfLjoDzIo3ucE3nWi0a3eKO+YvjimpN3KiEsenuPa5XtXbkFFu1eIWo0xwJJAplVIhVygzXukWDdrOjIjxEwCWsdaCrKyRqwpZUb4qSGxoXDFZYDnsv/H975+nFbCCn7woHjcAEA143/ny/3x+28XpVnj5hMV6xM6wGUejff2NY8f8EQD1RNrnX3957YaLk4NH1ZgIwOlOi881Go3m7O6fKdaZAfCmat1uOdJotwmftBmFEVrl4RFPqVaJeEcStRGA8Xiv/8KN9+/I7XFw3U5hXMLgyP6VVjnoCv/nb2gVldmuHr6tMxIA8qGE//PlV9dvujg4eTXOKAC8ir32a5eQ+rIYR+94tuwiXnkwUxlfeTmt9/lcX1F26x4AnMntRnEpap/XARq54EggUSnlXC5ffWYBwG7JrxsYPwegGH/JyDu9aj0PAJql9OLyGZtWxFKd7yf/+a0TzcXZLWRk/6LPcMbLk2rWP/xzODPY6dsvAlPrpOeAhpMX9yI+u7axKsv5d/ebd4xnnPpP//hVSmEB4+mjtNYNEhAPJPzLH2+WlOd6eD2uHRMCZ1L+kUiuPJYKuSLrcT/t2rsue/M2Dc1xSdJY+vyr//KMrC2McPbLOrpSPJpUQyXh1gkuu2FCC0C1mRkdkpTX0Fie7vg79/YDA6mYjQx5nl/RWJcZfesPvuMaQDMX43bfmUa74cJcOFIDkM43PQ1kNTY2Jvg+drmbYW0M6UyDm/Ota27MLcU5aVRxj7gKlUrM54qUOjNgPNqszUniAICyIjXlddfO1c0LLHVlpAza21e7lunr6UCj3XR8OrIhBWCcz//m2y/+/ANBu3Wv6N3hZaNM2xZIprqI7357L7S+JMrpUfLeB1+63fyy4p0tFaP5dKou+vYtGu06LaVy6NQCvVJ0yBOpVMc8Lk9puHTwVLmcxUqanhNc2RtOpzK/+OMX1667ON12qxwVAnibHfGOrwWw+b4qPqb7Q0nRUm10iTVUavmJFLQFqMm3yQGO33wZnNUstzkVdX2Q+43PvklpGNGQUEv5XKFMdSw94glPz6/W4x+kIH+hmfWy+WPNi4OOsLIeWxJ3i+J1cfTzmLzGpgqPz+hJ7RuwiCpTQqPSKhvr8onf3SmfsLbwcZXfvR//8KestkkdAN169tMHt2m0Ww5PhzYkF+7qZCIus+FQaf9Au5xeXGbNLUkaT/lHR7ITtVTIFSisT2AL6PwdWvxYqTk9PT1R/D1anPO+ODKCFRZ479PrPu+3f7K/PNyem1qycOkDY31xWk2vCNjz/vYf3HJmAHQlpzQOHCqXW9Pysqwr1NionM09DQDj/nASi8VKzkx8kG1QG2E2yCQ8Ll8qkfBFYjmA4Vzv0ikuAOlqc1h8zxWV04ir4x68lQKw9DfklrbsAvKXDv/7RlQvgNHi3NKmJc3BaFZ69D4A8DISsiaXbPHyjb6c9BFbk6l3h3PjWBERjG+/vx7fvAZgsTww7+0KAMNB94uoVwBmC1z/1zc++wac70/GBOXKSXSG/+lf6XEqgDfWWZ9UBcCglvN4ArFYIvhImvHjnZHU4A8UrCgtkpHC1PJqDQDTUnhEIe/KLSU7p7ttARGtALbfl9iN4v1+VwuzfqQ66a0CgGWmI6+FfXmP9KyxJK26RwD1ZlNt6S4APae+sWZZh/Ptd5UtbXIA0qmS5g6eCVir+s/f/nvprBZQFwdEHkvVMBvkNqPwRGLZVff8mzqTPZo5RgBrg+UJOeMfqzy5Xs9qurSiVaxlP3d9Gldrzbp4utJV2datBiAYLnjVI7i0JNEfNkVEFBnMEPblVk0fAdDNVOcMbpHAwVhVdASLxXT79Af3ng0VSPNkbWKvGACWu/Lq1rV2o/DFYqlAwFWrtQCg3a+MfOj9smDn4+fbAXKxOyfHnqHwZHsgK4YVEf70mz/fSOtkXy6n3W/3D7cn01bPZ1bWrVqlmlHVGO/RzQeAsY6C3Op1QBN/91+/ed4MYLqmuL/mLQDtiZjLE0qkYj6fp78qYnnUk5Za1aQHYJgLDSsRKz6yq2vklFWXjYkufaKcSq1s4tgG9/lMazKLFRnwyOnzO6x1OWCWhDt/ci2iC8B4aV5B+fClvy1OiU8ZWVZBsVGZFhHBen7r5o9Pc97bgzW6kbbsiiV7XPFMJxPzeAKJRMwTie0xb91aXmXV7M8i4AN1YYVVV4S1jIezuQnPls8BHJdlZ76ZVEO/RP/8H/xrNgGyMTLu1eA2AP3O+3Bvl4jSAet2m+x9afn7FQBYa8numb2cOOZwKjs68TUAs14lEvIEQplIxJXLrzjLaZbvlsQ9GlcDMLwqy67r3P15meOZxtQc66y8Ex+ds3qp35zzX4eH5ipUl7Z55e8YL6qMJhIAd6KWxWK9iMrMDanTAe8Tb/3T9WCxBarld3Fh5fIzfWPCg34xAAw25xfUEUVRjwAAFWJJREFUrNrrZHqdEtt3KbhqOlHUJydMWx/bcq46FhzxxFKpiM8XnJt+3h/Ol9vLXtq9TGJuvxrgTdTERLBYz90//d719YryZ1/5Cd11mQX1Gxf/NvHzE14MLarN4pnaxnoBgJPFiqamrVMA0O8ORXi7hJe8u3ScQ9XfklOzas9EdaaVink8gUQs5oklV50bO1M3xnt0cQFg4nVhRtnCFWUAnG6XhD3wCS/e1wGAWbFdnxkRwQpxcvjRK7lHC5g36//w778pnFQDpzn+kePbF495vFkRHlkDYKvW91efuayrAdlKjF8a34i1pqT2QwBgv8mvXDy+/AcHX+Wkly8D0KukXJ5AIpHw+TyDTq/lz2RfuPGsqaNTACbuROyTOyG5vT/5iUvIVrtSolisUJ8vv71dPHgEYLHE41dfeWxrQfJnYwIyBedY78uNiIh8wXD59DZjinvhBAcy4tt3L6Kt5JmxPTluQGZt/zGbUVRLlU2NmxqAPFcprD1EyOcLAWy/ik5v7iMBnIyGhFeefuxlD81yTmWNfYY0NwV//WuXRDUgGOmIj6z50Jp9aXFdRz89J2Dcz44JHVs4BgDFelESixWXFuqeurGv0osWihMjIliB13788UXFNAmoOP0Z0ayIcN+vv7uR1bMNgDRqJGIeXyAVi3lSqRJQvs1Lsjfvi9K2FQuw2JHKYkU+e+z8uUvYquSKJZ2RO99QV7kPQLdZ21i7ZB3r0qXceBYrPi3cLX3rQAbAsDeUyGKxkjNjHuQIzyEZKKqc3ANgnKvNebtudSEHo9UsFiskIiM/tP6yNhpujMitWAJgOFXweHyRWCoQcLWGM7NwJS/ef/EMgKoyN7Nz4IqNHSurvTmZY7b2lY9UlA8sAMBmW3b3tAngtgX/w3/dnJUD2u1Y34R97YVRPhxOW+7OimBFBj8lPnUKWhDY1cJOK6tuxNpdzsVrLTVFbABne82NlTMKEjCdHguPuCKpVMTn88/OzgFo2e9eehGRlUMfmwPZdX6/+pS2egIo1mIZaXwj3qZ7NqxrAXDGKmMzhz+UHM1Oal6X/vTbxvritJrLvlTPSY8Kn1m95HkUY9GhCftCPcizYxmfyxdLJQKBQGyxXLE0GM6xSUHxSlNYQu/HmhdHXVE17y7GyZmkvSiSxUoIfpgy1LcCAOqd8jQWKyb1pXvK/OLRxRelA5GhKaJTKKeqy9/NA8BmW3bX1If3Oni9LYXNfeoP40a7klNZvWB3ZmdapUDAF4qkQgH3WHkK2H75b+f6UQj3l+dnNvcFJ8eKn2tx+Vrt9U/+lDfGvfzhyWaTT1j1sd6Cc21DGqvo9TyHs5yREFLYtQ+9pDAuvH6Yw9kaY0W8fDUmAXRvi2Njkqs3OdsVCZmDY3yjdrW4KP/tPHuhK5WVW87XkzDrRCKhTC5fe5uaWtalObOcaxQCAU8glPD5RxKFGoBwsTKpqJfNZtdlPip4b3u8zY74rz6hd3E1AGA+HX+dmd+8zF4ZSkkIeLNrAowT9ZmRUXnLHE5DVs7r11tGw0FtWXbHGHttoJCVnsVRWSxGNXd3tSU7wLdoiHMgNn0Y1/r5sJjk/vljAMrN5sT8Vjab3Zbvm969DuB4ezrKn9E7x5kbas6JatGQ4E69Dn/2cniT87a1oj3vDUiTUirgCUQiAZ/LF2g/shP8FxjFw9n5pWPr7MmWqKjSVutC1ygbcP3ky/DaRWuZ6cacuMJXHA6npyaGmf7mw3dVm00+YVUKnQVmTX8xs6Cfw+Es1OTFlsxroBUXxYXXvedwtsYjI16+mlTiZL00I7x9mcNZbo/KyJ+Uwrz3NjsjaWCTw5msepFTu60GtJKSCN+ixkkOZyYvJOdUoTPplZeMcuW7huTWcEFq5SibvVKQ/Kh+3qYXRnP8v/zk8bQ1AGM5l/E4y81RrrFVK5xDrdF8djjo8edfewTmTLB5QumxCdCudmZkpg2zOZzRsue5zYJzHA7VZubWbHA4o81RHs9z9BYc9acklXeyOZz5psTnjQsfxoV+r80ntFSosgBnQ2XPc7vXOJzV5oLozDEZLOYTq1GEAq5AqDMaTZKFwFu/pXklDK0dCsRSe6yUl3rjeyevCqursBhOjnaX69IDAsrGtg8lF1unmqmQqNShNRWAmabcuIIWDofTWxsblNYDQCM/Yk/U+IVFNo5ui+RakIb5vpys+jn2xmRmwtOOzTPgfL6tICI8fZ7DaS7IG22bheVcLubxhGKRgMcVio1nV+hso3AgM698apM91hgeXdFlPcSkE/QSn3wZ02oL4uqVgu259hcRL0resfnSUwCnskP2aPmTsNj2yW3x8cXEuTlc5BvfbTSRsBimGrNZkTlLHE5jdk5PD1svWkuOju5d4HDmX/uHxExu2t2CeS8zI7HizREAs+74gD1dlOQfWj+7y5OTJHl2eiwQ8IRCMZ9nG7a6Yx5nuulZWHjVe45ApoHlrDufVdW7xuGsJoV5ptQtAwBMA6lPvvw3xoIBAEjjUXttZl0/mz3eEJ0cNS8jYVJ3ZoUlZr3icDaLIjPnVpTKharrn/0mJKlx5ZAvVmhIQDSUn1RYu8LhsF+nB1UOnZNYaMnIqerjcDhNef5+ie2ARaeU8AQCkVDM5XOP1VcdNDTJ37VklHZssOd7EhJDhrlWBXlc5un4w80068aZ6WShpCi/b4692JPOyikVG0nBREtGVukyhzPdkeQWmKoymtm9FdGZlVsczlh76tPYpjMLLPoTnkAkl8v7a5+X93AACJcHIgKC3q1wxntrC5O7NSbLTE9WbtMSe200LYHRzbZ5DN3hYFh8u/rSulew1MFKG7C+i2g2aCQiLl8oEfK5fLHc9P9yVMV40PEotJhnD6ettUR/+cmdN0LrW1eKyqTwiv41DmcuMTqk9r0Iyv3S5Kg3yxzO3Osnvo/6Vw0W0XR+RkzvOocz2xCWVb6qwslc5Y3PfhOcaDMKAJNWvr85nhMfwGpc2OMrANJ4Kudbewj/SHZ8VdyHNC705WTVzbI3p7MSfNvWraLirDfm4Ve/Y66ZAeBcMOV7/Tcuj1KG148EYtlF+IzkFeUl5rXvWkhYNNKyKL+C+jEOZzYzOPtQbtzqK8kqesXhcN5Uv/AKKzcDGt5qXMCTzgnO6nRnVnid0oTZ2heZbXMcDruzOCZ5SAxSV5caUdy9yOEspcWHFHbukBbTscQ6SPlcgUhnuCJccrzY6PTlv/lHVS3uC0RyW3J1s2bS55MvA/PGLlvIfDwYEJ65sKcDoNydi/Z/2j3DWRxrzWY1nNhnIvFijU9Eo+ZDil/pVERMo1B34RzUO/1hCa91IAGc743lZ8T0rHE4c43hWWULElhMGrGIyxdKBPwjvkRBAvqjntTcmkU2e6CKGVc/ZF21KjlNtz75JmNg3/qbWgWXM9kQEMaqH+EI5RrAsjfeHhYUOsLmDLyqKMvssw6ec+FoeGyz/MwCQMvbKE6K6V/jcKZbvZ/4DqyoQJ7LJSKJTL4/VZOSW8S3767gfD0+KbFlVHxhN/U4k5U2vqkGoFfJ+AK+UCjm8Y/kx38tQLIzWuIb99poi+3qO0Ld//iHl1sAABN3vjiD1bnC4Sy1RmYWTPIA8kwmEUlk8p3xstT8Sump6YPqWH2bkl7ebTKD9y4jsbR1i8NZbkl6XjdrBix6JU8glsvlvdXM6v4DgOwtYFV0r3A466msBwk1C7CYVVIBVyASCQRcvkBrNOFc8Lo+o+YNmz3VEpMUOSu2WkqY6fjjbbdiq2CzGNXc3ZXGzAC/khHOgdhkgWS0JCm/apHD2e7OfFY+qCWhl3KSnj1uHWZvLvWmvyiXn10YpW7YahQbvJnKR1EtBhMAi0KwvdmZ6BpZNLu+f6I5N4vXKjNCXy1yOKuv4zJy3h/CYtJLRVyeUCIScHliqcVsEo0VXvvDb0NTW9aO+OJjrbU1DeK39z75ktVo9c/Q8NbiA550jnPWZjuzwmpPTNifKEotH2Kz10tSfKpnbCsKy/FcVEzNvvIMgFkpuCwFO2dOSOFaYXLc+00OZ6LJ64nf1L5OszGUnZo5zeGs9ee7PQ3fFp+Zz9QiIVcglAj4R0Kp8sq8nsIFmxSszXxUOGSTpj+RgrAohTvsnjR3Vu74yt7x6RkAtUIslMhFm++zM6MXD/WASSEViaXyo7mWtOwsnupMttCTlZ43x+Es9WS5+kXztVBNlyXlVy5yONvdGc/KBmyv1pikNfnFraP8i5Ey1RgQFlE7xBHKNIBFrRDxBEKRUMjl81SaiyX039DiJ6c66VJXwEMipX1Ze6r6uRY/3np19zOnsumLqyrOBLPxj5wdaI861tUgLTL2HMuTRhD00Nw3egtAmg6n+wLvEAT9fnrDlC06RSpbo/3pBOGf0WyN62/2VHrQCZpnyOCOCgDUWykhXgRBOPklLMvMgFkpFSnUOq1SJj4+teeVPqsJ9yIIwj25+cOuGqc349ZnXv32N6X1wu1oDzpBvxvbOm8vou/PeEEjCJ+YYoEeAA5G2x7RCPo9/7ZlKQkYuJMxvgTNydHBme4aUqq0dkWzpjPdzdHRMabZFpVpSwwgCIIeWS412DqHcKb+kTNBd/fuZ9tCPpvdua50gu4bMi0EzlVCsVxn0MkkYpXho+erf85cY9Y9OuH8OHpOYItnn8lHfT+7mdBii5PpVfKyUC+CIO49yxPa28ZmFGefjlU1QCp3+4OdCYKgM1hNEgtgMR3N9D+7QxDEvbS6KQMJwLLele9OIwjCNb1xwUQC0I+Vxd2hEwTdu2Jwx1ZjzUqy212CcE7r3CBJqGR2oyhOr9xeBkBq5Nl+dIKg+5e8/ZAyfqo07OZnz+etV8MY5Y3xdwmak4OTM+EetnJ0qlpqcP7u+7uunq53XV4WdqkAkNr3+VEEQRD0J3XjhyRwruPWvPSlE4STW/jigYoEYNkvZjwkCIJ+J2bKfmWAWbqS5ufs4OjZOK8AoOENhToRBEE8CakVmEkYfmIUACcbHW7ffUfc83C75xKYVi+xTXCCvLuEZ0C9NZii2x9iPSKcnRwdnekeoZW2o6XnJy1Jdx0cHRM7VgHo1fLysIcEQdwLzLUaZbk18g7d2dHRkUZ3L2hfAXCu4CZ50wg6EVY/+SFX7nAhi0YQnuHZe6eATi6UKg36U4lYqv34rTVTNal3CMLZN35ZbJNretHAw89upnZZpyHs9Ge402mOjo7OtLvJNdMA5htDCbqzg6MTje5Z3m27REK51h7g4uTwIHyKb62O4V12KI0gHsYUCQyAybjSVfmQRhA0n/r32x8iveOVgU5OjgH5fUZAu9X13JNubRnf+Faz2Xwikxyf6jRKmeTYdinCRlfCfWtl6PczG+cBUrbVHeJIJwh6QNIrnW3/3jSaF3zzq5crdsclXRkKdCYIunfZ2IGtISyimpDHBEEPKeoHsNme9MP31908PO+5EGnti2YAFlFDmB+dIAjai3d7JwAMqqWMh24EQbgwMvmnJpB6iVis1ulVMrFMbfhY+6r3lkLv0gmaW8abDbsPUdb5exD38z9sM2y9qX5AI2gewW85JwBMelFzlD+dIJzvBU9xFCRwplE1JQQQBOH8KIkjNQAw7rx97E4QBOGa2KCy/+7++1JPGkHz9h87AgCDaDfWk07QXaJaZj8oNsVyc9vsweXacqdqutask59FeywWK9R6zYlIovj7Xq62YZatZ/g7Ozi618/aglibr1NvfuYzKDYAgMUsWh594UonCJfY0iEDCZjPlzuyPekE4eya3zp/BgDnc41p9+gEQfcs6GFbgPW2S0ZpWwBwsvIq0J3u5OToSKMzkjthMStl4mON7vRYKlF+7GwEzhXcZG8aQdBe1o7by5wPpAbe+jZy0wwA8uWWu99953Lfw+2uS1Bmk9w+nOYaXzo5OT7OaLfdiaVfT/O8TxDOqe0rAM602yX+DwmCcHwYyxbZVmKKtXY/J4J+17V9WQPAIJuKdqETBPEwoHTfTAIW6eZMhAeNIOjh+f16C0xapVCs0Ou1UrHk9OpzZORWT9b1P19zdfe8f4eIb5w02kw1F/TZzfCy6Yun1ouro2gOjk45/bZjDJLF5ifOBN31Qc+GbSToDoYjPJ0c7vj3cWwV1mx1v5pYv2xr6UJj+/yH4Ov5XGPafTpB0D3zuzbMJPTHEvHxqeFUKZIef6jv+6IogiCcnmVs2/fZVbsdrp85FI7aglxrHTH36M6Ojo7OdNe8V7bzMBud2ffpBOH3ct7+Urhqrb11imNtbMu5caElw51OEM4epV0rZwBMkvq0QIIgaB5BvewPF96cvyt45Ojo+LJy1KbNjYqmBBcHR8fUri3AopCITjR6tUIqPfnoXWIAVJtdz+46OXiGTtguBjP0xj91uBZnP8tlXmnPcaMRBN0ts2XRRAJngooEBkEQzg9C3u+dkgDUW0khD6yqY0VmAgDLYVmgD0EQdCJqXKgDYGD3ersSBEF4pDRbVZ6M0/vCkU4QdL/4Jq2ZJI1qkUimM+jkEvGJPeu8fG0siEYQNK+SkT37U4uL3O+4+VZbx63+aDz6CUFzcnR0pruFlJ3oAVLWzPKnEwRBC+nfObZ+S737JsiRIAiicfYYwHpn3Aej5LTYjKLZeffSzcnhftDwoRnQdWZ4EjQnB0dn+t2g90tywMLuK/akEQRxL7l25pyE8UQqkqsMWpVYIjdYAJgWGmO///6Gu4fnPRci8/WKbTKQDj367GZS+8Xpo+PN1/5OBP3OvbYlNQDoTwoC7xAE3beg9yKAud3XOrJgHdik+SdS0AjAZJyuS3YlCMLpQWXfugmwGFV92WEuBEGn+/XO882AWi6WKjV6tUIkO/nIEZULKeiR0qKxl/mJFCQNfXk+BM3JwdGJTjB65ySAZbw+jiAIOvGgcHjXAoA8bssNJgiC5spoXZGSgNmg6EoOJgiC5hIwsCI0AyClLZEBdIIgaMF9HJtRoN5/1//KfiXDz41iFIskWr3+WCo+1v7kCf7mGRXZsVKp1Wo0qmPqfnEKCgoKCgoKCgqK/0b+znc3FVSuHwoKCgoKCgoKCor/Xqi8mxQUFBQUFBQUFBS/DJQWp6CgoKCgoKCgoPhloLQ4BQUFBQUFBQUFxS8DpcUpKCgoKCgoKCgofhkoLU5BQUFBQUFBQUHxy0BpcQoKCgoKCgoKCopfBkqLU1BQUFBQUFBQUPwyUFqcgoKCgoKCgoKC4peB0uIUFBQUFBQUFBQUvwyUFqegoKCgoKCgoKD4ZaC0OAUFBQUFBQUFBcUvw//4pStAQUFBQUFBQUFB8f8plBanoKCgoKCgoKCg+GX4vzDAKx06jXvaAAAAAElFTkSuQmCC}}

  The following shows the printing formation produced by the R program after training in a bit more detail with the outputted/chosen model above.

  [1] "Loading Dataset....."

  [1] "Begining Training Neural Networks"

  [1] "the length of weights 517"

  [1] "The time taken for training: 330.257000"

  [1] "The training error cost: 0.001380"

  [1] "The validation error cost: 0.025099"

  [1] "The testing error cost: 0.020883"

  [1] "Training Accuracy: 100.000000"

  [1] "Validation Accuracy: 99.650000"

  [1] "Testing Accuracy: 99.762349"





  '''Import the model into Tika '''



Once the training is done, there is a model file that is generated as mentioned above. The above model file only have one model, however you can have multiple models written in that file or you can have several model files according to your needs.

  Copy the ‘tika-example.nnmodel’ to the default directory of tika\tika-core\test \resources\org\apache\tika\detect\, alternatively in your own version of TrainedModelDetector, you invoke getDefaultModel with a different model file location, the purpose of this method is to read the model files and load those models into memory as an object instance i.e. TrainedModel;  If your model file(s) have a different syntax or format, you might need overwrite this method getDefaultModel to provide reading and loading implementation that respect your syntax;

  It is also possible that your model might use different size of input of byte histograms, some might consider a different bin size with some heuristics specific to their own data, in that case, it is possible to overwrite the readByteFrequencies(final InputStream input) :: TrainedModelDetector by providing your own version of byte histograms, and you also need to ensure the model parameters are used and set to reflect the same size of input.

  TrainedModelDetector implements the Detector interface, but it is abstract meaning we need to subclass it with our own version of TrainedModelDetector.

  ExampleNNModelDetector is its subclass, the purpose of subclassing the TrainedModelDetector is to supply the implementation of the method of loadDefaultModels that reads and registers the models into the model map <MediaType, TrainedModel> in the TrainedModelDetector. Once the model map is populated with a set of mappings with keys and values, the detect method in the TrainedModelDetector will be able to use the loaded models to predict the mime types.

  The job of the TrainedModelDetector is to convert the given input stream to byte frequency histogram and pass that as the input to the models that have been loaded or registered in the map.

  There is also a TrainedModel(abstract) and its subclass NNTrainedModel.

  The TrainedModel is an abstract class that represents an abstraction of a trained model; a model object must have a method of “predict” with input of byte histogram vector, it returns a probability of prediction.

  The following lists all of the classes for this feature (tika\tika-core\src\main\java)

  org.apache.tika.detect.TrainedModelDetector (abstract)

  org.apache.tika.detect.ExampleNNModelDetector

  org.apache.tika.detect.TrainedModel (abstract)

  org.apache.tika.detect.NNTrainedModel

  Example model file (tika\tika-core\src\main\resources)

  org.apache.tika.detect.tika-example.nnmodel

  Unit test (tika\tika-core\src\test\java)

                  org.apache.tika.detect. MimeDetectionWithNNTest